From fce2d61b0cf58064e333041a7e9e9099d83b6090 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 24 Jul 2018 17:00:54 +0200 Subject: [PATCH 001/348] moved softlight later in the pipeline Gives a better result, more suitable to the final fine-tuning --- rtengine/dcrop.cc | 2 ++ rtengine/improccoordinator.cc | 3 +- rtengine/improcfun.cc | 2 +- rtengine/improcfun.h | 2 +- rtengine/ipsoftlight.cc | 63 ++++++++++++++++++----------------- rtengine/rtthumbnail.cc | 2 ++ rtengine/simpleprocess.cc | 2 ++ rtgui/softlight.cc | 4 +-- 8 files changed, 44 insertions(+), 36 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 3b1ebfdab..731eca086 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -1011,6 +1011,8 @@ void Crop::update(int todo) parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip); } + parent->ipf.softLight(labnCrop); + // } // } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 832d193a2..84c315ac4 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -782,7 +782,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) } - + ipf.softLight(nprevl); + if (params.colorappearance.enabled) { //L histo and Chroma histo for ciecam // histogram well be for Lab (Lch) values, because very difficult to do with J,Q, M, s, C diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 7d9d080e2..57475af9c 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -3186,7 +3186,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - softLight(rtemp, gtemp, btemp, istart, jstart, tW, tH, TS); + //softLight(rtemp, gtemp, btemp, istart, jstart, tW, tH, TS); if (!blackwhite) { if (editImgFloat || editWhatever) { diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index a97ecef40..066d1e306 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -343,7 +343,7 @@ public: void localContrast(LabImage *lab); void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread); void shadowsHighlights(LabImage *lab); - void softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS); + void softLight(LabImage *lab); Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); diff --git a/rtengine/ipsoftlight.cc b/rtengine/ipsoftlight.cc index 35bf9577a..74fb543aa 100644 --- a/rtengine/ipsoftlight.cc +++ b/rtengine/ipsoftlight.cc @@ -26,48 +26,49 @@ namespace rtengine { -void ImProcFunctions::softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS) +namespace { + +inline float sl(float blend, float x) +{ + if (!OOG(x)) { + const float orig = 1.f - blend; + float v = Color::gamma_srgb(x) / MAXVALF; + // Pegtop's formula from + // https://en.wikipedia.org/wiki/Blend_modes#Soft_Light + float v2 = v * v; + float v22 = v2 * 2.f; + v = v2 + v22 - v22 * v; + x = blend * Color::igamma_srgb(v * MAXVALF) + orig * x; + } + return x; +} + +} // namespace + + +void ImProcFunctions::softLight(LabImage *lab) { if (!params->softlight.enabled || !params->softlight.strength) { return; } + Imagefloat working(lab->W, lab->H); + lab2rgb(*lab, working, params->icm.workingProfile); + const float blend = params->softlight.strength / 100.f; - const float orig = 1.f - blend; - - const auto apply = - [=](float x) -> float - { - if (!OOG(x)) { - float v = Color::gamma_srgb(x) / MAXVALF; - // Pegtop's formula from - // https://en.wikipedia.org/wiki/Blend_modes#Soft_Light - float v2 = v * v; - float v22 = v2 * 2.f; - v = v2 + v22 - v22 * v; - x = blend * Color::igamma_srgb(v * MAXVALF) + orig * x; - } - return x; - }; #ifdef _OPENMP - #pragma omp parallel if (multiThread) + #pragma omp parallel for #endif - { - int ti = 0; -#ifdef _OPENMP - #pragma omp for -#endif - for (int i = istart; i < tH; i++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const int idx = ti * TS + tj; - red[idx] = apply(red[idx]); - green[idx] = apply(green[idx]); - blue[idx] = apply(blue[idx]); - } - ++ti; + for (int y = 0; y < working.getHeight(); ++y) { + for (int x = 0; x < working.getWidth(); ++x) { + working.r(y, x) = sl(blend, working.r(y, x)); + working.g(y, x) = sl(blend, working.g(y, x)); + working.b(y, x) = sl(blend, working.b(y, x)); } } + + rgb2lab(working, *lab, params->icm.workingProfile); } } // namespace rtengine diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 79dee36bf..afd8836a1 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1368,6 +1368,8 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ipf.EPDToneMap (labView, 5, 6); } + ipf.softLight(labView); + if (params.colorappearance.enabled) { CurveFactory::curveLightBrightColor ( params.colorappearance.curve, diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index fbee20f44..b74c11d32 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1133,6 +1133,8 @@ private: wavCLVCurve.Reset(); + ipf.softLight(labView); + //Colorappearance and tone-mapping associated int f_w = 1, f_h = 1; diff --git a/rtgui/softlight.cc b/rtgui/softlight.cc index 0ee4c64b9..072c45e98 100644 --- a/rtgui/softlight.cc +++ b/rtgui/softlight.cc @@ -28,8 +28,8 @@ using namespace rtengine::procparams; SoftLight::SoftLight(): FoldableToolPanel(this, "softlight", M("TP_SOFTLIGHT_LABEL"), false, true) { auto m = ProcEventMapper::getInstance(); - EvSoftLightEnabled = m->newEvent(RGBCURVE, "HISTORY_MSG_SOFTLIGHT_ENABLED"); - EvSoftLightStrength = m->newEvent(RGBCURVE, "HISTORY_MSG_SOFTLIGHT_STRENGTH"); + EvSoftLightEnabled = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_SOFTLIGHT_ENABLED"); + EvSoftLightStrength = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_SOFTLIGHT_STRENGTH"); strength = Gtk::manage(new Adjuster(M("TP_SOFTLIGHT_STRENGTH"), 0., 100., 1., 30.)); strength->setAdjusterListener(this); From 14ac4babec51e1c4e2cb2e3d09542e5afc5d583c Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 10 Oct 2018 10:02:06 +0200 Subject: [PATCH 002/348] added haze removal tool Based on the paper: "Single Image Haze Removal Using Dark Channel Prior" by He, Sun and Tang using a guided filter for the "soft matting" of the transmission map --- rtdata/languages/default | 35 ++-- rtengine/CMakeLists.txt | 1 + rtengine/color.h | 4 + rtengine/dcrop.cc | 3 +- rtengine/improccoordinator.cc | 3 +- rtengine/improcfun.h | 1 + rtengine/ipdehaze.cc | 335 ++++++++++++++++++++++++++++++++++ rtengine/procparams.cc | 31 ++++ rtengine/procparams.h | 12 ++ rtengine/rtthumbnail.cc | 1 + rtengine/simpleprocess.cc | 1 + rtengine/tmo_fattal02.cc | 2 +- rtgui/CMakeLists.txt | 1 + rtgui/addsetids.h | 1 + rtgui/batchtoolpanelcoord.cc | 2 + rtgui/dehaze.cc | 115 ++++++++++++ rtgui/dehaze.h | 47 +++++ rtgui/paramsedited.cc | 12 ++ rtgui/paramsedited.h | 9 + rtgui/partialpastedlg.cc | 9 + rtgui/partialpastedlg.h | 3 +- rtgui/preferences.cc | 4 + rtgui/toolpanelcoord.cc | 2 + rtgui/toolpanelcoord.h | 2 + 24 files changed, 617 insertions(+), 19 deletions(-) create mode 100644 rtengine/ipdehaze.cc create mode 100644 rtgui/dehaze.cc create mode 100644 rtgui/dehaze.h diff --git a/rtdata/languages/default b/rtdata/languages/default index 963659884..dcf626948 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -398,7 +398,7 @@ HISTORY_MSG_145;Microcontrast - Uniformity HISTORY_MSG_146;Edge sharpening HISTORY_MSG_147;ES - Luminance only HISTORY_MSG_148;Microcontrast -HISTORY_MSG_149;Microcontrast - 3×3 matrix +HISTORY_MSG_149;Microcontrast - 33 matrix HISTORY_MSG_150;Post-demosaic artifact/noise red. HISTORY_MSG_151;Vibrance HISTORY_MSG_152;Vib - Pastel tones @@ -728,6 +728,8 @@ HISTORY_MSG_492;RGB Curves HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction +HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold HISTORY_MSG_HISTMATCHING;Auto-matched tone curve HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries @@ -807,7 +809,7 @@ IPTCPANEL_CITY;City IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard. IPTCPANEL_COPYRIGHT;Copyright notice -IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. +IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as 2008 Jane Doe. IPTCPANEL_COUNTRY;Country IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. IPTCPANEL_CREATOR;Creator @@ -954,6 +956,7 @@ PARTIALPASTE_CROP;Crop PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection PARTIALPASTE_DARKFRAMEFILE;Dark-frame file PARTIALPASTE_DEFRINGE;Defringe +PARTIALPASTE_DEHAZE;Haze removal PARTIALPASTE_DETAILGROUP;Detail Settings PARTIALPASTE_DIALOGLABEL;Partial paste processing profile PARTIALPASTE_DIRPYRDENOISE;Noise reduction @@ -1366,9 +1369,9 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Ed TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. +TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m) +TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m). TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All @@ -1405,7 +1408,7 @@ TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. TP_COLORAPP_HUE;Hue (h) -TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. +TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0 and 360. TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 TP_COLORAPP_LABEL_CAM02;Image Adjustments TP_COLORAPP_LABEL_SCENE;Scene Conditions @@ -1505,6 +1508,8 @@ TP_DARKFRAME_LABEL;Dark-Frame TP_DEFRINGE_LABEL;Defringe TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Threshold +TP_DEHAZE_LABEL;Haze Removal +TP_DEHAZE_STRENGTH;Strength 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 ! @@ -1552,16 +1557,16 @@ 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_PASSES_TOOLTIP;Applying three median filter iterations with a 33 window size often leads to better results than using one median filter iteration with a 77 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_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n33 soft: treats 5 pixels in a 33 pixel window.\n33: treats 9 pixels in a 33 pixel window.\n55 soft: treats 13 pixels in a 55 pixel window.\n55: treats 25 pixels in a 55 pixel window.\n77: treats 49 pixels in a 77 pixel window.\n99: treats 81 pixels in a 99 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_DIRPYRDENOISE_TYPE_3X3;33 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;33 soft +TP_DIRPYRDENOISE_TYPE_5X5;55 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;55 soft +TP_DIRPYRDENOISE_TYPE_7X7;77 +TP_DIRPYRDENOISE_TYPE_9X9;99 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 @@ -2005,7 +2010,7 @@ TP_SHARPENING_USM;Unsharp Mask TP_SHARPENMICRO_AMOUNT;Quantity TP_SHARPENMICRO_CONTRAST;Contrast threshold TP_SHARPENMICRO_LABEL;Microcontrast -TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 +TP_SHARPENMICRO_MATRIX;33 matrix instead of 55 TP_SHARPENMICRO_UNIFORMITY;Uniformity TP_SOFTLIGHT_LABEL;Soft Light TP_SOFTLIGHT_STRENGTH;Strength diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 759316e33..f610cc8b0 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -128,6 +128,7 @@ set(RTENGINESOURCEFILES vng4_demosaic_RT.cc ipsoftlight.cc guidedfilter.cc + ipdehaze.cc ) if(LENSFUN_HAS_LOAD_DIRECTORY) diff --git a/rtengine/color.h b/rtengine/color.h index 1e6eef578..b6459adc4 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -205,6 +205,10 @@ public: return r * 0.2126729 + g * 0.7151521 + b * 0.0721750; } + static float rgbLuminance(float r, float g, float b, const double workingspace[3][3]) + { + return r * workingspace[1][0] + g * workingspace[1][1] + b * workingspace[1][2]; + } /** * @brief Convert red/green/blue to L*a*b diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 002747070..d72b7389c 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -692,7 +692,7 @@ void Crop::update(int todo) std::unique_ptr fattalCrop; - if ((todo & M_HDR) && params.fattal.enabled) { + if ((todo & M_HDR) && (params.fattal.enabled || params.dehaze.enabled)) { Imagefloat *f = origCrop; int fw = skips(parent->fw, skip); int fh = skips(parent->fh, skip); @@ -741,6 +741,7 @@ void Crop::update(int todo) } if (need_fattal) { + parent->ipf.dehaze(f); parent->ipf.ToneMapFattal02(f); } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 298c3fc58..dec7fef91 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -413,12 +413,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) readyphase++; - if ((todo & M_HDR) && params.fattal.enabled) { + if ((todo & M_HDR) && (params.fattal.enabled || params.dehaze.enabled)) { if (fattal_11_dcrop_cache) { delete fattal_11_dcrop_cache; fattal_11_dcrop_cache = nullptr; } + ipf.dehaze(orig_prev); ipf.ToneMapFattal02(orig_prev); if (oprevi != orig_prev) { diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index a97ecef40..216641a45 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -339,6 +339,7 @@ public: void Badpixelscam(CieImage * ncie, double radius, int thresh, int mode, float chrom, bool hotbad); void BadpixelsLab(LabImage * lab, double radius, int thresh, float chrom); + void dehaze(Imagefloat *rgb); void ToneMapFattal02(Imagefloat *rgb); void localContrast(LabImage *lab); void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread); diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc new file mode 100644 index 000000000..aed647417 --- /dev/null +++ b/rtengine/ipdehaze.cc @@ -0,0 +1,335 @@ +/* -*- 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 . + */ + +/* + * Haze removal using the algorithm described in the paper: + * + * Single Image Haze Removal Using Dark Channel Prior + * by He, Sun and Tang + * + * using a guided filter for the "soft matting" of the transmission map + * + */ + +#include "improcfun.h" +#include "guidedfilter.h" +#include "rt_math.h" +#include "rt_algo.h" +#include +#include + +extern Options options; + +namespace rtengine { + +namespace { + +#if 0 +# define DEBUG_DUMP(arr) \ + do { \ + Imagefloat im(arr.width(), arr.height()); \ + const char *out = "/tmp/" #arr ".tif"; \ + for (int y = 0; y < im.getHeight(); ++y) { \ + for (int x = 0; x < im.getWidth(); ++x) { \ + im.r(y, x) = im.g(y, x) = im.b(y, x) = arr[y][x] * 65535.f; \ + } \ + } \ + im.saveTIFF(out, 16); \ + } while (false) +#else +# define DEBUG_DUMP(arr) +#endif + + +int get_dark_channel(const Imagefloat &src, array2D &dst, + int patchsize, float *ambient, bool multithread) +{ + const int w = src.getWidth(); + const int h = src.getHeight(); + + int npatches = 0; + +#ifdef _OPENMP + #pragma omp parallel for if (multithread) +#endif + for (int y = 0; y < src.getHeight(); y += patchsize) { + int pH = std::min(y+patchsize, h); + for (int x = 0; x < src.getWidth(); x += patchsize, ++npatches) { + float val = RT_INFINITY_F; + int pW = std::min(x+patchsize, w); + for (int yy = y; yy < pH; ++yy) { + float yval = RT_INFINITY_F; + for (int xx = x; xx < pW; ++xx) { + float r = src.r(yy, xx); + float g = src.g(yy, xx); + float b = src.b(yy, xx); + if (ambient) { + r /= ambient[0]; + g /= ambient[1]; + b /= ambient[2]; + } + yval = min(yval, r, g, b); + } + val = min(val, yval); + } + for (int yy = y; yy < pH; ++yy) { + std::fill(dst[yy]+x, dst[yy]+pW, val); + } + for (int yy = y; yy < pH; ++yy) { + for (int xx = x; xx < pW; ++xx) { + float r = src.r(yy, xx); + float g = src.g(yy, xx); + float b = src.b(yy, xx); + if (ambient) { + r /= ambient[0]; + g /= ambient[1]; + b /= ambient[2]; + } + float l = min(r, g, b); + if (l >= 2.f * val) { + dst[yy][xx] = l; + } + } + } + } + } + + return npatches; +} + + +int estimate_ambient_light(const Imagefloat *img, const array2D &dark, const array2D &Y, int patchsize, int npatches, float ambient[3]) +{ + const int W = img->getWidth(); + const int H = img->getHeight(); + + const auto get_percentile = + [](std::priority_queue &q, float prcnt) -> float + { + size_t n = LIM(q.size() * prcnt, 1, q.size()); + while (q.size() > n) { + q.pop(); + } + return q.top(); + }; + + float lim = RT_INFINITY_F; + { + std::priority_queue p; + for (int y = 0; y < H; y += patchsize) { + for (int x = 0; x < W; x += patchsize) { + p.push(dark[y][x]); + } + } + lim = get_percentile(p, 0.95); + } + + std::vector> patches; + patches.reserve(npatches); + + for (int y = 0; y < H; y += patchsize) { + for (int x = 0; x < W; x += patchsize) { + if (dark[y][x] >= lim) { + patches.push_back(std::make_pair(x, y)); + } + } + } + + if (options.rtSettings.verbose) { + std::cout << "dehaze: computing ambient light from " << patches.size() + << " patches" << std::endl; + } + + { + std::priority_queue l; + + for (auto &p : patches) { + const int pW = std::min(p.first+patchsize, W); + const int pH = std::min(p.second+patchsize, H); + + for (int y = p.second; y < pH; ++y) { + for (int x = p.first; x < pW; ++x) { + l.push(Y[y][x]); + } + } + } + + lim = get_percentile(l, 0.95); + } + + double rr = 0, gg = 0, bb = 0; + int n = 0; + for (auto &p : patches) { + const int pW = std::min(p.first+patchsize, W); + const int pH = std::min(p.second+patchsize, H); + + for (int y = p.second; y < pH; ++y) { + for (int x = p.first; x < pW; ++x) { + if (Y[y][x] >= lim) { + float r = img->r(y, x); + float g = img->g(y, x); + float b = img->b(y, x); + rr += r; + gg += g; + bb += b; + ++n; + } + } + } + } + ambient[0] = rr / n; + ambient[1] = gg / n; + ambient[2] = bb / n; + + return n; +} + + +void get_luminance(Imagefloat *img, array2D &Y, TMatrix ws, bool multithread) +{ + const int W = img->getWidth(); + const int H = img->getHeight(); + +#ifdef _OPENMP + #pragma omp parallel for if (multithread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + Y[y][x] = Color::rgbLuminance(img->r(y, x), img->g(y, x), img->b(y, x), ws); + } + } +} + + +} // namespace + + +void ImProcFunctions::dehaze(Imagefloat *img) +{ + if (!params->dehaze.enabled) { + return; + } + + img->normalizeFloatTo1(); + + const int W = img->getWidth(); + const int H = img->getHeight(); + const float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f); + + if (options.rtSettings.verbose) { + std::cout << "dehaze: strength = " << strength << std::endl; + } + + array2D dark(W, H); + const int patchsize = std::max(W / 200, 2); + int npatches = get_dark_channel(*img, dark, patchsize, nullptr, multiThread); + DEBUG_DUMP(dark); + + TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); + array2D Y(W, H); + get_luminance(img, Y, ws, multiThread); + + float ambient[3]; + int n = estimate_ambient_light(img, dark, Y, patchsize, npatches, ambient); + float ambient_Y = Color::rgbLuminance(ambient[0], ambient[1], ambient[2], ws); + + if (options.rtSettings.verbose) { + std::cout << "dehaze: ambient light is " + << ambient[0] << ", " << ambient[1] << ", " << ambient[2] + << " (average of " << n << ")" + << std::endl; + std::cout << " ambient luminance is " << ambient_Y << std::endl; + } + + if (min(ambient[0], ambient[1], ambient[2]) < 0.01f) { + if (options.rtSettings.verbose) { + std::cout << "dehaze: no haze detected" << std::endl; + } + img->normalizeFloatTo65535(); + return; // probably no haze at all + } + + array2D &t_tilde = dark; + get_dark_channel(*img, dark, patchsize, ambient, multiThread); + DEBUG_DUMP(t_tilde); + +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + dark[y][x] = 1.f - strength * dark[y][x]; + } + } + + const int radius = patchsize * 2; + const float epsilon = 2.5e-4; + array2D &t = t_tilde; + + guidedFilter(Y, t_tilde, t, radius, epsilon, multiThread); + + DEBUG_DUMP(t); + + const float t0 = 0.01; +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + float mt = std::max(t[y][x], t0); + float r = (img->r(y, x) - ambient[0]) / mt + ambient[0]; + float g = (img->g(y, x) - ambient[1]) / mt + ambient[1]; + float b = (img->b(y, x) - ambient[2]) / mt + ambient[2]; + img->r(y, x) = r; + img->g(y, x) = g; + img->b(y, x) = b; + } + } + + float oldmed; + findMinMaxPercentile(Y, Y.width() * Y.height(), 0.5, oldmed, 0.5, oldmed, multiThread); + + get_luminance(img, Y, ws, multiThread); + float newmed; + + findMinMaxPercentile(Y, Y.width() * Y.height(), 0.5, newmed, 0.5, newmed, multiThread); + + if (newmed > 1e-5f) { + const float f1 = oldmed / newmed; + const float f = f1 * 65535.f; +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + float r = img->r(y, x); + float g = img->g(y, x); + float b = img->b(y, x); + float h, s, l; + Color::rgb2hslfloat(r * f, g * f, b * f, h, s, l); + s = LIM01(s / f1); + Color::hsl2rgbfloat(h, s, l, img->r(y, x), img->g(y, x), img->b(y, x)); + } + } + } +} + + +} // namespace rtengine diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 4d0c7aed0..ceace7c3b 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2373,6 +2373,26 @@ bool SoftLightParams::operator !=(const SoftLightParams& other) const return !(*this == other); } + +DehazeParams::DehazeParams() : + enabled(false), + strength(50) +{ +} + +bool DehazeParams::operator ==(const DehazeParams& other) const +{ + return + enabled == other.enabled + && strength == other.strength; +} + +bool DehazeParams::operator !=(const DehazeParams& other) const +{ + return !(*this == other); +} + + RAWParams::BayerSensor::BayerSensor() : method(getMethodString(Method::AMAZE)), border(4), @@ -2727,6 +2747,8 @@ void ProcParams::setDefaults() softlight = SoftLightParams(); + dehaze = DehazeParams(); + raw = RAWParams(); metadata = MetaDataParams(); @@ -3037,6 +3059,10 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->defringe.threshold, "Defringing", "Threshold", defringe.threshold, keyFile); saveToKeyfile(!pedited || pedited->defringe.huecurve, "Defringing", "HueCurve", defringe.huecurve, keyFile); +// Dehaze + saveToKeyfile(!pedited || pedited->dehaze.enabled, "Dehaze", "Enabled", dehaze.enabled, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.strength, "Dehaze", "Strength", dehaze.strength, keyFile); + // Directional pyramid denoising saveToKeyfile(!pedited || pedited->dirpyrDenoise.enabled, "Directional Pyramid Denoising", "Enabled", dirpyrDenoise.enabled, keyFile); saveToKeyfile(!pedited || pedited->dirpyrDenoise.enhance, "Directional Pyramid Denoising", "Enhance", dirpyrDenoise.enhance, keyFile); @@ -4618,6 +4644,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "SoftLight", "Strength", pedited, softlight.strength, pedited->softlight.strength); } + if (keyFile.has_group("Dehaze")) { + assignFromKeyfile(keyFile, "Dehaze", "Enabled", pedited, dehaze.enabled, pedited->dehaze.enabled); + assignFromKeyfile(keyFile, "Dehaze", "Strength", pedited, dehaze.strength, pedited->dehaze.strength); + } + if (keyFile.has_group("Film Simulation")) { assignFromKeyfile(keyFile, "Film Simulation", "Enabled", pedited, filmSimulation.enabled, pedited->filmSimulation.enabled); assignFromKeyfile(keyFile, "Film Simulation", "ClutFilename", pedited, filmSimulation.clutFilename, pedited->filmSimulation.clutFilename); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 700c6271c..19fe0a376 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1227,6 +1227,17 @@ struct SoftLightParams { }; +struct DehazeParams { + bool enabled; + int strength; + + DehazeParams(); + + bool operator==(const DehazeParams &other) const; + bool operator!=(const DehazeParams &other) const; +}; + + /** * Parameters for RAW demosaicing, common to all sensor type */ @@ -1438,6 +1449,7 @@ public: HSVEqualizerParams hsvequalizer; ///< hsv wavelet parameters FilmSimulationParams filmSimulation; ///< film simulation parameters SoftLightParams softlight; ///< softlight parameters + DehazeParams dehaze; ///< dehaze parameters int rank; ///< Custom image quality ranking int colorlabel; ///< Custom color label bool inTrash; ///< Marks deleted image diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 79dee36bf..bb710ee83 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1200,6 +1200,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ipf.firstAnalysis (baseImg, params, hist16); + ipf.dehaze(baseImg); if (params.fattal.enabled) { ipf.ToneMapFattal02(baseImg); } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index fbee20f44..0846eacbd 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -854,6 +854,7 @@ private: ipf.firstAnalysis (baseImg, params, hist16); + ipf.dehaze(baseImg); if (params.fattal.enabled) { ipf.ToneMapFattal02(baseImg); } diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index dc7826501..351d60bc9 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -952,7 +952,7 @@ inline void rescale_nearest (const Array2Df &src, Array2Df &dst, bool multithrea inline float luminance (float r, float g, float b, TMatrix ws) { - return r * ws[1][0] + g * ws[1][1] + b * ws[1][2]; + return Color::rgbLuminance(r, g, b, ws); } diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 8150fbce3..434e8187e 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -156,6 +156,7 @@ set(NONCLISOURCEFILES metadatapanel.cc labgrid.cc softlight.cc + dehaze.cc ) include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 8cf39aa29..1d9c621eb 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -142,6 +142,7 @@ enum { ADDSET_BAYER_DUALDEMOZCONTRAST, ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION, ADDSET_SOFTLIGHT_STRENGTH, + ADDSET_DEHAZE_STRENGTH, ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!! }; diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index b31f41e4f..13b1f6677 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -202,6 +202,7 @@ void BatchToolPanelCoordinator::initSession () colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRENGTH], options.baBehav[ADDSET_COLORTONING_BALANCE]); filmSimulation->setAdjusterBehavior(options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]); softlight->setAdjusterBehavior(options.baBehav[ADDSET_SOFTLIGHT_STRENGTH]); + dehaze->setAdjusterBehavior(options.baBehav[ADDSET_DEHAZE_STRENGTH]); retinex->setAdjusterBehavior (options.baBehav[ADDSET_RETI_STR], options.baBehav[ADDSET_RETI_NEIGH], options.baBehav[ADDSET_RETI_LIMD], options.baBehav[ADDSET_RETI_OFFS], options.baBehav[ADDSET_RETI_VART], options.baBehav[ADDSET_RETI_GAM], options.baBehav[ADDSET_RETI_SLO]); chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER] ); @@ -292,6 +293,7 @@ void BatchToolPanelCoordinator::initSession () if (options.baBehav[ADDSET_COLORTONING_STRENGTH]) { pparams.colorToning.strength = 0; } if (options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]) { pparams.filmSimulation.strength = 0; } if (options.baBehav[ADDSET_SOFTLIGHT_STRENGTH]) { pparams.softlight.strength = 0; } + if (options.baBehav[ADDSET_DEHAZE_STRENGTH]) { pparams.dehaze.strength = 0; } if (options.baBehav[ADDSET_ROTATE_DEGREE]) { pparams.rotate.degree = 0; } if (options.baBehav[ADDSET_RESIZE_SCALE]) { pparams.resize.scale = 0; } if (options.baBehav[ADDSET_DIST_AMOUNT]) { pparams.distortion.amount = 0; } diff --git a/rtgui/dehaze.cc b/rtgui/dehaze.cc new file mode 100644 index 000000000..6f4814e55 --- /dev/null +++ b/rtgui/dehaze.cc @@ -0,0 +1,115 @@ +/** -*- 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 "dehaze.h" +#include "eventmapper.h" +#include +#include + +using namespace rtengine; +using namespace rtengine::procparams; + +Dehaze::Dehaze(): FoldableToolPanel(this, "dehaze", M("TP_DEHAZE_LABEL"), false, true) +{ + auto m = ProcEventMapper::getInstance(); + EvDehazeEnabled = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_ENABLED"); + EvDehazeStrength = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_STRENGTH"); + + strength = Gtk::manage(new Adjuster(M("TP_DEHAZE_STRENGTH"), 0., 100., 1., 50.)); + strength->setAdjusterListener(this); + strength->show(); + + pack_start(*strength); +} + + +void Dehaze::read(const ProcParams *pp, const ParamsEdited *pedited) +{ + disableListener(); + + if (pedited) { + strength->setEditedState(pedited->dehaze.strength ? Edited : UnEdited); + set_inconsistent(multiImage && !pedited->dehaze.enabled); + } + + setEnabled(pp->dehaze.enabled); + strength->setValue(pp->dehaze.strength); + + enableListener(); +} + + +void Dehaze::write(ProcParams *pp, ParamsEdited *pedited) +{ + pp->dehaze.strength = strength->getValue(); + pp->dehaze.enabled = getEnabled(); + + if (pedited) { + pedited->dehaze.strength = strength->getEditedState(); + pedited->dehaze.enabled = !get_inconsistent(); + } +} + +void Dehaze::setDefaults(const ProcParams *defParams, const ParamsEdited *pedited) +{ + strength->setDefault(defParams->dehaze.strength); + + if (pedited) { + strength->setDefaultEditedState(pedited->dehaze.strength ? Edited : UnEdited); + } else { + strength->setDefaultEditedState(Irrelevant); + } +} + + +void Dehaze::adjusterChanged(Adjuster* a, double newval) +{ + if (listener && getEnabled()) { + listener->panelChanged(EvDehazeStrength, a->getTextValue()); + } +} + + +void Dehaze::enabledChanged () +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged(EvDehazeEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged(EvDehazeEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(EvDehazeEnabled, M("GENERAL_DISABLED")); + } + } +} + + +void Dehaze::setBatchMode(bool batchMode) +{ + ToolPanel::setBatchMode(batchMode); + + strength->showEditedCB(); +} + + +void Dehaze::setAdjusterBehavior(bool strengthAdd) +{ + strength->setAddMode(strengthAdd); +} + diff --git a/rtgui/dehaze.h b/rtgui/dehaze.h new file mode 100644 index 000000000..3617f13ea --- /dev/null +++ b/rtgui/dehaze.h @@ -0,0 +1,47 @@ +/** -*- 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 . + */ +#pragma once + +#include +#include "adjuster.h" +#include "toolpanel.h" + +class Dehaze: public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +{ +private: + Adjuster *strength; + + rtengine::ProcEvent EvDehazeEnabled; + rtengine::ProcEvent EvDehazeStrength; + +public: + + Dehaze(); + + 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 strengthAdd); +}; + diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 342d9adf9..fef8da8e6 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -566,6 +566,8 @@ void ParamsEdited::set(bool v) filmSimulation.strength = v; softlight.enabled = v; softlight.strength = v; + dehaze.enabled = v; + dehaze.strength = v; metadata.mode = v; exif = v; @@ -1119,6 +1121,8 @@ void ParamsEdited::initFrom(const std::vector& filmSimulation.strength = filmSimulation.strength && p.filmSimulation.strength == other.filmSimulation.strength; softlight.enabled = softlight.enabled && p.softlight.enabled == other.softlight.enabled; softlight.strength = softlight.strength && p.softlight.strength == other.softlight.strength; + dehaze.enabled = dehaze.enabled && p.dehaze.enabled == other.dehaze.enabled; + dehaze.strength = dehaze.strength && p.dehaze.strength == other.dehaze.strength; metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode; // How the hell can we handle that??? @@ -3112,6 +3116,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng if (softlight.strength) { toEdit.softlight.strength = dontforceSet && options.baBehav[ADDSET_SOFTLIGHT_STRENGTH] ? toEdit.softlight.strength + mods.softlight.strength : mods.softlight.strength; } + + if (dehaze.enabled) { + toEdit.dehaze.enabled = mods.dehaze.enabled; + } + + if (dehaze.strength) { + toEdit.dehaze.strength = dontforceSet && options.baBehav[ADDSET_DEHAZE_STRENGTH] ? toEdit.dehaze.strength + mods.dehaze.strength : mods.dehaze.strength; + } if (metadata.mode) { toEdit.metadata.mode = mods.metadata.mode; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 177b05d85..6a2076032 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -724,6 +724,14 @@ public: bool strength; }; +class DehazeParamsEdited +{ +public: + bool enabled; + bool strength; +}; + + class RAWParamsEdited { @@ -865,6 +873,7 @@ public: HSVEqualizerParamsEdited hsvequalizer; FilmSimulationParamsEdited filmSimulation; SoftLightParamsEdited softlight; + DehazeParamsEdited dehaze; MetaDataParamsEdited metadata; bool exif; bool iptc; diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 6b192dba9..065deef6a 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -65,6 +65,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren 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"))); + dehaze = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEHAZE")) ); // Advanced Settings: retinex = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RETINEX"))); @@ -168,6 +169,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[1]->pack_start (*dirpyrden, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*defringe, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*dirpyreq, Gtk::PACK_SHRINK, 2); + vboxes[1]->pack_start (*dehaze, Gtk::PACK_SHRINK, 2); //COLOR vboxes[2]->pack_start (*color, Gtk::PACK_SHRINK, 2); @@ -327,6 +329,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren dirpyrdenConn = dirpyrden->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)); + dehazeConn = dehaze->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); // Advanced Settings: retinexConn = retinex->signal_toggled().connect (sigc::bind (sigc::mem_fun(*advanced, &Gtk::CheckButton::set_inconsistent), true)); @@ -534,6 +537,7 @@ void PartialPasteDlg::detailToggled () ConnectionBlocker dirpyrdenBlocker(dirpyrdenConn); ConnectionBlocker defringeBlocker(defringeConn); ConnectionBlocker dirpyreqBlocker(dirpyreqConn); + ConnectionBlocker dehazeBlocker(dehazeConn); detail->set_inconsistent (false); @@ -545,6 +549,7 @@ void PartialPasteDlg::detailToggled () dirpyrden->set_active (detail->get_active ()); defringe->set_active (detail->get_active ()); dirpyreq->set_active (detail->get_active ()); + dehaze->set_active (detail->get_active ()); } void PartialPasteDlg::advancedToggled () @@ -762,6 +767,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.softlight = falsePE.softlight; } + if (!dehaze->get_active ()) { + filterPE.dehaze = falsePE.dehaze; + } + if (!rgbcurves->get_active ()) { filterPE.rgbCurves = falsePE.rgbCurves; } diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 5195d0756..f551ac134 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -63,6 +63,7 @@ public: Gtk::CheckButton* dirpyrden; Gtk::CheckButton* defringe; Gtk::CheckButton* dirpyreq; + Gtk::CheckButton* dehaze; // options in wavelet Gtk::CheckButton* wavelet; @@ -131,7 +132,7 @@ public: sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, advancedConn; 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 sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn, dehazeConn; sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn, softlightConn; sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn; sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index a7b45c902..33d8489f7 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -255,6 +255,10 @@ Gtk::Widget* Preferences::getBatchProcPanel () appendBehavList (mi, M ("TP_DIRPYRDENOISE_MAIN_GAMMA"), ADDSET_DIRPYRDN_GAMMA, true); appendBehavList (mi, M ("TP_DIRPYRDENOISE_MEDIAN_PASSES"), ADDSET_DIRPYRDN_PASSES, true); + mi = behModel->append (); + mi->set_value ( behavColumns.label, M ("TP_DEHAZE_LABEL") ); + appendBehavList ( mi, M ( "TP_DEHAZE_STRENGTH" ), ADDSET_DEHAZE_STRENGTH, true ); + mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_WBALANCE_LABEL")); appendBehavList (mi, M ("TP_WBALANCE_TEMPERATURE"), ADDSET_WB_TEMPERATURE, true); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index deecb7682..99367999c 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -77,6 +77,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan hsvequalizer = Gtk::manage (new HSVEqualizer ()); filmSimulation = Gtk::manage (new FilmSimulation ()); softlight = Gtk::manage(new SoftLight()); + dehaze = Gtk::manage(new Dehaze()); sensorbayer = Gtk::manage (new SensorBayer ()); sensorxtrans = Gtk::manage (new SensorXTrans ()); bayerprocess = Gtk::manage (new BayerProcess ()); @@ -126,6 +127,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addPanel (detailsPanel, dirpyrdenoise); addPanel (detailsPanel, defringe); addPanel (detailsPanel, dirpyrequalizer); + addPanel (detailsPanel, dehaze); addPanel (advancedPanel, wavelet); addPanel (transformPanel, crop); addPanel (transformPanel, resize); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 1c46ee54e..ca5c5fac4 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -80,6 +80,7 @@ #include "fattaltonemap.h" #include "localcontrast.h" #include "softlight.h" +#include "dehaze.h" #include "guiutils.h" class ImageEditorCoordinator; @@ -136,6 +137,7 @@ protected: DirPyrEqualizer* dirpyrequalizer; HSVEqualizer* hsvequalizer; SoftLight *softlight; + Dehaze *dehaze; FilmSimulation *filmSimulation; SensorBayer * sensorbayer; SensorXTrans * sensorxtrans; From 75964dfd8b767ded7b92ea47f6f57159518e1be4 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 10 Oct 2018 17:08:36 +0200 Subject: [PATCH 003/348] make sure that dehaze doesn't trigger Fattal tone mapping (bad interaction due to sloppy rebasing) --- rtengine/rtthumbnail.cc | 4 +--- rtengine/simpleprocess.cc | 4 +--- rtengine/tmo_fattal02.cc | 4 ++++ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index bb710ee83..8a8ce1d9b 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1201,9 +1201,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ipf.firstAnalysis (baseImg, params, hist16); ipf.dehaze(baseImg); - if (params.fattal.enabled) { - ipf.ToneMapFattal02(baseImg); - } + ipf.ToneMapFattal02(baseImg); // perform transform if (ipf.needsTransform()) { diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 0846eacbd..5cd630315 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -855,9 +855,7 @@ private: ipf.firstAnalysis (baseImg, params, hist16); ipf.dehaze(baseImg); - if (params.fattal.enabled) { - ipf.ToneMapFattal02(baseImg); - } + ipf.ToneMapFattal02(baseImg); // perform transform (excepted resizing) if (ipf.needsTransform()) { diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index 351d60bc9..124cdbfb1 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -1014,6 +1014,10 @@ inline int find_fast_dim (int dim) void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) { + if (!params->fattal.enabled) { + return; + } + BENCHFUN const int detail_level = 3; From 34321c70125ae89b8874b592e59faba4b9587709 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 10 Oct 2018 22:49:12 +0200 Subject: [PATCH 004/348] guided filter: properly validate radius parameter before calling boxblur --- rtengine/boxblur.h | 2 -- rtengine/guidedfilter.cc | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/rtengine/boxblur.h b/rtengine/boxblur.h index f38c8f6e4..805575b77 100644 --- a/rtengine/boxblur.h +++ b/rtengine/boxblur.h @@ -35,8 +35,6 @@ namespace rtengine template void boxblur (T** src, A** dst, int radx, int rady, int W, int H) { //box blur image; box range = (radx,rady) - radx = min(radx, W-1); - rady = min(rady, H-1); AlignedBuffer* buffer = new AlignedBuffer (W * H); float* temp = buffer->data; diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index 4f4c5a247..3000e1d5d 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -110,6 +110,7 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 const auto f_mean = [](array2D &d, array2D &s, int rad) -> void { + rad = min(rad, s.width() / 2, s.height() / 2); boxblur(s, d, rad, rad, s.width(), s.height()); }; From 83f5205006dc1ba8f893691780aede843795a85f Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 11 Oct 2018 13:41:41 +0200 Subject: [PATCH 005/348] guided filter: proper bounding of the radius before calling boxblur --- rtengine/boxblur.h | 2 ++ rtengine/guidedfilter.cc | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rtengine/boxblur.h b/rtengine/boxblur.h index 805575b77..71452ceae 100644 --- a/rtengine/boxblur.h +++ b/rtengine/boxblur.h @@ -35,6 +35,8 @@ namespace rtengine template void boxblur (T** src, A** dst, int radx, int rady, int W, int H) { //box blur image; box range = (radx,rady) + assert(2*radx+1 < W); + assert(2*rady+1 < H); AlignedBuffer* buffer = new AlignedBuffer (W * H); float* temp = buffer->data; diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index 3000e1d5d..f6b702a73 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -110,7 +110,7 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 const auto f_mean = [](array2D &d, array2D &s, int rad) -> void { - rad = min(rad, s.width() / 2, s.height() / 2); + rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1); boxblur(s, d, rad, rad, s.width(), s.height()); }; From 74ae459bf2c8782ced1ab592e4a2e5416ecf1f04 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 11 Oct 2018 13:43:45 +0200 Subject: [PATCH 006/348] dehaze: added more user-controllable parameters --- rtdata/languages/default | 6 +++ rtengine/ipdehaze.cc | 95 ++++++++++++++++++++++++++++++++++++---- rtengine/procparams.cc | 16 ++++++- rtengine/procparams.h | 3 ++ rtgui/dehaze.cc | 54 ++++++++++++++++++++++- rtgui/dehaze.h | 7 +++ rtgui/paramsedited.cc | 18 ++++++++ rtgui/paramsedited.h | 3 ++ 8 files changed, 190 insertions(+), 12 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index dcf626948..facf89498 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -728,7 +728,10 @@ HISTORY_MSG_492;RGB Curves HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction +HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +HISTORY_MSG_DEHAZE_DETAIL;Dehaze - Detail HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold HISTORY_MSG_HISTMATCHING;Auto-matched tone curve @@ -1508,7 +1511,10 @@ TP_DARKFRAME_LABEL;Dark-Frame TP_DEFRINGE_LABEL;Defringe TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Threshold +TP_DEHAZE_DEPTH;Depth +TP_DEHAZE_DETAIL;Detail TP_DEHAZE_LABEL;Haze Removal +TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map TP_DEHAZE_STRENGTH;Strength TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index aed647417..7fa1988ce 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -218,6 +218,59 @@ void get_luminance(Imagefloat *img, array2D &Y, TMatrix ws, bool multithr } +void apply_contrast(array2D &dark, int contrast, double scale, bool multithread) +{ + if (contrast) { + const int W = dark.width(); + const int H = dark.height(); + + double tot = 0.0; +#ifdef _OPENMP + #pragma omp parallel for if (multithread) +#endif + for (int y = 0; y < H; ++y) { + double ytot = 0.0; + for (int x = 0; x < W; ++x) { + ytot += dark[y][x]; + } +#ifdef _OPENMP + #pragma omp critical +#endif + { + tot += ytot; + } + } + + float avg = tot / (W * H); + + std::vector pts = { + DCT_NURBS, + 0, //black point. Value in [0 ; 1] range + 0, //black point. Value in [0 ; 1] range + + avg - avg * (0.6 - contrast / 250.0), //toe point + avg - avg * (0.6 + contrast / 250.0), //value at toe point + + avg + (1 - avg) * (0.6 - contrast / 250.0), //shoulder point + avg + (1 - avg) * (0.6 + contrast / 250.0), //value at shoulder point + + 1., // white point + 1. // value at white point + }; + + const DiagonalCurve curve(pts, CURVES_MIN_POLY_POINTS / scale); + +#ifdef _OPENMP + #pragma omp parallel for if (multithread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + dark[y][x] = curve.getVal(dark[y][x]); + } + } + } +} + } // namespace @@ -231,14 +284,14 @@ void ImProcFunctions::dehaze(Imagefloat *img) const int W = img->getWidth(); const int H = img->getHeight(); - const float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f); + float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f); if (options.rtSettings.verbose) { std::cout << "dehaze: strength = " << strength << std::endl; } array2D dark(W, H); - const int patchsize = std::max(W / 200, 2); + const int patchsize = std::max(W / (200 + max(params->dehaze.detail, 0)), 2); int npatches = get_dark_channel(*img, dark, patchsize, nullptr, multiThread); DEBUG_DUMP(dark); @@ -268,18 +321,27 @@ void ImProcFunctions::dehaze(Imagefloat *img) array2D &t_tilde = dark; get_dark_channel(*img, dark, patchsize, ambient, multiThread); + apply_contrast(dark, params->dehaze.depth, scale, multiThread); DEBUG_DUMP(t_tilde); - + + if (!params->dehaze.showDepthMap) { #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) { - dark[y][x] = 1.f - strength * dark[y][x]; + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + dark[y][x] = 1.f - strength * dark[y][x]; + } } } - const int radius = patchsize * 2; + float mult = 2.f; + if (params->dehaze.detail > 0) { + mult -= (params->dehaze.detail / 100.f) * 1.9f; + } else { + mult -= params->dehaze.detail / 10.f; + } + const int radius = max(int(patchsize * mult), 1); const float epsilon = 2.5e-4; array2D &t = t_tilde; @@ -287,6 +349,19 @@ void ImProcFunctions::dehaze(Imagefloat *img) DEBUG_DUMP(t); + + if (params->dehaze.showDepthMap) { +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + img->r(y, x) = img->g(y, x) = img->b(y, x) = t[y][x] * 65535.f; + } + } + return; + } + const float t0 = 0.01; #ifdef _OPENMP #pragma omp parallel for if (multiThread) @@ -313,7 +388,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) if (newmed > 1e-5f) { const float f1 = oldmed / newmed; - const float f = f1 * 65535.f; + const float f = /* f1 * */ 65535.f; #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif @@ -328,6 +403,8 @@ void ImProcFunctions::dehaze(Imagefloat *img) Color::hsl2rgbfloat(h, s, l, img->r(y, x), img->g(y, x), img->b(y, x)); } } + } else { + img->normalizeFloatTo65535(); } } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index ceace7c3b..17afb3371 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2376,7 +2376,10 @@ bool SoftLightParams::operator !=(const SoftLightParams& other) const DehazeParams::DehazeParams() : enabled(false), - strength(50) + strength(50), + showDepthMap(false), + depth(0), + detail(0) { } @@ -2384,7 +2387,10 @@ bool DehazeParams::operator ==(const DehazeParams& other) const { return enabled == other.enabled - && strength == other.strength; + && strength == other.strength + && showDepthMap == other.showDepthMap + && depth == other.depth + && detail == other.detail; } bool DehazeParams::operator !=(const DehazeParams& other) const @@ -3062,6 +3068,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo // Dehaze saveToKeyfile(!pedited || pedited->dehaze.enabled, "Dehaze", "Enabled", dehaze.enabled, keyFile); saveToKeyfile(!pedited || pedited->dehaze.strength, "Dehaze", "Strength", dehaze.strength, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.showDepthMap, "Dehaze", "ShowDepthMap", dehaze.showDepthMap, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.depth, "Dehaze", "Depth", dehaze.depth, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.detail, "Dehaze", "Detail", dehaze.detail, keyFile); // Directional pyramid denoising saveToKeyfile(!pedited || pedited->dirpyrDenoise.enabled, "Directional Pyramid Denoising", "Enabled", dirpyrDenoise.enabled, keyFile); @@ -4647,6 +4656,9 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (keyFile.has_group("Dehaze")) { assignFromKeyfile(keyFile, "Dehaze", "Enabled", pedited, dehaze.enabled, pedited->dehaze.enabled); assignFromKeyfile(keyFile, "Dehaze", "Strength", pedited, dehaze.strength, pedited->dehaze.strength); + assignFromKeyfile(keyFile, "Dehaze", "ShowDepthMap", pedited, dehaze.showDepthMap, pedited->dehaze.showDepthMap); + assignFromKeyfile(keyFile, "Dehaze", "Depth", pedited, dehaze.depth, pedited->dehaze.depth); + assignFromKeyfile(keyFile, "Dehaze", "Detail", pedited, dehaze.detail, pedited->dehaze.detail); } if (keyFile.has_group("Film Simulation")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 19fe0a376..143fedbe8 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1230,6 +1230,9 @@ struct SoftLightParams { struct DehazeParams { bool enabled; int strength; + bool showDepthMap; + int depth; + int detail; DehazeParams(); diff --git a/rtgui/dehaze.cc b/rtgui/dehaze.cc index 6f4814e55..ef5075ab7 100644 --- a/rtgui/dehaze.cc +++ b/rtgui/dehaze.cc @@ -30,12 +30,30 @@ Dehaze::Dehaze(): FoldableToolPanel(this, "dehaze", M("TP_DEHAZE_LABEL"), false, auto m = ProcEventMapper::getInstance(); EvDehazeEnabled = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_ENABLED"); EvDehazeStrength = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_STRENGTH"); + EvDehazeShowDepthMap = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP"); + EvDehazeDepth = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_DEPTH"); + EvDehazeDetail = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_DETAIL"); strength = Gtk::manage(new Adjuster(M("TP_DEHAZE_STRENGTH"), 0., 100., 1., 50.)); strength->setAdjusterListener(this); strength->show(); + depth = Gtk::manage(new Adjuster(M("TP_DEHAZE_DEPTH"), -100., 100., 1., 0.)); + depth->setAdjusterListener(this); + depth->show(); + + detail = Gtk::manage(new Adjuster(M("TP_DEHAZE_DETAIL"), -100, 100, 1, 0)); + detail->setAdjusterListener(this); + detail->show(); + + showDepthMap = Gtk::manage(new Gtk::CheckButton(M("TP_DEHAZE_SHOW_DEPTH_MAP"))); + showDepthMap->signal_toggled().connect(sigc::mem_fun(*this, &Dehaze::showDepthMapChanged)); + showDepthMap->show(); + pack_start(*strength); + pack_start(*depth); + pack_start(*detail); + pack_start(*showDepthMap); } @@ -45,11 +63,17 @@ void Dehaze::read(const ProcParams *pp, const ParamsEdited *pedited) if (pedited) { strength->setEditedState(pedited->dehaze.strength ? Edited : UnEdited); + depth->setEditedState(pedited->dehaze.depth ? Edited : UnEdited); + detail->setEditedState(pedited->dehaze.detail ? Edited : UnEdited); set_inconsistent(multiImage && !pedited->dehaze.enabled); + showDepthMap->set_inconsistent(!pedited->dehaze.showDepthMap); } setEnabled(pp->dehaze.enabled); strength->setValue(pp->dehaze.strength); + depth->setValue(pp->dehaze.depth); + detail->setValue(pp->dehaze.detail); + showDepthMap->set_active(pp->dehaze.showDepthMap); enableListener(); } @@ -58,22 +82,34 @@ void Dehaze::read(const ProcParams *pp, const ParamsEdited *pedited) void Dehaze::write(ProcParams *pp, ParamsEdited *pedited) { pp->dehaze.strength = strength->getValue(); + pp->dehaze.depth = depth->getValue(); + pp->dehaze.detail = detail->getValue(); pp->dehaze.enabled = getEnabled(); + pp->dehaze.showDepthMap = showDepthMap->get_active(); if (pedited) { pedited->dehaze.strength = strength->getEditedState(); + pedited->dehaze.depth = depth->getEditedState(); + pedited->dehaze.detail = detail->getEditedState(); pedited->dehaze.enabled = !get_inconsistent(); + pedited->dehaze.showDepthMap = !showDepthMap->get_inconsistent(); } } void Dehaze::setDefaults(const ProcParams *defParams, const ParamsEdited *pedited) { strength->setDefault(defParams->dehaze.strength); + depth->setDefault(defParams->dehaze.depth); + detail->setDefault(defParams->dehaze.detail); if (pedited) { strength->setDefaultEditedState(pedited->dehaze.strength ? Edited : UnEdited); + depth->setDefaultEditedState(pedited->dehaze.depth ? Edited : UnEdited); + detail->setDefaultEditedState(pedited->dehaze.detail ? Edited : UnEdited); } else { strength->setDefaultEditedState(Irrelevant); + depth->setDefaultEditedState(Irrelevant); + detail->setDefaultEditedState(Irrelevant); } } @@ -81,7 +117,13 @@ void Dehaze::setDefaults(const ProcParams *defParams, const ParamsEdited *pedite void Dehaze::adjusterChanged(Adjuster* a, double newval) { if (listener && getEnabled()) { - listener->panelChanged(EvDehazeStrength, a->getTextValue()); + if (a == strength) { + listener->panelChanged(EvDehazeStrength, a->getTextValue()); + } else if (a == depth) { + listener->panelChanged(EvDehazeDepth, a->getTextValue()); + } else if (a == detail) { + listener->panelChanged(EvDehazeDetail, a->getTextValue()); + } } } @@ -100,11 +142,21 @@ void Dehaze::enabledChanged () } +void Dehaze::showDepthMapChanged() +{ + if (listener) { + listener->panelChanged(EvDehazeShowDepthMap, showDepthMap->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + } +} + + void Dehaze::setBatchMode(bool batchMode) { ToolPanel::setBatchMode(batchMode); strength->showEditedCB(); + depth->showEditedCB(); + detail->showEditedCB(); } diff --git a/rtgui/dehaze.h b/rtgui/dehaze.h index 3617f13ea..ae6097c86 100644 --- a/rtgui/dehaze.h +++ b/rtgui/dehaze.h @@ -27,9 +27,15 @@ class Dehaze: public ToolParamBlock, public AdjusterListener, public FoldableToo { private: Adjuster *strength; + Adjuster *depth; + Adjuster *detail; + Gtk::CheckButton *showDepthMap; rtengine::ProcEvent EvDehazeEnabled; rtengine::ProcEvent EvDehazeStrength; + rtengine::ProcEvent EvDehazeDepth; + rtengine::ProcEvent EvDehazeDetail; + rtengine::ProcEvent EvDehazeShowDepthMap; public: @@ -42,6 +48,7 @@ public: void adjusterChanged(Adjuster *a, double newval); void enabledChanged(); + void showDepthMapChanged(); void setAdjusterBehavior(bool strengthAdd); }; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index fef8da8e6..ffc1bd19c 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -568,6 +568,9 @@ void ParamsEdited::set(bool v) softlight.strength = v; dehaze.enabled = v; dehaze.strength = v; + dehaze.showDepthMap = v; + dehaze.depth = v; + dehaze.detail = v; metadata.mode = v; exif = v; @@ -1123,6 +1126,9 @@ void ParamsEdited::initFrom(const std::vector& softlight.strength = softlight.strength && p.softlight.strength == other.softlight.strength; dehaze.enabled = dehaze.enabled && p.dehaze.enabled == other.dehaze.enabled; dehaze.strength = dehaze.strength && p.dehaze.strength == other.dehaze.strength; + dehaze.showDepthMap = dehaze.showDepthMap && p.dehaze.showDepthMap == other.dehaze.showDepthMap; + dehaze.depth = dehaze.depth && p.dehaze.depth == other.dehaze.depth; + dehaze.detail = dehaze.detail && p.dehaze.detail == other.dehaze.detail; metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode; // How the hell can we handle that??? @@ -3125,6 +3131,18 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.dehaze.strength = dontforceSet && options.baBehav[ADDSET_DEHAZE_STRENGTH] ? toEdit.dehaze.strength + mods.dehaze.strength : mods.dehaze.strength; } + if (dehaze.depth) { + toEdit.dehaze.depth = mods.dehaze.depth; + } + + if (dehaze.detail) { + toEdit.dehaze.detail = mods.dehaze.detail; + } + + if (dehaze.showDepthMap) { + toEdit.dehaze.showDepthMap = mods.dehaze.showDepthMap; + } + if (metadata.mode) { toEdit.metadata.mode = mods.metadata.mode; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 6a2076032..73a19db88 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -729,6 +729,9 @@ class DehazeParamsEdited public: bool enabled; bool strength; + bool showDepthMap; + bool depth; + bool detail; }; From 7c10f92ace3ba69ccccc314ceb49f6d9a5b16f7d Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 12 Oct 2018 16:01:48 +0200 Subject: [PATCH 007/348] dehaze: improved use of the guided filter for less halos --- rtengine/ipdehaze.cc | 152 ++++++++++++++++++++++++++----------------- 1 file changed, 94 insertions(+), 58 deletions(-) diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 7fa1988ce..355d7f843 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -58,28 +58,28 @@ namespace { #endif -int get_dark_channel(const Imagefloat &src, array2D &dst, +int get_dark_channel(const array2D &R, const array2D &G, const array2D &B, array2D &dst, int patchsize, float *ambient, bool multithread) { - const int w = src.getWidth(); - const int h = src.getHeight(); + const int W = R.width(); + const int H = R.height(); int npatches = 0; #ifdef _OPENMP #pragma omp parallel for if (multithread) #endif - for (int y = 0; y < src.getHeight(); y += patchsize) { - int pH = std::min(y+patchsize, h); - for (int x = 0; x < src.getWidth(); x += patchsize, ++npatches) { + for (int y = 0; y < H; y += patchsize) { + int pH = std::min(y+patchsize, H); + for (int x = 0; x < W; x += patchsize, ++npatches) { float val = RT_INFINITY_F; - int pW = std::min(x+patchsize, w); + int pW = std::min(x+patchsize, W); for (int yy = y; yy < pH; ++yy) { float yval = RT_INFINITY_F; for (int xx = x; xx < pW; ++xx) { - float r = src.r(yy, xx); - float g = src.g(yy, xx); - float b = src.b(yy, xx); + float r = R[yy][xx]; + float g = G[yy][xx]; + float b = B[yy][xx]; if (ambient) { r /= ambient[0]; g /= ambient[1]; @@ -89,14 +89,16 @@ int get_dark_channel(const Imagefloat &src, array2D &dst, } val = min(val, yval); } + val = LIM01(val); for (int yy = y; yy < pH; ++yy) { std::fill(dst[yy]+x, dst[yy]+pW, val); } + float val2 = RT_INFINITY_F; for (int yy = y; yy < pH; ++yy) { for (int xx = x; xx < pW; ++xx) { - float r = src.r(yy, xx); - float g = src.g(yy, xx); - float b = src.b(yy, xx); + float r = R[yy][xx]; + float g = G[yy][xx]; + float b = B[yy][xx]; if (ambient) { r /= ambient[0]; g /= ambient[1]; @@ -104,7 +106,18 @@ int get_dark_channel(const Imagefloat &src, array2D &dst, } float l = min(r, g, b); if (l >= 2.f * val) { - dst[yy][xx] = l; + val2 = min(val2, l); + dst[yy][xx] = -1; + } + } + } + if (val2 < RT_INFINITY_F) { + val2 = LIM01(val2); + for (int yy = y; yy < pH; ++yy) { + for (int xx = x; xx < pW; ++xx) { + if (dst[yy][xx] < 0.f) { + dst[yy][xx] = val2; + } } } } @@ -115,10 +128,10 @@ int get_dark_channel(const Imagefloat &src, array2D &dst, } -int estimate_ambient_light(const Imagefloat *img, const array2D &dark, const array2D &Y, int patchsize, int npatches, float ambient[3]) +int estimate_ambient_light(const array2D &R, const array2D &G, const array2D &B, const array2D &dark, const array2D &Y, int patchsize, int npatches, float ambient[3]) { - const int W = img->getWidth(); - const int H = img->getHeight(); + const int W = R.width(); + const int H = R.height(); const auto get_percentile = [](std::priority_queue &q, float prcnt) -> float @@ -183,9 +196,9 @@ int estimate_ambient_light(const Imagefloat *img, const array2D &dark, co for (int y = p.second; y < pH; ++y) { for (int x = p.first; x < pW; ++x) { if (Y[y][x] >= lim) { - float r = img->r(y, x); - float g = img->g(y, x); - float b = img->b(y, x); + float r = R[y][x]; + float g = G[y][x]; + float b = B[y][x]; rr += r; gg += g; bb += b; @@ -218,41 +231,25 @@ void get_luminance(Imagefloat *img, array2D &Y, TMatrix ws, bool multithr } -void apply_contrast(array2D &dark, int contrast, double scale, bool multithread) +void apply_contrast(array2D &dark, float ambient, int contrast, double scale, bool multithread) { if (contrast) { const int W = dark.width(); const int H = dark.height(); - double tot = 0.0; -#ifdef _OPENMP - #pragma omp parallel for if (multithread) -#endif - for (int y = 0; y < H; ++y) { - double ytot = 0.0; - for (int x = 0; x < W; ++x) { - ytot += dark[y][x]; - } -#ifdef _OPENMP - #pragma omp critical -#endif - { - tot += ytot; - } - } - - float avg = tot / (W * H); + float avg = ambient * 0.25f; + float c = contrast * 0.3f; std::vector pts = { DCT_NURBS, 0, //black point. Value in [0 ; 1] range 0, //black point. Value in [0 ; 1] range - avg - avg * (0.6 - contrast / 250.0), //toe point - avg - avg * (0.6 + contrast / 250.0), //value at toe point + avg - avg * (0.6 - c / 250.0), //toe point + avg - avg * (0.6 + c / 250.0), //value at toe point - avg + (1 - avg) * (0.6 - contrast / 250.0), //shoulder point - avg + (1 - avg) * (0.6 + contrast / 250.0), //value at shoulder point + avg + (1 - avg) * (0.6 - c / 250.0), //shoulder point + avg + (1 - avg) * (0.6 + c / 250.0), //value at shoulder point 1., // white point 1. // value at white point @@ -271,6 +268,28 @@ void apply_contrast(array2D &dark, int contrast, double scale, bool multi } } + +void extract_channels(Imagefloat *img, const array2D &Y, array2D &r, array2D &g, array2D &b, int radius, float epsilon, bool multithread) +{ + const int W = img->getWidth(); + const int H = img->getHeight(); + +#ifdef _OPENMP + #pragma omp parallel for if (multithread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + r[y][x] = img->r(y, x); + g[y][x] = img->g(y, x); + b[y][x] = img->b(y, x); + } + } + + guidedFilter(Y, r, r, radius, epsilon, multithread); + guidedFilter(Y, g, g, radius, epsilon, multithread); + guidedFilter(Y, b, b, radius, epsilon, multithread); +} + } // namespace @@ -289,18 +308,24 @@ void ImProcFunctions::dehaze(Imagefloat *img) if (options.rtSettings.verbose) { std::cout << "dehaze: strength = " << strength << std::endl; } - - array2D dark(W, H); - const int patchsize = std::max(W / (200 + max(params->dehaze.detail, 0)), 2); - int npatches = get_dark_channel(*img, dark, patchsize, nullptr, multiThread); - DEBUG_DUMP(dark); TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); array2D Y(W, H); get_luminance(img, Y, ws, multiThread); + + array2D R(W, H); + array2D G(W, H); + array2D B(W, H); + int patchsize = max(int(20 / scale), 2); + extract_channels(img, Y, R, G, B, patchsize, 1e-1, multiThread); + array2D dark(W, H); + patchsize = std::max(W / (200 + params->dehaze.detail * (SGN(params->dehaze.detail) > 0 ? 4 : 1)), 2); + int npatches = get_dark_channel(R, G, B, dark, patchsize, nullptr, multiThread); + DEBUG_DUMP(dark); + float ambient[3]; - int n = estimate_ambient_light(img, dark, Y, patchsize, npatches, ambient); + int n = estimate_ambient_light(R, G, B, dark, Y, patchsize, npatches, ambient); float ambient_Y = Color::rgbLuminance(ambient[0], ambient[1], ambient[2], ws); if (options.rtSettings.verbose) { @@ -320,8 +345,8 @@ void ImProcFunctions::dehaze(Imagefloat *img) } array2D &t_tilde = dark; - get_dark_channel(*img, dark, patchsize, ambient, multiThread); - apply_contrast(dark, params->dehaze.depth, scale, multiThread); + get_dark_channel(R, G, B, dark, patchsize, ambient, multiThread); + apply_contrast(dark, ambient_Y, params->dehaze.depth, scale, multiThread); DEBUG_DUMP(t_tilde); if (!params->dehaze.showDepthMap) { @@ -344,7 +369,8 @@ void ImProcFunctions::dehaze(Imagefloat *img) const int radius = max(int(patchsize * mult), 1); const float epsilon = 2.5e-4; array2D &t = t_tilde; - + + if (!params->dehaze.showDepthMap) guidedFilter(Y, t_tilde, t, radius, epsilon, multiThread); DEBUG_DUMP(t); @@ -362,16 +388,26 @@ void ImProcFunctions::dehaze(Imagefloat *img) return; } - const float t0 = 0.01; + const float t0 = 0.1; + const float teps = 1e-3; #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif for (int y = 0; y < H; ++y) { for (int x = 0; x < W; ++x) { - float mt = std::max(t[y][x], t0); - float r = (img->r(y, x) - ambient[0]) / mt + ambient[0]; - float g = (img->g(y, x) - ambient[1]) / mt + ambient[1]; - float b = (img->b(y, x) - ambient[2]) / mt + ambient[2]; + float rgb[3] = { img->r(y, x), img->g(y, x), img->b(y, x) }; + float tl = 1.f - min(rgb[0]/ambient[0], rgb[1]/ambient[1], rgb[2]/ambient[2]); + float tu = t0 - teps; + for (int c = 0; c < 3; ++c) { + if (ambient[c] < 1) { + tu = max(tu, (rgb[c] - ambient[c])/(1.f - ambient[c])); + } + } + float mt = max(t[y][x], t0, tl + teps, tu + teps); + float r = (rgb[0] - ambient[0]) / mt + ambient[0]; + float g = (rgb[1] - ambient[1]) / mt + ambient[1]; + float b = (rgb[2] - ambient[2]) / mt + ambient[2]; + img->r(y, x) = r; img->g(y, x) = g; img->b(y, x) = b; @@ -388,7 +424,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) if (newmed > 1e-5f) { const float f1 = oldmed / newmed; - const float f = /* f1 * */ 65535.f; + const float f = f1 * 65535.f; #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif From 4d0ddd56e53e312a8d5fd29b61dd34708e91e615 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 16 Oct 2018 23:20:11 +0200 Subject: [PATCH 008/348] revamped and simplified dehaze -- now it's finally usable --- rtdata/languages/default | 2 - rtengine/ipdehaze.cc | 286 ++++++++++++--------------------------- rtengine/procparams.cc | 8 +- rtengine/procparams.h | 1 - rtgui/dehaze.cc | 18 +-- rtgui/dehaze.h | 2 - rtgui/paramsedited.cc | 6 - rtgui/paramsedited.h | 1 - 8 files changed, 87 insertions(+), 237 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index facf89498..7dcefdbc8 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -729,7 +729,6 @@ HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth -HISTORY_MSG_DEHAZE_DETAIL;Dehaze - Detail HISTORY_MSG_DEHAZE_ENABLED;Haze Removal HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength @@ -1512,7 +1511,6 @@ TP_DEFRINGE_LABEL;Defringe TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Threshold TP_DEHAZE_DEPTH;Depth -TP_DEHAZE_DETAIL;Detail TP_DEHAZE_LABEL;Haze Removal TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map TP_DEHAZE_STRENGTH;Strength diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 355d7f843..1c5512c2a 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -70,10 +70,10 @@ int get_dark_channel(const array2D &R, const array2D &G, const arr #pragma omp parallel for if (multithread) #endif for (int y = 0; y < H; y += patchsize) { - int pH = std::min(y+patchsize, H); + int pH = min(y+patchsize, H); for (int x = 0; x < W; x += patchsize, ++npatches) { float val = RT_INFINITY_F; - int pW = std::min(x+patchsize, W); + int pW = min(x+patchsize, W); for (int yy = y; yy < pH; ++yy) { float yval = RT_INFINITY_F; for (int xx = x; xx < pW; ++xx) { @@ -93,34 +93,6 @@ int get_dark_channel(const array2D &R, const array2D &G, const arr for (int yy = y; yy < pH; ++yy) { std::fill(dst[yy]+x, dst[yy]+pW, val); } - float val2 = RT_INFINITY_F; - for (int yy = y; yy < pH; ++yy) { - for (int xx = x; xx < pW; ++xx) { - float r = R[yy][xx]; - float g = G[yy][xx]; - float b = B[yy][xx]; - if (ambient) { - r /= ambient[0]; - g /= ambient[1]; - b /= ambient[2]; - } - float l = min(r, g, b); - if (l >= 2.f * val) { - val2 = min(val2, l); - dst[yy][xx] = -1; - } - } - } - if (val2 < RT_INFINITY_F) { - val2 = LIM01(val2); - for (int yy = y; yy < pH; ++yy) { - for (int xx = x; xx < pW; ++xx) { - if (dst[yy][xx] < 0.f) { - dst[yy][xx] = val2; - } - } - } - } } } @@ -128,7 +100,7 @@ int get_dark_channel(const array2D &R, const array2D &G, const arr } -int estimate_ambient_light(const array2D &R, const array2D &G, const array2D &B, const array2D &dark, const array2D &Y, int patchsize, int npatches, float ambient[3]) +float estimate_ambient_light(const array2D &R, const array2D &G, const array2D &B, const array2D &dark, int patchsize, int npatches, float ambient[3]) { const int W = R.width(); const int H = R.height(); @@ -143,7 +115,7 @@ int estimate_ambient_light(const array2D &R, const array2D &G, con return q.top(); }; - float lim = RT_INFINITY_F; + float darklim = RT_INFINITY_F; { std::priority_queue p; for (int y = 0; y < H; y += patchsize) { @@ -151,7 +123,7 @@ int estimate_ambient_light(const array2D &R, const array2D &G, con p.push(dark[y][x]); } } - lim = get_percentile(p, 0.95); + darklim = get_percentile(p, 0.95); } std::vector> patches; @@ -159,7 +131,7 @@ int estimate_ambient_light(const array2D &R, const array2D &G, con for (int y = 0; y < H; y += patchsize) { for (int x = 0; x < W; x += patchsize) { - if (dark[y][x] >= lim) { + if (dark[y][x] >= darklim) { patches.push_back(std::make_pair(x, y)); } } @@ -170,35 +142,36 @@ int estimate_ambient_light(const array2D &R, const array2D &G, con << " patches" << std::endl; } + float bright_lim = RT_INFINITY_F; { std::priority_queue l; for (auto &p : patches) { - const int pW = std::min(p.first+patchsize, W); - const int pH = std::min(p.second+patchsize, H); + const int pW = min(p.first+patchsize, W); + const int pH = min(p.second+patchsize, H); for (int y = p.second; y < pH; ++y) { for (int x = p.first; x < pW; ++x) { - l.push(Y[y][x]); + l.push(R[y][x] + G[y][x] + B[y][x]); } } } - lim = get_percentile(l, 0.95); + bright_lim = get_percentile(l, 0.95); } double rr = 0, gg = 0, bb = 0; int n = 0; for (auto &p : patches) { - const int pW = std::min(p.first+patchsize, W); - const int pH = std::min(p.second+patchsize, H); + const int pW = min(p.first+patchsize, W); + const int pH = min(p.second+patchsize, H); for (int y = p.second; y < pH; ++y) { for (int x = p.first; x < pW; ++x) { - if (Y[y][x] >= lim) { - float r = R[y][x]; - float g = G[y][x]; - float b = B[y][x]; + float r = R[y][x]; + float g = G[y][x]; + float b = B[y][x]; + if (r + g + b >= bright_lim) { rr += r; gg += g; bb += b; @@ -211,65 +184,12 @@ int estimate_ambient_light(const array2D &R, const array2D &G, con ambient[1] = gg / n; ambient[2] = bb / n; - return n; + // taken from darktable + return darklim > 0 ? -1.125f * std::log(darklim) : std::log(std::numeric_limits::max()) / 2; } -void get_luminance(Imagefloat *img, array2D &Y, TMatrix ws, bool multithread) -{ - const int W = img->getWidth(); - const int H = img->getHeight(); - -#ifdef _OPENMP - #pragma omp parallel for if (multithread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - Y[y][x] = Color::rgbLuminance(img->r(y, x), img->g(y, x), img->b(y, x), ws); - } - } -} - - -void apply_contrast(array2D &dark, float ambient, int contrast, double scale, bool multithread) -{ - if (contrast) { - const int W = dark.width(); - const int H = dark.height(); - - float avg = ambient * 0.25f; - float c = contrast * 0.3f; - - std::vector pts = { - DCT_NURBS, - 0, //black point. Value in [0 ; 1] range - 0, //black point. Value in [0 ; 1] range - - avg - avg * (0.6 - c / 250.0), //toe point - avg - avg * (0.6 + c / 250.0), //value at toe point - - avg + (1 - avg) * (0.6 - c / 250.0), //shoulder point - avg + (1 - avg) * (0.6 + c / 250.0), //value at shoulder point - - 1., // white point - 1. // value at white point - }; - - const DiagonalCurve curve(pts, CURVES_MIN_POLY_POINTS / scale); - -#ifdef _OPENMP - #pragma omp parallel for if (multithread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - dark[y][x] = curve.getVal(dark[y][x]); - } - } - } -} - - -void extract_channels(Imagefloat *img, const array2D &Y, array2D &r, array2D &g, array2D &b, int radius, float epsilon, bool multithread) +void extract_channels(Imagefloat *img, array2D &r, array2D &g, array2D &b, int radius, float epsilon, bool multithread) { const int W = img->getWidth(); const int H = img->getHeight(); @@ -285,11 +205,12 @@ void extract_channels(Imagefloat *img, const array2D &Y, array2D & } } - guidedFilter(Y, r, r, radius, epsilon, multithread); - guidedFilter(Y, g, g, radius, epsilon, multithread); - guidedFilter(Y, b, b, radius, epsilon, multithread); + guidedFilter(r, r, r, radius, epsilon, multithread, radius / 2); + guidedFilter(g, g, g, radius, epsilon, multithread, radius / 2); + guidedFilter(b, b, b, radius, epsilon, multithread, radius / 2); } + } // namespace @@ -309,31 +230,33 @@ void ImProcFunctions::dehaze(Imagefloat *img) std::cout << "dehaze: strength = " << strength << std::endl; } - TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); - array2D Y(W, H); - get_luminance(img, Y, ws, multiThread); - - array2D R(W, H); - array2D G(W, H); - array2D B(W, H); - int patchsize = max(int(20 / scale), 2); - extract_channels(img, Y, R, G, B, patchsize, 1e-1, multiThread); - array2D dark(W, H); - patchsize = std::max(W / (200 + params->dehaze.detail * (SGN(params->dehaze.detail) > 0 ? 4 : 1)), 2); - int npatches = get_dark_channel(R, G, B, dark, patchsize, nullptr, multiThread); - DEBUG_DUMP(dark); + int patchsize = max(int(5 / scale), 2); + int npatches = 0; float ambient[3]; - int n = estimate_ambient_light(R, G, B, dark, Y, patchsize, npatches, ambient); - float ambient_Y = Color::rgbLuminance(ambient[0], ambient[1], ambient[2], ws); + array2D &t_tilde = dark; + float max_t = 0.f; - if (options.rtSettings.verbose) { - std::cout << "dehaze: ambient light is " - << ambient[0] << ", " << ambient[1] << ", " << ambient[2] - << " (average of " << n << ")" - << std::endl; - std::cout << " ambient luminance is " << ambient_Y << std::endl; + { + array2D R(W, H); + array2D G(W, H); + array2D B(W, H); + extract_channels(img, R, G, B, patchsize, 1e-1, multiThread); + + patchsize = max(max(W, H) / 600, 2); + npatches = get_dark_channel(R, G, B, dark, patchsize, nullptr, multiThread); + DEBUG_DUMP(dark); + + max_t = estimate_ambient_light(R, G, B, dark, patchsize, npatches, ambient); + + if (options.rtSettings.verbose) { + std::cout << "dehaze: ambient light is " + << ambient[0] << ", " << ambient[1] << ", " << ambient[2] + << std::endl; + } + + get_dark_channel(R, G, B, dark, patchsize, ambient, multiThread); } if (min(ambient[0], ambient[1], ambient[2]) < 0.01f) { @@ -344,59 +267,41 @@ void ImProcFunctions::dehaze(Imagefloat *img) return; // probably no haze at all } - array2D &t_tilde = dark; - get_dark_channel(R, G, B, dark, patchsize, ambient, multiThread); - apply_contrast(dark, ambient_Y, params->dehaze.depth, scale, multiThread); DEBUG_DUMP(t_tilde); - if (!params->dehaze.showDepthMap) { -#ifdef _OPENMP - #pragma omp parallel for if (multiThread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - dark[y][x] = 1.f - strength * dark[y][x]; - } - } - } - - float mult = 2.f; - if (params->dehaze.detail > 0) { - mult -= (params->dehaze.detail / 100.f) * 1.9f; - } else { - mult -= params->dehaze.detail / 10.f; - } - const int radius = max(int(patchsize * mult), 1); - const float epsilon = 2.5e-4; - array2D &t = t_tilde; - - if (!params->dehaze.showDepthMap) - guidedFilter(Y, t_tilde, t, radius, epsilon, multiThread); - - DEBUG_DUMP(t); - - - if (params->dehaze.showDepthMap) { -#ifdef _OPENMP - #pragma omp parallel for if (multiThread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - img->r(y, x) = img->g(y, x) = img->b(y, x) = t[y][x] * 65535.f; - } - } - return; - } - - const float t0 = 0.1; - const float teps = 1e-3; #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif for (int y = 0; y < H; ++y) { for (int x = 0; x < W; ++x) { + dark[y][x] = 1.f - strength * dark[y][x]; + } + } + + const int radius = patchsize * 4; + const float epsilon = 1e-7; + array2D &t = t_tilde; + + { + array2D guideB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(guideB, t_tilde, t, radius, epsilon, multiThread, patchsize); + } + + DEBUG_DUMP(t); + + float depth = -float(params->dehaze.depth) / 100.f; + const float t0 = max(1e-3f, std::exp(depth * max_t)); + const float teps = 1e-3f; +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + // ensure that the transmission is such that to avoid clipping... float rgb[3] = { img->r(y, x), img->g(y, x), img->b(y, x) }; + // ... t >= tl to avoid negative values float tl = 1.f - min(rgb[0]/ambient[0], rgb[1]/ambient[1], rgb[2]/ambient[2]); + // ... t >= tu to avoid values > 1 float tu = t0 - teps; for (int c = 0; c < 3; ++c) { if (ambient[c] < 1) { @@ -404,44 +309,21 @@ void ImProcFunctions::dehaze(Imagefloat *img) } } float mt = max(t[y][x], t0, tl + teps, tu + teps); - float r = (rgb[0] - ambient[0]) / mt + ambient[0]; - float g = (rgb[1] - ambient[1]) / mt + ambient[1]; - float b = (rgb[2] - ambient[2]) / mt + ambient[2]; + if (params->dehaze.showDepthMap) { + img->r(y, x) = img->g(y, x) = img->b(y, x) = 1.f - mt; + } else { + float r = (rgb[0] - ambient[0]) / mt + ambient[0]; + float g = (rgb[1] - ambient[1]) / mt + ambient[1]; + float b = (rgb[2] - ambient[2]) / mt + ambient[2]; - img->r(y, x) = r; - img->g(y, x) = g; - img->b(y, x) = b; - } - } - - float oldmed; - findMinMaxPercentile(Y, Y.width() * Y.height(), 0.5, oldmed, 0.5, oldmed, multiThread); - - get_luminance(img, Y, ws, multiThread); - float newmed; - - findMinMaxPercentile(Y, Y.width() * Y.height(), 0.5, newmed, 0.5, newmed, multiThread); - - if (newmed > 1e-5f) { - const float f1 = oldmed / newmed; - const float f = f1 * 65535.f; -#ifdef _OPENMP - #pragma omp parallel for if (multiThread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - float r = img->r(y, x); - float g = img->g(y, x); - float b = img->b(y, x); - float h, s, l; - Color::rgb2hslfloat(r * f, g * f, b * f, h, s, l); - s = LIM01(s / f1); - Color::hsl2rgbfloat(h, s, l, img->r(y, x), img->g(y, x), img->b(y, x)); + img->r(y, x) = r; + img->g(y, x) = g; + img->b(y, x) = b; } } - } else { - img->normalizeFloatTo65535(); } + + img->normalizeFloatTo65535(); } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 17afb3371..78ee78f45 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2378,8 +2378,7 @@ DehazeParams::DehazeParams() : enabled(false), strength(50), showDepthMap(false), - depth(0), - detail(0) + depth(25) { } @@ -2389,8 +2388,7 @@ bool DehazeParams::operator ==(const DehazeParams& other) const enabled == other.enabled && strength == other.strength && showDepthMap == other.showDepthMap - && depth == other.depth - && detail == other.detail; + && depth == other.depth; } bool DehazeParams::operator !=(const DehazeParams& other) const @@ -3070,7 +3068,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->dehaze.strength, "Dehaze", "Strength", dehaze.strength, keyFile); saveToKeyfile(!pedited || pedited->dehaze.showDepthMap, "Dehaze", "ShowDepthMap", dehaze.showDepthMap, keyFile); saveToKeyfile(!pedited || pedited->dehaze.depth, "Dehaze", "Depth", dehaze.depth, keyFile); - saveToKeyfile(!pedited || pedited->dehaze.detail, "Dehaze", "Detail", dehaze.detail, keyFile); // Directional pyramid denoising saveToKeyfile(!pedited || pedited->dirpyrDenoise.enabled, "Directional Pyramid Denoising", "Enabled", dirpyrDenoise.enabled, keyFile); @@ -4658,7 +4655,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Dehaze", "Strength", pedited, dehaze.strength, pedited->dehaze.strength); assignFromKeyfile(keyFile, "Dehaze", "ShowDepthMap", pedited, dehaze.showDepthMap, pedited->dehaze.showDepthMap); assignFromKeyfile(keyFile, "Dehaze", "Depth", pedited, dehaze.depth, pedited->dehaze.depth); - assignFromKeyfile(keyFile, "Dehaze", "Detail", pedited, dehaze.detail, pedited->dehaze.detail); } if (keyFile.has_group("Film Simulation")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 143fedbe8..d335ad029 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1232,7 +1232,6 @@ struct DehazeParams { int strength; bool showDepthMap; int depth; - int detail; DehazeParams(); diff --git a/rtgui/dehaze.cc b/rtgui/dehaze.cc index ef5075ab7..0f0892ac6 100644 --- a/rtgui/dehaze.cc +++ b/rtgui/dehaze.cc @@ -32,27 +32,21 @@ Dehaze::Dehaze(): FoldableToolPanel(this, "dehaze", M("TP_DEHAZE_LABEL"), false, EvDehazeStrength = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_STRENGTH"); EvDehazeShowDepthMap = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP"); EvDehazeDepth = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_DEPTH"); - EvDehazeDetail = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_DETAIL"); strength = Gtk::manage(new Adjuster(M("TP_DEHAZE_STRENGTH"), 0., 100., 1., 50.)); strength->setAdjusterListener(this); strength->show(); - depth = Gtk::manage(new Adjuster(M("TP_DEHAZE_DEPTH"), -100., 100., 1., 0.)); + depth = Gtk::manage(new Adjuster(M("TP_DEHAZE_DEPTH"), 0., 100., 1., 25.)); depth->setAdjusterListener(this); depth->show(); - detail = Gtk::manage(new Adjuster(M("TP_DEHAZE_DETAIL"), -100, 100, 1, 0)); - detail->setAdjusterListener(this); - detail->show(); - showDepthMap = Gtk::manage(new Gtk::CheckButton(M("TP_DEHAZE_SHOW_DEPTH_MAP"))); showDepthMap->signal_toggled().connect(sigc::mem_fun(*this, &Dehaze::showDepthMapChanged)); showDepthMap->show(); pack_start(*strength); pack_start(*depth); - pack_start(*detail); pack_start(*showDepthMap); } @@ -64,7 +58,6 @@ void Dehaze::read(const ProcParams *pp, const ParamsEdited *pedited) if (pedited) { strength->setEditedState(pedited->dehaze.strength ? Edited : UnEdited); depth->setEditedState(pedited->dehaze.depth ? Edited : UnEdited); - detail->setEditedState(pedited->dehaze.detail ? Edited : UnEdited); set_inconsistent(multiImage && !pedited->dehaze.enabled); showDepthMap->set_inconsistent(!pedited->dehaze.showDepthMap); } @@ -72,7 +65,6 @@ void Dehaze::read(const ProcParams *pp, const ParamsEdited *pedited) setEnabled(pp->dehaze.enabled); strength->setValue(pp->dehaze.strength); depth->setValue(pp->dehaze.depth); - detail->setValue(pp->dehaze.detail); showDepthMap->set_active(pp->dehaze.showDepthMap); enableListener(); @@ -83,14 +75,12 @@ void Dehaze::write(ProcParams *pp, ParamsEdited *pedited) { pp->dehaze.strength = strength->getValue(); pp->dehaze.depth = depth->getValue(); - pp->dehaze.detail = detail->getValue(); pp->dehaze.enabled = getEnabled(); pp->dehaze.showDepthMap = showDepthMap->get_active(); if (pedited) { pedited->dehaze.strength = strength->getEditedState(); pedited->dehaze.depth = depth->getEditedState(); - pedited->dehaze.detail = detail->getEditedState(); pedited->dehaze.enabled = !get_inconsistent(); pedited->dehaze.showDepthMap = !showDepthMap->get_inconsistent(); } @@ -100,16 +90,13 @@ void Dehaze::setDefaults(const ProcParams *defParams, const ParamsEdited *pedite { strength->setDefault(defParams->dehaze.strength); depth->setDefault(defParams->dehaze.depth); - detail->setDefault(defParams->dehaze.detail); if (pedited) { strength->setDefaultEditedState(pedited->dehaze.strength ? Edited : UnEdited); depth->setDefaultEditedState(pedited->dehaze.depth ? Edited : UnEdited); - detail->setDefaultEditedState(pedited->dehaze.detail ? Edited : UnEdited); } else { strength->setDefaultEditedState(Irrelevant); depth->setDefaultEditedState(Irrelevant); - detail->setDefaultEditedState(Irrelevant); } } @@ -121,8 +108,6 @@ void Dehaze::adjusterChanged(Adjuster* a, double newval) listener->panelChanged(EvDehazeStrength, a->getTextValue()); } else if (a == depth) { listener->panelChanged(EvDehazeDepth, a->getTextValue()); - } else if (a == detail) { - listener->panelChanged(EvDehazeDetail, a->getTextValue()); } } } @@ -156,7 +141,6 @@ void Dehaze::setBatchMode(bool batchMode) strength->showEditedCB(); depth->showEditedCB(); - detail->showEditedCB(); } diff --git a/rtgui/dehaze.h b/rtgui/dehaze.h index ae6097c86..26cbef74a 100644 --- a/rtgui/dehaze.h +++ b/rtgui/dehaze.h @@ -28,13 +28,11 @@ class Dehaze: public ToolParamBlock, public AdjusterListener, public FoldableToo private: Adjuster *strength; Adjuster *depth; - Adjuster *detail; Gtk::CheckButton *showDepthMap; rtengine::ProcEvent EvDehazeEnabled; rtengine::ProcEvent EvDehazeStrength; rtengine::ProcEvent EvDehazeDepth; - rtengine::ProcEvent EvDehazeDetail; rtengine::ProcEvent EvDehazeShowDepthMap; public: diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index ffc1bd19c..610c6d3e2 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -570,7 +570,6 @@ void ParamsEdited::set(bool v) dehaze.strength = v; dehaze.showDepthMap = v; dehaze.depth = v; - dehaze.detail = v; metadata.mode = v; exif = v; @@ -1128,7 +1127,6 @@ void ParamsEdited::initFrom(const std::vector& dehaze.strength = dehaze.strength && p.dehaze.strength == other.dehaze.strength; dehaze.showDepthMap = dehaze.showDepthMap && p.dehaze.showDepthMap == other.dehaze.showDepthMap; dehaze.depth = dehaze.depth && p.dehaze.depth == other.dehaze.depth; - dehaze.detail = dehaze.detail && p.dehaze.detail == other.dehaze.detail; metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode; // How the hell can we handle that??? @@ -3135,10 +3133,6 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.dehaze.depth = mods.dehaze.depth; } - if (dehaze.detail) { - toEdit.dehaze.detail = mods.dehaze.detail; - } - if (dehaze.showDepthMap) { toEdit.dehaze.showDepthMap = mods.dehaze.showDepthMap; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 73a19db88..3142b0136 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -731,7 +731,6 @@ public: bool strength; bool showDepthMap; bool depth; - bool detail; }; From 59339644de501ce539a9d35b25ead22a7e7f5518 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 17 Oct 2018 15:38:35 +0200 Subject: [PATCH 009/348] dehaze: do not consider out-of-gamut pixels when estimating the ambient light --- rtengine/ipdehaze.cc | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 1c5512c2a..37bd53704 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -58,8 +58,7 @@ namespace { #endif -int get_dark_channel(const array2D &R, const array2D &G, const array2D &B, array2D &dst, - int patchsize, float *ambient, bool multithread) +int get_dark_channel(const array2D &R, const array2D &G, const array2D &B, array2D &dst, int patchsize, float *ambient, bool clip, bool multithread) { const int W = R.width(); const int H = R.height(); @@ -89,7 +88,9 @@ int get_dark_channel(const array2D &R, const array2D &G, const arr } val = min(val, yval); } - val = LIM01(val); + if (clip) { + val = LIM01(val); + } for (int yy = y; yy < pH; ++yy) { std::fill(dst[yy]+x, dst[yy]+pW, val); } @@ -120,7 +121,9 @@ float estimate_ambient_light(const array2D &R, const array2D &G, c std::priority_queue p; for (int y = 0; y < H; y += patchsize) { for (int x = 0; x < W; x += patchsize) { - p.push(dark[y][x]); + if (!OOG(dark[y][x], 1.f)) { + p.push(dark[y][x]); + } } } darklim = get_percentile(p, 0.95); @@ -131,7 +134,7 @@ float estimate_ambient_light(const array2D &R, const array2D &G, c for (int y = 0; y < H; y += patchsize) { for (int x = 0; x < W; x += patchsize) { - if (dark[y][x] >= darklim) { + if (dark[y][x] >= darklim && !OOG(dark[y][x], 1.f)) { patches.push_back(std::make_pair(x, y)); } } @@ -245,7 +248,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) extract_channels(img, R, G, B, patchsize, 1e-1, multiThread); patchsize = max(max(W, H) / 600, 2); - npatches = get_dark_channel(R, G, B, dark, patchsize, nullptr, multiThread); + npatches = get_dark_channel(R, G, B, dark, patchsize, nullptr, false, multiThread); DEBUG_DUMP(dark); max_t = estimate_ambient_light(R, G, B, dark, patchsize, npatches, ambient); @@ -256,7 +259,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) << std::endl; } - get_dark_channel(R, G, B, dark, patchsize, ambient, multiThread); + get_dark_channel(R, G, B, dark, patchsize, ambient, true, multiThread); } if (min(ambient[0], ambient[1], ambient[2]) < 0.01f) { @@ -289,6 +292,10 @@ void ImProcFunctions::dehaze(Imagefloat *img) DEBUG_DUMP(t); + if (options.rtSettings.verbose) { + std::cout << "dehaze: max distance is " << max_t << std::endl; + } + float depth = -float(params->dehaze.depth) / 100.f; const float t0 = max(1e-3f, std::exp(depth * max_t)); const float teps = 1e-3f; From 2026fe1d1715a77b94ba931a2f89c0f524fb61b9 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 18 Oct 2018 08:53:02 +0200 Subject: [PATCH 010/348] guided filter: added support for automatic computation of subsampling factor --- rtengine/guidedfilter.cc | 28 ++++++++++++++++++++++++++++ rtengine/guidedfilter.h | 2 +- rtengine/ipdehaze.cc | 8 ++++---- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index f6b702a73..a3dccf298 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -52,11 +52,39 @@ namespace rtengine { #endif +namespace { + +int calculate_subsampling(int w, int h, int r) +{ + if (r == 1) { + return 1; + } + + if (max(w, h) <= 600) { + return 1; + } + + for (int s = 5; s > 0; --s) { + if (r % s == 0) { + return s; + } + } + + return LIM(r / 2, 2, 4); +} + +} // namespace + + void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling) { const int W = src.width(); const int H = src.height(); + if (subsampling <= 0) { + subsampling = calculate_subsampling(W, H, r); + } + enum Op { MUL, DIVEPSILON, ADD, SUB, ADDMUL, SUBMUL }; const auto apply = diff --git a/rtengine/guidedfilter.h b/rtengine/guidedfilter.h index 3f987f80e..6691af251 100644 --- a/rtengine/guidedfilter.h +++ b/rtengine/guidedfilter.h @@ -24,6 +24,6 @@ namespace rtengine { -void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling=4); +void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling=0); } // namespace rtengine diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 37bd53704..92eaa4062 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -208,9 +208,9 @@ void extract_channels(Imagefloat *img, array2D &r, array2D &g, arr } } - guidedFilter(r, r, r, radius, epsilon, multithread, radius / 2); - guidedFilter(g, g, g, radius, epsilon, multithread, radius / 2); - guidedFilter(b, b, b, radius, epsilon, multithread, radius / 2); + guidedFilter(r, r, r, radius, epsilon, multithread); + guidedFilter(g, g, g, radius, epsilon, multithread); + guidedFilter(b, b, b, radius, epsilon, multithread); } @@ -287,7 +287,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) { array2D guideB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); - guidedFilter(guideB, t_tilde, t, radius, epsilon, multiThread, patchsize); + guidedFilter(guideB, t_tilde, t, radius, epsilon, multiThread); } DEBUG_DUMP(t); From 4fbb0cd3ebe83d6926febae271c8a5d0e101912c Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 24 Oct 2018 12:03:15 +0200 Subject: [PATCH 011/348] DNG: use black/white levels and matrix from the file, unless it comes from the Adobe DNG Converter See #4472 --- rtengine/dcraw.cc | 19 ++++++++++-------- rtengine/dcraw.h | 16 +++++++-------- rtengine/rawimage.cc | 47 +++++++++++++++++++++++++++++++++----------- 3 files changed, 54 insertions(+), 28 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 035dab2b2..99d006744 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6113,6 +6113,7 @@ int CLASS parse_tiff_ifd (int base) break; case 305: case 11: /* Software */ fgets (software, 64, ifp); + RT_software = software; if (!strncmp(software,"Adobe",5) || !strncmp(software,"dcraw",5) || !strncmp(software,"UFRaw",5) || @@ -6395,15 +6396,18 @@ guess_cfa_pc: cblack[6+c] = getreal(type); } black = 0; + RT_blacklevel_from_constant = ThreeValBool::F; break; case 50715: /* BlackLevelDeltaH */ case 50716: /* BlackLevelDeltaV */ for (num=i=0; i < (len & 0xffff); i++) num += getreal(type); black += num/len + 0.5; + RT_blacklevel_from_constant = ThreeValBool::F; break; case 50717: /* WhiteLevel */ maximum = getint(type); + RT_whitelevel_from_constant = ThreeValBool::F; break; case 50718: /* DefaultScale */ pixel_aspect = getreal(type); @@ -6541,8 +6545,6 @@ guess_cfa_pc: if (!use_cm) FORCC pre_mul[c] /= cc[cm_D65][c][c]; - RT_from_adobe_dng_converter = !strncmp(software, "Adobe DNG Converter", 19); - return 0; } @@ -10042,12 +10044,13 @@ bw: colors = 1; dng_skip: if ((use_camera_matrix & (use_camera_wb || dng_version)) && cmatrix[0][0] > 0.125 - && !RT_from_adobe_dng_converter /* RT -- do not use the embedded - * matrices for DNGs coming from the - * Adobe DNG Converter, to ensure - * consistency of WB values between - * DNG-converted and original raw - * files. See #4129 */) { + && strncmp(RT_software.c_str(), "Adobe DNG Converter", 19) != 0 + /* RT -- do not use the embedded + * matrices for DNGs coming from the + * Adobe DNG Converter, to ensure + * consistency of WB values between + * DNG-converted and original raw + * files. See #4129 */) { memcpy (rgb_cam, cmatrix, sizeof cmatrix); raw_color = 0; } diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index 9c6ac4aec..e1b296dbf 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -55,10 +55,9 @@ public: ,verbose(0) ,use_auto_wb(0),use_camera_wb(0),use_camera_matrix(1) ,output_color(1),output_bps(8),output_tiff(0),med_passes(0),no_auto_bright(0) - ,RT_whitelevel_from_constant(0) - ,RT_blacklevel_from_constant(0) - ,RT_matrix_from_constant(0) - ,RT_from_adobe_dng_converter(false) + ,RT_whitelevel_from_constant(ThreeValBool::X) + ,RT_blacklevel_from_constant(ThreeValBool::X) + ,RT_matrix_from_constant(ThreeValBool::X) ,getbithuff(this,ifp,zero_after_ff) ,nikbithuff(ifp) { @@ -150,10 +149,11 @@ protected: int output_color, output_bps, output_tiff, med_passes; int no_auto_bright; unsigned greybox[4] ; - int RT_whitelevel_from_constant; - int RT_blacklevel_from_constant; - int RT_matrix_from_constant; - bool RT_from_adobe_dng_converter; + enum class ThreeValBool { X = -1, F, T }; + ThreeValBool RT_whitelevel_from_constant; + ThreeValBool RT_blacklevel_from_constant; + ThreeValBool RT_matrix_from_constant; + std::string RT_software; float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4]; diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 6ef110a03..131b04156 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -30,9 +30,9 @@ RawImage::RawImage( const Glib::ustring &name ) , allocation(nullptr) { memset(maximum_c4, 0, sizeof(maximum_c4)); - RT_matrix_from_constant = 0; - RT_blacklevel_from_constant = 0; - RT_whitelevel_from_constant = 0; + RT_matrix_from_constant = ThreeValBool::X; + RT_blacklevel_from_constant = ThreeValBool::X; + RT_whitelevel_from_constant = ThreeValBool::X; } RawImage::~RawImage() @@ -599,14 +599,14 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro if (cc) { for (int i = 0; i < 4; i++) { - if (RT_blacklevel_from_constant) { + if (RT_blacklevel_from_constant == ThreeValBool::T) { int blackFromCc = cc->get_BlackLevel(i, iso_speed); // if black level from camconst > 0xffff it is an absolute value. black_c4[i] = blackFromCc > 0xffff ? (blackFromCc & 0xffff) : blackFromCc + cblack[i]; } // load 4 channel white level here, will be used if available - if (RT_whitelevel_from_constant) { + if (RT_whitelevel_from_constant == ThreeValBool::T) { maximum_c4[i] = cc->get_WhiteLevel(i, iso_speed, aperture); if(tiff_bps > 0 && maximum_c4[i] > 0 && !isFoveon()) { @@ -1049,6 +1049,15 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is *black_level = -1; *white_level = -1; + + const bool is_pentax_dng = dng_version && !strncmp(RT_software.c_str(), "PENTAX", 6); + + if (RT_blacklevel_from_constant == ThreeValBool::F && !is_pentax_dng) { + *black_level = black; + } + if (RT_whitelevel_from_constant == ThreeValBool::F && !is_pentax_dng) { + *white_level = maximum; + } memset(trans, 0, sizeof(*trans) * 12); // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file @@ -1056,9 +1065,15 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is // from file, but then we will not provide any black level in the tables. This case is mainly just // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already // have constants stored in the file). - RT_whitelevel_from_constant = 1; - RT_blacklevel_from_constant = 1; - RT_matrix_from_constant = 1; + if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) { + RT_whitelevel_from_constant = ThreeValBool::T; + } + if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) { + RT_blacklevel_from_constant = ThreeValBool::T; + } + if (RT_matrix_from_constant == ThreeValBool::X) { + RT_matrix_from_constant = ThreeValBool::T; + } { // test if we have any information in the camera constants store, if so we take that. @@ -1066,8 +1081,12 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is rtengine::CameraConst *cc = ccs->get(make, model); if (cc) { - *black_level = cc->get_BlackLevel(0, iso_speed); - *white_level = cc->get_WhiteLevel(0, iso_speed, aperture); + if (RT_blacklevel_from_constant == ThreeValBool::T) { + *black_level = cc->get_BlackLevel(0, iso_speed); + } + if (RT_whitelevel_from_constant == ThreeValBool::T) { + *white_level = cc->get_WhiteLevel(0, iso_speed, aperture); + } if (cc->has_dcrawMatrix()) { const short *mx = cc->get_dcrawMatrix(); @@ -1086,8 +1105,12 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is for (size_t i = 0; i < sizeof table / sizeof(table[0]); i++) { if (strcasecmp(name, table[i].prefix) == 0) { - *black_level = table[i].black_level; - *white_level = table[i].white_level; + if (RT_blacklevel_from_constant == ThreeValBool::T) { + *black_level = table[i].black_level; + } + if (RT_whitelevel_from_constant == ThreeValBool::T) { + *white_level = table[i].white_level; + } for (int j = 0; j < 12; j++) { trans[j] = table[i].trans[j]; From 1a3fd9f157858b9e69709dae44afd1482ae68ac4 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 25 Oct 2018 16:46:11 +0200 Subject: [PATCH 012/348] Added new color toning method "L*a*b* regions" Allows to specify various "regions" of the image with masks, and to correct for hue, saturation and lightness. Inspired by the existing L*a*b* grid (in turn taken from darktable) --- rtdata/languages/default | 48 +++-- rtengine/CMakeLists.txt | 1 + rtengine/dcrop.cc | 1 + rtengine/improccoordinator.cc | 1 + rtengine/improcfun.cc | 36 ++++ rtengine/improcfun.h | 1 + rtengine/iplabregions.cc | 159 ++++++++++++++ rtengine/procparams.cc | 125 +++++++++++- rtengine/procparams.h | 16 ++ rtengine/rt_math.h | 16 ++ rtengine/rtthumbnail.cc | 1 + rtengine/simpleprocess.cc | 1 + rtgui/colortoning.cc | 375 +++++++++++++++++++++++++++++++++- rtgui/colortoning.h | 40 ++++ rtgui/labgrid.cc | 41 +++- rtgui/labgrid.h | 10 +- rtgui/paramsedited.cc | 12 ++ rtgui/paramsedited.h | 2 + 18 files changed, 854 insertions(+), 32 deletions(-) create mode 100644 rtengine/iplabregions.cc diff --git a/rtdata/languages/default b/rtdata/languages/default index cc978ce92..40ff2ff88 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -398,7 +398,7 @@ HISTORY_MSG_145;Microcontrast - Uniformity HISTORY_MSG_146;Edge sharpening HISTORY_MSG_147;ES - Luminance only HISTORY_MSG_148;Microcontrast -HISTORY_MSG_149;Microcontrast - 3×3 matrix +HISTORY_MSG_149;Microcontrast - 33 matrix HISTORY_MSG_150;Post-demosaic artifact/noise red. HISTORY_MSG_151;Vibrance HISTORY_MSG_152;Vib - Pastel tones @@ -728,6 +728,14 @@ HISTORY_MSG_492;RGB Curves HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - L*a*b* region list +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - L*a*b* region saturation +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - L*a*b* region lightness +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - L*a*b* region H mask +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - L*a*b* region C mask +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L*a*b* region L mask +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - L*a*b* region show mask HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold HISTORY_MSG_HISTMATCHING;Auto-matched tone curve @@ -808,7 +816,7 @@ IPTCPANEL_CITY;City IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard. IPTCPANEL_COPYRIGHT;Copyright notice -IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. +IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as 2008 Jane Doe. IPTCPANEL_COUNTRY;Country IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. IPTCPANEL_CREATOR;Creator @@ -1367,9 +1375,9 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Ed TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. +TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m) +TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m). TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All @@ -1406,7 +1414,7 @@ TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. TP_COLORAPP_HUE;Hue (h) -TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. +TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0 and 360. TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 TP_COLORAPP_LABEL_CAM02;Image Adjustments TP_COLORAPP_LABEL_SCENE;Scene Conditions @@ -1458,6 +1466,16 @@ 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_LABREGION_LIST_TITLE;Correction +TP_COLORTONING_LABREGION_SATURATION;Saturation +TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +TP_COLORTONING_LABREGION_MASK;Mask +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_SHOWMASK;Show mask +TP_COLORTONING_LABREGIONS;L*a*b* correction regions 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. @@ -1553,16 +1571,16 @@ 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_PASSES_TOOLTIP;Applying three median filter iterations with a 33 window size often leads to better results than using one median filter iteration with a 77 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_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n33 soft: treats 5 pixels in a 33 pixel window.\n33: treats 9 pixels in a 33 pixel window.\n55 soft: treats 13 pixels in a 55 pixel window.\n55: treats 25 pixels in a 55 pixel window.\n77: treats 49 pixels in a 77 pixel window.\n99: treats 81 pixels in a 99 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_DIRPYRDENOISE_TYPE_3X3;33 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;33 soft +TP_DIRPYRDENOISE_TYPE_5X5;55 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;55 soft +TP_DIRPYRDENOISE_TYPE_7X7;77 +TP_DIRPYRDENOISE_TYPE_9X9;99 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 @@ -2008,7 +2026,7 @@ TP_SHARPENING_USM;Unsharp Mask TP_SHARPENMICRO_AMOUNT;Quantity TP_SHARPENMICRO_CONTRAST;Contrast threshold TP_SHARPENMICRO_LABEL;Microcontrast -TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 +TP_SHARPENMICRO_MATRIX;33 matrix instead of 55 TP_SHARPENMICRO_UNIFORMITY;Uniformity TP_SOFTLIGHT_LABEL;Soft Light TP_SOFTLIGHT_STRENGTH;Strength diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 759316e33..063fec2f7 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -128,6 +128,7 @@ set(RTENGINESOURCEFILES vng4_demosaic_RT.cc ipsoftlight.cc guidedfilter.cc + iplabregions.cc ) if(LENSFUN_HAS_LOAD_DIRECTORY) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 3b1ebfdab..5859493e7 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -896,6 +896,7 @@ void Crop::update(int todo) // parent->ipf.MSR(labnCrop, labnCrop->W, labnCrop->H, 1); parent->ipf.chromiLuminanceCurve(this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); parent->ipf.vibrance(labnCrop); + parent->ipf.labColorCorrectionRegions(labnCrop); if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { parent->ipf.EPDToneMap(labnCrop, 5, skip); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 5cc93d3c7..9d552f747 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -717,6 +717,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) histLCurve.clear(); ipf.chromiLuminanceCurve(nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve); ipf.vibrance(nprevl); + ipf.labColorCorrectionRegions(nprevl); if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { ipf.EPDToneMap(nprevl, 5, scale); diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 7d9d080e2..013a629fd 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -4151,6 +4151,42 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW } } + //------------------------------------------------------------------------- + // support for pipettes for the new LabRegions color toning mode this is a + // hack to fill the pipette buffers also when + // !params->labCurve.enabled. It is ugly, but it's the smallest code + // change that I could find + //------------------------------------------------------------------------- + class TempParams { + const ProcParams **p_; + const ProcParams *old_; + ProcParams tmp_; + + public: + explicit TempParams(const ProcParams **p): p_(p) + { + old_ = *p; + tmp_.labCurve.enabled = true; + *p_ = &tmp_; + } + + ~TempParams() + { + *p_ = old_; + } + }; + std::unique_ptr tempparams; + bool pipette_for_colortoning_labregions = + editPipette && + params->colorToning.enabled && params->colorToning.method == "LabRegions"; + if (!params->labCurve.enabled && pipette_for_colortoning_labregions) { + utili = autili = butili = ccutili = cclutili = clcutili = false; + tempparams.reset(new TempParams(¶ms)); + curve.makeIdentity(); + } + //------------------------------------------------------------------------- + + if (!params->labCurve.enabled) { if (editPipette && (editID == EUID_Lab_LCurve || editID == EUID_Lab_aCurve || editID == EUID_Lab_bCurve || editID == EUID_Lab_LHCurve || editID == EUID_Lab_CHCurve || editID == EUID_Lab_HHCurve || editID == EUID_Lab_CLCurve || editID == EUID_Lab_CCurve || editID == EUID_Lab_LCCurve)) { // fill pipette buffer with zeros to avoid crashes diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index a97ecef40..982c48cfe 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -344,6 +344,7 @@ public: void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread); void shadowsHighlights(LabImage *lab); void softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS); + void labColorCorrectionRegions(LabImage *lab); Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc new file mode 100644 index 000000000..e69f91d5a --- /dev/null +++ b/rtengine/iplabregions.cc @@ -0,0 +1,159 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright 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 . + */ + +#ifdef _OPENMP +#include +#endif + +#include "improcfun.h" +#include "guidedfilter.h" + +namespace rtengine { + +void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) +{ + if (!params->colorToning.enabled || params->colorToning.method != "LabRegions") { + return; + } + + const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; + const float scaling = 1.f; + + int n = params->colorToning.labregions.size(); + std::vector> hmask(n); + std::vector> cmask(n); + std::vector> lmask(n); + + for (int i = 0; i < n; ++i) { + auto &r = params->colorToning.labregions[i]; + if (!r.hueMask.empty() && r.hueMask[0] != FCT_Linear) { + hmask[i].reset(new FlatCurve(r.hueMask, true)); + } + if (!r.chromaticityMask.empty() && r.chromaticityMask[0] != FCT_Linear) { + cmask[i].reset(new FlatCurve(r.chromaticityMask, false)); + } + if (!r.lightnessMask.empty() && r.lightnessMask[0] != FCT_Linear) { + lmask[i].reset(new FlatCurve(r.lightnessMask, false)); + } + } + + array2D guide(lab->W, lab->H, lab->L, ARRAY2D_BYREFERENCE); + std::vector> abmask(n); + std::vector> Lmask(n); + for (int i = 0; i < n; ++i) { + abmask[i](lab->W, lab->H); + Lmask[i](lab->W, lab->H); + } + +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < lab->H; ++y) { + for (int x = 0; x < lab->W; ++x) { + float l = lab->L[y][x]; + float a = lab->a[y][x]; + float b = lab->b[y][x]; + float c, h; + Color::Lab2Lch(a, b, c, h); + float c1 = lin2log(c * (327.68f / 48000.f), 10.f); + float h1 = Color::huelab_to_huehsv2(h); + h1 = h1 + 1.f/6.f; + if (h1 > 1.f) { + h1 -= 1.f; + } + h1 = lin2log(h1, 3.f); + float l1 = l / 32768.f; + + if (params->colorToning.labregionsShowMask >= 0 && params->colorToning.labregionsShowMask < n) { + int idx = params->colorToning.labregionsShowMask; + auto &hm = hmask[idx]; + auto &cm = cmask[idx]; + auto &lm = lmask[idx]; + float blend = (hm ? hm->getVal(h1) : 1.f) * (cm ? cm->getVal(c1) : 1.f) * (lm ? lm->getVal(l1) : 1.f); + abmask[idx][y][x] = blend; + } else { + for (int i = 0; i < n; ++i) { + auto &hm = hmask[i]; + auto &cm = cmask[i]; + auto &lm = lmask[i]; + float blend = (hm ? hm->getVal(h1) : 1.f) * (cm ? cm->getVal(c1) : 1.f) * (lm ? lm->getVal(l1) : 1.f); + Lmask[i][y][x] = abmask[i][y][x] = blend; + } + } + } + } + + for (int i = 0; i < n; ++i) { + rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); + rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); + } + + if (params->colorToning.labregionsShowMask >= 0 && params->colorToning.labregionsShowMask < n) { + int idx = params->colorToning.labregionsShowMask; +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < lab->H; ++y) { + for (int x = 0; x < lab->W; ++x) { + auto blend = abmask[idx][y][x]; + lab->a[y][x] = 0.f; + lab->b[y][x] = blend * 42000.f; + lab->L[y][x] = LIM(lab->L[y][x] + 32768.f * blend, 0.f, 32768.f); + } + } + + return; + } + + const auto abcoord = + [](float x) -> float + { + const float m = ColorToningParams::LABGRID_CORR_MAX; + return SGN(x) * log2lin(std::abs(x) / m, 4.f) * m; + }; + +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < lab->H; ++y) { + for (int x = 0; x < lab->W; ++x) { + float l = lab->L[y][x]; + float a = lab->a[y][x]; + float b = lab->b[y][x]; + + for (int i = 0; i < n; ++i) { + auto &r = params->colorToning.labregions[i]; + float blend = abmask[i][y][x]; + float s = 1.f + r.saturation / 100.f; + float a_new = s * (a + 32768.f * abcoord(r.a) / factor / scaling); + float b_new = s * (b + 32768.f * abcoord(r.b) / factor / scaling); + float l_new = l * (1.f + r.lightness / 1000.f); + l = intp(Lmask[i][y][x], l_new, l); + a = intp(blend, a_new, a); + b = intp(blend, b_new, b); + } + lab->L[y][x] = l; + lab->a[y][x] = a; + lab->b[y][x] = b; + } + } +} + +} // namespace rtengine diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 526a36765..bfb91aea8 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -614,6 +614,66 @@ bool LocalContrastParams::operator!=(const LocalContrastParams &other) const const double ColorToningParams::LABGRID_CORR_MAX = 12000.f; const double ColorToningParams::LABGRID_CORR_SCALE = 3.f; +ColorToningParams::LabCorrectionRegion::LabCorrectionRegion(): + a(0), + b(0), + saturation(0), + lightness(0), + hueMask{ + FCT_MinMaxCPoints, + 0.166666667, + 1., + 0.35, + 0.35, + 0.8287775246, + 1., + 0.35, + 0.35 + }, + chromaticityMask{ + FCT_MinMaxCPoints, + 0., + 1., + 0.35, + 0.35, + 1., + 1., + 0.35, + 0.35 + }, + lightnessMask{ + FCT_MinMaxCPoints, + 0., + 1., + 0.35, + 0.35, + 1., + 1., + 0.35, + 0.35 + } +{ +} + + +bool ColorToningParams::LabCorrectionRegion::operator==(const LabCorrectionRegion &other) const +{ + return a == other.a + && b == other.b + && saturation == other.saturation + && lightness == other.lightness + && hueMask == other.hueMask + && chromaticityMask == other.chromaticityMask + && lightnessMask == other.lightnessMask; +} + + +bool ColorToningParams::LabCorrectionRegion::operator!=(const LabCorrectionRegion &other) const +{ + return !(*this == other); +} + + ColorToningParams::ColorToningParams() : enabled(false), autosat(true), @@ -688,7 +748,9 @@ ColorToningParams::ColorToningParams() : labgridALow(0.0), labgridBLow(0.0), labgridAHigh(0.0), - labgridBHigh(0.0) + labgridBHigh(0.0), + labregions{LabCorrectionRegion()}, + labregionsShowMask(-1) { } @@ -724,7 +786,9 @@ bool ColorToningParams::operator ==(const ColorToningParams& other) const && labgridALow == other.labgridALow && labgridBLow == other.labgridBLow && labgridAHigh == other.labgridAHigh - && labgridBHigh == other.labgridBHigh; + && labgridBHigh == other.labgridBHigh + && labregions == other.labregions + && labregionsShowMask == other.labregionsShowMask; } bool ColorToningParams::operator !=(const ColorToningParams& other) const @@ -3383,6 +3447,20 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo 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); + if (!pedited || pedited->colorToning.labregions) { + for (size_t j = 0; j < colorToning.labregions.size(); ++j) { + std::string n = std::to_string(j+1); + auto &l = colorToning.labregions[j]; + putToKeyfile("ColorToning", Glib::ustring("LabRegionA_") + n, l.a, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionB_") + n, l.b, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionSaturation_") + n, l.saturation, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionLightness_") + n, l.lightness, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionHueMask_") + n, l.hueMask, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionChromaticityMask_") + n, l.chromaticityMask, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionLightnessMask_") + n, l.lightnessMask, keyFile); + } + } + saveToKeyfile(!pedited || pedited->colorToning.labregionsShowMask, "ColorToning", "LabRegionsShowMask", colorToning.labregionsShowMask, keyFile); // Raw saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside(fname, fnameAbsolute, raw.dark_frame), keyFile); @@ -4740,6 +4818,49 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) colorToning.labgridBLow *= scale; colorToning.labgridBHigh *= scale; } + std::vector lg; + bool found = false; + bool done = false; + for (int i = 1; !done; ++i) { + ColorToningParams::LabCorrectionRegion cur; + done = true; + std::string n = std::to_string(i); + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionA_") + n, pedited, cur.a, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionB_") + n, pedited, cur.b, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionSaturation_") + n, pedited, cur.saturation, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionLightness_") + n, pedited, cur.lightness, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionHueMask_") + n, pedited, cur.hueMask, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionChromaticityMask_") + n, pedited, cur.chromaticityMask, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionLightnessMask_") + n, pedited, cur.lightnessMask, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (!done) { + lg.emplace_back(cur); + } + } + if (found) { + colorToning.labregions = std::move(lg); + } + assignFromKeyfile(keyFile, "ColorToning", "LabRegionsShowMask", pedited, colorToning.labregionsShowMask, pedited->colorToning.labregionsShowMask); } if (keyFile.has_group("RAW")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 22868a844..ad0339325 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -455,6 +455,22 @@ struct ColorToningParams { static const double LABGRID_CORR_MAX; static const double LABGRID_CORR_SCALE; + struct LabCorrectionRegion { + double a; + double b; + double saturation; + double lightness; + std::vector hueMask; + std::vector chromaticityMask; + std::vector lightnessMask; + + LabCorrectionRegion(); + bool operator==(const LabCorrectionRegion &other) const; + bool operator!=(const LabCorrectionRegion &other) const; + }; + std::vector labregions; + int labregionsShowMask; + ColorToningParams(); bool operator ==(const ColorToningParams& other) const; diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index 8d55b492e..9342f5430 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -220,5 +220,21 @@ std::array dotProduct(const std::array, 3> &a, const std: return res; } + +template +T lin2log(T x, T base) +{ + constexpr T one(1); + return std::log(x * (base - one) + one) / std::log(base); +} + + +template +T log2lin(T x, T base) +{ + constexpr T one(1); + return (std::pow(base, x) - one) / (base - one); +} + } diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 79dee36bf..7adb88490 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1363,6 +1363,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ipf.chromiLuminanceCurve (nullptr, 1, labView, labView, curve1, curve2, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); ipf.vibrance (labView); + ipf.labColorCorrectionRegions(labView); if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || !params.colorappearance.enabled) { ipf.EPDToneMap (labView, 5, 6); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 06e2b13bf..cf933bdcb 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1082,6 +1082,7 @@ private: ipf.vibrance (labView); + ipf.labColorCorrectionRegions(labView); if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { ipf.impulsedenoise (labView); diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 8b357c3f9..79e913019 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -11,6 +11,8 @@ using namespace rtengine; using namespace rtengine::procparams; +static constexpr int ID_LABREGION_HUE = 5; + ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLORTONING_LABEL"), false, true) { nextbw = 0; @@ -25,6 +27,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR method->append (M("TP_COLORTONING_SPLITCOCO")); method->append (M("TP_COLORTONING_SPLITLR")); method->append(M("TP_COLORTONING_LABGRID")); + method->append(M("TP_COLORTONING_LABREGIONS")); method->set_active (0); method->set_tooltip_text (M("TP_COLORTONING_METHOD_TOOLTIP")); @@ -321,7 +324,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR 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)); + labgrid = Gtk::manage(new LabGrid(EvColorToningLabGridValue, M("TP_COLORTONING_LABGRID_VALUES"))); labgridBox->pack_start(*labgrid, true, true); labgridReset = Gtk::manage(new Gtk::Button ()); labgridReset->add (*Gtk::manage(new RTImage ("undo-small.png", "redo-small.png"))); @@ -336,6 +339,116 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR pack_start(*labgridBox, Gtk::PACK_EXPAND_WIDGET, 4); //------------------------------------------------------------------------ + //------------------------------------------------------------------------ + // LAB regions + + const auto add_button = + [&](Gtk::Button *btn, Gtk::Box *box) -> void + { + setExpandAlignProperties(btn, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START); + btn->set_relief(Gtk::RELIEF_NONE); + btn->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + btn->set_can_focus(false); + btn->set_size_request(-1, 20); + box->pack_start(*btn, false, false); + }; + + EvLabRegionList = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIST"); + EvLabRegionAB = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_AB"); + EvLabRegionSaturation = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SATURATION"); + EvLabRegionLightness = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS"); + EvLabRegionHueMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_HUEMASK"); + EvLabRegionChromaticityMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK"); + EvLabRegionLightnessMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK"); + EvLabRegionShowMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK"); + labRegionBox = Gtk::manage(new Gtk::VBox()); + + labRegionList = Gtk::manage(new Gtk::ListViewText(3)); + labRegionList->set_size_request(-1, 100); + labRegionList->set_column_title(0, "#"); + labRegionList->set_column_title(1, M("TP_COLORTONING_LABREGION_LIST_TITLE")); + labRegionList->set_column_title(2, M("TP_COLORTONING_LABREGION_MASK")); + labRegionList->set_activate_on_single_click(true); + labRegionSelectionConn = labRegionList->get_selection()->signal_changed().connect(sigc::mem_fun(this, &ColorToning::onLabRegionSelectionChanged)); + Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); + hb->pack_start(*labRegionList, Gtk::PACK_EXPAND_WIDGET); + Gtk::VBox *vb = Gtk::manage(new Gtk::VBox()); + labRegionAdd = Gtk::manage(new Gtk::Button()); + labRegionAdd->add(*Gtk::manage(new RTImage("add-small.png"))); + labRegionAdd->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionAddPressed)); + add_button(labRegionAdd, vb); + labRegionRemove = Gtk::manage(new Gtk::Button()); + labRegionRemove->add(*Gtk::manage(new RTImage("remove-small.png"))); + labRegionRemove->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionRemovePressed)); + add_button(labRegionRemove, vb); + labRegionUp = Gtk::manage(new Gtk::Button()); + labRegionUp->add(*Gtk::manage(new RTImage("arrow-up-small.png"))); + labRegionUp->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionUpPressed)); + add_button(labRegionUp, vb); + labRegionDown = Gtk::manage(new Gtk::Button()); + labRegionDown->add(*Gtk::manage(new RTImage("arrow-down-small.png"))); + labRegionDown->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionDownPressed)); + add_button(labRegionDown, vb); + hb->pack_start(*vb, Gtk::PACK_SHRINK); + labRegionBox->pack_start(*hb, true, true); + + labRegionAB = Gtk::manage(new LabGrid(EvLabRegionAB, M("TP_COLORTONING_LABREGION_ABVALUES"), false)); + hb = Gtk::manage(new Gtk::HBox()); + hb->pack_start(*labRegionAB, true, true); + labRegionABReset = Gtk::manage(new Gtk::Button()); + labRegionABReset->set_tooltip_markup(M("ADJUSTER_RESET_TO_DEFAULT")); + labRegionABReset->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); + labRegionABReset->signal_button_release_event().connect(sigc::mem_fun(*this, &ColorToning::labRegionResetPressed)); + add_button(labRegionABReset, hb); + labRegionBox->pack_start(*hb); + + labRegionSaturation = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SATURATION"), -100, 100, 1, 0)); + labRegionSaturation->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionSaturation); + labRegionLightness = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_LIGHTNESS"), -100, 100, 1, 0)); + labRegionLightness->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionLightness); + + CurveEditorGroup *labRegionEditorG = Gtk::manage(new CurveEditorGroup(options.lastColorToningCurvesDir, M("TP_COLORTONING_LABREGION_MASK"))); + labRegionEditorG->setCurveListener(this); + + labRegionHueMask = static_cast(labRegionEditorG->addCurve(CT_Flat, M("TP_COLORTONING_LABREGION_HUEMASK"), nullptr, false, true)); + labRegionHueMask->setIdentityValue(0.); + labRegionHueMask->setResetCurve(FlatCurveType(default_params.labregions[0].hueMask[0]), default_params.labregions[0].hueMask); + labRegionHueMask->setCurveColorProvider(this, ID_LABREGION_HUE); + labRegionHueMask->setBottomBarColorProvider(this, ID_LABREGION_HUE); + labRegionHueMask->setEditID(EUID_Lab_HHCurve, BT_SINGLEPLANE_FLOAT); + + labRegionChromaticityMask = static_cast(labRegionEditorG->addCurve(CT_Flat, M("TP_COLORTONING_LABREGION_CHROMATICITYMASK"), nullptr, false, false)); + labRegionChromaticityMask->setIdentityValue(0.); + labRegionChromaticityMask->setResetCurve(FlatCurveType(default_params.labregions[0].chromaticityMask[0]), default_params.labregions[0].chromaticityMask); + labRegionChromaticityMask->setBottomBarColorProvider(this, ID_LABREGION_HUE+1); + labRegionChromaticityMask->setEditID(EUID_Lab_CCurve, BT_SINGLEPLANE_FLOAT); + + labRegionLightnessMask = static_cast(labRegionEditorG->addCurve(CT_Flat, M("TP_COLORTONING_LABREGION_LIGHTNESSMASK"), nullptr, false, false)); + labRegionLightnessMask->setIdentityValue(0.); + labRegionLightnessMask->setResetCurve(FlatCurveType(default_params.labregions[0].lightnessMask[0]), default_params.labregions[0].lightnessMask); + labRegionLightnessMask->setBottomBarBgGradient(milestones); + labRegionLightnessMask->setEditID(EUID_Lab_LCurve, BT_SINGLEPLANE_FLOAT); + + labRegionData = default_params.labregions; + labRegionSelected = 0; + { + auto n = labRegionList->append("1"); + labRegionList->set_text(n, 1, "a=0 b=0 s=0 l=0"); + } + + labRegionEditorG->curveListComplete(); + labRegionEditorG->show(); + labRegionBox->pack_start(*labRegionEditorG, Gtk::PACK_SHRINK, 2); + + labRegionShowMask = Gtk::manage(new Gtk::CheckButton(M("TP_COLORTONING_LABREGION_SHOWMASK"))); + labRegionShowMask->signal_toggled().connect(sigc::mem_fun(*this, &ColorToning::labRegionShowMaskChanged)); + labRegionBox->pack_start(*labRegionShowMask, Gtk::PACK_SHRINK, 4); + + pack_start(*labRegionBox, Gtk::PACK_EXPAND_WIDGET, 4); + //------------------------------------------------------------------------ + show_all(); disableListener(); @@ -358,6 +471,7 @@ void ColorToning::setListener(ToolPanelListener *tpl) { ToolPanel::setListener(tpl); labgrid->setListener(tpl); + labRegionAB->setListener(tpl); } /* @@ -409,6 +523,20 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) clshape->setCurve (pp->colorToning.clcurve); cl2shape->setCurve (pp->colorToning.cl2curve); + labRegionData = pp->colorToning.labregions; + if (labRegionData.empty()) { + labRegionData.emplace_back(rtengine::ColorToningParams::LabCorrectionRegion()); + } + if (pp->colorToning.labregionsShowMask >= 0) { + labRegionSelected = pp->colorToning.labregionsShowMask; + labRegionShowMask->set_active(true); + } else { + labRegionSelected = 0; + labRegionShowMask->set_active(false); + } + labRegionPopulateList(); + labRegionShow(labRegionSelected); + if (pedited) { redlow->setEditedState (pedited->colorToning.redlow ? Edited : UnEdited); greenlow->setEditedState (pedited->colorToning.greenlow ? Edited : UnEdited); @@ -433,6 +561,9 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) lumamode->set_inconsistent (!pedited->colorToning.lumamode); labgrid->setEdited(pedited->colorToning.labgridALow || pedited->colorToning.labgridBLow || pedited->colorToning.labgridAHigh || pedited->colorToning.labgridBHigh); + + labRegionAB->setEdited(pedited->colorToning.labregions); + labRegionShowMask->set_inconsistent(!pedited->colorToning.labregionsShowMask); } redlow->setValue (pp->colorToning.redlow); @@ -480,6 +611,8 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) method->set_active (4); } else if (pp->colorToning.method == "LabGrid") { method->set_active(5); + } else if (pp->colorToning.method == "LabRegions") { + method->set_active(6); } methodChanged(); @@ -534,6 +667,15 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) labgrid->getParams(pp->colorToning.labgridALow, pp->colorToning.labgridBLow, pp->colorToning.labgridAHigh, pp->colorToning.labgridBHigh); + labRegionGet(labRegionSelected); + labRegionShow(labRegionSelected, true); + pp->colorToning.labregions = labRegionData; + if (labRegionShowMask->get_active()) { + pp->colorToning.labregionsShowMask = labRegionSelected; + } else { + pp->colorToning.labregionsShowMask = -1; + } + if (pedited) { pedited->colorToning.redlow = redlow->getEditedState (); pedited->colorToning.greenlow = greenlow->getEditedState (); @@ -560,6 +702,9 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pedited->colorToning.shadowsColSat = shadowsColSat->getEditedState (); pedited->colorToning.labgridALow = pedited->colorToning.labgridBLow = pedited->colorToning.labgridAHigh = pedited->colorToning.labgridBHigh = labgrid->getEdited(); + + pedited->colorToning.labregions = labRegionAB->getEdited(); + pedited->colorToning.labregionsShowMask = !labRegionShowMask->get_inconsistent(); } if (method->get_active_row_number() == 0) { @@ -574,6 +719,8 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pp->colorToning.method = "Splitlr"; } else if (method->get_active_row_number() == 5) { pp->colorToning.method = "LabGrid"; + } else if (method->get_active_row_number() == 6) { + pp->colorToning.method = "LabRegions"; } if (twocolor->get_active_row_number() == 0) { @@ -631,6 +778,7 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* 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); @@ -649,6 +797,8 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* 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); + + labRegionAB->setEdited(pedited->colorToning.labregions ? Edited : UnEdited); } else { redlow->setDefaultEditedState (Irrelevant); greenlow->setDefaultEditedState (Irrelevant); @@ -666,6 +816,7 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* shadowsColSat->setDefaultEditedState (Irrelevant); strength->setDefaultEditedState (Irrelevant); labgrid->setEdited(Edited); + labRegionAB->setEdited(Edited); } } @@ -814,6 +965,7 @@ void ColorToning::methodChanged () if (!batchMode) { labgridBox->hide(); + labRegionBox->hide(); if (method->get_active_row_number() == 0) { // Lab colorSep->show(); @@ -962,7 +1114,7 @@ void ColorToning::methodChanged () chanMixerBox->hide(); neutrHBox->hide(); lumamode->show(); - } else if (method->get_active_row_number() == 5) { // Lab Grid + } else if (method->get_active_row_number() == 5 || method->get_active_row_number() == 6) { // Lab Grid or Lab Regions colorSep->hide(); colorCurveEditorG->hide(); twocolor->hide(); @@ -981,7 +1133,11 @@ void ColorToning::methodChanged () neutrHBox->hide(); lumamode->hide(); - labgridBox->show(); + if (method->get_active_row_number() == 5) { + labgridBox->show(); + } else { + labRegionBox->show(); + } } } @@ -1038,6 +1194,17 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele } } else if (callerId == 4) { // color curve vertical and horizontal crosshair Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B); + } else if (callerId == ID_LABREGION_HUE) { + // TODO + float x = valX - 1.f/6.f; + if (x < 0.f) { + x += 1.f; + } + x = log2lin(x, 3.f); + // float x = valX; + Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); + } else if (callerId == ID_LABREGION_HUE+1) { + Color::hsv2rgb01(float(valY), float(valX), 0.5f, R, G, B); } caller->ccRed = double(R); @@ -1057,6 +1224,12 @@ void ColorToning::curveChanged (CurveEditor* ce) listener->panelChanged (EvColorToningCLCurve, M("HISTORY_CUSTOMCURVE")); } else if (ce == cl2shape) { listener->panelChanged (EvColorToningLLCurve, M("HISTORY_CUSTOMCURVE")); + } else if (ce == labRegionHueMask) { + listener->panelChanged(EvLabRegionHueMask, M("HISTORY_CUSTOMCURVE")); + } else if (ce == labRegionChromaticityMask) { + listener->panelChanged(EvLabRegionChromaticityMask, M("HISTORY_CUSTOMCURVE")); + } else if (ce == labRegionLightnessMask) { + listener->panelChanged(EvLabRegionLightnessMask, M("HISTORY_CUSTOMCURVE")); } } } @@ -1158,6 +1331,10 @@ void ColorToning::adjusterChanged(Adjuster* a, double newval) listener->panelChanged (EvColorToningSatProtection, a->getTextValue()); } else if (a == strength) { listener->panelChanged (EvColorToningStrength, a->getTextValue()); + } else if (a == labRegionSaturation) { + listener->panelChanged(EvLabRegionSaturation, a->getTextValue()); + } else if (a == labRegionLightness) { + listener->panelChanged(EvLabRegionLightness, a->getTextValue()); } } @@ -1195,3 +1372,195 @@ bool ColorToning::resetPressed(GdkEventButton* event) labgrid->reset(event->state & GDK_CONTROL_MASK); return false; } + + +bool ColorToning::labRegionResetPressed(GdkEventButton *event) +{ + labRegionAB->reset(event->state & GDK_CONTROL_MASK); + return false; +} + + +void ColorToning::onLabRegionSelectionChanged() +{ + auto s = labRegionList->get_selected(); + if (!s.empty()) { + // update the selected values + labRegionGet(labRegionSelected); + labRegionSelected = s[0]; + labRegionShow(labRegionSelected); + if (labRegionShowMask->get_active()) { + labRegionShowMaskChanged(); + } + } +} + + +void ColorToning::labRegionGet(int idx) +{ + auto &r = labRegionData[idx]; + double la, lb; + labRegionAB->getParams(la, lb, r.a, r.b); + r.saturation = labRegionSaturation->getValue(); + r.lightness = labRegionLightness->getValue(); + r.hueMask = labRegionHueMask->getCurve(); + r.chromaticityMask = labRegionChromaticityMask->getCurve(); + r.lightnessMask = labRegionLightnessMask->getCurve(); +} + + +void ColorToning::labRegionAddPressed() +{ + labRegionData.insert(labRegionData.begin(), rtengine::ColorToningParams::LabCorrectionRegion()); + labRegionSelected = 0; + labRegionPopulateList(); + labRegionShow(labRegionSelected); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } +} + + +void ColorToning::labRegionRemovePressed() +{ + if (labRegionList->size() > 1) { + labRegionData.erase(labRegionData.begin() + labRegionSelected); + labRegionSelected = LIM(labRegionSelected-1, 0, int(labRegionData.size()-1)); + labRegionPopulateList(); + labRegionShow(labRegionSelected); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionUpPressed() +{ + if (labRegionSelected > 0) { + auto r = labRegionData[labRegionSelected]; + labRegionData.erase(labRegionData.begin() + labRegionSelected); + --labRegionSelected; + labRegionData.insert(labRegionData.begin() + labRegionSelected, r); + labRegionPopulateList(); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionDownPressed() +{ + if (labRegionSelected < int(labRegionData.size()-1)) { + auto r = labRegionData[labRegionSelected]; + labRegionData.erase(labRegionData.begin() + labRegionSelected); + ++labRegionSelected; + labRegionData.insert(labRegionData.begin() + labRegionSelected, r); + labRegionPopulateList(); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionShowMaskChanged() +{ + if (listener) { + listener->panelChanged(EvLabRegionShowMask, labRegionShowMask->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + } +} + + +namespace { + +bool hasMask(const std::vector &dflt, const std::vector &mask) +{ + if (mask.empty() || mask[0] == FCT_Linear || mask == dflt) { + return false; + } else { + return true; + } +} + +} // namespace + + +void ColorToning::labRegionPopulateList() +{ + ConnectionBlocker b(labRegionSelectionConn); + labRegionList->clear_items(); + rtengine::ColorToningParams::LabCorrectionRegion dflt; + + for (size_t i = 0; i < labRegionData.size(); ++i) { + auto &r = labRegionData[i]; + auto j = labRegionList->append(std::to_string(i+1)); + labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", int(r.a), int(r.b), r.saturation, r.lightness)); + labRegionList->set_text( + j, 2, Glib::ustring::compose( + "%1%2%3", + hasMask(dflt.hueMask, r.hueMask) ? "H" : "", + hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "", + hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "")); + } +} + + +void ColorToning::labRegionShow(int idx, bool list_only) +{ + bool disable = listener; + if (disable) { + disableListener(); + } + rtengine::ColorToningParams::LabCorrectionRegion dflt; + auto &r = labRegionData[idx]; + if (!list_only) { + labRegionAB->setParams(0, 0, r.a, r.b, false); + labRegionSaturation->setValue(r.saturation); + labRegionLightness->setValue(r.lightness); + labRegionHueMask->setCurve(r.hueMask); + labRegionChromaticityMask->setCurve(r.chromaticityMask); + labRegionLightnessMask->setCurve(r.lightnessMask); + } + labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", int(r.a), int(r.b), r.saturation, r.lightness)); + labRegionList->set_text( + idx, 2, Glib::ustring::compose( + "%1%2%3", + hasMask(dflt.hueMask, r.hueMask) ? "H" : "", + hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "", + hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "")); + Gtk::TreePath pth; + pth.push_back(idx); + labRegionList->get_selection()->select(pth); + if (disable) { + enableListener(); + } +} + + +void ColorToning::setEditProvider(EditDataProvider *provider) +{ + labRegionHueMask->setEditProvider(provider); + labRegionChromaticityMask->setEditProvider(provider); + labRegionLightnessMask->setEditProvider(provider); +} + + +float ColorToning::blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3) +{ + if (ce == labRegionChromaticityMask && chan1 > 0.f) { + return lin2log(chan1, 10.f); + } else if (ce == labRegionHueMask && chan1 > 0.f) { + float x = chan1 + 1.f/6.f; + if (x > 1.f) { + x -= 1.f; + } + return lin2log(x, 3.f); + } + return CurveListener::blendPipetteValues(ce, chan1, chan2, chan3); +} diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index cb021e242..eff26bd46 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -58,8 +58,21 @@ public: void setListener(ToolPanelListener *tpl); + void setEditProvider(EditDataProvider *provider); + float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3); + private: bool resetPressed(GdkEventButton* event); + bool labRegionResetPressed(GdkEventButton *event); + void onLabRegionSelectionChanged(); + void labRegionAddPressed(); + void labRegionRemovePressed(); + void labRegionUpPressed(); + void labRegionDownPressed(); + void labRegionShowMaskChanged(); + void labRegionPopulateList(); + void labRegionShow(int idx, bool list_only=false); + void labRegionGet(int idx); //Gtk::HSeparator* satLimiterSep; Gtk::HSeparator* colorSep; @@ -117,6 +130,33 @@ private: LabGrid *labgrid; Gtk::HBox *labgridBox; + rtengine::ProcEvent EvLabRegionList; + rtengine::ProcEvent EvLabRegionAB; + rtengine::ProcEvent EvLabRegionSaturation; + rtengine::ProcEvent EvLabRegionLightness; + rtengine::ProcEvent EvLabRegionHueMask; + rtengine::ProcEvent EvLabRegionChromaticityMask; + rtengine::ProcEvent EvLabRegionLightnessMask; + rtengine::ProcEvent EvLabRegionShowMask; + + Gtk::VBox *labRegionBox; + Gtk::ListViewText *labRegionList; + Gtk::Button *labRegionAdd; + Gtk::Button *labRegionRemove; + Gtk::Button *labRegionUp; + Gtk::Button *labRegionDown; + Gtk::Button *labRegionABReset; + LabGrid *labRegionAB; + Adjuster *labRegionSaturation; + Adjuster *labRegionLightness; + FlatCurveEditor *labRegionHueMask; + FlatCurveEditor *labRegionChromaticityMask; + FlatCurveEditor *labRegionLightnessMask; + Gtk::CheckButton *labRegionShowMask; + std::vector labRegionData; + int labRegionSelected; + sigc::connection labRegionSelectionConn; + IdleRegister idle_register; }; diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index a52ba9163..fde03194b 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -44,20 +44,22 @@ 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))); + listener->panelChanged(evt, Glib::ustring::compose(evtMsg, int(high_a), int(high_b), int(low_a), int(low_b))); } return false; } -LabGrid::LabGrid(rtengine::ProcEvent evt): +LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low): Gtk::DrawingArea(), - evt(evt), litPoint(NONE), + evt(evt), evtMsg(msg), + 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) + isDragged(false), + low_enabled(enable_low) { set_can_focus(true); add_events(Gdk::EXPOSURE_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK); @@ -201,13 +203,15 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) 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); + if (low_enabled) { + 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->fill(); cr->set_source_rgb(0.9, 0.9, 0.9); if (litPoint == HIGH) { @@ -298,7 +302,7 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) 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) { + if (low_enabled && distlo < thrs * thrs && distlo < disthi) { litPoint = LOW; } else if (disthi < thrs * thrs && disthi <= distlo) { litPoint = HIGH; @@ -328,3 +332,18 @@ void LabGrid::get_preferred_height_for_width_vfunc(int width, int &minimum_heigh { minimum_height = natural_height = width; } + + +bool LabGrid::lowEnabled() const +{ + return low_enabled; +} + + +void LabGrid::setLowEnabled(bool yes) +{ + if (low_enabled != yes) { + low_enabled = yes; + queue_draw(); + } +} diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h index 348ab2398..715175f74 100644 --- a/rtgui/labgrid.h +++ b/rtgui/labgrid.h @@ -46,6 +46,8 @@ class LabGrid: public Gtk::DrawingArea, public BackBuffer { private: rtengine::ProcEvent evt; + Glib::ustring evtMsg; + enum State { NONE, HIGH, LOW }; State litPoint; float low_a; @@ -64,11 +66,14 @@ private: sigc::connection delayconn; static const int inset = 2; + bool grid_visible; + bool low_enabled; + bool notifyListener(); void getLitPoint(); public: - LabGrid(rtengine::ProcEvent evt); + LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low=true); void getParams(double &la, double &lb, double &ha, double &hb) const; void setParams(double la, double lb, double ha, double hb, bool notify); @@ -78,6 +83,9 @@ public: void reset(bool toInitial); void setListener(ToolPanelListener *l); + bool lowEnabled() const; + void setLowEnabled(bool yes); + bool on_draw(const ::Cairo::RefPtr &crf); void on_style_updated (); bool on_button_press_event(GdkEventButton *event); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 570d6ab2b..dc0ae617c 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -141,6 +141,8 @@ void ParamsEdited::set(bool v) colorToning.labgridBLow = v; colorToning.labgridAHigh = v; colorToning.labgridBHigh = v; + colorToning.labregions = v; + colorToning.labregionsShowMask = v; sharpening.enabled = v; sharpening.contrast = v; @@ -699,6 +701,8 @@ void ParamsEdited::initFrom(const std::vector& 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; + colorToning.labregions = colorToning.labregions && p.colorToning.labregions == other.colorToning.labregions; + colorToning.labregionsShowMask = colorToning.labregionsShowMask && p.colorToning.labregionsShowMask == other.colorToning.labregionsShowMask; 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; @@ -1571,6 +1575,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.colorToning.labgridBHigh = mods.colorToning.labgridBHigh; } + if (colorToning.labregions) { + toEdit.colorToning.labregions = mods.colorToning.labregions; + } + + if (colorToning.labregionsShowMask) { + toEdit.colorToning.labregionsShowMask = mods.colorToning.labregionsShowMask; + } + if (sharpenEdge.enabled) { toEdit.sharpenEdge.enabled = mods.sharpenEdge.enabled; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index aa9c01bd9..7a62bed68 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -178,6 +178,8 @@ public: bool labgridBLow; bool labgridAHigh; bool labgridBHigh; + bool labregions; + bool labregionsShowMask; }; class SharpenEdgeParamsEdited From fef2f73aa7d8d413551ca0a777164835afbe3445 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 25 Oct 2018 17:04:26 +0200 Subject: [PATCH 013/348] Removed lock because queue processing deadlocks now, #4882 --- rtgui/batchqueuepanel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index bc03c2386..83a0f37ae 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -322,7 +322,7 @@ void BatchQueuePanel::addBatchQueueJobs(const std::vector& ent bool BatchQueuePanel::canStartNext () { - GThreadLock lock; +// GThreadLock lock; if (qStartStop->get_active()) { return true; } else { From 52c943ca0e5edfcbd82207a99593ae603654f3f2 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 26 Oct 2018 00:20:02 -0500 Subject: [PATCH 014/348] Mark BatchQueuePanel implementation functions as private --- rtgui/batchqueuepanel.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 3f1da85ce..73cb3ba6e 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -60,22 +60,23 @@ public: void init (RTWindow* parent); void addBatchQueueJobs(const std::vector& entries , bool head = false); + void saveOptions (); + + bool handleShortcutKey (GdkEventKey* event); // batchqueuelistener interface void queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage); bool canStartNext(); +private: void startBatchProc (); void stopBatchProc (); void startOrStopBatchProc(); - void saveOptions (); void pathFolderChanged (); void pathFolderButtonPressed (); void formatChanged(const Glib::ustring& format) override; void updateTab (int qsize, int forceOrientation = 0); // forceOrientation=0: base on options / 1: horizontal / 2: vertical - - bool handleShortcutKey (GdkEventKey* event); }; #endif From 7d5fe6d1c8c9e681e64522544055089933e4d2d6 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 26 Oct 2018 00:52:15 -0500 Subject: [PATCH 015/348] Reenable batch queue interface on queue length notification This removes the need for canStartNext() to do any UI updates. --- rtgui/batchqueue.cc | 24 +++++++++++------------- rtgui/batchqueue.h | 4 ++-- rtgui/batchqueuepanel.cc | 8 +++++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 1d52c96e6..191131352 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -45,7 +45,7 @@ namespace struct NLParams { BatchQueueListener* listener; int qsize; - bool queueEmptied; + bool queueRunning; bool queueError; Glib::ustring queueErrorMessage; }; @@ -53,7 +53,7 @@ struct NLParams { int bqnotifylistenerUI (void* data) { NLParams* params = static_cast(data); - params->listener->queueSizeChanged (params->qsize, params->queueEmptied, params->queueError, params->queueErrorMessage); + params->listener->queueSizeChanged (params->qsize, params->queueRunning, params->queueError, params->queueErrorMessage); delete params; return 0; } @@ -229,7 +229,7 @@ void BatchQueue::addEntries (const std::vector& entries, bool saveBatchQueue (); redraw (); - notifyListener (false); + notifyListener (true); } bool BatchQueue::saveBatchQueue () @@ -387,7 +387,7 @@ bool BatchQueue::loadBatchQueue () } redraw (); - notifyListener (false); + notifyListener (true); return !fd.empty (); } @@ -460,7 +460,7 @@ void BatchQueue::cancelItems (const std::vector& items) saveBatchQueue (); redraw (); - notifyListener (false); + notifyListener (true); } void BatchQueue::headItems (const std::vector& items) @@ -640,7 +640,7 @@ void BatchQueue::error(const Glib::ustring& descr) if (listener) { NLParams* params = new NLParams; params->listener = listener; - params->queueEmptied = false; + params->queueRunning = false; params->queueError = true; params->queueErrorMessage = descr; idle_register.add(bqnotifylistenerUI, params); @@ -706,7 +706,6 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) Glib::ustring processedParams = processing->savedParamsFile; // delete from the queue - bool queueEmptied = false; bool remove_button_set = false; { @@ -718,9 +717,7 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) fd.erase (fd.begin()); // return next job - if (fd.empty()) { - queueEmptied = true; - } else if (listener && listener->canStartNext ()) { + if (!fd.empty() && listener && listener->canStartNext ()) { BatchQueueEntry* next = static_cast(fd[0]); // tag it as selected and set sequence next->processing = true; @@ -778,7 +775,8 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) } redraw (); - notifyListener (queueEmptied); + const bool queueRunning = (processing != nullptr); + notifyListener (queueRunning); return processing ? processing->job : nullptr; } @@ -973,7 +971,7 @@ void BatchQueue::buttonPressed (LWButton* button, int actionCode, void* actionDa } } -void BatchQueue::notifyListener (bool queueEmptied) +void BatchQueue::notifyListener (bool queueRunning) { if (listener) { @@ -983,7 +981,7 @@ void BatchQueue::notifyListener (bool queueEmptied) MYREADERLOCK(l, entryRW); params->qsize = fd.size(); } - params->queueEmptied = queueEmptied; + params->queueRunning = queueRunning; params->queueError = false; idle_register.add(bqnotifylistenerUI, params); } diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index 41c30da3f..6b0e047cb 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -31,7 +31,7 @@ class BatchQueueListener public: virtual ~BatchQueueListener() = default; - virtual void queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage) = 0; + virtual void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) = 0; virtual bool canStartNext() = 0; }; @@ -93,7 +93,7 @@ protected: Glib::ustring autoCompleteFileName (const Glib::ustring& fileName, const Glib::ustring& format); Glib::ustring getTempFilenameForParams( const Glib::ustring &filename ); bool saveBatchQueue (); - void notifyListener (bool queueEmptied); + void notifyListener (bool queueRunning); BatchQueueEntry* processing; // holds the currently processed image FileCatalog* fileCatalog; diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 83a0f37ae..f572a6772 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -245,7 +245,7 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation) } } -void BatchQueuePanel::queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage) +void BatchQueuePanel::queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) { updateTab (qsize); @@ -255,12 +255,14 @@ void BatchQueuePanel::queueSizeChanged(int qsize, bool queueEmptied, bool queueE qStartStop->set_sensitive(true); } - if (queueEmptied || queueError) { + if (!queueRunning) { stopBatchProc (); fdir->set_sensitive (true); fformat->set_sensitive (true); - SoundManager::playSoundAsync(options.sndBatchQueueDone); + if (qsize == 0) { + SoundManager::playSoundAsync(options.sndBatchQueueDone); + } } if (queueError) { From 09275b58269b3f3be6c53f600ada5c1cf488ca33 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 26 Oct 2018 00:53:39 -0500 Subject: [PATCH 016/348] Store qStartStop state in atomic for background thread Closes #4882. --- rtgui/batchqueuepanel.cc | 13 +++++-------- rtgui/batchqueuepanel.h | 4 ++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index f572a6772..b61f60ee7 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -286,6 +286,7 @@ void BatchQueuePanel::startBatchProc () // Update switch when queue started programmatically qStartStopConn.block (true); qStartStop->set_active(true); + qStartStopState = true; qStartStopConn.block (false); if (batchQueue->hasJobs()) { @@ -308,6 +309,7 @@ void BatchQueuePanel::stopBatchProc () // Update switch when queue started programmatically qStartStopConn.block (true); qStartStop->set_active(false); + qStartStopState = false; qStartStopConn.block (false); updateTab (batchQueue->getEntries().size()); @@ -324,14 +326,9 @@ void BatchQueuePanel::addBatchQueueJobs(const std::vector& ent bool BatchQueuePanel::canStartNext () { -// GThreadLock lock; - if (qStartStop->get_active()) { - return true; - } else { - fdir->set_sensitive (true); - fformat->set_sensitive (true); - return false; - } + // This function is called from the background BatchQueue thread. + // It cannot call UI functions, so grab the stored state of qStartStop. + return qStartStopState; } void BatchQueuePanel::saveOptions () diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 73cb3ba6e..89b8d8910 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -19,6 +19,8 @@ #ifndef _BATCHQUEUEPANEL_ #define _BATCHQUEUEPANEL_ +#include + #include #include "batchqueue.h" #include "saveformatpanel.h" @@ -53,6 +55,8 @@ class BatchQueuePanel : public Gtk::VBox, IdleRegister idle_register; + std::atomic qStartStopState; + public: explicit BatchQueuePanel (FileCatalog* aFileCatalog); ~BatchQueuePanel(); From 8a6e0a7f1929839ef36e3c63d1f43680c8b17bad Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 26 Oct 2018 01:46:30 -0500 Subject: [PATCH 017/348] Cleanup from code review --- rtgui/batchqueue.cc | 2 +- rtgui/batchqueuepanel.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 191131352..a66fda153 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -775,7 +775,7 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) } redraw (); - const bool queueRunning = (processing != nullptr); + const bool queueRunning = processing; notifyListener (queueRunning); return processing ? processing->job : nullptr; diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 89b8d8910..a05d94fe3 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -53,10 +53,10 @@ class BatchQueuePanel : public Gtk::VBox, Gtk::HBox* bottomBox; Gtk::HBox* topBox; - IdleRegister idle_register; - std::atomic qStartStopState; + IdleRegister idle_register; + public: explicit BatchQueuePanel (FileCatalog* aFileCatalog); ~BatchQueuePanel(); From b37d88fb2245fc99c529a377c57f3475c9da3c54 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 26 Oct 2018 14:43:36 +0200 Subject: [PATCH 018/348] Always use auto-contrast threshold when using Amaze+VNG4 as demosaicer for motion areas in pixelshift --- rtengine/pixelshift.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index cdf4f990a..76d1f836c 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -326,7 +326,7 @@ BENCHFUN if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.lmmse_iterations); } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { - dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast); + dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[0]), red, green, blue); } @@ -338,7 +338,7 @@ BENCHFUN if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.lmmse_iterations); } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { - dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast); + dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i]); } @@ -367,7 +367,7 @@ BENCHFUN } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { RAWParams rawParamsTmp = rawParamsIn; rawParamsTmp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4); - dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast); + dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, rawData, red, green, blue); } From cb3cc6cad14b6229564f7efcac252b94495aa15d Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 26 Oct 2018 09:23:46 -0500 Subject: [PATCH 019/348] Fix permanently disabled button when stopping on next-to-last image --- rtgui/batchqueuepanel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index b61f60ee7..1679d9365 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -249,7 +249,7 @@ void BatchQueuePanel::queueSizeChanged(int qsize, bool queueRunning, bool queueE { updateTab (qsize); - if (qsize == 0 || (qsize == 1 && !fdir->get_sensitive())) { + if (qsize == 0 || (qsize == 1 && queueRunning)) { qStartStop->set_sensitive(false); } else { qStartStop->set_sensitive(true); From 9a22e89125c4c9548fd7c5273fb88e1d393d77a9 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 26 Oct 2018 09:26:18 -0500 Subject: [PATCH 020/348] Cleanup: make impl function order match header, fix declaration var name --- rtgui/batchqueuepanel.cc | 54 ++++++++++++++++++++-------------------- rtgui/batchqueuepanel.h | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 1679d9365..8da66183a 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -324,13 +324,6 @@ void BatchQueuePanel::addBatchQueueJobs(const std::vector& ent } } -bool BatchQueuePanel::canStartNext () -{ - // This function is called from the background BatchQueue thread. - // It cannot call UI functions, so grab the stored state of qStartStop. - return qStartStopState; -} - void BatchQueuePanel::saveOptions () { @@ -339,6 +332,33 @@ void BatchQueuePanel::saveOptions () options.procQueueEnabled = qAutoStart->get_active(); } +bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event) +{ + bool ctrl = event->state & GDK_CONTROL_MASK; + + if (ctrl) { + switch(event->keyval) { + case GDK_KEY_s: + if (qStartStop->get_active()) { + stopBatchProc(); + } else { + startBatchProc(); + } + + return true; + } + } + + return batchQueue->keyPressed (event); +} + +bool BatchQueuePanel::canStartNext () +{ + // This function is called from the background BatchQueue thread. + // It cannot call UI functions, so grab the stored state of qStartStop. + return qStartStopState; +} + void BatchQueuePanel::pathFolderButtonPressed () { @@ -368,23 +388,3 @@ void BatchQueuePanel::formatChanged(const Glib::ustring& format) { options.saveFormatBatch = saveFormatPanel->getFormat(); } - -bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event) -{ - bool ctrl = event->state & GDK_CONTROL_MASK; - - if (ctrl) { - switch(event->keyval) { - case GDK_KEY_s: - if (qStartStop->get_active()) { - stopBatchProc(); - } else { - startBatchProc(); - } - - return true; - } - } - - return batchQueue->keyPressed (event); -} diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index a05d94fe3..74c9750e7 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -69,7 +69,7 @@ public: bool handleShortcutKey (GdkEventKey* event); // batchqueuelistener interface - void queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage); + void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage); bool canStartNext(); private: From a5f42c238a7da14c8651617bf0155342d381f975 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Fri, 26 Oct 2018 16:28:50 +0200 Subject: [PATCH 021/348] Update TooWaBlue-GTK3-20_.css Changes for "resizing to physical dimensions" --- rtdata/themes/TooWaBlue-GTK3-20_.css | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index aa753727d..041b342e3 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-2018 TooWaBoo - Version 2.82 + Version 2.83 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -135,6 +135,18 @@ tooltip { tooltip label { color: @text-tooltip; } +.grid-spacing > * { + margin-top: 0.166666666666666666em; + margin-bottom: 0.166666666666666666em; +} +.grid-spacing > label:not(:first-child) { + margin-left: 0.75em; + margin-right: 0.25em; +} +.grid-spacing > label:first-child { + margin-left: 0; + margin-right: 0.25em; +} paned { background-color: @bg-light-grey; @@ -1999,7 +2011,7 @@ entry { } spinbutton { - margin: 0.083333333333333333em 0; + margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; padding: 0; min-height: 1.666666666666666666em; min-width: 0; @@ -2010,7 +2022,7 @@ spinbutton { } #MyExpander spinbutton { - margin: 0.166666666666666666em 0; + margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; padding: 0; min-height: 1.333333333333333333em; min-width: 0; From d53e44d45bd72d2a2492816532e1410385188d9d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 26 Oct 2018 16:51:05 +0200 Subject: [PATCH 022/348] vng4 demosaic: precalculate weight --- rtengine/vng4_demosaic_RT.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 8ed05dd09..241c05507 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -24,7 +24,7 @@ #include "rawimagesource.h" #include "rawimagesource_i.h" #include "../rtgui/multilangmgr.h" -//#define BENCHMARK +#define BENCHMARK #include "StopWatch.h" namespace rtengine @@ -176,7 +176,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D Date: Fri, 26 Oct 2018 17:09:28 +0200 Subject: [PATCH 023/348] vng4 demosaic: move red/blue interpolation inside main loop for better cache usage, #4633 --- rtengine/vng4_demosaic_RT.cc | 47 ++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 241c05507..62f5018c5 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -215,11 +215,18 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D firstRow) { + interpolate_row_rb_mul_pp (rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, 1.0, 1.0, 1.0, 0, W, 1); + } if(plistenerActive) { if((row % progressStep) == 0) @@ -311,6 +321,24 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2DsetProgress (0.98); } - // Interpolate R and B -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int i = 0; i < H; i++) { - if (i == 0) - // rm, gm, bm must be recovered - //interpolate_row_rb_mul_pp (red, blue, NULL, green[i], green[i+1], i, rm, gm, bm, 0, W, 1); - { - interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1); - } else if (i == H - 1) { - interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1); - } else { - interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1); - } - } border_interpolate2(W, H, 3, rawData, red, green, blue); if(plistenerActive) { From c4ee5e611d22e1ec9721c6573689f5e21647da9c Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 26 Oct 2018 18:04:07 +0200 Subject: [PATCH 024/348] guided filter: reuse buffer across boxblur invocations --- rtengine/guidedfilter.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index a3dccf298..4e31fa300 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -135,11 +135,14 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 const array2D &p = src; array2D &q = dst; + AlignedBuffer blur_buf(I.width() * I.height()); const auto f_mean = - [](array2D &d, array2D &s, int rad) -> void + [&](array2D &d, array2D &s, int rad) -> void { rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1); - boxblur(s, d, rad, rad, s.width(), s.height()); + float **src = s; + float **dst = d; + boxblur(src, dst, blur_buf.data, rad, rad, s.width(), s.height()); }; const auto f_subsample = From 91f9dfe11084cd1da0d60b500b2944444f205cf8 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 26 Oct 2018 18:04:41 +0200 Subject: [PATCH 025/348] labregions: properly scale the guide to [0,1] for the guidedFilter calls --- rtengine/iplabregions.cc | 66 ++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index e69f91d5a..3854570d3 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -37,11 +37,18 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) const float scaling = 1.f; int n = params->colorToning.labregions.size(); + int show_mask_idx = params->colorToning.labregionsShowMask; + if (show_mask_idx >= n) { + show_mask_idx = -1; + } std::vector> hmask(n); std::vector> cmask(n); std::vector> lmask(n); - for (int i = 0; i < n; ++i) { + const int begin_idx = max(show_mask_idx, 0); + const int end_idx = (show_mask_idx < 0 ? n : show_mask_idx+1); + + for (int i = begin_idx; i < end_idx; ++i) { auto &r = params->colorToning.labregions[i]; if (!r.hueMask.empty() && r.hueMask[0] != FCT_Linear) { hmask[i].reset(new FlatCurve(r.hueMask, true)); @@ -54,10 +61,9 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) } } - array2D guide(lab->W, lab->H, lab->L, ARRAY2D_BYREFERENCE); std::vector> abmask(n); std::vector> Lmask(n); - for (int i = 0; i < n; ++i) { + for (int i = begin_idx; i < end_idx; ++i) { abmask[i](lab->W, lab->H); Lmask[i](lab->W, lab->H); } @@ -81,38 +87,40 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) h1 = lin2log(h1, 3.f); float l1 = l / 32768.f; - if (params->colorToning.labregionsShowMask >= 0 && params->colorToning.labregionsShowMask < n) { - int idx = params->colorToning.labregionsShowMask; - auto &hm = hmask[idx]; - auto &cm = cmask[idx]; - auto &lm = lmask[idx]; - float blend = (hm ? hm->getVal(h1) : 1.f) * (cm ? cm->getVal(c1) : 1.f) * (lm ? lm->getVal(l1) : 1.f); - abmask[idx][y][x] = blend; - } else { - for (int i = 0; i < n; ++i) { - auto &hm = hmask[i]; - auto &cm = cmask[i]; - auto &lm = lmask[i]; - float blend = (hm ? hm->getVal(h1) : 1.f) * (cm ? cm->getVal(c1) : 1.f) * (lm ? lm->getVal(l1) : 1.f); - Lmask[i][y][x] = abmask[i][y][x] = blend; - } + for (int i = begin_idx; i < end_idx; ++i) { + auto &hm = hmask[i]; + auto &cm = cmask[i]; + auto &lm = lmask[i]; + float blend = LIM01((hm ? hm->getVal(h1) : 1.f) * (cm ? cm->getVal(c1) : 1.f) * (lm ? lm->getVal(l1) : 1.f)); + Lmask[i][y][x] = abmask[i][y][x] = blend; } } } - for (int i = 0; i < n; ++i) { - rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); - rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); - } - - if (params->colorToning.labregionsShowMask >= 0 && params->colorToning.labregionsShowMask < n) { - int idx = params->colorToning.labregionsShowMask; + { + array2D guide(lab->W, lab->H, lab->L); #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif for (int y = 0; y < lab->H; ++y) { for (int x = 0; x < lab->W; ++x) { - auto blend = abmask[idx][y][x]; + guide[y][x] = LIM01(lab->L[y][x] / 32768.f); + } + } + + for (int i = begin_idx; i < end_idx; ++i) { + rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); + rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); + } + } + + if (show_mask_idx >= 0) { +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < lab->H; ++y) { + for (int x = 0; x < lab->W; ++x) { + auto blend = abmask[show_mask_idx][y][x]; lab->a[y][x] = 0.f; lab->b[y][x] = blend * 42000.f; lab->L[y][x] = LIM(lab->L[y][x] + 32768.f * blend, 0.f, 32768.f); @@ -142,9 +150,9 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) auto &r = params->colorToning.labregions[i]; float blend = abmask[i][y][x]; float s = 1.f + r.saturation / 100.f; - float a_new = s * (a + 32768.f * abcoord(r.a) / factor / scaling); - float b_new = s * (b + 32768.f * abcoord(r.b) / factor / scaling); - float l_new = l * (1.f + r.lightness / 1000.f); + float a_new = LIM(s * (a + 32768.f * abcoord(r.a) / factor / scaling), -42000.f, 42000.f); + float b_new = LIM(s * (b + 32768.f * abcoord(r.b) / factor / scaling), -42000.f, 42000.f); + float l_new = LIM(l * (1.f + float(r.lightness) / 1000.f), 0.f, 32768.f); l = intp(Lmask[i][y][x], l_new, l); a = intp(blend, a_new, a); b = intp(blend, b_new, b); From db07a8cdd31242937693de5029eeda0e4a37c41e Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 26 Oct 2018 18:16:12 +0200 Subject: [PATCH 026/348] L*a*b* regions: add new regions at the end of the list, not at the beginning --- rtgui/colortoning.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 79e913019..8b08acd70 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -1411,8 +1411,8 @@ void ColorToning::labRegionGet(int idx) void ColorToning::labRegionAddPressed() { - labRegionData.insert(labRegionData.begin(), rtengine::ColorToningParams::LabCorrectionRegion()); - labRegionSelected = 0; + labRegionSelected = labRegionData.size(); + labRegionData.push_back(rtengine::ColorToningParams::LabCorrectionRegion()); labRegionPopulateList(); labRegionShow(labRegionSelected); From 3d61eca91f648c8c09f2ad7b62bcdfa69ae39831 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 26 Oct 2018 20:23:27 +0200 Subject: [PATCH 027/348] vng4 demosaic: remove unreachable code, #4633 --- rtengine/vng4_demosaic_RT.cc | 55 ++++++++++++------------------------ 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 62f5018c5..0e7d8e0f9 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -71,9 +71,8 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2Dprefilters; const int width = W, height = H; constexpr unsigned int colors = 4; - float (*image)[4]; - image = (float (*)[4]) calloc (height * width, sizeof * image); + float (*image)[4] = (float (*)[4]) calloc (height * width, sizeof * image); #ifdef _OPENMP #pragma omp parallel for @@ -87,7 +86,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D &rawData, array2D &rawData, array2D &rawData, array2D gval[g]) { - gmin = gval[g]; - } - - if (gmax < gval[g]) { - gmax = gval[g]; - } + gmin = std::min(gmin, gval[g]); + gmax = std::max(gmax, gval[g]); } thold = gmin + (gmax / 2); } memset (sum, 0, sizeof sum); - float t1, t2; - t1 = t2 = pix[color]; + float t1p2 = pix[color]; if(color & 1) { int num = 0; @@ -273,7 +266,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D &rawData, array2D firstRow) { @@ -321,23 +313,12 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D 2 && firstRow < H - 3) { + interpolate_row_rb_mul_pp (rawData, red[firstRow], blue[firstRow], green[firstRow - 1], green[firstRow], green[firstRow + 1], firstRow, 1.0, 1.0, 1.0, 0, W, 1); } - if (lastRow != -1) { - if (lastRow == 0) { - interpolate_row_rb_mul_pp (rawData, red[0], blue[0], nullptr, green[0], green[1], 0, 1.0, 1.0, 1.0, 0, W, 1); - } else if (lastRow == H - 1) { - interpolate_row_rb_mul_pp (rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], nullptr, lastRow, 1.0, 1.0, 1.0, 0, W, 1); - } else { - interpolate_row_rb_mul_pp (rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, 1.0, 1.0, 1.0, 0, W, 1); - } + + if (lastRow > 2 && lastRow < H - 3) { + interpolate_row_rb_mul_pp (rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, 1.0, 1.0, 1.0, 0, W, 1); } } free (code[0][0]); From 1b291aee9bdbed9520f394747a6cffa42932a218 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 26 Oct 2018 22:20:20 +0200 Subject: [PATCH 028/348] vng4 demosaic: minor speedup, #4633 --- rtengine/vng4_demosaic_RT.cc | 46 ++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 0e7d8e0f9..500590b04 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -210,9 +210,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D &rawData, array2D &rawData, array2D &rawData, array2D firstRow) { - interpolate_row_rb_mul_pp (rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, 1.0, 1.0, 1.0, 0, W, 1); + interpolate_row_rb_mul_pp(rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, 1.0, 1.0, 1.0, 0, W, 1); } if(plistenerActive) { @@ -314,22 +306,24 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D 2 && firstRow < H - 3) { - interpolate_row_rb_mul_pp (rawData, red[firstRow], blue[firstRow], green[firstRow - 1], green[firstRow], green[firstRow + 1], firstRow, 1.0, 1.0, 1.0, 0, W, 1); + interpolate_row_rb_mul_pp(rawData, red[firstRow], blue[firstRow], green[firstRow - 1], green[firstRow], green[firstRow + 1], firstRow, 1.0, 1.0, 1.0, 0, W, 1); } if (lastRow > 2 && lastRow < H - 3) { - interpolate_row_rb_mul_pp (rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, 1.0, 1.0, 1.0, 0, W, 1); + interpolate_row_rb_mul_pp(rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, 1.0, 1.0, 1.0, 0, W, 1); + } +#ifdef _OPENMP + #pragma omp single +#endif + { + // let the first thread, which is out of work, do the border interpolation + border_interpolate2(W, H, 3, rawData, red, green, blue); } } + free (code[0][0]); free (image); - if(plistenerActive) { - plistener->setProgress (0.98); - } - - border_interpolate2(W, H, 3, rawData, red, green, blue); - if(plistenerActive) { plistener->setProgress (1.0); } From 7fb90644d38cfe801e4ab74cee934d7229c903e8 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 27 Oct 2018 15:25:38 +0200 Subject: [PATCH 029/348] dehaze: tweak epsilon to avoid artifacts in corner cases --- rtengine/ipdehaze.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 92eaa4062..fecc73e7d 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -282,7 +282,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) } const int radius = patchsize * 4; - const float epsilon = 1e-7; + const float epsilon = 1e-5; array2D &t = t_tilde; { From 47cfcd51d49b9f6890558ee0d4dce3e9e69979a5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 27 Oct 2018 18:46:02 +0200 Subject: [PATCH 030/348] vng4 demosaic: removed StopWatch, fixes #4897 --- rtengine/vng4_demosaic_RT.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 500590b04..5ed0b35c7 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -24,13 +24,13 @@ #include "rawimagesource.h" #include "rawimagesource_i.h" #include "../rtgui/multilangmgr.h" -#define BENCHMARK +//#define BENCHMARK #include "StopWatch.h" namespace rtengine { #define fc(row,col) (prefilters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3) -typedef unsigned short ushort; + void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens) { BENCHFUN From ce4377d7e533046c140c77c967250cedf58df965 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 28 Oct 2018 09:39:57 +0100 Subject: [PATCH 031/348] Initial support for uncompressed 16-bit float DNGs --- rtengine/dcraw.cc | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 99d006744..6bb238396 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -30,6 +30,10 @@ //#define BENCHMARK #include "StopWatch.h" +#include +#include + + /* dcraw.c -- Dave Coffin's raw photo decoder Copyright 1997-2018 by Dave Coffin, dcoffin a cybercom o net @@ -1170,23 +1174,37 @@ void CLASS lossless_dng_load_raw() } } +static uint32_t DNG_HalfToFloat(uint16_t halfValue); void CLASS packed_dng_load_raw() { ushort *pixel, *rp; int row, col; + int isfloat = (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3 && tiff_bps == 16); + if (isfloat) { + float_raw_image = new float[raw_width * raw_height]; + } pixel = (ushort *) calloc (raw_width, tiff_samples*sizeof *pixel); merror (pixel, "packed_dng_load_raw()"); for (row=0; row < raw_height; row++) { - if (tiff_bps == 16) + if (tiff_bps == 16) { read_shorts (pixel, raw_width * tiff_samples); - else { + if (isfloat) { + uint32_t *dst = reinterpret_cast(&float_raw_image[row*raw_width]); + for (col = 0; col < raw_width; col++) { + uint32_t f = DNG_HalfToFloat(pixel[col]); + dst[col] = f; + } + } + } else { getbits(-1); for (col=0; col < raw_width * tiff_samples; col++) pixel[col] = getbits(tiff_bps); } - for (rp=pixel, col=0; col < raw_width; col++) - adobe_copy_pixel (row, col, &rp); + if (!isfloat) { + for (rp=pixel, col=0; col < raw_width; col++) + adobe_copy_pixel (row, col, &rp); + } } free (pixel); } @@ -10086,7 +10104,14 @@ dng_skip: if (raw_width < width ) raw_width = width; } if (!tiff_bps) tiff_bps = 12; - if (!maximum) maximum = ((uint64_t)1 << tiff_bps) - 1; // use uint64_t to avoid overflow if tiff_bps == 32 + if (!maximum) { + if (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3) { + // float DNG, default white level is 1.0 + maximum = 1; + } else { + maximum = ((uint64_t)1 << tiff_bps) - 1; // use uint64_t to avoid overflow if tiff_bps == 32 + } + } if (!load_raw || height < 22 || width < 22 || tiff_samples > 6 || colors > 4) is_raw = 0; @@ -10169,8 +10194,8 @@ notraw: /* RT: DNG Float */ -#include -#include +// #include +// #include static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t realTileWidth, int bytesps, int factor) { // DecodeDeltaBytes @@ -10202,9 +10227,10 @@ static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t } -#ifndef __F16C__ +#if 1 //ndef __F16C__ // From DNG SDK dng_utils.h -static inline uint32_t DNG_HalfToFloat(uint16_t halfValue) { +static //inline +uint32_t DNG_HalfToFloat(uint16_t halfValue) { int32_t sign = (halfValue >> 15) & 0x00000001; int32_t exponent = (halfValue >> 10) & 0x0000001f; int32_t mantissa = halfValue & 0x000003ff; From c63633a76db4f556a460c5b3fcbc683a874fa0a2 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 28 Oct 2018 10:15:59 +0100 Subject: [PATCH 032/348] support for uncompressed 32-bit float DNGs --- rtengine/dcraw.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 6bb238396..81013bc0b 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1175,14 +1175,15 @@ void CLASS lossless_dng_load_raw() } static uint32_t DNG_HalfToFloat(uint16_t halfValue); + void CLASS packed_dng_load_raw() { ushort *pixel, *rp; int row, col; - int isfloat = (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3 && tiff_bps == 16); + int isfloat = (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3 && (tiff_bps == 16 || tiff_bps == 32)); if (isfloat) { float_raw_image = new float[raw_width * raw_height]; - } + } pixel = (ushort *) calloc (raw_width, tiff_samples*sizeof *pixel); merror (pixel, "packed_dng_load_raw()"); @@ -1196,6 +1197,14 @@ void CLASS packed_dng_load_raw() dst[col] = f; } } + } else if (isfloat) { + if (fread(&float_raw_image[row*raw_width], sizeof(float), raw_width, ifp) != raw_width) { + derror(); + } + if ((order == 0x4949) == (ntohs(0x1234) == 0x1234)) { + char *d = reinterpret_cast(float_raw_image); + rtengine::swab(d, d, sizeof(float)*raw_width); + } } else { getbits(-1); for (col=0; col < raw_width * tiff_samples; col++) From 632c1362c82045d78767e9a835b75b235893092f Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 28 Oct 2018 17:32:15 +0100 Subject: [PATCH 033/348] DNG: honour the BaselineExposure tag --- rtengine/dcraw.cc | 3 +++ rtengine/dcraw.h | 2 ++ rtengine/rawimage.h | 2 ++ rtengine/rawimagesource.cc | 5 +++++ rtengine/rtthumbnail.cc | 1 + 5 files changed, 13 insertions(+) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 81013bc0b..943d5a96a 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6463,6 +6463,9 @@ guess_cfa_pc: xyz[2] = 1 - xyz[0] - xyz[1]; FORC3 xyz[c] /= d65_white[c]; break; + case 50730: /* BaselineExposure */ + if (dng_version) RT_baseline_exposure = getreal(type); + break; case 50740: /* DNGPrivateData */ if (dng_version) break; parse_minolta (j = get4()+base); diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index e1b296dbf..c3794ea5f 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -58,6 +58,7 @@ public: ,RT_whitelevel_from_constant(ThreeValBool::X) ,RT_blacklevel_from_constant(ThreeValBool::X) ,RT_matrix_from_constant(ThreeValBool::X) + ,RT_baseline_exposure(0) ,getbithuff(this,ifp,zero_after_ff) ,nikbithuff(ifp) { @@ -154,6 +155,7 @@ protected: ThreeValBool RT_blacklevel_from_constant; ThreeValBool RT_matrix_from_constant; std::string RT_software; + double RT_baseline_exposure; float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4]; diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index 7595ad196..f6b8190e4 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -125,6 +125,8 @@ public: float** data; // holds pixel values, data[i][j] corresponds to the ith row and jth column unsigned prefilters; // original filters saved ( used for 4 color processing ) unsigned int getFrameCount() const { return is_raw; } + + double getBaselineExposure() const { return RT_baseline_exposure; } protected: Glib::ustring filename; // complete filename int rotate_deg; // 0,90,180,270 degree of rotation: info taken by dcraw from exif diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 502da8073..c917ac179 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -716,6 +716,11 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima gm /= area; bm /= area; bool doHr = (hrp.hrenabled && hrp.method != "Color"); + const float expcomp = std::pow(2, ri->getBaselineExposure()); + rm *= expcomp; + gm *= expcomp; + bm *= expcomp; + #ifdef _OPENMP #pragma omp parallel if(!d1x) // omp disabled for D1x to avoid race conditions (see Issue 1088 http://code.google.com/p/rawtherapee/issues/detail?id=1088) { diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index afd8836a1..dd8ca4a99 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -567,6 +567,7 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati tpp->camwbBlue = tpp->blueMultiplier / pre_mul[2]; //ri->get_pre_mul(2); //tpp->defGain = 1.0 / min(ri->get_pre_mul(0), ri->get_pre_mul(1), ri->get_pre_mul(2)); tpp->defGain = max (scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]) / min (scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]); + tpp->defGain *= std::pow(2, ri->getBaselineExposure()); tpp->gammaCorrected = true; From f673a4a881a084856b5193e657aa87303b85edcd Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 28 Oct 2018 18:38:40 +0100 Subject: [PATCH 034/348] avoid grabbing focus in the L*a*b* region list --- rtgui/colortoning.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 8b08acd70..c296a6b27 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -365,6 +365,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR labRegionList = Gtk::manage(new Gtk::ListViewText(3)); labRegionList->set_size_request(-1, 100); + labRegionList->set_can_focus(false); labRegionList->set_column_title(0, "#"); labRegionList->set_column_title(1, M("TP_COLORTONING_LABREGION_LIST_TITLE")); labRegionList->set_column_title(2, M("TP_COLORTONING_LABREGION_MASK")); From 50c623802a1db8312e836ff6f2a71df490341bd6 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 28 Oct 2018 18:38:55 +0100 Subject: [PATCH 035/348] set LabRegions as the default color toning method --- rtengine/procparams.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index bfb91aea8..b8f836f34 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -731,7 +731,7 @@ ColorToningParams::ColorToningParams() : 1.00, 1.00 }, - method("Lab"), + method("LabRegions"), twocolor("Std"), redlow(0.0), greenlow(0.0), From 13abcd0f6c5519744cd6acb523c2a1a86bfa4847 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 28 Oct 2018 20:37:34 +0100 Subject: [PATCH 036/348] vng4 demosaic: another very small speedup, #4633 --- rtengine/rawimagesource.h | 2 +- rtengine/vng4_demosaic_RT.cc | 104 +++++++++++++++-------------------- 2 files changed, 46 insertions(+), 60 deletions(-) diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index f78a4121b..8ee403ea2 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -269,7 +269,7 @@ protected: void nodemosaic(bool bw); void eahd_demosaic(); void hphd_demosaic(); - void vng4_demosaic(const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens = false); + void vng4_demosaic(const array2D &rawData, array2D &red, array2D &green, array2D &blue); void ppg_demosaic(); void jdl_interpolate_omp(); void igv_interpolate(int winw, int winh); diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 5ed0b35c7..ed3ef8802 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -31,7 +31,7 @@ namespace rtengine { #define fc(row,col) (prefilters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3) -void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens) +void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue) { BENCHFUN const signed short int *cp, terms[] = { @@ -227,67 +227,53 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D firstRow) { interpolate_row_rb_mul_pp(rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, 1.0, 1.0, 1.0, 0, W, 1); From 4d9871110bd47bb8399f204d6f6ba75c6267639e Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 29 Oct 2018 09:36:17 +0100 Subject: [PATCH 037/348] improved GUI for the "image type" field of dynamic profile rules --- rtdata/languages/default | 4 +++ rtgui/dynamicprofilepanel.cc | 50 +++++++++++++++++++++++++++++++----- rtgui/dynamicprofilepanel.h | 3 +-- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index cc978ce92..1368b43f8 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -43,6 +43,10 @@ DYNPROFILEEDITOR_DELETE;Delete DYNPROFILEEDITOR_EDIT;Edit DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +DYNPROFILEEDITOR_IMGTYPE_ANY;Any +DYNPROFILEEDITOR_IMGTYPE_STD;Standard +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift DYNPROFILEEDITOR_MOVE_DOWN;Move Down DYNPROFILEEDITOR_MOVE_UP;Move Up DYNPROFILEEDITOR_NEW;New diff --git a/rtgui/dynamicprofilepanel.cc b/rtgui/dynamicprofilepanel.cc index d7e8f356a..d83c70669 100644 --- a/rtgui/dynamicprofilepanel.cc +++ b/rtgui/dynamicprofilepanel.cc @@ -41,7 +41,17 @@ DynamicProfilePanel::EditDialog::EditDialog (const Glib::ustring &title, Gtk::Wi add_optional (M ("EXIFFILTER_CAMERA"), has_camera_, camera_); add_optional (M ("EXIFFILTER_LENS"), has_lens_, lens_); - add_optional (M ("EXIFFILTER_IMAGETYPE"), has_imagetype_, imagetype_); + + imagetype_ = Gtk::manage (new MyComboBoxText()); + imagetype_->append(Glib::ustring("(") + M("DYNPROFILEEDITOR_IMGTYPE_ANY") + ")"); + imagetype_->append(M("DYNPROFILEEDITOR_IMGTYPE_STD")); + imagetype_->append(M("DYNPROFILEEDITOR_IMGTYPE_HDR")); + imagetype_->append(M("DYNPROFILEEDITOR_IMGTYPE_PS")); + imagetype_->set_active(0); + hb = Gtk::manage (new Gtk::HBox()); + hb->pack_start (*Gtk::manage (new Gtk::Label (M ("EXIFFILTER_IMAGETYPE"))), false, false, 4); + hb->pack_start (*imagetype_, true, true, 2); + get_content_area()->pack_start (*hb, Gtk::PACK_SHRINK, 4); add_range (M ("EXIFFILTER_ISO"), iso_min_, iso_max_); add_range (M ("EXIFFILTER_APERTURE"), fnumber_min_, fnumber_max_); @@ -82,8 +92,17 @@ void DynamicProfilePanel::EditDialog::set_rule ( has_lens_->set_active (rule.lens.enabled); lens_->set_text (rule.lens.value); - has_imagetype_->set_active (rule.imagetype.enabled); - imagetype_->set_text (rule.imagetype.value); + if (!rule.imagetype.enabled) { + imagetype_->set_active(0); + } else if (rule.imagetype.value == "STD") { + imagetype_->set_active(1); + } else if (rule.imagetype.value == "HDR") { + imagetype_->set_active(2); + } else if (rule.imagetype.value == "PS") { + imagetype_->set_active(3); + } else { + imagetype_->set_active(0); + } profilepath_->updateProfileList(); @@ -116,8 +135,20 @@ DynamicProfileRule DynamicProfilePanel::EditDialog::get_rule() ret.lens.enabled = has_lens_->get_active(); ret.lens.value = lens_->get_text(); - ret.imagetype.enabled = has_imagetype_->get_active(); - ret.imagetype.value = imagetype_->get_text(); + ret.imagetype.enabled = imagetype_->get_active_row_number() > 0; + switch (imagetype_->get_active_row_number()) { + case 1: + ret.imagetype.value = "STD"; + break; + case 2: + ret.imagetype.value = "HDR"; + break; + case 3: + ret.imagetype.value = "PS"; + break; + default: + ret.imagetype.value = ""; + } ret.profilepath = profilepath_->getFullPathFromActiveRow(); @@ -478,7 +509,14 @@ void DynamicProfilePanel::render_lens ( void DynamicProfilePanel::render_imagetype ( Gtk::CellRenderer *cell, const Gtk::TreeModel::iterator &iter) { - RENDER_OPTIONAL_ (imagetype); + auto row = *iter; + Gtk::CellRendererText *ct = static_cast(cell); + DynamicProfileRule::Optional o = row[columns_.imagetype]; + if (o.enabled) { + ct->property_text() = M(std::string("DYNPROFILEEDITOR_IMGTYPE_") + o.value); + } else { \ + ct->property_text() = ""; + } } #undef RENDER_OPTIONAL_ diff --git a/rtgui/dynamicprofilepanel.h b/rtgui/dynamicprofilepanel.h index 3b5bec4df..e271edc5a 100644 --- a/rtgui/dynamicprofilepanel.h +++ b/rtgui/dynamicprofilepanel.h @@ -112,8 +112,7 @@ private: Gtk::CheckButton *has_lens_; Gtk::Entry *lens_; - Gtk::CheckButton *has_imagetype_; - Gtk::Entry *imagetype_; + MyComboBoxText *imagetype_; ProfileStoreComboBox *profilepath_; }; From fb44445f2acb061e5f017b6ea92a834e2002bcdd Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 29 Oct 2018 11:11:11 +0100 Subject: [PATCH 038/348] Reverted changes to 'default' language file #4893 Commit 1a3fd9 accidentally wiped all non-ASCII characters from the file while adding new keys. This commit restores them. --- rtdata/languages/default | 44 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 40ff2ff88..f6ffc873c 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -398,7 +398,7 @@ HISTORY_MSG_145;Microcontrast - Uniformity HISTORY_MSG_146;Edge sharpening HISTORY_MSG_147;ES - Luminance only HISTORY_MSG_148;Microcontrast -HISTORY_MSG_149;Microcontrast - 33 matrix +HISTORY_MSG_149;Microcontrast - 3×3 matrix HISTORY_MSG_150;Post-demosaic artifact/noise red. HISTORY_MSG_151;Vibrance HISTORY_MSG_152;Vib - Pastel tones @@ -728,14 +728,14 @@ HISTORY_MSG_492;RGB Curves HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - L*a*b* region list +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - L*a*b* region saturation -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - L*a*b* region lightness -HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - L*a*b* region H mask -HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - L*a*b* region C mask -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L*a*b* region L mask -HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - L*a*b* region show mask +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold HISTORY_MSG_HISTMATCHING;Auto-matched tone curve @@ -816,7 +816,7 @@ IPTCPANEL_CITY;City IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard. IPTCPANEL_COPYRIGHT;Copyright notice -IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as 2008 Jane Doe. +IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. IPTCPANEL_COUNTRY;Country IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. IPTCPANEL_CREATOR;Creator @@ -1375,9 +1375,9 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Ed TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m). +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. +TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) +TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All @@ -1414,7 +1414,7 @@ TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. TP_COLORAPP_HUE;Hue (h) -TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0 and 360. +TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 TP_COLORAPP_LABEL_CAM02;Image Adjustments TP_COLORAPP_LABEL_SCENE;Scene Conditions @@ -1571,16 +1571,16 @@ 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 33 window size often leads to better results than using one median filter iteration with a 77 window size. +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\n33 soft: treats 5 pixels in a 33 pixel window.\n33: treats 9 pixels in a 33 pixel window.\n55 soft: treats 13 pixels in a 55 pixel window.\n55: treats 25 pixels in a 55 pixel window.\n77: treats 49 pixels in a 77 pixel window.\n99: treats 81 pixels in a 99 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_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;33 -TP_DIRPYRDENOISE_TYPE_3X3SOFT;33 soft -TP_DIRPYRDENOISE_TYPE_5X5;55 -TP_DIRPYRDENOISE_TYPE_5X5SOFT;55 soft -TP_DIRPYRDENOISE_TYPE_7X7;77 -TP_DIRPYRDENOISE_TYPE_9X9;99 +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 @@ -2026,7 +2026,7 @@ TP_SHARPENING_USM;Unsharp Mask TP_SHARPENMICRO_AMOUNT;Quantity TP_SHARPENMICRO_CONTRAST;Contrast threshold TP_SHARPENMICRO_LABEL;Microcontrast -TP_SHARPENMICRO_MATRIX;33 matrix instead of 55 +TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformity TP_SOFTLIGHT_LABEL;Soft Light TP_SOFTLIGHT_STRENGTH;Strength From 4a765cc91fde51c1ff2fbc046fdcc4db4e57bff0 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Mon, 29 Oct 2018 10:52:06 -0500 Subject: [PATCH 039/348] Unify inconsistent notifyListener() logic Previously, this function required a `queueEmptied` bool, which I changed to `queueRunning`. But I goofed the logic on this bool; it should always be "is `processing` nullptr." --- rtgui/batchqueue.cc | 13 ++++++------- rtgui/batchqueue.h | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index a66fda153..6c42ef89f 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -229,7 +229,7 @@ void BatchQueue::addEntries (const std::vector& entries, bool saveBatchQueue (); redraw (); - notifyListener (true); + notifyListener (); } bool BatchQueue::saveBatchQueue () @@ -387,7 +387,7 @@ bool BatchQueue::loadBatchQueue () } redraw (); - notifyListener (true); + notifyListener (); return !fd.empty (); } @@ -460,7 +460,7 @@ void BatchQueue::cancelItems (const std::vector& items) saveBatchQueue (); redraw (); - notifyListener (true); + notifyListener (); } void BatchQueue::headItems (const std::vector& items) @@ -775,8 +775,7 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) } redraw (); - const bool queueRunning = processing; - notifyListener (queueRunning); + notifyListener (); return processing ? processing->job : nullptr; } @@ -971,9 +970,9 @@ void BatchQueue::buttonPressed (LWButton* button, int actionCode, void* actionDa } } -void BatchQueue::notifyListener (bool queueRunning) +void BatchQueue::notifyListener () { - + const bool queueRunning = processing; if (listener) { NLParams* params = new NLParams; params->listener = listener; diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index 6b0e047cb..a922e5e1f 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -93,7 +93,7 @@ protected: Glib::ustring autoCompleteFileName (const Glib::ustring& fileName, const Glib::ustring& format); Glib::ustring getTempFilenameForParams( const Glib::ustring &filename ); bool saveBatchQueue (); - void notifyListener (bool queueRunning); + void notifyListener (); BatchQueueEntry* processing; // holds the currently processed image FileCatalog* fileCatalog; From 894fb8d9b3d847b9515742501af5f50e36c750a6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 30 Oct 2018 13:45:44 +0100 Subject: [PATCH 040/348] vng4 demosaic: another small speedup, #4633 --- rtengine/vng4_demosaic_RT.cc | 216 ++++++++++++++++++++++++----------- 1 file changed, 148 insertions(+), 68 deletions(-) diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index ed3ef8802..1c7f27dea 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -22,12 +22,41 @@ #include "rtengine.h" #include "rawimagesource.h" -#include "rawimagesource_i.h" #include "../rtgui/multilangmgr.h" //#define BENCHMARK #include "StopWatch.h" +namespace { + +using namespace rtengine; + +inline void vng4interpolate_row_redblue (const RawImage *ri, const array2D &rawData, float* ar, float* ab, const float * const pg, const float * const cg, const float * const ng, int i, int width) +{ + if (ri->ISBLUE(i, 0) || ri->ISBLUE(i, 1)) { + std::swap(ar, ab); + } + + // RGRGR or GRGRGR line + for (int j = 3; j < width - 3; ++j) { + if (!ri->ISGREEN(i, j)) { + // keep original value + ar[j] = rawData[i][j]; + // cross interpolation of red/blue + float rb = (rawData[i - 1][j - 1] - pg[j - 1] + rawData[i + 1][j - 1] - ng[j - 1]); + rb += (rawData[i - 1][j + 1] - pg[j + 1] + rawData[i + 1][j + 1] - ng[j + 1]); + ab[j] = cg[j] + rb * 0.25f; + } else { + // linear R/B-G interpolation horizontally + ar[j] = cg[j] + (rawData[i][j - 1] - cg[j - 1] + rawData[i][j + 1] - cg[j + 1]) / 2; + // linear B/R-G interpolation vertically + ab[j] = cg[j] + (rawData[i - 1][j] - pg[j] + rawData[i + 1][j] - ng[j]) / 2; + } + } +} +} + namespace rtengine + { #define fc(row,col) (prefilters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3) @@ -74,65 +103,106 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D firstRow) { + int row = ii - 1; + for (int col = 1; col < width - 1; col++) { + float * pix = image[row * width + col]; + int * ip = lcode[row & 15][col & 15]; + float sum[4] = {}; + + for (int i = 0; i < 8; i++, ip += 2) { + sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i]; + } + + for (unsigned int i = 0; i < colors - 1; i++, ip++) { + pix[ip[0]] = sum[ip[0]] * csum[row & 15][col & 15][i]; + } + } + } + } + + // now all rows are processed except the first and last row of each chunk + // let's process them now but skip row 0 and row H - 1 + if (firstRow > 0 && firstRow < H - 1) { + const int row = firstRow; for (int col = 1; col < width - 1; col++) { float * pix = image[row * width + col]; int * ip = lcode[row & 15][col & 15]; - float sum[4]; - memset (sum, 0, sizeof sum); + float sum[4] = {}; + + for (int i = 0; i < 8; i++, ip += 2) { + sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i]; + } + + for (unsigned int i = 0; i < colors - 1; i++, ip++) { + pix[ip[0]] = sum[ip[0]] * csum[row & 15][col & 15][i]; + } + } + } + + if (lastRow > 0 && lastRow < H - 1) { + const int row = lastRow; + for (int col = 1; col < width - 1; col++) { + float * pix = image[row * width + col]; + int * ip = lcode[row & 15][col & 15]; + float sum[4] = {}; for (int i = 0; i < 8; i++, ip += 2) { sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i]; @@ -145,16 +215,15 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D(ip++) = 1 << weight; +#else *ip++ = 1 << weight; - - for (g = 0; g < 8; g++) +#endif + for (int g = 0; g < 8; g++) if (grads & (1 << g)) { *ip++ = g; } @@ -187,7 +260,8 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2DsetProgress (progress); } @@ -211,7 +285,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D float conversions + const float diff = std::fabs(pix[ip[0]] - pix[ip[1]]) * reinterpret_cast(ip)[2]; +#else const float diff = std::fabs(pix[ip[0]] - pix[ip[1]]) * ip[2]; +#endif gval[ip[3]] += diff; ip += 5; if (UNLIKELY(ip[-1] != -1)) { @@ -246,17 +325,18 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2D firstRow) { - interpolate_row_rb_mul_pp(rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, 1.0, 1.0, 1.0, 0, W, 1); + vng4interpolate_row_redblue(ri, rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, W); } if(plistenerActive) { @@ -292,11 +372,11 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D 2 && firstRow < H - 3) { - interpolate_row_rb_mul_pp(rawData, red[firstRow], blue[firstRow], green[firstRow - 1], green[firstRow], green[firstRow + 1], firstRow, 1.0, 1.0, 1.0, 0, W, 1); + vng4interpolate_row_redblue(ri, rawData, red[firstRow], blue[firstRow], green[firstRow - 1], green[firstRow], green[firstRow + 1], firstRow, W); } if (lastRow > 2 && lastRow < H - 3) { - interpolate_row_rb_mul_pp(rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, 1.0, 1.0, 1.0, 0, W, 1); + vng4interpolate_row_redblue(ri, rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, W); } #ifdef _OPENMP #pragma omp single From 6877360913801c2810d1050b1ef841a8f8cdfbb3 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 30 Oct 2018 14:36:56 +0100 Subject: [PATCH 041/348] DNG: use embedded black and white levels also from files generated by Adobe We only override the colour matrix for Adobe DNG Converter (to ensure a consistent look between dng an native raw) --- rtengine/dcraw.cc | 31 ++++++++++++++++++++++++++----- rtengine/rawimage.cc | 30 +++++++++++++++--------------- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 943d5a96a..d0a267121 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6409,6 +6409,7 @@ guess_cfa_pc: case 61450: cblack[4] = cblack[5] = MIN(sqrt(len),64); case 50714: /* BlackLevel */ + RT_blacklevel_from_constant = ThreeValBool::F; if(cblack[4] * cblack[5] == 0) { int dblack[] = { 0,0,0,0 }; black = getreal(type); @@ -6423,7 +6424,6 @@ guess_cfa_pc: cblack[6+c] = getreal(type); } black = 0; - RT_blacklevel_from_constant = ThreeValBool::F; break; case 50715: /* BlackLevelDeltaH */ case 50716: /* BlackLevelDeltaV */ @@ -8632,11 +8632,31 @@ void CLASS adobe_coeff (const char *make, const char *model) int i, j; sprintf (name, "%s %s", make, model); + + + // -- RT -------------------------------------------------------------------- + const bool is_pentax_dng = dng_version && !strncmp(RT_software.c_str(), "PENTAX", 6); + // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file + // note: this is simplified so far, in some cases dcraw calls this when it has say the black level + // from file, but then we will not provide any black level in the tables. This case is mainly just + // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already + // have constants stored in the file). + if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) { + RT_whitelevel_from_constant = ThreeValBool::T; + } + if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) { + RT_blacklevel_from_constant = ThreeValBool::T; + } + if (RT_matrix_from_constant == ThreeValBool::X) { + RT_matrix_from_constant = ThreeValBool::T; + } + // -- RT -------------------------------------------------------------------- + for (i=0; i < sizeof table / sizeof *table; i++) if (!strncmp (name, table[i].prefix, strlen(table[i].prefix))) { - if (table[i].black) black = (ushort) table[i].black; - if (table[i].maximum) maximum = (ushort) table[i].maximum; - if (table[i].trans[0]) { + if (RT_blacklevel_from_constant == ThreeValBool::T && table[i].black) black = (ushort) table[i].black; + if (RT_whitelevel_from_constant == ThreeValBool::T && table[i].maximum) maximum = (ushort) table[i].maximum; + if (RT_matrix_from_constant == ThreeValBool::T && table[i].trans[0]) { for (raw_color = j=0; j < 12; j++) ((double *)cam_xyz)[j] = table[i].trans[j] / 10000.0; cam_xyz_coeff (rgb_cam, cam_xyz); @@ -10082,7 +10102,8 @@ dng_skip: * DNG-converted and original raw * files. See #4129 */) { memcpy (rgb_cam, cmatrix, sizeof cmatrix); - raw_color = 0; +// raw_color = 0; + RT_matrix_from_constant = ThreeValBool::F; } if(!strncmp(make, "Panasonic", 9) && !strncmp(model, "DMC-LX100",9)) adobe_coeff (make, model); diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 131b04156..2fd4d7dc8 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -1060,20 +1060,20 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is } memset(trans, 0, sizeof(*trans) * 12); - // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file - // note: this is simplified so far, in some cases dcraw calls this when it has say the black level - // from file, but then we will not provide any black level in the tables. This case is mainly just - // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already - // have constants stored in the file). - if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) { - RT_whitelevel_from_constant = ThreeValBool::T; - } - if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) { - RT_blacklevel_from_constant = ThreeValBool::T; - } - if (RT_matrix_from_constant == ThreeValBool::X) { - RT_matrix_from_constant = ThreeValBool::T; - } + // // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file + // // note: this is simplified so far, in some cases dcraw calls this when it has say the black level + // // from file, but then we will not provide any black level in the tables. This case is mainly just + // // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already + // // have constants stored in the file). + // if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) { + // RT_whitelevel_from_constant = ThreeValBool::T; + // } + // if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) { + // RT_blacklevel_from_constant = ThreeValBool::T; + // } + // if (RT_matrix_from_constant == ThreeValBool::X) { + // RT_matrix_from_constant = ThreeValBool::T; + // } { // test if we have any information in the camera constants store, if so we take that. @@ -1088,7 +1088,7 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is *white_level = cc->get_WhiteLevel(0, iso_speed, aperture); } - if (cc->has_dcrawMatrix()) { + if (RT_matrix_from_constant == ThreeValBool::T && cc->has_dcrawMatrix()) { const short *mx = cc->get_dcrawMatrix(); for (int j = 0; j < 12; j++) { From 1dcf92322dd995f241414b11192b44140c6368b3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 30 Oct 2018 19:36:37 +0100 Subject: [PATCH 042/348] RT crashes with wrong value in profile (curves), fixes #4398 --- rtengine/curves.cc | 36 ++++++++++++++++++++++++++++ rtengine/curves.h | 8 ++++++- rtengine/procparams.cc | 9 +------ rtgui/diagonalcurveeditorsubgroup.cc | 4 ++++ rtgui/flatcurveeditorsubgroup.cc | 4 ++++ 5 files changed, 52 insertions(+), 9 deletions(-) diff --git a/rtengine/curves.cc b/rtengine/curves.cc index aab74a7de..9e3c6527e 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -45,6 +45,42 @@ using namespace std; namespace rtengine { +bool sanitizeCurve(std::vector& curve) +{ + // A curve is valid under one of the following conditions: + // 1) Curve has exactly one entry which is D(F)CT_Linear + // 2) Number of curve entries is > 3 and odd + // 3) curve[0] == DCT_Parametric and curve size is >= 8 and curve[1] .. curve[3] are ordered ascending and are distinct + if (curve.empty()) { + curve.push_back (DCT_Linear); + return true; + } else if(curve.size() == 1 && curve[0] != DCT_Linear) { + curve[0] = DCT_Linear; + return true; + } else if((curve.size() % 2 == 0 || curve.size() < 5) && curve[0] != DCT_Parametric) { + curve.clear(); + curve.push_back (DCT_Linear); + return true; + } else if(curve[0] == DCT_Parametric) { + if (curve.size() < 8) { + curve.clear(); + curve.push_back (DCT_Linear); + return true; + } else { + // curve[1] to curve[3] must be ordered ascending and distinct + for (int i = 1; i < 3; i++) { + if (curve[i] >= curve[i + 1]) { + curve[1] = 0.25f; + curve[2] = 0.5f; + curve[3] = 0.75f; + break; + } + } + } + } + return false; +} + Curve::Curve () : N(0), ppn(0), x(nullptr), y(nullptr), mc(0.0), mfc(0.0), msc(0.0), mhc(0.0), hashSize(1000 /* has to be initialized to the maximum value */), ypp(nullptr), x1(0.0), y1(0.0), x2(0.0), y2(0.0), x3(0.0), y3(0.0), firstPointIncluded(false), increment(0.0), nbr_points(0) {} void Curve::AddPolygons () diff --git a/rtengine/curves.h b/rtengine/curves.h index a9f4b4ace..30fb01102 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -19,9 +19,12 @@ #ifndef __CURVES_H__ #define __CURVES_H__ -#include #include #include +#include + +#include + #include "rt_math.h" #include "../rtgui/mycurve.h" #include "../rtgui/myflatcurve.h" @@ -42,6 +45,7 @@ using namespace std; namespace rtengine { + class ToneCurve; class ColorAppearance; @@ -55,6 +59,8 @@ void setUnlessOOG(T &r, T &g, T &b, const T &rr, const T &gg, const T &bb) } } +bool sanitizeCurve(std::vector& curve); + namespace curves { inline void setLutVal(const LUTf &lut, float &val) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 526a36765..b07778c55 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -87,13 +87,6 @@ Glib::ustring relativePathIfInside(const Glib::ustring &procparams_fname, bool f return prefix + embedded_fname.substr(dir1.length()); } -void avoidEmptyCurve(std::vector &curve) -{ - if (curve.empty()) { - curve.push_back(FCT_Linear); - } -} - void getFromKeyfile( const Glib::KeyFile& keyfile, const Glib::ustring& group_name, @@ -142,7 +135,7 @@ void getFromKeyfile( ) { value = keyfile.get_double_list(group_name, key); - avoidEmptyCurve(value); + rtengine::sanitizeCurve(value); } template diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index a022c8650..c23b25f9a 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -32,6 +32,8 @@ #include "diagonalcurveeditorsubgroup.h" #include "rtimage.h" +#include "../rtengine/curves.h" + DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, Glib::ustring& curveDir) : CurveEditorSubGroup(curveDir) { @@ -814,6 +816,8 @@ void DiagonalCurveEditorSubGroup::loadPressed () } } + rtengine::sanitizeCurve(p); + if (p[0] == (double)(DCT_Spline)) { customCurve->setPoints (p); customCurve->queue_draw (); diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 2cc96a184..27b7ac940 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -33,6 +33,8 @@ #include "flatcurveeditorsubgroup.h" #include "rtimage.h" +#include "../rtengine/curves.h" + FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::ustring& curveDir) : CurveEditorSubGroup(curveDir) { @@ -418,6 +420,8 @@ void FlatCurveEditorSubGroup::loadPressed () } } + rtengine::sanitizeCurve(p); + if (p[0] == (double)(FCT_MinMaxCPoints)) { CPointsCurve->setPoints (p); CPointsCurve->queue_draw (); From 74a467fb4e20aca7b9b9ba40eefa405f0d32e2c4 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 30 Oct 2018 21:12:44 +0100 Subject: [PATCH 043/348] labgrid: work on [0,1] values --- rtengine/improcfun.cc | 4 ++-- rtengine/iplabregions.cc | 2 +- rtgui/colortoning.cc | 8 ++++++-- rtgui/labgrid.cc | 37 +++++++++++++++++++++---------------- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 013a629fd..748e46187 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -5782,8 +5782,8 @@ void ImProcFunctions::lab2rgb (const LabImage &src, Imagefloat &dst, const Glib: */ void ImProcFunctions::colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread) { - const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; - const float scaling = ColorToningParams::LABGRID_CORR_SCALE; + const float factor = 3.f; + const float scaling = 3.f; float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor / scaling; float a_base = params->colorToning.labgridALow / scaling; float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor / scaling; diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 3854570d3..fe3325b1d 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -33,7 +33,7 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) return; } - const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; + const float factor = 3.f; const float scaling = 1.f; int n = params->colorToning.labregions.size(); diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index c296a6b27..28b2a59ea 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -596,7 +596,7 @@ 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); + labgrid->setParams(pp->colorToning.labgridALow / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridBLow / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridAHigh / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridBHigh / ColorToningParams::LABGRID_CORR_MAX, false); if (pedited && !pedited->colorToning.method) { method->set_active (5); @@ -667,6 +667,10 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pp->colorToning.strength = strength->getIntValue(); labgrid->getParams(pp->colorToning.labgridALow, pp->colorToning.labgridBLow, pp->colorToning.labgridAHigh, pp->colorToning.labgridBHigh); + pp->colorToning.labgridALow *= ColorToningParams::LABGRID_CORR_MAX; + pp->colorToning.labgridAHigh *= ColorToningParams::LABGRID_CORR_MAX; + pp->colorToning.labgridBLow *= ColorToningParams::LABGRID_CORR_MAX; + pp->colorToning.labgridBHigh *= ColorToningParams::LABGRID_CORR_MAX; labRegionGet(labRegionSelected); labRegionShow(labRegionSelected, true); @@ -778,7 +782,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); + labgrid->setDefault(defParams->colorToning.labgridALow / ColorToningParams::LABGRID_CORR_MAX, defParams->colorToning.labgridBLow / ColorToningParams::LABGRID_CORR_MAX, defParams->colorToning.labgridAHigh / ColorToningParams::LABGRID_CORR_MAX, defParams->colorToning.labgridBHigh / ColorToningParams::LABGRID_CORR_MAX); if (pedited) { diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index fde03194b..fe984ffe9 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -44,7 +44,12 @@ using rtengine::Color; bool LabGrid::notifyListener() { if (listener) { - listener->panelChanged(evt, Glib::ustring::compose(evtMsg, int(high_a), int(high_b), int(low_a), int(low_b))); + const auto round = + [](float v) -> float + { + return int(v * 1000) / 1000.f; + }; + listener->panelChanged(evt, Glib::ustring::compose(evtMsg, round(high_a), round(high_b), round(low_a), round(low_b))); } return false; } @@ -76,8 +81,8 @@ void LabGrid::getParams(double &la, double &lb, double &ha, double &hb) const void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify) { - const double lo = -rtengine::ColorToningParams::LABGRID_CORR_MAX; - const double hi = rtengine::ColorToningParams::LABGRID_CORR_MAX; + const double lo = -1.0; + const double hi = 1.0; low_a = rtengine::LIM(la, lo, hi); low_b = rtengine::LIM(lb, lo, hi); high_a = rtengine::LIM(ha, lo, hi); @@ -172,7 +177,7 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) cr->translate(0, height); cr->scale(1., -1.); const int cells = 8; - float step = rtengine::ColorToningParams::LABGRID_CORR_MAX / float(cells/2); + float step = 1.f / float(cells/2); for (int j = 0; j < cells; j++) { for (int i = 0; i < cells; i++) { float R, G, B; @@ -192,10 +197,10 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) // 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); + loa = .5f * (width + width * low_a); + hia = .5f * (width + width * high_a); + lob = .5f * (height + height * low_b); + hib = .5f * (height + height * high_b); cr->set_line_width(2.); cr->set_source_rgb(0.6, 0.6, 0.6); cr->move_to(loa, lob); @@ -279,11 +284,11 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) 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; + low_a = ma; + low_b = mb; } else if (litPoint == HIGH) { - high_a = ma * rtengine::ColorToningParams::LABGRID_CORR_MAX; - high_b = mb * rtengine::ColorToningParams::LABGRID_CORR_MAX; + high_a = ma; + high_b = mb; } edited = true; grab_focus(); @@ -295,10 +300,10 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) 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; + float la = low_a; + float lb = low_b; + float ha = high_a; + float hb = high_b; 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); From cef5d12779859965a5f7bddfe9118333f28b95cb Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 30 Oct 2018 21:18:21 +0100 Subject: [PATCH 044/348] AllowUpscaling=false for old PP3s PP3s from before the Allow Upscaling option's introduction to the Resize tool should defaut to not allow upscaling. Closes #4643 --- rtengine/procparams.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index b07778c55..f5e598b75 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -4207,7 +4207,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (ppVersion >= 339) { assignFromKeyfile(keyFile, "Resize", "AllowUpscaling", pedited, resize.allowUpscaling, pedited->resize.allowUpscaling); } else { - resize.allowUpscaling = true; + resize.allowUpscaling = false; if (pedited) { pedited->resize.allowUpscaling = true; } From 4eb93c24f8da371a2d858adb098b07f37dac159d Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 30 Oct 2018 22:30:12 +0100 Subject: [PATCH 045/348] fixed broken labgrid after previous commit --- rtgui/colortoning.cc | 10 ++++++++-- rtgui/labgrid.cc | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 28b2a59ea..2b80c6be2 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -1493,6 +1493,12 @@ bool hasMask(const std::vector &dflt, const std::vector &mask) } } + +inline float round_ab(float v) +{ + return int(v * 1000) / 1000.f; +} + } // namespace @@ -1505,7 +1511,7 @@ void ColorToning::labRegionPopulateList() for (size_t i = 0; i < labRegionData.size(); ++i) { auto &r = labRegionData[i]; auto j = labRegionList->append(std::to_string(i+1)); - labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", int(r.a), int(r.b), r.saturation, r.lightness)); + labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", round_ab(r.a), round_ab(r.b), r.saturation, r.lightness)); labRegionList->set_text( j, 2, Glib::ustring::compose( "%1%2%3", @@ -1532,7 +1538,7 @@ void ColorToning::labRegionShow(int idx, bool list_only) labRegionChromaticityMask->setCurve(r.chromaticityMask); labRegionLightnessMask->setCurve(r.lightnessMask); } - labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", int(r.a), int(r.b), r.saturation, r.lightness)); + labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", round_ab(r.a), round_ab(r.b), r.saturation, r.lightness)); labRegionList->set_text( idx, 2, Glib::ustring::compose( "%1%2%3", diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index fe984ffe9..5e0d571a5 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -177,7 +177,7 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) cr->translate(0, height); cr->scale(1., -1.); const int cells = 8; - float step = 1.f / float(cells/2); + float step = 12000.f / float(cells/2); for (int j = 0; j < cells; j++) { for (int i = 0; i < cells; i++) { float R, G, B; From 43876abb81471cabbd6219ce6188c68056fc35b2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 30 Oct 2018 23:56:49 +0100 Subject: [PATCH 046/348] Reverted changes to 'default' language file #4898 Commit 14ac4b accidentally wiped all non-ASCII characters from the file while adding new keys. This commit restores them. --- rtdata/languages/default | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index d9cc7f4a2..370d8645d 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -398,7 +398,7 @@ HISTORY_MSG_145;Microcontrast - Uniformity HISTORY_MSG_146;Edge sharpening HISTORY_MSG_147;ES - Luminance only HISTORY_MSG_148;Microcontrast -HISTORY_MSG_149;Microcontrast - 33 matrix +HISTORY_MSG_149;Microcontrast - 3×3 matrix HISTORY_MSG_150;Post-demosaic artifact/noise red. HISTORY_MSG_151;Vibrance HISTORY_MSG_152;Vib - Pastel tones @@ -812,7 +812,7 @@ IPTCPANEL_CITY;City IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard. IPTCPANEL_COPYRIGHT;Copyright notice -IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as 2008 Jane Doe. +IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. IPTCPANEL_COUNTRY;Country IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. IPTCPANEL_CREATOR;Creator @@ -1372,9 +1372,9 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Ed TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m). +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. +TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) +TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All @@ -1411,7 +1411,7 @@ TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. TP_COLORAPP_HUE;Hue (h) -TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0 and 360. +TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 TP_COLORAPP_LABEL_CAM02;Image Adjustments TP_COLORAPP_LABEL_SCENE;Scene Conditions @@ -1562,16 +1562,16 @@ 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 33 window size often leads to better results than using one median filter iteration with a 77 window size. +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\n33 soft: treats 5 pixels in a 33 pixel window.\n33: treats 9 pixels in a 33 pixel window.\n55 soft: treats 13 pixels in a 55 pixel window.\n55: treats 25 pixels in a 55 pixel window.\n77: treats 49 pixels in a 77 pixel window.\n99: treats 81 pixels in a 99 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_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;33 -TP_DIRPYRDENOISE_TYPE_3X3SOFT;33 soft -TP_DIRPYRDENOISE_TYPE_5X5;55 -TP_DIRPYRDENOISE_TYPE_5X5SOFT;55 soft -TP_DIRPYRDENOISE_TYPE_7X7;77 -TP_DIRPYRDENOISE_TYPE_9X9;99 +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 @@ -2017,7 +2017,7 @@ TP_SHARPENING_USM;Unsharp Mask TP_SHARPENMICRO_AMOUNT;Quantity TP_SHARPENMICRO_CONTRAST;Contrast threshold TP_SHARPENMICRO_LABEL;Microcontrast -TP_SHARPENMICRO_MATRIX;33 matrix instead of 55 +TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformity TP_SOFTLIGHT_LABEL;Soft Light TP_SOFTLIGHT_STRENGTH;Strength From f6c864d477192a16535b27de21a006024734ff78 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 15:02:53 +0100 Subject: [PATCH 047/348] Get rid of aehistogram files in RT cache, fixes #4904 --- rtengine/rtthumbnail.cc | 69 +++++++++++++++++++++++++++++++++++++++-- rtengine/rtthumbnail.h | 8 +++++ rtgui/thumbnail.cc | 13 +++++--- 3 files changed, 82 insertions(+), 8 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index afd8836a1..1210518d4 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -279,6 +279,11 @@ Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, printf ("loadFromImage: Unsupported image type \"%s\"!\n", img->getType()); } + ProcParams paramsForAutoExp; // Dummy for constructor + ImProcFunctions ipf (¶msForAutoExp, false); + ipf.getAutoExp (tpp->aeHistogram, tpp->aeHistCompression, 0.02, tpp->aeExposureCompensation, tpp->aeLightness, tpp->aeContrast, tpp->aeBlack, tpp->aeHighlightCompression, tpp->aeHighlightCompressionThreshold); + tpp->aeValid = true; + if (n > 0) { ColorTemp cTemp; @@ -923,6 +928,11 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati } } } + ProcParams paramsForAutoExp; // Dummy for constructor + ImProcFunctions ipf (¶msForAutoExp, false); + ipf.getAutoExp (tpp->aeHistogram, tpp->aeHistCompression, 0.02, tpp->aeExposureCompensation, tpp->aeLightness, tpp->aeContrast, tpp->aeBlack, tpp->aeHighlightCompression, tpp->aeHighlightCompressionThreshold); + tpp->aeValid = true; + if (ri->get_colors() == 1) { pixSum[0] = pixSum[1] = pixSum[2] = 1.; n[0] = n[1] = n[2] = 1; @@ -993,6 +1003,13 @@ Thumbnail::Thumbnail () : wbEqual (-1.0), wbTempBias (0.0), aeHistCompression (3), + aeValid(false), + aeExposureCompensation(0.0), + aeLightness(0), + aeContrast(0), + aeBlack(0), + aeHighlightCompression(0), + aeHighlightCompressionThreshold(0), embProfileLength (0), embProfileData (nullptr), embProfile (nullptr), @@ -1224,8 +1241,17 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT int hlcompr = params.toneCurve.hlcompr; int hlcomprthresh = params.toneCurve.hlcomprthresh; - if (params.toneCurve.autoexp && aeHistogram) { - ipf.getAutoExp (aeHistogram, aeHistCompression, params.toneCurve.clip, expcomp, bright, contr, black, hlcompr, hlcomprthresh); + if (params.toneCurve.autoexp) { + if (aeValid) { + expcomp = aeExposureCompensation; + bright = aeLightness; + contr = aeContrast; + black = aeBlack; + hlcompr = aeHighlightCompression; + hlcomprthresh = aeHighlightCompressionThreshold; + } else if (aeHistogram) { + ipf.getAutoExp (aeHistogram, aeHistCompression, 0.02, expcomp, bright, contr, black, hlcompr, hlcomprthresh); + } } LUTf curve1 (65536); @@ -1992,6 +2018,38 @@ bool Thumbnail::readData (const Glib::ustring& fname) aeHistCompression = keyFile.get_integer ("LiveThumbData", "AEHistCompression"); } + aeValid = true; + if (keyFile.has_key ("LiveThumbData", "AEExposureCompensation")) { + aeExposureCompensation = keyFile.get_double ("LiveThumbData", "AEExposureCompensation"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AELightness")) { + aeLightness = keyFile.get_integer ("LiveThumbData", "AELightness"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEContrast")) { + aeContrast = keyFile.get_integer ("LiveThumbData", "AEContrast"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEBlack")) { + aeBlack = keyFile.get_integer ("LiveThumbData", "AEBlack"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEHighlightCompression")) { + aeHighlightCompression = keyFile.get_integer ("LiveThumbData", "AEHighlightCompression"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEHighlightCompressionThreshold")) { + aeHighlightCompressionThreshold = keyFile.get_integer ("LiveThumbData", "AEHighlightCompressionThreshold"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "RedMultiplier")) { redMultiplier = keyFile.get_double ("LiveThumbData", "RedMultiplier"); } @@ -2065,7 +2123,12 @@ bool Thumbnail::writeData (const Glib::ustring& fname) keyFile.set_double ("LiveThumbData", "RedAWBMul", redAWBMul); keyFile.set_double ("LiveThumbData", "GreenAWBMul", greenAWBMul); keyFile.set_double ("LiveThumbData", "BlueAWBMul", blueAWBMul); - keyFile.set_integer ("LiveThumbData", "AEHistCompression", aeHistCompression); + keyFile.set_double ("LiveThumbData", "AEExposureCompensation", aeExposureCompensation); + keyFile.set_integer ("LiveThumbData", "AELightness", aeLightness); + keyFile.set_integer ("LiveThumbData", "AEContrast", aeContrast); + keyFile.set_integer ("LiveThumbData", "AEBlack", aeBlack); + keyFile.set_integer ("LiveThumbData", "AEHighlightCompression", aeHighlightCompression); + keyFile.set_integer ("LiveThumbData", "AEHighlightCompressionThreshold", aeHighlightCompressionThreshold); keyFile.set_double ("LiveThumbData", "RedMultiplier", redMultiplier); keyFile.set_double ("LiveThumbData", "GreenMultiplier", greenMultiplier); keyFile.set_double ("LiveThumbData", "BlueMultiplier", blueMultiplier); diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 558d136ee..667d8e1c9 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -50,6 +50,13 @@ class Thumbnail double autoWBTemp, autoWBGreen, wbEqual, wbTempBias; // autoWBTemp and autoWBGreen are updated each time autoWB is requested and if wbEqual has been modified LUTu aeHistogram; int aeHistCompression; + bool aeValid; + double aeExposureCompensation; + int aeLightness; + int aeContrast; + int aeBlack; + int aeHighlightCompression; + int aeHighlightCompressionThreshold; int embProfileLength; unsigned char* embProfileData; cmsHPROFILE embProfile; @@ -100,6 +107,7 @@ public: bool readAEHistogram (const Glib::ustring& fname); bool writeAEHistogram (const Glib::ustring& fname); + bool isAeValid() { return aeValid; }; unsigned char* getImage8Data(); // accessor to the 8bit image if it is one, which should be the case for the "Inspector" mode. // Hombre: ... let's hope that proper template can make this cleaner diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index c2d23eab2..4921a2d56 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -854,8 +854,10 @@ void Thumbnail::_loadThumbnail(bool firstTrial) } if ( cfs.thumbImgType == CacheImageData::FULL_THUMBNAIL ) { - // load aehistogram - tpp->readAEHistogram (getCacheFileName ("aehistograms", "")); + if(!tpp->isAeValid()) { + // load aehistogram + tpp->readAEHistogram (getCacheFileName ("aehistograms", "")); + } // load embedded profile tpp->readEmbProfile (getCacheFileName ("embprofiles", ".icc")); @@ -907,9 +909,10 @@ void Thumbnail::_saveThumbnail () // save thumbnail image tpp->writeImage (getCacheFileName ("images", "")); - // save aehistogram - tpp->writeAEHistogram (getCacheFileName ("aehistograms", "")); - + if(!tpp->isAeValid()) { + // save aehistogram + tpp->writeAEHistogram (getCacheFileName ("aehistograms", "")); + } // save embedded profile tpp->writeEmbProfile (getCacheFileName ("embprofiles", ".icc")); From 310e7343918d9c34ab7fc2ffd3ef8a670b22dca7 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 16:21:26 +0100 Subject: [PATCH 048/348] Don't create aehistograms folder in RT cache, #4904 --- rtgui/cachemanager.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index 5b18d5d33..c1f81a0d2 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -57,7 +57,9 @@ void CacheManager::init () auto error = g_mkdir_with_parents (baseDir.c_str(), cacheDirMode); for (const auto& cacheDir : cacheDirs) { - error |= g_mkdir_with_parents (Glib::build_filename (baseDir, cacheDir).c_str(), cacheDirMode); + if (strncmp(cacheDir, "aehistograms", 12)) { // don't create aehistograms folder. + error |= g_mkdir_with_parents (Glib::build_filename (baseDir, cacheDir).c_str(), cacheDirMode); + } } if (error != 0 && options.rtSettings.verbose) { From 473e4bc2369bfa9c7928b9afa1fb9c168b233e58 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 17:22:03 +0100 Subject: [PATCH 049/348] clear cache data folder, #4904 --- rtgui/cachemanager.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index c1f81a0d2..06f4ad237 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -240,6 +240,7 @@ void CacheManager::clearImages () const { MyMutex::MyLock lock (mutex); + deleteDir ("data"); deleteDir ("images"); deleteDir ("aehistograms"); deleteDir ("embprofiles"); From fb97eeaa5abc5c52767ec0ad7870de816df3c97f Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Wed, 31 Oct 2018 17:53:47 +0100 Subject: [PATCH 050/348] guided filter: fixed bug due to overlapping input and output arrays --- rtengine/guidedfilter.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index 4e31fa300..790245b20 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -215,7 +215,7 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 f_upsample(meanA, meana); DEBUG_DUMP(meanA); - array2D &meanB = q; + array2D meanB(W, H); f_upsample(meanB, meanb); DEBUG_DUMP(meanB); From bfe2ce7fe1f43616b0dc0dca06c340d7349cac78 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 20:52:16 +0100 Subject: [PATCH 051/348] Don't check for .jpg, .cust, .cust16 files in cache/images folder, #4904 --- rtgui/cachemanager.cc | 6 ------ rtgui/thumbnail.cc | 7 +------ 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index 06f4ad237..919f76f6d 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -185,9 +185,6 @@ void CacheManager::renameEntry (const std::string& oldfilename, const std::strin auto error = g_rename (getCacheFileName ("profiles", oldfilename, paramFileExtension, oldmd5).c_str (), getCacheFileName ("profiles", newfilename, paramFileExtension, newmd5).c_str ()); error |= g_rename (getCacheFileName ("images", oldfilename, ".rtti", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".rtti", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("images", oldfilename, ".cust16", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".cust16", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("images", oldfilename, ".cust", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".cust", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("images", oldfilename, ".jpg", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".jpg", newmd5).c_str ()); error |= g_rename (getCacheFileName ("aehistograms", oldfilename, "", oldmd5).c_str (), getCacheFileName ("aehistograms", newfilename, "", newmd5).c_str ()); error |= g_rename (getCacheFileName ("embprofiles", oldfilename, ".icc", oldmd5).c_str (), getCacheFileName ("embprofiles", newfilename, ".icc", newmd5).c_str ()); error |= g_rename (getCacheFileName ("data", oldfilename, ".txt", oldmd5).c_str (), getCacheFileName ("data", newfilename, ".txt", newmd5).c_str ()); @@ -278,9 +275,6 @@ void CacheManager::deleteFiles (const Glib::ustring& fname, const std::string& m } auto error = g_remove (getCacheFileName ("images", fname, ".rtti", md5).c_str ()); - error |= g_remove (getCacheFileName ("images", fname, ".cust16", md5).c_str ()); - error |= g_remove (getCacheFileName ("images", fname, ".cust", md5).c_str ()); - error |= g_remove (getCacheFileName ("images", fname, ".jpg", md5).c_str ()); error |= g_remove (getCacheFileName ("aehistograms", fname, "", md5).c_str ()); error |= g_remove (getCacheFileName ("embprofiles", fname, ".icc", md5).c_str ()); diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 4921a2d56..d3bf4ca05 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -899,12 +899,7 @@ void Thumbnail::_saveThumbnail () return; } - if (g_remove (getCacheFileName ("images", ".rtti").c_str ()) != 0) { - // No file deleted, so we try to deleted obsolete files, if any - g_remove (getCacheFileName ("images", ".cust").c_str ()); - g_remove (getCacheFileName ("images", ".cust16").c_str ()); - g_remove (getCacheFileName ("images", ".jpg").c_str ()); - } + g_remove (getCacheFileName ("images", ".rtti").c_str ()) != 0); // save thumbnail image tpp->writeImage (getCacheFileName ("images", "")); From ea5a81b9a16eadf705b6de78dec1350849606b0c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 20:52:58 +0100 Subject: [PATCH 052/348] Don't check for .jpg, .cust, .cust16 files in cache/images folder, second try, #4904 --- rtgui/thumbnail.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index d3bf4ca05..1365117d7 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -899,7 +899,7 @@ void Thumbnail::_saveThumbnail () return; } - g_remove (getCacheFileName ("images", ".rtti").c_str ()) != 0); + g_remove (getCacheFileName ("images", ".rtti").c_str ())); // save thumbnail image tpp->writeImage (getCacheFileName ("images", "")); From ebcd737bf857a9d430ea71029770c577470aa44f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 20:57:21 +0100 Subject: [PATCH 053/348] Don't check for .jpg, .cust, .cust16 files in cache/images folder, third try, #4904 --- rtgui/thumbnail.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 1365117d7..0ae78dd62 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -899,7 +899,7 @@ void Thumbnail::_saveThumbnail () return; } - g_remove (getCacheFileName ("images", ".rtti").c_str ())); + g_remove (getCacheFileName ("images", ".rtti").c_str ()); // save thumbnail image tpp->writeImage (getCacheFileName ("images", "")); From d65767a022704d87b654029474210ce553715259 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 31 Oct 2018 22:21:43 +0100 Subject: [PATCH 054/348] Delete cache file from cache/data when using delete from cache full, #4904 --- rtgui/cachemanager.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index 919f76f6d..5f73e9e0f 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -174,7 +174,7 @@ void CacheManager::deleteEntry (const Glib::ustring& fname) void CacheManager::clearFromCache (const Glib::ustring& fname, bool purge) const { - deleteFiles (fname, getMD5 (fname), purge, purge); + deleteFiles (fname, getMD5 (fname), true, purge); } void CacheManager::renameEntry (const std::string& oldfilename, const std::string& oldmd5, const std::string& newfilename) From f89755862157db062ddc4c9fb4d0119f1f977486 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 31 Oct 2018 22:34:28 +0100 Subject: [PATCH 055/348] Renamed cache context menu strings #4907 --- rtdata/languages/Catala | 2 -- rtdata/languages/Chinese (Simplified) | 2 -- rtdata/languages/Chinese (Traditional) | 2 -- rtdata/languages/Czech | 2 -- rtdata/languages/Dansk | 2 -- rtdata/languages/Deutsch | 2 -- rtdata/languages/English (UK) | 2 -- rtdata/languages/English (US) | 2 -- rtdata/languages/Espanol | 2 -- rtdata/languages/Euskara | 2 -- rtdata/languages/Francais | 2 -- rtdata/languages/Greek | 2 -- rtdata/languages/Hebrew | 2 -- rtdata/languages/Italiano | 2 -- rtdata/languages/Japanese | 2 -- rtdata/languages/Latvian | 2 -- rtdata/languages/Magyar | 2 -- rtdata/languages/Nederlands | 2 -- rtdata/languages/Norsk BM | 2 -- rtdata/languages/Polish | 2 -- rtdata/languages/Polish (Latin Characters) | 2 -- rtdata/languages/Portugues (Brasil) | 2 -- rtdata/languages/Russian | 2 -- rtdata/languages/Serbian (Cyrilic Characters) | 2 -- rtdata/languages/Serbian (Latin Characters) | 2 -- rtdata/languages/Slovak | 2 -- rtdata/languages/Suomi | 2 -- rtdata/languages/Swedish | 2 -- rtdata/languages/Turkish | 2 -- rtdata/languages/default | 4 ++-- 30 files changed, 2 insertions(+), 60 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index c3a7ea1d0..1c89d23c5 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -84,8 +84,6 @@ FILEBROWSER_AUTOFLATFIELD;Auto camp pla FILEBROWSER_BROWSEPATHBUTTONHINT;Clic per navegar al path escollit FILEBROWSER_BROWSEPATHHINT;Escriviu path on buscar.\nCtrl-O dirigir-se al path de la finestra de text.\nEnter / Ctrl-Enter (en el gestor de fitxers) per a navegar allí;\n\nPath dreceres:\n ~ - directori home de l'usuari\n ! - directori de fotografies de l'usuari FILEBROWSER_CACHE;Cau -FILEBROWSER_CACHECLEARFROMFULL;Esborra el cau - tot -FILEBROWSER_CACHECLEARFROMPARTIAL;Esborra el cau - part FILEBROWSER_CLEARPROFILE;Neteja FILEBROWSER_COPYPROFILE;Copia FILEBROWSER_CURRENT_NAME;Nom actual: diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 077da51c0..05b11dd4f 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -95,8 +95,6 @@ FILEBROWSER_AUTODARKFRAME;自动暗场 FILEBROWSER_AUTOFLATFIELD;自动平场 FILEBROWSER_BROWSEPATHBUTTONHINT;点击浏览选择的路径 FILEBROWSER_CACHE;缓存 -FILEBROWSER_CACHECLEARFROMFULL;清空缓存 -FILEBROWSER_CACHECLEARFROMPARTIAL;清理缓存 FILEBROWSER_CLEARPROFILE;清空配置 FILEBROWSER_COPYPROFILE;复制配置 FILEBROWSER_CURRENT_NAME;当前名称: diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 2b2477748..d58343b6a 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -507,8 +507,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 18af7bf65..dbc606070 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -154,8 +154,6 @@ FILEBROWSER_AUTOFLATFIELD;Auto Flat Field FILEBROWSER_BROWSEPATHBUTTONHINT;Klikněte pro výběr cesty. FILEBROWSER_BROWSEPATHHINT;Vložte cestu pro procházení.\n\nKlávesové zkratky:\nCtrl-o pro přepnutí do adresního řádku.\nEnter/ Ctrl-Enter pro procházení ;\nEsc pro zrušení změn.\nShift-Esc pro zrušení přepnutí.\n\nZkratky pro cesty:\n~\t- domácí složka uživatele.\n!\t- složka s obrázky uživatele. FILEBROWSER_CACHE;Mezipaměť -FILEBROWSER_CACHECLEARFROMFULL;Vymazat z mezipaměti - úplně -FILEBROWSER_CACHECLEARFROMPARTIAL;Vymazat z mezipaměti - částečně FILEBROWSER_CLEARPROFILE;Smazat FILEBROWSER_COLORLABEL_TOOLTIP;Barevný štítek.\n\nPoužijte výběr ze seznamu nebo klávesové zkratky:\nShift-Ctrl-0 Bez barvy\nShift-Ctrl-1 Červený\nShift-Ctrl-2 Žlutý\nShift-Ctrl-3 Zelený\nShift-Ctrl-4 Modrý\nShift-Ctrl-5 Nachový FILEBROWSER_COPYPROFILE;Kopírovat diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 547c5a6e6..da5616b31 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -499,8 +499,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index dd0655242..3cf1b32da 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -185,8 +185,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatisches Weißbild FILEBROWSER_BROWSEPATHBUTTONHINT;Ausgewählten Pfad öffnen. FILEBROWSER_BROWSEPATHHINT;Einen Pfad eingeben:\nTaste:\nStrg + o Setzt den Cursor in das Eingabefeld\nEnter Öffnet den Pfad\nEsc Änderungen verwerfen\nUmschalt + Esc Eingabefeld verlassen\n\nSchnellnavigation:\nTaste:\n~ “Home“-Verzeichnis des Benutzers\n! Bilder-Verzeichnis des Benutzers FILEBROWSER_CACHE;Festplatten-Cache -FILEBROWSER_CACHECLEARFROMFULL;Aus dem Festplatten-Cache entfernen (vollständig) -FILEBROWSER_CACHECLEARFROMPARTIAL;Aus dem Festplatten-Cache entfernen (teilweise) FILEBROWSER_CLEARPROFILE;Profil löschen FILEBROWSER_COLORLABEL_TOOLTIP;Farbmarkierung\n\nTaste: Strg + Umschalt + 0 Ohne\nTaste: Strg + Umschalt + 1 Rot\nTaste: Strg + Umschalt + 2 Gelb\nTaste: Strg + Umschalt + 3 Grün\nTaste: Strg + Umschalt + 4 Blau\nTaste: Strg + Umschalt + 5 Violett FILEBROWSER_COPYPROFILE;Profil kopieren diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 800e23527..8fcaafd56 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -232,8 +232,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_CLEARPROFILE;Clear !FILEBROWSER_COPYPROFILE;Copy !FILEBROWSER_CURRENT_NAME;Current name: diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index fc2fa83dd..53a2aec91 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -116,8 +116,6 @@ !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_CLEARPROFILE;Clear !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_COPYPROFILE;Copy diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 5402f6579..4284523ab 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -149,8 +149,6 @@ FILEBROWSER_AUTOFLATFIELD;Campo plano automático FILEBROWSER_BROWSEPATHBUTTONHINT;Pulsar para examinar la carpeta seleccionada FILEBROWSER_BROWSEPATHHINT;Ingrese la ruta a examinar \nCtrl-O poner el foco en campo con la ruta\nEnter / Ctrl-Enter para examinar allí;\nEscPara quitar los cambios.\nShift-Esc Para quitar el foco.\n\n\nAbreviaturas de ruta:\n ~ - Carpeta hogar del usuario\n ! - Carpeta de imágenes del usuario FILEBROWSER_CACHE;Caché -FILEBROWSER_CACHECLEARFROMFULL;Limpiar del caché - Total -FILEBROWSER_CACHECLEARFROMPARTIAL;Limpiar del caché - Parcial FILEBROWSER_CLEARPROFILE;Borrar perfil FILEBROWSER_COLORLABEL_TOOLTIP;Etiquetar con color\n\nUse menú desplegable o atajos de teclado:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Rojo\nShift-Ctrl-2 Amarillo\nShift-Ctrl-3 Verde\nShift-Ctrl-4 Azul\nShift-Ctrl-5 Púrpura FILEBROWSER_COPYPROFILE;Copiar perfil diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 851536a29..a604d6aef 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -500,8 +500,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 9c1fcce59..2bf82f6e1 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -111,8 +111,6 @@ FILEBROWSER_AUTOFLATFIELD;Champ Uniforme auto FILEBROWSER_BROWSEPATHBUTTONHINT;Cliquez pour parcourir le chemin saisi FILEBROWSER_BROWSEPATHHINT;Saisissez le chemin à parcourir\nCtrl-O pour placer le focus sur le champ de saisie.\nEntrée / Ctrl-Entrée pour y naviguer;\nEsc pour effacer les modifications.\nShift-Esc pour enlever le focus.\n\n\nRaccourcis pour les chemins:\n ~ - le dossier utilisateur\n ! - le dossier Images de l'utilisateur FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Supprimer du cache (complet) -FILEBROWSER_CACHECLEARFROMPARTIAL;Supprimer du cache (partiel) FILEBROWSER_CLEARPROFILE;Remettre le profil à zéro FILEBROWSER_COLORLABEL_TOOLTIP;Label couleur\n\nUtilisez le menu déroulant ou le raccourci clavier:\nShift-Ctrl-0 Pas de couleur\nShift-Ctrl-1 Rouge\nShift-Ctrl-2 Jaune\nShift-Ctrl-3 Vert\nShift-Ctrl-4 Bleu\nShift-Ctrl-5 Pourpre FILEBROWSER_COPYPROFILE;Copier le profil diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 086710b52..0c416e421 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -499,8 +499,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index c7477fd09..358045544 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -500,8 +500,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index ca048d956..e8a49771a 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -92,8 +92,6 @@ FILEBROWSER_AUTOFLATFIELD;Flat Field automatico FILEBROWSER_BROWSEPATHBUTTONHINT;Premi per aprire il percorso inserito FILEBROWSER_BROWSEPATHHINT;Inserisci il percorso da aprire\nCtrl-o seleziona il percorso\nEnter, Ctrl-Enter (solo nel Navigatore) porta alla destinazione ;\nScorciatoie:\n ~ - Cartella home\n ! - Cartella Immagini FILEBROWSER_CACHE;Memoria -FILEBROWSER_CACHECLEARFROMFULL;Rimuovi dalla memoria - totale -FILEBROWSER_CACHECLEARFROMPARTIAL;Rimuovi dalla memoria - parziale FILEBROWSER_CLEARPROFILE;Cancella FILEBROWSER_COLORLABEL_TOOLTIP;Etichetta colore.\n\nUsa il menù o le scorciatoie:\nShift-Ctrl-0 Nessun Colore\nShift-Ctrl-1 Rosso\nShift-Ctrl-2 Giallo\nShift-Ctrl-3 Verde\nShift-Ctrl-4 Blu\nShift-Ctrl-5 Viola FILEBROWSER_COPYPROFILE;Copia diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index fe8b79022..0bc015fe9 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -146,8 +146,6 @@ FILEBROWSER_AUTOFLATFIELD;オート・フラットフィールド FILEBROWSER_BROWSEPATHBUTTONHINT;クリックで選択したパスをブラウズ FILEBROWSER_BROWSEPATHHINT;参照するパスを入力します\nCtrl-O パスのテキストボックスにフォーカス\nEnter / Ctrl-Enterその場所をブラウズします\nEsc 変更をクリア\nShift-Escフォーカスを削除\nパスのショートカット:\n ~ - ユーザーのホームディレクトリ\n ! - ユーザーの画像ディレクトリ FILEBROWSER_CACHE;cache -FILEBROWSER_CACHECLEARFROMFULL;cacheをクリア - すべて -FILEBROWSER_CACHECLEARFROMPARTIAL;cacheをクリア - 一部 FILEBROWSER_CLEARPROFILE;プロファイルのクリア FILEBROWSER_COLORLABEL_TOOLTIP;カラー・ラベル\n\nドロップダウン・メニューからか、ショートカット:\nShift-Ctrl-1 レッド\nShift-Ctrl-2 イエロー\nShift-Ctrl-3 グリーン\nShift-Ctrl-4 ブルー\nShift-Ctrl-5 パープル FILEBROWSER_COPYPROFILE;プロファイルをコピー diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 6689e4f95..23887cfb1 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -500,8 +500,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index d0f806fea..4e463a8fd 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -82,8 +82,6 @@ FILEBROWSER_AUTOFLATFIELD;Auto Flat Field FILEBROWSER_BROWSEPATHBUTTONHINT;Kattints a kiválasztott útvonal böngészéséhez FILEBROWSER_BROWSEPATHHINT;Gépeld be az elérni kívánt útvonalat.\nCtrl-O-val tudod a fókuszt a beviteli mezőre vinni.\nEnter / Ctrl-Enter (az állományböngészőben) az ottani böngészéshez;\n\nÚtvonalrövidítések:\n ~ - felhasználói fiók (home) könyvtára\n - a felhasználó képkönyvtára FILEBROWSER_CACHE;Gyorsítótár -FILEBROWSER_CACHECLEARFROMFULL;Gyorsítótár ürítése - teljes -FILEBROWSER_CACHECLEARFROMPARTIAL;Gyorsítótár ürítése - részleges FILEBROWSER_CLEARPROFILE;Feldolgozási paraméter törlése FILEBROWSER_COPYPROFILE;Feldolgozási paraméterek másolása FILEBROWSER_CURRENT_NAME;Aktuális név: diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index f5948ef26..fd0036952 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -123,8 +123,6 @@ FILEBROWSER_AUTOFLATFIELD;Selecteer automatisch vlakveldopname FILEBROWSER_BROWSEPATHBUTTONHINT;Klik om te navigeren naar het gekozen pad FILEBROWSER_BROWSEPATHHINT;Typ het pad naar de doelmap.\nCtrl-O markeer het pad in het tekstveld.\nEnter / Ctrl-Enter open de map.\nEsc maak het tekstveld leeg.\nShift-Esc verwijder markering.\n\n\nSneltoetsen:\n ~ - gebruikers home directory\n ! - gebruikers afbeeldingen map FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Verwijder uit cache - volledig -FILEBROWSER_CACHECLEARFROMPARTIAL;Verwijder uit cache - gedeeltelijk FILEBROWSER_CLEARPROFILE;Verwijder profiel FILEBROWSER_COLORLABEL_TOOLTIP;Kleur label\n\nGebruik keuzemenu of nSneltoets:\nShift-Ctrl-0 Geen kleur\nShift-Ctrl-1 Rood\nShift-Ctrl-2 Geel\nShift-Ctrl-3 Groen\nShift-Ctrl-4 Blauw\nShift-Ctrl-5 Paars FILEBROWSER_COPYPROFILE;Kopieer profiel diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 4a76fdcda..4a4995aef 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -499,8 +499,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index f54de5593..b271178e0 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -96,8 +96,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatyczne użycie klatki typu puste pole FILEBROWSER_BROWSEPATHBUTTONHINT;Należy kliknąć, aby przeglądać wybraną ścieżkę FILEBROWSER_BROWSEPATHHINT;Umożliwia przeglądanie wprowadzonej ścieżki\nCtrl-o zaznaczenie\nEnter, Ctrl-Enter (w menedżerze plików) przeglądanie\nSkróty:\n ~ - katalog domowy użytkownika\n ! - katalog z obrazami użytkownia FILEBROWSER_CACHE;Pamięć podręczna -FILEBROWSER_CACHECLEARFROMFULL;Czyszczenie pamięci podręcznej - pełne -FILEBROWSER_CACHECLEARFROMPARTIAL;Czyszczenie pamięci podręcznej - częściowe FILEBROWSER_CLEARPROFILE;Wyczyść profil FILEBROWSER_COLORLABEL_TOOLTIP;Kolorowe etykiety\n\nUżyj za pomocą rozwijanej listy lub skrótów:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Czerwona\nShift-Ctrl-2 Żółta\nShift-Ctrl-3 Zielona\nShift-Ctrl-4 Niebieska\nShift-Ctrl-5 Purpurowa FILEBROWSER_COPYPROFILE;Kopiuj profil diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index d3e62a777..310a1ed13 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -96,8 +96,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatyczne uzycie klatki typu puste pole FILEBROWSER_BROWSEPATHBUTTONHINT;Nalezy kliknac, aby przegladac wybrana sciezke FILEBROWSER_BROWSEPATHHINT;Umozliwia przegladanie wprowadzonej sciezki\nCtrl-o zaznaczenie\nEnter, Ctrl-Enter (w menedzerze plikow) przegladanie\nSkroty:\n ~ - katalog domowy uzytkownika\n ! - katalog z obrazami uzytkownia FILEBROWSER_CACHE;Pamiec podreczna -FILEBROWSER_CACHECLEARFROMFULL;Czyszczenie pamieci podrecznej - pelne -FILEBROWSER_CACHECLEARFROMPARTIAL;Czyszczenie pamieci podrecznej - czesciowe FILEBROWSER_CLEARPROFILE;Wyczysc profil FILEBROWSER_COLORLABEL_TOOLTIP;Kolorowe etykiety\n\nUzyj za pomoca rozwijanej listy lub skrotow:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Czerwona\nShift-Ctrl-2 Zolta\nShift-Ctrl-3 Zielona\nShift-Ctrl-4 Niebieska\nShift-Ctrl-5 Purpurowa FILEBROWSER_COPYPROFILE;Kopiuj profil diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 7acb91cce..c737ddcfd 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -113,8 +113,6 @@ FILEBROWSER_AUTOFLATFIELD;Flat-field automático FILEBROWSER_BROWSEPATHBUTTONHINT;Clique para navegar até o caminho escolhido. FILEBROWSER_BROWSEPATHHINT;Digite um caminho para navegar até.\n\nAtalhos do teclado:\nCtrl-o para focar na caixa de texto do caminho.\nEnter / Ctrl-Enter para navegar lá;\nEsc para limpar as alterações.\nShift-Esc para remover o foco.\n\nAtalhos do caminho:\n~ - diretório home do usuário.\n! - diretório de fotos do usuário FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Limpeza do cache - completa -FILEBROWSER_CACHECLEARFROMPARTIAL;Limpeza do cache - partcial FILEBROWSER_CLEARPROFILE;Perfil de limpeza FILEBROWSER_COLORLABEL_TOOLTIP;Etiqueta de cor.\n\nUse o menu suspenso ou atalhos:\nShift-Ctrl-0 Sem Cor\nShift-Ctrl-1 Vermelho\nShift-Ctrl-2 Amarelo\nShift-Ctrl-3 Verde\nShift-Ctrl-4 Azul\nShift-Ctrl-5 Roxo FILEBROWSER_COPYPROFILE;Copiar perfil diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 36b63772e..3c89c4a74 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -105,8 +105,6 @@ FILEBROWSER_AUTOFLATFIELD;Автоматическое плоское поле FILEBROWSER_BROWSEPATHBUTTONHINT;Нажмите кнопку мыши чтобы перейти к выбранному каталогу FILEBROWSER_BROWSEPATHHINT;Введите путь для перехода.\nCtrl-O для перехода на диалог ввода текста.\nEnter / Ctrl-Enter (в обозревателе файлов) для перехода;\n\nЯрлыки путей:\n ~ - домашняя папка пользователя\n ! - папка пользователя с изображениями FILEBROWSER_CACHE;Кэш -FILEBROWSER_CACHECLEARFROMFULL;Удалить из кэша - полностью -FILEBROWSER_CACHECLEARFROMPARTIAL;Удалить из кэша - частично FILEBROWSER_CLEARPROFILE;Удалить профиль FILEBROWSER_COLORLABEL_TOOLTIP;Color label\n\nUse dropdown menu or Shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple FILEBROWSER_COPYPROFILE;Скопировать профиль diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index e69c9b874..34c62bf06 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -85,8 +85,6 @@ FILEBROWSER_AUTOFLATFIELD;Аутоматски одреди равно поље FILEBROWSER_BROWSEPATHBUTTONHINT;Кликните за одлазак на узабрану путању FILEBROWSER_BROWSEPATHHINT;Укуцајте путању за разгледање (Ctrl-o поставља фокус, Ctrl-Enter приказује у разгледачу датотека);nПречице путања: ~ — лични директоријум, ! — директоријум са сликама FILEBROWSER_CACHE;Остава -FILEBROWSER_CACHECLEARFROMFULL;Очисти из оставе — све -FILEBROWSER_CACHECLEARFROMPARTIAL;Очисти из оставе — половично FILEBROWSER_CLEARPROFILE;Обриши профил FILEBROWSER_COLORLABEL_TOOLTIP;Натпис у боји.\n\nКористите приложени мени или пречице:\nShift-Ctrl-0 Без боје\nShift-Ctrl-1 Црвена\nShift-Ctrl-2 Жута\nShift-Ctrl-3 Зелена\nShift-Ctrl-4 Плана\nShift-Ctrl-5 Љубичаста FILEBROWSER_COPYPROFILE;Умножи профил diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 727cdeb9a..5dd1fa04d 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -85,8 +85,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatski odredi ravno polje FILEBROWSER_BROWSEPATHBUTTONHINT;Kliknite za odlazak na uzabranu putanju FILEBROWSER_BROWSEPATHHINT;Ukucajte putanju za razgledanje (Ctrl-o postavlja fokus, Ctrl-Enter prikazuje u razgledaču datoteka);nPrečice putanja: ~ — lični direktorijum, ! — direktorijum sa slikama FILEBROWSER_CACHE;Ostava -FILEBROWSER_CACHECLEARFROMFULL;Očisti iz ostave — sve -FILEBROWSER_CACHECLEARFROMPARTIAL;Očisti iz ostave — polovično FILEBROWSER_CLEARPROFILE;Obriši profil FILEBROWSER_COLORLABEL_TOOLTIP;Natpis u boji.\n\nKoristite priloženi meni ili prečice:\nShift-Ctrl-0 Bez boje\nShift-Ctrl-1 Crvena\nShift-Ctrl-2 Žuta\nShift-Ctrl-3 Zelena\nShift-Ctrl-4 Plana\nShift-Ctrl-5 Ljubičasta FILEBROWSER_COPYPROFILE;Umnoži profil diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 022c715e3..15c4050ad 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -578,8 +578,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_DARKFRAME;Dark-frame !FILEBROWSER_DELETEDLGMSGINCLPROC;Are you sure you want to delete the selected %1 files including a queue-processed version? diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 722bf1b0b..b0d075188 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -501,8 +501,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 44c5dd475..82b11df1e 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -94,8 +94,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatisk plattfältskorrigering FILEBROWSER_BROWSEPATHBUTTONHINT;Klicka för att komma till vald sökväg FILEBROWSER_BROWSEPATHHINT;Skriv in en sökväg och tryck Enter (Ctrl-Enter i filhanteraren).\nCtrl-O för att komma till sökfältet.\nEnter / Ctrl-Enter för att bläddra;\nEsc för att rensa ändringar.\nShift-Esc för att ta bort fokus från sökfältet.\n\n\nPath kortkommando:\n ~ - användarens hemkatalog\n ! - användarens bildkatalog FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Rensa från cachen - fullständigt -FILEBROWSER_CACHECLEARFROMPARTIAL;Rensa från cachen - delvis FILEBROWSER_CLEARPROFILE;Återställ profilen FILEBROWSER_COLORLABEL_TOOLTIP;Färgetikett\n\nAnvänd menyn eller kortkommandona:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Röd\nShift-Ctrl-2 Gul\nShift-Ctrl-3 Grön\nShift-Ctrl-4 Blå\nShift-Ctrl-5 Lila FILEBROWSER_COPYPROFILE;Kopiera profil diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index a3dd1d5ea..051c99217 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -500,8 +500,6 @@ TP_WBALANCE_TEMPERATURE;Isı !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame diff --git a/rtdata/languages/default b/rtdata/languages/default index dd5c7e697..be311113f 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -119,8 +119,8 @@ FILEBROWSER_AUTOFLATFIELD;Auto flat-field FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +FILEBROWSER_CACHECLEARFROMFULL;Clear all except cached profiles +FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all including cached profiles FILEBROWSER_CLEARPROFILE;Clear FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple FILEBROWSER_COPYPROFILE;Copy From 9a4d770faacfb33bd5061907116d22d534b66423 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 31 Oct 2018 22:40:45 +0100 Subject: [PATCH 056/348] Fixing swapped labels --- rtdata/languages/default | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index be311113f..1a1d4a18b 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -119,8 +119,8 @@ FILEBROWSER_AUTOFLATFIELD;Auto flat-field FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Clear all except cached profiles -FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all including cached profiles +FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles FILEBROWSER_CLEARPROFILE;Clear FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple FILEBROWSER_COPYPROFILE;Copy From be03d1061a4f1ab45a7d2f59b3c313d279955a18 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 1 Nov 2018 00:18:59 +0100 Subject: [PATCH 057/348] L*a*b* regions: allow for a bit more latitude in corrections --- rtengine/iplabregions.cc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index fe3325b1d..1d42b39f1 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -33,9 +33,6 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) return; } - const float factor = 3.f; - const float scaling = 1.f; - int n = params->colorToning.labregions.size(); int show_mask_idx = params->colorToning.labregionsShowMask; if (show_mask_idx >= n) { @@ -133,8 +130,7 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) const auto abcoord = [](float x) -> float { - const float m = ColorToningParams::LABGRID_CORR_MAX; - return SGN(x) * log2lin(std::abs(x) / m, 4.f) * m; + return 12000.f * SGN(x) * log2lin(std::abs(x), 4.f); }; #ifdef _OPENMP @@ -150,9 +146,9 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) auto &r = params->colorToning.labregions[i]; float blend = abmask[i][y][x]; float s = 1.f + r.saturation / 100.f; - float a_new = LIM(s * (a + 32768.f * abcoord(r.a) / factor / scaling), -42000.f, 42000.f); - float b_new = LIM(s * (b + 32768.f * abcoord(r.b) / factor / scaling), -42000.f, 42000.f); - float l_new = LIM(l * (1.f + float(r.lightness) / 1000.f), 0.f, 32768.f); + float a_new = LIM(s * (a + abcoord(r.a)), -42000.f, 42000.f); + float b_new = LIM(s * (b + abcoord(r.b)), -42000.f, 42000.f); + float l_new = LIM(l * (1.f + float(r.lightness) / 500.f), 0.f, 32768.f); l = intp(Lmask[i][y][x], l_new, l); a = intp(blend, a_new, a); b = intp(blend, b_new, b); From 86b282fc688f50df4a8232eed8bb60f2205a49c9 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 1 Nov 2018 05:42:45 +0100 Subject: [PATCH 058/348] procparams: call DehazeParams::operator== in ProcParams::operator== --- rtengine/procparams.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 64440d222..4a3310fb4 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -5073,7 +5073,8 @@ bool ProcParams::operator ==(const ProcParams& other) const && colorToning == other.colorToning && metadata == other.metadata && exif == other.exif - && iptc == other.iptc; + && iptc == other.iptc + && dehaze == other.dehaze; } bool ProcParams::operator !=(const ProcParams& other) const From cc6cbe8347dcf9c03b21de203a6f18ed377ec7a5 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Thu, 1 Nov 2018 00:47:06 -0500 Subject: [PATCH 059/348] Distinguish between "desired" and "reported" batch queue state This allows the switch to both reflect the state of the queue and function as an input widget. --- rtgui/batchqueuepanel.cc | 74 +++++++++++++++++++++------------------- rtgui/batchqueuepanel.h | 3 +- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 8da66183a..a2358a3b5 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -249,20 +249,13 @@ void BatchQueuePanel::queueSizeChanged(int qsize, bool queueRunning, bool queueE { updateTab (qsize); - if (qsize == 0 || (qsize == 1 && queueRunning)) { - qStartStop->set_sensitive(false); - } else { - qStartStop->set_sensitive(true); - } + setGuiFromBatchState(queueRunning, qsize); - if (!queueRunning) { - stopBatchProc (); - fdir->set_sensitive (true); - fformat->set_sensitive (true); + if (!queueRunning && qsize == 0 && queueShouldRun) { + // There was work, but it is all done now. + queueShouldRun = false; - if (qsize == 0) { - SoundManager::playSoundAsync(options.sndBatchQueueDone); - } + SoundManager::playSoundAsync(options.sndBatchQueueDone); } if (queueError) { @@ -273,8 +266,7 @@ void BatchQueuePanel::queueSizeChanged(int qsize, bool queueRunning, bool queueE void BatchQueuePanel::startOrStopBatchProc() { - bool state = qStartStop->get_state(); - if (state) { + if (qStartStop->get_state()) { startBatchProc(); } else { stopBatchProc(); @@ -283,22 +275,17 @@ void BatchQueuePanel::startOrStopBatchProc() void BatchQueuePanel::startBatchProc () { - // Update switch when queue started programmatically - qStartStopConn.block (true); - qStartStop->set_active(true); - qStartStopState = true; - qStartStopConn.block (false); - if (batchQueue->hasJobs()) { - fdir->set_sensitive (false); - fformat->set_sensitive (false); - if (batchQueue->getEntries().size() == 1) { - qStartStop->set_sensitive(false); - } + // Update the *desired* state of the queue, then launch it. The switch + // state is not updated here; it is changed by the queueSizeChanged() + // callback in response to the *reported* state. + queueShouldRun = true; + + // Don't need an update callback from the queue to know it is started: + setGuiFromBatchState(true, batchQueue->getEntries().size()); + saveOptions(); batchQueue->startProcessing (); - } else { - stopBatchProc (); } updateTab (batchQueue->getEntries().size()); @@ -306,20 +293,37 @@ void BatchQueuePanel::startBatchProc () void BatchQueuePanel::stopBatchProc () { - // Update switch when queue started programmatically - qStartStopConn.block (true); - qStartStop->set_active(false); - qStartStopState = false; - qStartStopConn.block (false); + // There is nothing much to do here except set the desired state, which the + // background queue thread must check. It will notify queueSizeChanged() + // when it stops. + queueShouldRun = false; updateTab (batchQueue->getEntries().size()); } +void BatchQueuePanel::setGuiFromBatchState(bool queueRunning, int qsize) +{ + // Change the GUI state in response to the reported queue state + if (qsize == 0 || (qsize == 1 && queueRunning)) { + qStartStop->set_sensitive(false); + } else { + qStartStop->set_sensitive(true); + } + + qStartStopConn.block(true); + qStartStop->set_active(queueRunning); + qStartStopConn.block(false); + + fdir->set_sensitive (!queueRunning); + fformat->set_sensitive (!queueRunning); +} + void BatchQueuePanel::addBatchQueueJobs(const std::vector& entries, bool head) { batchQueue->addEntries(entries, head); if (!qStartStop->get_active() && qAutoStart->get_active()) { + // Auto-start as if the user had pressed the qStartStop switch startBatchProc (); } } @@ -354,9 +358,9 @@ bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event) bool BatchQueuePanel::canStartNext () { - // This function is called from the background BatchQueue thread. - // It cannot call UI functions, so grab the stored state of qStartStop. - return qStartStopState; + // This function is called from the background BatchQueue thread. It + // cannot call UI functions; we keep the desired state in an atomic. + return queueShouldRun; } void BatchQueuePanel::pathFolderButtonPressed () diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 74c9750e7..e21e01352 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -53,7 +53,7 @@ class BatchQueuePanel : public Gtk::VBox, Gtk::HBox* bottomBox; Gtk::HBox* topBox; - std::atomic qStartStopState; + std::atomic queueShouldRun; IdleRegister idle_register; @@ -76,6 +76,7 @@ private: void startBatchProc (); void stopBatchProc (); void startOrStopBatchProc(); + void setGuiFromBatchState(bool queueRunning, int qsize); void pathFolderChanged (); void pathFolderButtonPressed (); From 72787cd990d9c0b2b8c2d411debfc1308596307f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 1 Nov 2018 12:12:01 +0100 Subject: [PATCH 060/348] Set Post-Resize Sharpening Contrast Threshold to 15, fixes #4909 --- rtengine/procparams.cc | 2 +- rtgui/prsharpening.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 4a3310fb4..0a7df04fe 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2685,7 +2685,7 @@ void ProcParams::setDefaults() sharpening = SharpeningParams(); prsharpening = SharpeningParams(); - prsharpening.contrast = 0.0; + prsharpening.contrast = 15.0; prsharpening.method = "rld"; prsharpening.deconvamount = 100; prsharpening.deconvradius = 0.45; diff --git a/rtgui/prsharpening.cc b/rtgui/prsharpening.cc index fd2c85227..c7c2ddf9f 100644 --- a/rtgui/prsharpening.cc +++ b/rtgui/prsharpening.cc @@ -37,7 +37,7 @@ PrSharpening::PrSharpening () : FoldableToolPanel(this, "prsharpening", M("TP_PR Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ()); hb->show (); - contrast = Gtk::manage(new Adjuster (M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 0)); + contrast = Gtk::manage(new Adjuster (M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 15)); contrast->setAdjusterListener (this); pack_start(*contrast); contrast->show(); From e9f0b6ac60089550b23132b3ff24ec75d63a30f6 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 1 Nov 2018 13:34:10 +0100 Subject: [PATCH 061/348] L*a*b* regions: some code cleanups --- rtengine/iplabregions.cc | 6 ++++-- rtgui/colortoning.cc | 44 ++++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 1d42b39f1..2a4d431e6 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -75,9 +75,11 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) float b = lab->b[y][x]; float c, h; Color::Lab2Lch(a, b, c, h); - float c1 = lin2log(c * (327.68f / 48000.f), 10.f); + // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 + constexpr float c_factor = 327.68f / 48000.f; + float c1 = lin2log(c * c_factor, 10.f); float h1 = Color::huelab_to_huehsv2(h); - h1 = h1 + 1.f/6.f; + h1 = h1 + 1.f/6.f; // offset the hue because we start from purple instead of red if (h1 > 1.f) { h1 -= 1.f; } diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 2b80c6be2..b6e001b70 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -11,7 +11,23 @@ using namespace rtengine; using namespace rtengine::procparams; -static constexpr int ID_LABREGION_HUE = 5; +namespace { + +constexpr int ID_LABREGION_HUE = 5; + +inline bool hasMask(const std::vector &dflt, const std::vector &mask) +{ + return !(mask.empty() || mask[0] == FCT_Linear || mask == dflt); +} + + +inline float round_ab(float v) +{ + return int(v * 1000) / 1000.f; +} + +} // namespace + ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLORTONING_LABEL"), false, true) { @@ -1403,6 +1419,10 @@ void ColorToning::onLabRegionSelectionChanged() void ColorToning::labRegionGet(int idx) { + if (idx < 0 || size_t(idx) >= labRegionData.size()) { + return; + } + auto &r = labRegionData[idx]; double la, lb; labRegionAB->getParams(la, lb, r.a, r.b); @@ -1482,26 +1502,6 @@ void ColorToning::labRegionShowMaskChanged() } -namespace { - -bool hasMask(const std::vector &dflt, const std::vector &mask) -{ - if (mask.empty() || mask[0] == FCT_Linear || mask == dflt) { - return false; - } else { - return true; - } -} - - -inline float round_ab(float v) -{ - return int(v * 1000) / 1000.f; -} - -} // namespace - - void ColorToning::labRegionPopulateList() { ConnectionBlocker b(labRegionSelectionConn); @@ -1524,7 +1524,7 @@ void ColorToning::labRegionPopulateList() void ColorToning::labRegionShow(int idx, bool list_only) { - bool disable = listener; + const bool disable = listener; if (disable) { disableListener(); } From a8bbc9cb8bdf9f8fc383ac8904da39e1be4f300a Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 1 Nov 2018 14:25:06 +0100 Subject: [PATCH 062/348] labgrid: code refactoring to avoid duplication for adding reset buttons --- rtgui/colortoning.cc | 40 +++-------------------- rtgui/colortoning.h | 5 --- rtgui/labgrid.cc | 75 ++++++++++++++++++++++++++++++++------------ rtgui/labgrid.h | 25 +++++++++++++-- 4 files changed, 82 insertions(+), 63 deletions(-) diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index b6e001b70..3ec149a0a 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -339,20 +339,8 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR // 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, M("TP_COLORTONING_LABGRID_VALUES"))); - labgridBox->pack_start(*labgrid, true, true); - labgridReset = Gtk::manage(new Gtk::Button ()); - labgridReset->add (*Gtk::manage(new RTImage ("undo-small.png", "redo-small.png"))); - setExpandAlignProperties(labgridReset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START); - labgridReset->set_relief(Gtk::RELIEF_NONE); - labgridReset->set_tooltip_markup(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); + pack_start(*labgrid, Gtk::PACK_EXPAND_WIDGET, 4); //------------------------------------------------------------------------ //------------------------------------------------------------------------ @@ -410,14 +398,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR labRegionBox->pack_start(*hb, true, true); labRegionAB = Gtk::manage(new LabGrid(EvLabRegionAB, M("TP_COLORTONING_LABREGION_ABVALUES"), false)); - hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*labRegionAB, true, true); - labRegionABReset = Gtk::manage(new Gtk::Button()); - labRegionABReset->set_tooltip_markup(M("ADJUSTER_RESET_TO_DEFAULT")); - labRegionABReset->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); - labRegionABReset->signal_button_release_event().connect(sigc::mem_fun(*this, &ColorToning::labRegionResetPressed)); - add_button(labRegionABReset, hb); - labRegionBox->pack_start(*hb); + labRegionBox->pack_start(*labRegionAB); labRegionSaturation = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SATURATION"), -100, 100, 1, 0)); labRegionSaturation->setAdjusterListener(this); @@ -985,7 +966,7 @@ void ColorToning::methodChanged () { if (!batchMode) { - labgridBox->hide(); + labgrid->hide(); labRegionBox->hide(); if (method->get_active_row_number() == 0) { // Lab @@ -1155,7 +1136,7 @@ void ColorToning::methodChanged () lumamode->hide(); if (method->get_active_row_number() == 5) { - labgridBox->show(); + labgrid->show(); } else { labRegionBox->show(); } @@ -1388,19 +1369,6 @@ void ColorToning::setBatchMode (bool batchMode) } -bool ColorToning::resetPressed(GdkEventButton* event) -{ - labgrid->reset(event->state & GDK_CONTROL_MASK); - return false; -} - - -bool ColorToning::labRegionResetPressed(GdkEventButton *event) -{ - labRegionAB->reset(event->state & GDK_CONTROL_MASK); - return false; -} - void ColorToning::onLabRegionSelectionChanged() { diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index eff26bd46..8fb640cba 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -62,8 +62,6 @@ public: float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3); private: - bool resetPressed(GdkEventButton* event); - bool labRegionResetPressed(GdkEventButton *event); void onLabRegionSelectionChanged(); void labRegionAddPressed(); void labRegionRemovePressed(); @@ -126,9 +124,7 @@ private: sigc::connection lumamodeConn; rtengine::ProcEvent EvColorToningLabGridValue; - Gtk::Button *labgridReset; LabGrid *labgrid; - Gtk::HBox *labgridBox; rtengine::ProcEvent EvLabRegionList; rtengine::ProcEvent EvLabRegionAB; @@ -145,7 +141,6 @@ private: Gtk::Button *labRegionRemove; Gtk::Button *labRegionUp; Gtk::Button *labRegionDown; - Gtk::Button *labRegionABReset; LabGrid *labRegionAB; Adjuster *labRegionSaturation; Adjuster *labRegionLightness; diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index 5e0d571a5..f680c7322 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -41,7 +41,11 @@ using rtengine::Color; -bool LabGrid::notifyListener() +//----------------------------------------------------------------------------- +// LabGridArea +//----------------------------------------------------------------------------- + +bool LabGridArea::notifyListener() { if (listener) { const auto round = @@ -55,7 +59,7 @@ bool LabGrid::notifyListener() } -LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low): +LabGridArea::LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low): Gtk::DrawingArea(), evt(evt), evtMsg(msg), litPoint(NONE), @@ -70,7 +74,7 @@ LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_ 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 +void LabGridArea::getParams(double &la, double &lb, double &ha, double &hb) const { la = low_a; ha = high_a; @@ -79,7 +83,7 @@ void LabGrid::getParams(double &la, double &lb, double &ha, double &hb) const } -void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify) +void LabGridArea::setParams(double la, double lb, double ha, double hb, bool notify) { const double lo = -1.0; const double hi = 1.0; @@ -93,7 +97,7 @@ void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify) } } -void LabGrid::setDefault (double la, double lb, double ha, double hb) +void LabGridArea::setDefault (double la, double lb, double ha, double hb) { defaultLow_a = la; defaultLow_b = lb; @@ -102,7 +106,7 @@ void LabGrid::setDefault (double la, double lb, double ha, double hb) } -void LabGrid::reset(bool toInitial) +void LabGridArea::reset(bool toInitial) { if (toInitial) { setParams(defaultLow_a, defaultLow_b, defaultHigh_a, defaultHigh_b, true); @@ -112,32 +116,32 @@ void LabGrid::reset(bool toInitial) } -void LabGrid::setEdited(bool yes) +void LabGridArea::setEdited(bool yes) { edited = yes; } -bool LabGrid::getEdited() const +bool LabGridArea::getEdited() const { return edited; } -void LabGrid::setListener(ToolPanelListener *l) +void LabGridArea::setListener(ToolPanelListener *l) { listener = l; } -void LabGrid::on_style_updated () +void LabGridArea::on_style_updated () { setDirty(true); queue_draw (); } -bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) +bool LabGridArea::on_draw(const ::Cairo::RefPtr &crf) { Gtk::Allocation allocation = get_allocation(); allocation.set_x(0); @@ -232,7 +236,7 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) } -bool LabGrid::on_button_press_event(GdkEventButton *event) +bool LabGridArea::on_button_press_event(GdkEventButton *event) { if (event->button == 1) { if (event->type == GDK_2BUTTON_PRESS) { @@ -259,7 +263,7 @@ bool LabGrid::on_button_press_event(GdkEventButton *event) } -bool LabGrid::on_button_release_event(GdkEventButton *event) +bool LabGridArea::on_button_release_event(GdkEventButton *event) { if (event->button == 1) { isDragged = false; @@ -269,7 +273,7 @@ bool LabGrid::on_button_release_event(GdkEventButton *event) } -bool LabGrid::on_motion_notify_event(GdkEventMotion *event) +bool LabGridArea::on_motion_notify_event(GdkEventMotion *event) { if (isDragged && delayconn.connected()) { delayconn.disconnect(); @@ -295,7 +299,7 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) if (options.adjusterMinDelay == 0) { notifyListener(); } else { - delayconn = Glib::signal_timeout().connect(sigc::mem_fun(*this, &LabGrid::notifyListener), options.adjusterMinDelay); + delayconn = Glib::signal_timeout().connect(sigc::mem_fun(*this, &LabGridArea::notifyListener), options.adjusterMinDelay); } queue_draw(); } else { @@ -320,35 +324,66 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) } -Gtk::SizeRequestMode LabGrid::get_request_mode_vfunc() const +Gtk::SizeRequestMode LabGridArea::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 +void LabGridArea::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 +void LabGridArea::get_preferred_height_for_width_vfunc(int width, int &minimum_height, int &natural_height) const { minimum_height = natural_height = width; } -bool LabGrid::lowEnabled() const +bool LabGridArea::lowEnabled() const { return low_enabled; } -void LabGrid::setLowEnabled(bool yes) +void LabGridArea::setLowEnabled(bool yes) { if (low_enabled != yes) { low_enabled = yes; queue_draw(); } } + + +//----------------------------------------------------------------------------- +// LabGrid +//----------------------------------------------------------------------------- + +LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low): + grid(evt, msg, enable_low) +{ + Gtk::Button *reset = Gtk::manage(new Gtk::Button()); + reset->set_tooltip_markup(M("ADJUSTER_RESET_TO_DEFAULT")); + reset->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); + reset->signal_button_release_event().connect(sigc::mem_fun(*this, &LabGrid::resetPressed)); + + setExpandAlignProperties(reset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START); + reset->set_relief(Gtk::RELIEF_NONE); + reset->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + reset->set_can_focus(false); + reset->set_size_request(-1, 20); + + pack_start(grid, true, true); + pack_start(*reset, false, false); + show_all_children(); +} + + +bool LabGrid::resetPressed(GdkEventButton *event) +{ + grid.reset(event->state & GDK_CONTROL_MASK); + return false; +} diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h index 715175f74..35e259996 100644 --- a/rtgui/labgrid.h +++ b/rtgui/labgrid.h @@ -43,7 +43,7 @@ #include "toolpanel.h" -class LabGrid: public Gtk::DrawingArea, public BackBuffer { +class LabGridArea: public Gtk::DrawingArea, public BackBuffer { private: rtengine::ProcEvent evt; Glib::ustring evtMsg; @@ -73,7 +73,7 @@ private: void getLitPoint(); public: - LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low=true); + LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low=true); void getParams(double &la, double &lb, double &ha, double &hb) const; void setParams(double la, double lb, double ha, double hb, bool notify); @@ -96,3 +96,24 @@ public: void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; }; + +class LabGrid: public Gtk::HBox { +private: + LabGridArea grid; + + bool resetPressed(GdkEventButton *event); + +public: + LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low=true); + + void getParams(double &la, double &lb, double &ha, double &hb) const { return grid.getParams(la, lb, ha, hb); } + void setParams(double la, double lb, double ha, double hb, bool notify) { grid.setParams(la, lb, ha, hb, notify); } + void setDefault (double la, double lb, double ha, double hb) { grid.setDefault(la, lb, ha, hb); } + void setEdited(bool yes) { grid.setEdited(yes); } + bool getEdited() const { return grid.getEdited(); } + void reset(bool toInitial) { grid.reset(toInitial); } + void setListener(ToolPanelListener *l) { grid.setListener(l); } + bool lowEnabled() const { return grid.lowEnabled(); } + void setLowEnabled(bool yes) { grid.setLowEnabled(yes); } +}; + From aeae61f67f94a0b980f157690427989957ec3269 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 1 Nov 2018 17:36:20 +0100 Subject: [PATCH 063/348] Updated Preferences > File Browser > Cache Options - UI updated to use grid so that the options nicely align. - "Clear only cached processing profiles" and "Clear all" buttons are hidden when Preferences > Image Processing > Processing profile saving location is set to "next to the input file", #4911 --- rtdata/languages/Catala | 3 - rtdata/languages/Chinese (Simplified) | 3 - rtdata/languages/Chinese (Traditional) | 3 - rtdata/languages/Czech | 3 - rtdata/languages/Dansk | 3 - rtdata/languages/Deutsch | 3 - rtdata/languages/English (UK) | 3 - rtdata/languages/English (US) | 3 - rtdata/languages/Espanol | 3 - rtdata/languages/Euskara | 3 - rtdata/languages/Francais | 3 - rtdata/languages/Greek | 3 - rtdata/languages/Hebrew | 3 - rtdata/languages/Italiano | 3 - rtdata/languages/Japanese | 3 - rtdata/languages/Latvian | 3 - rtdata/languages/Magyar | 3 - rtdata/languages/Nederlands | 3 - rtdata/languages/Norsk BM | 3 - rtdata/languages/Polish | 3 - rtdata/languages/Polish (Latin Characters) | 3 - rtdata/languages/Portugues (Brasil) | 3 - rtdata/languages/Russian | 3 - rtdata/languages/Serbian (Cyrilic Characters) | 3 - rtdata/languages/Serbian (Latin Characters) | 3 - rtdata/languages/Slovak | 3 - rtdata/languages/Suomi | 3 - rtdata/languages/Swedish | 3 - rtdata/languages/Turkish | 3 - rtdata/languages/default | 8 +- rtgui/preferences.cc | 98 ++++++++++++------- rtgui/preferences.h | 7 +- 32 files changed, 70 insertions(+), 130 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 1c89d23c5..fa7141087 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -491,9 +491,6 @@ PREFERENCES_APPLNEXTSTARTUP;Efectiu en reiniciar PREFERENCES_AUTOMONPROFILE;Usa els perfils dels monitors dels sist. operatius automàticament PREFERENCES_BATCH_PROCESSING;Process. per lots PREFERENCES_BEHAVIOR;Comportament -PREFERENCES_CACHECLEARALL;Esborrar tot -PREFERENCES_CACHECLEARPROFILES;Esborrar perfils -PREFERENCES_CACHECLEARTHUMBS;Esborra minifotos PREFERENCES_CACHEMAXENTRIES;Màxim nombre d'entrades a la mem. cau PREFERENCES_CACHEOPTS;Opcions memòria cau PREFERENCES_CACHETHUMBHEIGHT;Màxima alçada de minifoto diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 05b11dd4f..ff45df98b 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -492,9 +492,6 @@ PREFERENCES_BEHADDALL;全 '添加' PREFERENCES_BEHAVIOR;行为 PREFERENCES_BEHSETALL;全 '设定' PREFERENCES_BLACKBODY;钨丝灯 -PREFERENCES_CACHECLEARALL;全部清除 -PREFERENCES_CACHECLEARPROFILES;清除配置 -PREFERENCES_CACHECLEARTHUMBS;清除缩略图 PREFERENCES_CACHEMAXENTRIES;最大缓存数量 PREFERENCES_CACHEOPTS;缓存选项 PREFERENCES_CACHETHUMBHEIGHT;最大缩略图高度 diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index d58343b6a..47a604554 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -239,9 +239,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;下次啟動生效 -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index dbc606070..4be6bdc58 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -989,9 +989,6 @@ PREFERENCES_BEHAVIOR;Režim PREFERENCES_BEHSETALL;Vše do 'Nastavit' PREFERENCES_BEHSETALLHINT;Nastaví všechny parametry do módu Nastavit.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako absolutní, budou zobrazeny aktuální hodnoty. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Vymazat vše -PREFERENCES_CACHECLEARPROFILES;Smazat profily zpracování -PREFERENCES_CACHECLEARTHUMBS;Vymazat náhledy PREFERENCES_CACHEMAXENTRIES;Maximální počet záznamů v mezipaměti PREFERENCES_CACHEOPTS;Vlastnosti mezipaměti PREFERENCES_CACHETHUMBHEIGHT;Maximální výška náhledu diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index da5616b31..7658914f7 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Skarphed PARTIALPASTE_VIGNETTING;Vignettering PARTIALPASTE_WHITEBALANCE;Hvidbalance PREFERENCES_APPLNEXTSTARTUP;Anvendes ved næste opstart -PREFERENCES_CACHECLEARALL;Ryd alt -PREFERENCES_CACHECLEARPROFILES;Ryd profiler -PREFERENCES_CACHECLEARTHUMBS;Ryd miniaturer PREFERENCES_CACHEMAXENTRIES;Maksimalt antal indskrivninger i cache PREFERENCES_CACHEOPTS;Cache-indstillinger PREFERENCES_CACHETHUMBHEIGHT;Maksimal miniaturehøjde diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 3cf1b32da..fc3374db6 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1099,9 +1099,6 @@ PREFERENCES_BEHAVIOR;Verhalten PREFERENCES_BEHSETALL;Alle setzen PREFERENCES_BEHSETALLHINT;Setzt alle Parameter auf Setzen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Absolut zu den gespeicherten Werten interpretiert. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Alles löschen -PREFERENCES_CACHECLEARPROFILES;Profile löschen -PREFERENCES_CACHECLEARTHUMBS;Miniaturbilder löschen PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Miniaturbilder im Festplatten-Cache PREFERENCES_CACHEOPTS;Einstellungen des Festplatten-Cache für Miniaturbilder PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Miniaturbilder diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 8fcaafd56..6be9b3308 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1102,9 +1102,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten -!PREFERENCES_CACHECLEARALL;Clear All -!PREFERENCES_CACHECLEARPROFILES;Clear Processing Profiles -!PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails !PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries !PREFERENCES_CACHEOPTS;Cache Options !PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 53a2aec91..f8ec04d1f 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1026,9 +1026,6 @@ !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten -!PREFERENCES_CACHECLEARALL;Clear All -!PREFERENCES_CACHECLEARPROFILES;Clear Processing Profiles -!PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails !PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries !PREFERENCES_CACHEOPTS;Cache Options !PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 4284523ab..7b0645778 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -721,9 +721,6 @@ PREFERENCES_BEHAVIOR;Comportamiento PREFERENCES_BEHSETALL;Todo para 'Establecer' PREFERENCES_BEHSETALLHINT;Todos los parámetros para el modo Establecer.\nLos ajustes de parámetros en el panel de la herramienta de lotes serán serán absolutos, se mostrarán los valores vigentes PREFERENCES_BLACKBODY;Tungsteno -PREFERENCES_CACHECLEARALL;Borrar todo -PREFERENCES_CACHECLEARPROFILES;Borrar perfiles -PREFERENCES_CACHECLEARTHUMBS;Borrar miniaturas PREFERENCES_CACHEMAXENTRIES;Cantidad máxima de entradas en la memoria intermedia PREFERENCES_CACHEOPTS;Opciones de memoria intermedia PREFERENCES_CACHETHUMBHEIGHT;Altura máxima de las miniaturas diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index a604d6aef..06bfc9ae5 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;hurrengo abioan aplikatua -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 2bf82f6e1..19a8ce8d4 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -988,9 +988,6 @@ PREFERENCES_BEHAVIOR;Comportement PREFERENCES_BEHSETALL;Tout à 'Remplace' PREFERENCES_BEHSETALLHINT;Règle tous les paramètres sur le mode Remplace.\nLa modification des paramètres dans le panneau d'édition en par lot sera absolue, les valeurs réelles seront affichées PREFERENCES_BLACKBODY;Tungstène -PREFERENCES_CACHECLEARALL;Tout nettoyer -PREFERENCES_CACHECLEARPROFILES;Nettoyer les profils -PREFERENCES_CACHECLEARTHUMBS;Nettoyer les vignettes PREFERENCES_CACHEMAXENTRIES;Nombre maximal d'éléments dans le Cache PREFERENCES_CACHEOPTS;Options du Cache PREFERENCES_CACHETHUMBHEIGHT;Hauteur maximale des vignettes diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 0c416e421..cf9aef8ae 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;εφαρμόζεται στην επόμενη εκκίνηση -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 358045544..e8814d80f 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;ייושם באתחול הבא -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index e8a49771a..1c24cc52e 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -627,9 +627,6 @@ PREFERENCES_BEHAVIOR;Comportamento PREFERENCES_BEHSETALL;Tutti a 'Imposta' PREFERENCES_BEHSETALLHINT;Imposta tutti i parametri nella modalità Imposta.\nLe regolazioni dei parametri nel pannello strumenti batch saranno assoluti, verranno mostrati i valori reali. PREFERENCES_BLACKBODY;Tungsteno -PREFERENCES_CACHECLEARALL;Rimuovi tutto -PREFERENCES_CACHECLEARPROFILES;Rimuovi i profili di sviluppo -PREFERENCES_CACHECLEARTHUMBS;Rimuovi le miniature PREFERENCES_CACHEMAXENTRIES;Numero massimo di voci in memoria PREFERENCES_CACHEOPTS;Opzioni della memoria PREFERENCES_CACHETHUMBHEIGHT;Massima altezza delle miniature diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 0bc015fe9..bc5fa66e0 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1056,9 +1056,6 @@ PREFERENCES_BEHAVIOR;ビヘイビア PREFERENCES_BEHSETALL;すべて '設定' PREFERENCES_BEHSETALLHINT;すべてのパラメータを 設定モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に取って代わり同一になります PREFERENCES_BLACKBODY;タングステン -PREFERENCES_CACHECLEARALL;すべてクリア -PREFERENCES_CACHECLEARPROFILES;プロファイルのクリア -PREFERENCES_CACHECLEARTHUMBS;サムネイルのクリア PREFERENCES_CACHEMAXENTRIES;キャッシュエントリーの最大数 PREFERENCES_CACHEOPTS;cache オプション PREFERENCES_CACHETHUMBHEIGHT;サムネイル縦の最大値 diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 23887cfb1..2a3ca3759 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Asināšana PARTIALPASTE_VIGNETTING;Vinjetes labošana PARTIALPASTE_WHITEBALANCE;Baltā līdzsvarss PREFERENCES_APPLNEXTSTARTUP;lietos nākamā reizē -PREFERENCES_CACHECLEARALL;Attīrīt visu -PREFERENCES_CACHECLEARPROFILES;Attīrīt Profilus -PREFERENCES_CACHECLEARTHUMBS;Attīrīt sīktēlus PREFERENCES_CACHEMAXENTRIES;Maksimālais keša ierakstu skaits PREFERENCES_CACHEOPTS;Keša opcijas PREFERENCES_CACHETHUMBHEIGHT;Keša maksimālais sīktēla augstums diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 4e463a8fd..9bd662821 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -475,9 +475,6 @@ PREFERENCES_APPLNEXTSTARTUP;újraindítás után érvényes PREFERENCES_AUTOMONPROFILE;Oprendszerben beállított monitor-színprofil automatikus használata PREFERENCES_BATCH_PROCESSING;Kötegelt feldolgozás PREFERENCES_BEHAVIOR;Viselkedés -PREFERENCES_CACHECLEARALL;Teljes gyorsítótár törlése -PREFERENCES_CACHECLEARPROFILES;Feldolg. param. törlése -PREFERENCES_CACHECLEARTHUMBS;Előnézeti képek törlése PREFERENCES_CACHEMAXENTRIES;Gyorsítótárban tárolt képek max. száma PREFERENCES_CACHEOPTS;Gyorsítótár beállítások PREFERENCES_CACHETHUMBHEIGHT;Előnézeti kép maximális magassága diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index fd0036952..15f7b959b 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -912,9 +912,6 @@ PREFERENCES_BEHAVIOR;Gedrag PREFERENCES_BEHSETALL;Alles op 'Activeer' PREFERENCES_BEHSETALLHINT;Zet alle parameters in de Activeer mode.\nWijzigingen van parameters in de batch tool zijn absoluut. De actuele waarden worden gebruikt. PREFERENCES_BLACKBODY;Tungsten(wolfraam) -PREFERENCES_CACHECLEARALL;Wis alles -PREFERENCES_CACHECLEARPROFILES;Wis profielen -PREFERENCES_CACHECLEARTHUMBS;Wis miniaturen PREFERENCES_CACHEMAXENTRIES;Maximaal aantal elementen in cache PREFERENCES_CACHEOPTS;Cache-opties PREFERENCES_CACHETHUMBHEIGHT;Maximale hoogte miniaturen diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 4a4995aef..958ed12ad 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Oppskarping PARTIALPASTE_VIGNETTING;Vignetteringskorreksjon PARTIALPASTE_WHITEBALANCE;Hvitbalanse PREFERENCES_APPLNEXTSTARTUP;Endres ved neste oppstart -PREFERENCES_CACHECLEARALL;Slett alle -PREFERENCES_CACHECLEARPROFILES;Slett profiler -PREFERENCES_CACHECLEARTHUMBS;Slett thumbnails PREFERENCES_CACHEMAXENTRIES;Maksimalt antall cache oppføringer PREFERENCES_CACHEOPTS;Cache innstillinger PREFERENCES_CACHETHUMBHEIGHT;Maksimal Thumbnail Høyde diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index b271178e0..3e853bf20 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -676,9 +676,6 @@ PREFERENCES_BEHAVIOR;Zachowanie PREFERENCES_BEHSETALL;'Ustaw' wszystkie PREFERENCES_BEHSETALLHINT;Ustaw wszystkie narzędzia w tryb Ustaw.\nZmiany parametrów w panelu edycji zbiorczej zostaną traktowane jako absolutne, nie biorąc pod uwagę poprzednich wartości. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Wyczyść wszystko -PREFERENCES_CACHECLEARPROFILES;Wyczyść profile -PREFERENCES_CACHECLEARTHUMBS;Wyczyść miniaturki PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisów w pamięci podręcznej PREFERENCES_CACHEOPTS;Opcje pamięci podręcznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokość miniatury diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 310a1ed13..f847eb6b9 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -676,9 +676,6 @@ PREFERENCES_BEHAVIOR;Zachowanie PREFERENCES_BEHSETALL;'Ustaw' wszystkie PREFERENCES_BEHSETALLHINT;Ustaw wszystkie narzedzia w tryb Ustaw.\nZmiany parametrow w panelu edycji zbiorczej zostana traktowane jako absolutne, nie biorac pod uwage poprzednich wartosci. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Wyczysc wszystko -PREFERENCES_CACHECLEARPROFILES;Wyczysc profile -PREFERENCES_CACHECLEARTHUMBS;Wyczysc miniaturki PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisow w pamieci podrecznej PREFERENCES_CACHEOPTS;Opcje pamieci podrecznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokosc miniatury diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index c737ddcfd..d8e5ccc1f 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1020,9 +1020,6 @@ PREFERENCES_BEHAVIOR;Comportamento PREFERENCES_BEHSETALL;Tudo para 'Configurar' PREFERENCES_BEHSETALLHINT;Definir todos os parâmetros para o Configurar modo.\nAjustes de parâmetros no painel de ferramentas de lote serão absoluto, os valores reais serão exibidos. PREFERENCES_BLACKBODY;Tungstênio -PREFERENCES_CACHECLEARALL;Limpar Tudo -PREFERENCES_CACHECLEARPROFILES;Limpar Perfis de Processamento -PREFERENCES_CACHECLEARTHUMBS;Limpar Miniaturas PREFERENCES_CACHEMAXENTRIES;Número máximo de entradas de cache PREFERENCES_CACHEOPTS;Opções de Cache PREFERENCES_CACHETHUMBHEIGHT;Altura máxima da miniatura diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 3c89c4a74..176d86511 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -672,9 +672,6 @@ PREFERENCES_BEHAVIOR;Поведение PREFERENCES_BEHSETALL;Всё в "Установить" PREFERENCES_BEHSETALLHINT;Выставить все параметры в режим Установить.\nНастройки параметров в панели пакетной обработки будут абсолютными, будут показаны используемые значения PREFERENCES_BLACKBODY;Лампа накаливания -PREFERENCES_CACHECLEARALL;Удалить все -PREFERENCES_CACHECLEARPROFILES;Удалить параметры обработки -PREFERENCES_CACHECLEARTHUMBS;Удалить эскизы PREFERENCES_CACHEMAXENTRIES;Максимальное число элементов в кэше PREFERENCES_CACHEOPTS;Параметры кэширования PREFERENCES_CACHETHUMBHEIGHT;Максимальная высота эскиза diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 34c62bf06..4b570abb7 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -597,9 +597,6 @@ PREFERENCES_BEHAVIOR;Понашање PREFERENCES_BEHSETALL;Све у „Постави“ PREFERENCES_BEHSETALLHINT;Поставља све параметре у режим Постави.\nЊихово подешавање помоћу алата из панела за заказано ће бити апсолутне вредности као што су и изабране. PREFERENCES_BLACKBODY;Обична сијалица -PREFERENCES_CACHECLEARALL;Обриши све -PREFERENCES_CACHECLEARPROFILES;Обриши профиле -PREFERENCES_CACHECLEARTHUMBS;Обриши приказе PREFERENCES_CACHEMAXENTRIES;Највећи број мест у остави PREFERENCES_CACHEOPTS;Подешавање оставе PREFERENCES_CACHETHUMBHEIGHT;Највећа висина приказа diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 5dd1fa04d..a5d5094c6 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -597,9 +597,6 @@ PREFERENCES_BEHAVIOR;Ponašanje PREFERENCES_BEHSETALL;Sve u „Postavi“ PREFERENCES_BEHSETALLHINT;Postavlja sve parametre u režim Postavi.\nNjihovo podešavanje pomoću alata iz panela za zakazano će biti apsolutne vrednosti kao što su i izabrane. PREFERENCES_BLACKBODY;Obična sijalica -PREFERENCES_CACHECLEARALL;Obriši sve -PREFERENCES_CACHECLEARPROFILES;Obriši profile -PREFERENCES_CACHECLEARTHUMBS;Obriši prikaze PREFERENCES_CACHEMAXENTRIES;Najveći broj mest u ostavi PREFERENCES_CACHEOPTS;Podešavanje ostave PREFERENCES_CACHETHUMBHEIGHT;Najveća visina prikaza diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 15c4050ad..7e7fcdf86 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -274,9 +274,6 @@ PREFERENCES_ADD;Pridať PREFERENCES_APPLNEXTSTARTUP;Aplikovaný pri ďalšom spustení PREFERENCES_BATCH_PROCESSING;dávkové spracovanie PREFERENCES_BEHAVIOR;Správanie sa -PREFERENCES_CACHECLEARALL;Vyčistiť všetko -PREFERENCES_CACHECLEARPROFILES;Vyčistiť profily -PREFERENCES_CACHECLEARTHUMBS;Vyčistiť zmenšeniny PREFERENCES_CACHEMAXENTRIES;Maximálny počet vstupov v cache PREFERENCES_CACHEOPTS;Možnosti cache PREFERENCES_CACHETHUMBHEIGHT;Maximálna výška zmenšenín diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index b0d075188..6e32cea61 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Terävöinti PARTIALPASTE_VIGNETTING;Vinjetoinnin korjaus PARTIALPASTE_WHITEBALANCE;Valkotasapaino PREFERENCES_APPLNEXTSTARTUP;käytössä käynnistyksen jälkeen -PREFERENCES_CACHECLEARALL;Tyhjennä kaikki -PREFERENCES_CACHECLEARPROFILES;Tyhjennä profiilit -PREFERENCES_CACHECLEARTHUMBS;Tyhjennä esikatselukuvat PREFERENCES_CACHEMAXENTRIES;Välimuistin koko PREFERENCES_CACHEOPTS;Välimuistin asetukset PREFERENCES_CACHETHUMBHEIGHT;Suurin esikatselukuvan korkeus diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 82b11df1e..510d6696d 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -817,9 +817,6 @@ PREFERENCES_BEHAVIOR;Uppträdande PREFERENCES_BEHSETALL;Sätt allt till 'Ange' PREFERENCES_BEHSETALLHINT;Sätt alla parametrar till Ange-läge.\nFörändringar i parametrar i batch-verktyget kommer att vara absoluta och de faktiska värdena kommer att visas. PREFERENCES_BLACKBODY;Glödlampa -PREFERENCES_CACHECLEARALL;Återställ alla -PREFERENCES_CACHECLEARPROFILES;Återställ profiler -PREFERENCES_CACHECLEARTHUMBS;Ta bort cachade miniatyrbilder PREFERENCES_CACHEMAXENTRIES;Maximalt antal cachefiler PREFERENCES_CACHEOPTS;Cacheinställningar PREFERENCES_CACHETHUMBHEIGHT;Maximal höjd på miniatyrbilderna diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 051c99217..1ab598c2c 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;Bir sonraki başlamada uygulacacak. -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height diff --git a/rtdata/languages/default b/rtdata/languages/default index 1a1d4a18b..85a21dfe7 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1038,9 +1038,11 @@ PREFERENCES_BEHAVIOR;Behavior PREFERENCES_BEHSETALL;All to 'Set' 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_BLACKBODY;Tungsten -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Processing Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails +PREFERENCES_CACHECLEAR;Clear +PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index b15e10e49..9d58244f4 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1334,40 +1334,66 @@ Gtk::Widget* Preferences::getFileBrowserPanel () fre->add (*vbre); - Gtk::Frame* frc = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_CACHEOPTS")) ); - Gtk::VBox* vbc = Gtk::manage ( new Gtk::VBox () ); + // Cache + + Gtk::Frame* frc = Gtk::manage (new Gtk::Frame(M("PREFERENCES_CACHEOPTS"))); + Gtk::VBox* vbc = Gtk::manage (new Gtk::VBox()); frc->add (*vbc); - Gtk::HBox* hb3 = Gtk::manage ( new Gtk::HBox () ); - Gtk::Label* chlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_CACHETHUMBHEIGHT") + ":") ); - maxThumbSize = Gtk::manage ( new Gtk::SpinButton () ); - hb3->pack_start (*chlab, Gtk::PACK_SHRINK, 4); - hb3->pack_start (*maxThumbSize, Gtk::PACK_SHRINK, 4); + Gtk::Grid* cacheGrid = Gtk::manage(new Gtk::Grid()); + cacheGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(cacheGrid, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - maxThumbSize->set_digits (0); - maxThumbSize->set_increments (1, 10); - maxThumbSize->set_range (40, 800); - vbc->pack_start (*hb3, Gtk::PACK_SHRINK, 4); + Gtk::Label* maxThumbHeightLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHETHUMBHEIGHT") + ":")); + setExpandAlignProperties(maxThumbHeightLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + maxThumbHeightSB = Gtk::manage (new Gtk::SpinButton()); + maxThumbHeightSB->set_digits (0); + maxThumbHeightSB->set_increments (1, 10); + maxThumbHeightSB->set_range (40, 800); - Gtk::HBox* hb4 = Gtk::manage ( new Gtk::HBox () ); - Gtk::Label* celab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_CACHEMAXENTRIES") + ":") ); - maxCacheEntries = Gtk::manage ( new Gtk::SpinButton () ); - hb4->pack_start (*celab, Gtk::PACK_SHRINK, 4); - hb4->pack_start (*maxCacheEntries, Gtk::PACK_SHRINK, 4); + Gtk::Label* maxCacheEntriesLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHEMAXENTRIES") + ":")); + setExpandAlignProperties(maxCacheEntriesLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + maxCacheEntriesSB = Gtk::manage (new Gtk::SpinButton()); + maxCacheEntriesSB->set_digits (0); + maxCacheEntriesSB->set_increments (1, 10); + maxCacheEntriesSB->set_range (10, 100000); - maxCacheEntries->set_digits (0); - maxCacheEntries->set_increments (1, 10); - maxCacheEntries->set_range (10, 100000); - vbc->pack_start (*hb4, Gtk::PACK_SHRINK, 4); + // Separation is needed so that a button is not accidentally clicked when one wanted + // to click a spinbox. Ideally, the separation wouldn't require attaching a widget, but how? + Gtk::Label *separator = Gtk::manage (new Gtk::Label()); - Gtk::HBox* hb5 = Gtk::manage ( new Gtk::HBox () ); - clearThumbnails = Gtk::manage ( new Gtk::Button (M ("PREFERENCES_CACHECLEARTHUMBS")) ); - clearProfiles = Gtk::manage ( new Gtk::Button (M ("PREFERENCES_CACHECLEARPROFILES")) ); - clearAll = Gtk::manage ( new Gtk::Button (M ("PREFERENCES_CACHECLEARALL")) ); - hb5->pack_start (*clearThumbnails, Gtk::PACK_SHRINK, 4); - hb5->pack_start (*clearProfiles, Gtk::PACK_SHRINK, 4); - hb5->pack_start (*clearAll, Gtk::PACK_SHRINK, 4); - vbc->pack_start (*hb5, Gtk::PACK_SHRINK, 4); + Gtk::Label* clearThumbsLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ALLBUTPROFILES"))); + setExpandAlignProperties(clearThumbsLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Button* clearThumbsBtn = Gtk::manage (new Gtk::Button(M("PREFERENCES_CACHECLEAR"))); + + Gtk::Label* clearProfilesLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ONLYPROFILES"))); + setExpandAlignProperties(clearProfilesLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Button* clearProfilesBtn = Gtk::manage (new Gtk::Button(M("PREFERENCES_CACHECLEAR"))); + + Gtk::Label* clearAllLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ALL"))); + setExpandAlignProperties(clearAllLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Button* clearAllBtn = Gtk::manage (new Gtk::Button(M("PREFERENCES_CACHECLEAR"))); + + cacheGrid->attach (*maxThumbHeightLbl, 0, 0, 1, 1); + cacheGrid->attach (*maxThumbHeightSB, 1, 0, 1, 1); + cacheGrid->attach (*maxCacheEntriesLbl, 0, 1, 1, 1); + cacheGrid->attach (*maxCacheEntriesSB, 1, 1, 1, 1); + cacheGrid->attach (*separator, 0, 2, 2, 1); + cacheGrid->attach (*clearThumbsLbl, 0, 3, 1, 1); + cacheGrid->attach (*clearThumbsBtn, 1, 3, 1, 1); + if (moptions.saveParamsCache) { + cacheGrid->attach (*clearProfilesLbl, 0, 4, 1, 1); + cacheGrid->attach (*clearProfilesBtn, 1, 4, 1, 1); + cacheGrid->attach (*clearAllLbl, 0, 5, 1, 1); + cacheGrid->attach (*clearAllBtn, 1, 5, 1, 1); + } + + vbc->pack_start (*cacheGrid, Gtk::PACK_SHRINK, 4); + + Gtk::Label* clearSafetyLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_SAFETY"))); + setExpandAlignProperties(clearSafetyLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + clearSafetyLbl->set_line_wrap(true); + vbc->pack_start(*clearSafetyLbl, Gtk::PACK_SHRINK, 4); Gtk::HBox* hb6 = Gtk::manage ( new Gtk::HBox () ); Gtk::VBox* vb6 = Gtk::manage ( new Gtk::VBox () ); @@ -1386,9 +1412,11 @@ Gtk::Widget* Preferences::getFileBrowserPanel () moveExtUp->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::moveExtUpPressed) ); moveExtDown->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::moveExtDownPressed) ); extension->signal_activate().connect ( sigc::mem_fun (*this, &Preferences::addExtPressed) ); - clearThumbnails->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearThumbImagesPressed) ); - clearProfiles->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearProfilesPressed) ); - clearAll->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearAllPressed) ); + clearThumbsBtn->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearThumbImagesPressed) ); + if (moptions.saveParamsCache) { + clearProfilesBtn->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::clearProfilesPressed)); + clearAllBtn->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::clearAllPressed)); + } swFileBrowser->add(*vbFileBrowser); return swFileBrowser; @@ -1701,8 +1729,8 @@ void Preferences::storePreferences () } moptions.maxRecentFolders = (int)maxRecentFolders->get_value(); - moptions.maxThumbnailHeight = (int)maxThumbSize->get_value (); - moptions.maxCacheEntries = (int)maxCacheEntries->get_value (); + moptions.maxThumbnailHeight = (int)maxThumbHeightSB->get_value (); + moptions.maxCacheEntries = (int)maxCacheEntriesSB->get_value (); moptions.overlayedFileNames = overlayedFileNames->get_active (); moptions.filmStripOverlayedFileNames = filmStripOverlayedFileNames->get_active(); moptions.sameThumbSize = sameThumbSize->get_active(); @@ -1917,9 +1945,9 @@ void Preferences::fillPreferences () row[extensionColumns.ext] = moptions.parseExtensions[i]; } - maxThumbSize->set_value (moptions.maxThumbnailHeight); maxRecentFolders->set_value (moptions.maxRecentFolders); - maxCacheEntries->set_value (moptions.maxCacheEntries); + maxThumbHeightSB->set_value (moptions.maxThumbnailHeight); + maxCacheEntriesSB->set_value (moptions.maxCacheEntries); overlayedFileNames->set_active (moptions.overlayedFileNames); filmStripOverlayedFileNames->set_active (moptions.filmStripOverlayedFileNames); sameThumbSize->set_active (moptions.sameThumbSize); diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 949f50376..6019604e5 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -146,12 +146,9 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Gtk::ColorButton* butCropCol; Gtk::ColorButton* butNavGuideCol; - Gtk::SpinButton* maxThumbSize; - Gtk::SpinButton* maxCacheEntries; Gtk::SpinButton* maxRecentFolders; - Gtk::Button* clearThumbnails; - Gtk::Button* clearProfiles; - Gtk::Button* clearAll; + Gtk::SpinButton* maxThumbHeightSB; + Gtk::SpinButton* maxCacheEntriesSB; Gtk::Entry* extension; Gtk::TreeView* extensions; Gtk::Button* addExt; From 41b802bdd34c7d12137fce5c54ab43997b71531e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 1 Nov 2018 18:51:17 +0100 Subject: [PATCH 064/348] Colortoning Lab regions: use xlogf and xexpf from sleef.c, #4914 --- rtengine/iplabregions.cc | 13 ++++++++----- rtengine/sleef.c | 11 +++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 2a4d431e6..49a426afa 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -24,6 +24,9 @@ #include "improcfun.h" #include "guidedfilter.h" +#define BENCHMARK +#include "StopWatch.h" +#include "sleef.c" namespace rtengine { @@ -32,7 +35,7 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) if (!params->colorToning.enabled || params->colorToning.method != "LabRegions") { return; } - +BENCHFUN int n = params->colorToning.labregions.size(); int show_mask_idx = params->colorToning.labregionsShowMask; if (show_mask_idx >= n) { @@ -64,7 +67,7 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) abmask[i](lab->W, lab->H); Lmask[i](lab->W, lab->H); } - + #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif @@ -77,13 +80,13 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) Color::Lab2Lch(a, b, c, h); // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 constexpr float c_factor = 327.68f / 48000.f; - float c1 = lin2log(c * c_factor, 10.f); + float c1 = xlin2log(c * c_factor, 10.f); float h1 = Color::huelab_to_huehsv2(h); h1 = h1 + 1.f/6.f; // offset the hue because we start from purple instead of red if (h1 > 1.f) { h1 -= 1.f; } - h1 = lin2log(h1, 3.f); + h1 = xlin2log(h1, 3.f); float l1 = l / 32768.f; for (int i = begin_idx; i < end_idx; ++i) { @@ -132,7 +135,7 @@ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) const auto abcoord = [](float x) -> float { - return 12000.f * SGN(x) * log2lin(std::abs(x), 4.f); + return 12000.f * SGN(x) * xlog2lin(std::abs(x), 4.f); }; #ifdef _OPENMP diff --git a/rtengine/sleef.c b/rtengine/sleef.c index 901d04f7d..cc92be108 100644 --- a/rtengine/sleef.c +++ b/rtengine/sleef.c @@ -23,6 +23,7 @@ #define L2U .69314718055966295651160180568695068359375 #define L2L .28235290563031577122588448175013436025525412068e-12 #define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 +#define pow_F(a,b) (xexpf(b*xlogf(a))) __inline int64_t doubleToRawLongBits(double d) { union { @@ -1263,6 +1264,16 @@ __inline float xdivf( float d, int n){ return uflint.floatval; } +__inline float xlin2log(float x, float base) +{ + constexpr float one(1); + return xlogf(x * (base - one) + one) / xlogf(base); +} +__inline float xlog2lin(float x, float base) +{ + constexpr float one(1); + return (pow_F(base, x) - one) / (base - one); +} #endif From dd635de72cced54dfebc8612e5beadc193413cb0 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 1 Nov 2018 20:09:30 +0100 Subject: [PATCH 065/348] Colortoning Lab regions: move some calculations outside last loop, #4914 --- rtengine/iplabregions.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 49a426afa..dfa0872b2 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -138,6 +138,18 @@ BENCHFUN return 12000.f * SGN(x) * xlog2lin(std::abs(x), 4.f); }; + float abca[n]; + float abcb[n]; + float rs[n]; + float rl[n]; + for (int i = 0; i < n; ++i) { + auto &r = params->colorToning.labregions[i]; + abca[i] = abcoord(r.a); + abcb[i] = abcoord(r.b); + rs[i] = 1.f + r.saturation / 100.f; + rl[i] = 1.f + float(r.lightness) / 500.f; + } + #ifdef _OPENMP #pragma omp parallel for if (multiThread) #endif @@ -148,12 +160,11 @@ BENCHFUN float b = lab->b[y][x]; for (int i = 0; i < n; ++i) { - auto &r = params->colorToning.labregions[i]; float blend = abmask[i][y][x]; - float s = 1.f + r.saturation / 100.f; - float a_new = LIM(s * (a + abcoord(r.a)), -42000.f, 42000.f); - float b_new = LIM(s * (b + abcoord(r.b)), -42000.f, 42000.f); - float l_new = LIM(l * (1.f + float(r.lightness) / 500.f), 0.f, 32768.f); + float s = rs[i]; + float a_new = LIM(s * (a + abca[i]), -42000.f, 42000.f); + float b_new = LIM(s * (b + abcb[i]), -42000.f, 42000.f); + float l_new = LIM(l * rl[i], 0.f, 32768.f); l = intp(Lmask[i][y][x], l_new, l); a = intp(blend, a_new, a); b = intp(blend, b_new, b); From 906cf63ecd33569813bcc4c594b096499b76e7e5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 1 Nov 2018 22:30:26 +0100 Subject: [PATCH 066/348] Colortoning Lab regions: some vectorized precalculations in first loop, #4914 --- rtengine/color.cc | 18 + rtengine/color.h | 4 +- rtengine/iplabregions.cc | 49 +- rtengine/sleef.c.save-failed | 1288 ++++++++++++++++++++++++++++++++++ 4 files changed, 1354 insertions(+), 5 deletions(-) create mode 100644 rtengine/sleef.c.save-failed diff --git a/rtengine/color.cc b/rtengine/color.cc index 599aceaa1..29844f64d 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -1931,6 +1931,24 @@ void Color::Lab2Lch(float a, float b, float &c, float &h) h = xatan2f(b, a); } +#ifdef __SSE2__ +void Color::Lab2Lch(float *a, float *b, float *c, float *h, int w) +{ + int i = 0; + vfloat c327d68v = F2V(327.68f); + for (; i < w - 3; i += 4) { + vfloat av = LVFU(a[i]); + vfloat bv = LVFU(b[i]); + STVFU(c[i], vsqrtf(SQRV(av) + SQRV(bv)) / c327d68v); + STVFU(h[i], xatan2f(bv, av)); + } + for (; i < w; ++i) { + c[i] = sqrtf(SQR(a[i]) + SQR(b[i])) / 327.68f; + h[i] = xatan2f(b[i], a[i]); + } +} +#endif + void Color::Lch2Lab(float c, float h, float &a, float &b) { float2 sincosval = xsincosf(h); diff --git a/rtengine/color.h b/rtengine/color.h index b6459adc4..9f8863343 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -651,7 +651,9 @@ public: * @param h 'h' channel return value, in [-PI ; +PI] (return value) */ static void Lab2Lch(float a, float b, float &c, float &h); - +#ifdef __SSE2__ + static void Lab2Lch(float *a, float *b, float *c, float *h, int w); +#endif /** * @brief Convert 'c' and 'h' channels of the Lch color space to the 'a' and 'b' channels of the L*a*b color space (channel 'L' is identical [0 ; 32768]) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index dfa0872b2..aec6efa6f 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -28,6 +28,26 @@ #include "StopWatch.h" #include "sleef.c" +namespace { +#ifdef __SSE2__ +void fastlin2log(float *x, float factor, float base, int w) +{ + float baseLog = 1.f / xlogf(base); + vfloat baseLogv = F2V(baseLog); + factor = factor * (base - 1.f); + vfloat factorv = F2V(factor); + vfloat onev = F2V(1.f); + int i = 0; + for (; i < w - 3; i += 4) { + STVFU(x[i], xlogf(LVFU(x[i]) * factorv + onev) * baseLogv); + } + for (; i < w; ++i) { + x[i] = xlogf(x[i] * factor + 1.f) * baseLog; + } +} +#endif +} + namespace rtengine { void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) @@ -69,18 +89,39 @@ BENCHFUN } #ifdef _OPENMP - #pragma omp parallel for if (multiThread) + #pragma omp parallel if (multiThread) +#endif + { +#ifdef __SSE2__ + float cBuffer[lab->W]; + float hBuffer[lab->W]; + // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 + constexpr float c_factor = 327.68f / 48000.f; +#endif +#ifdef _OPENMP + #pragma omp for #endif for (int y = 0; y < lab->H; ++y) { +#ifdef __SSE2__ + // vectorized precalculation + Color::Lab2Lch(lab->a[y], lab->b[y], cBuffer, hBuffer, lab->W); + fastlin2log(cBuffer, c_factor, 10.f, lab->W); +#endif for (int x = 0; x < lab->W; ++x) { float l = lab->L[y][x]; +#ifdef __SSE2__ + // use precalculated values + float c1 = cBuffer[x]; + float h = hBuffer[x]; +#else + // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 + constexpr float c_factor = 327.68f / 48000.f; float a = lab->a[y][x]; float b = lab->b[y][x]; float c, h; Color::Lab2Lch(a, b, c, h); - // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 - constexpr float c_factor = 327.68f / 48000.f; float c1 = xlin2log(c * c_factor, 10.f); +#endif float h1 = Color::huelab_to_huehsv2(h); h1 = h1 + 1.f/6.f; // offset the hue because we start from purple instead of red if (h1 > 1.f) { @@ -98,7 +139,7 @@ BENCHFUN } } } - + } { array2D guide(lab->W, lab->H, lab->L); #ifdef _OPENMP diff --git a/rtengine/sleef.c.save-failed b/rtengine/sleef.c.save-failed new file mode 100644 index 000000000..0cde64be6 --- /dev/null +++ b/rtengine/sleef.c.save-failed @@ -0,0 +1,1288 @@ +//////////////////////////////////////////////////////////////// +// +// this code was taken from http://shibatch.sourceforge.net/ +// Many thanks to the author of original version: Naoki Shibata +// +// This version contains modifications made by Ingo Weyrich +// +//////////////////////////////////////////////////////////////// + +#ifndef _SLEEFC_ +#define _SLEEFC_ + +#include +#include +#include "rt_math.h" +#include "opthelper.h" + +#define PI4_A .7853981554508209228515625 +#define PI4_B .794662735614792836713604629039764404296875e-8 +#define PI4_C .306161699786838294306516483068750264552437361480769e-16 +#define M_4_PI 1.273239544735162542821171882678754627704620361328125 + +#define L2U .69314718055966295651160180568695068359375 +#define L2L .28235290563031577122588448175013436025525412068e-12 +#define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 +#define pow_F(a,b) (xexpf(b*xlogf(a))) + +__inline int64_t doubleToRawLongBits(double d) { + union { + double f; + int64_t i; + } tmp; + tmp.f = d; + return tmp.i; +} + +__inline double longBitsToDouble(int64_t i) { + union { + double f; + int64_t i; + } tmp; + tmp.i = i; + return tmp.f; +} + +__inline double xfabs(double x) { + return longBitsToDouble(0x7fffffffffffffffLL & doubleToRawLongBits(x)); +} + +__inline double mulsign(double x, double y) { + return longBitsToDouble(doubleToRawLongBits(x) ^ (doubleToRawLongBits(y) & (1LL << 63))); +} + +__inline double sign(double d) { return mulsign(1, d); } +__inline double mla(double x, double y, double z) { return x * y + z; } +__inline double xrint(double x) { return x < 0 ? (int)(x - 0.5) : (int)(x + 0.5); } + +__inline int xisnan(double x) { return x != x; } +__inline int xisinf(double x) { return x == rtengine::RT_INFINITY || x == -rtengine::RT_INFINITY; } +__inline int xisminf(double x) { return x == -rtengine::RT_INFINITY; } +__inline int xispinf(double x) { return x == rtengine::RT_INFINITY; } + +__inline double ldexpk(double x, int q) { + double u; + int m; + m = q >> 31; + m = (((m + q) >> 9) - m) << 7; + q = q - (m << 2); + u = longBitsToDouble(((int64_t)(m + 0x3ff)) << 52); + double u2 = u*u; + u2 = u2 * u2; + x = x * u2; + u = longBitsToDouble(((int64_t)(q + 0x3ff)) << 52); + return x * u; +} + +__inline double xldexp(double x, int q) { return ldexpk(x, q); } + +__inline int ilogbp1(double d) { + int m = d < 4.9090934652977266E-91; + d = m ? 2.037035976334486E90 * d : d; + int q = (doubleToRawLongBits(d) >> 52) & 0x7ff; + q = m ? q - (300 + 0x03fe) : q - 0x03fe; + return q; +} + +__inline int xilogb(double d) { + int e = ilogbp1(xfabs(d)) - 1; + e = d == 0 ? (-2147483647 - 1) : e; + e = d == rtengine::RT_INFINITY || d == -rtengine::RT_INFINITY ? 2147483647 : e; + return e; +} + +__inline double upper(double d) { + return longBitsToDouble(doubleToRawLongBits(d) & 0xfffffffff8000000LL); +} + +typedef struct { + double x, y; +} double2; + +typedef struct { + float x, y; +} float2; + +__inline double2 dd(double h, double l) { + double2 ret; + ret.x = h; ret.y = l; + return ret; +} + +__inline double2 normalize_d(double2 t) { + double2 s; + + s.x = t.x + t.y; + s.y = t.x - s.x + t.y; + + return s; +} + +__inline double2 scale_d(double2 d, double s) { + double2 r; + + r.x = d.x * s; + r.y = d.y * s; + + return r; +} + +__inline double2 add2_ss(double x, double y) { + double2 r; + + r.x = x + y; + double v = r.x - x; + r.y = (x - (r.x - v)) + (y - v); + + return r; +} + +__inline double2 add_ds(double2 x, double y) { + // |x| >= |y| + + double2 r; + + assert(xisnan(x.x) || xisnan(y) || xfabs(x.x) >= xfabs(y)); + + r.x = x.x + y; + r.y = x.x - r.x + y + x.y; + + return r; +} + +__inline double2 add2_ds(double2 x, double y) { + // |x| >= |y| + + double2 r; + + r.x = x.x + y; + double v = r.x - x.x; + r.y = (x.x - (r.x - v)) + (y - v); + r.y += x.y; + + return r; +} + +__inline double2 add_sd(double x, double2 y) { + // |x| >= |y| + + double2 r; + + assert(xisnan(x) || xisnan(y.x) || xfabs(x) >= xfabs(y.x)); + + r.x = x + y.x; + r.y = x - r.x + y.x + y.y; + + return r; +} + +__inline double2 add_dd(double2 x, double2 y) { + // |x| >= |y| + + double2 r; + + assert(xisnan(x.x) || xisnan(y.x) || xfabs(x.x) >= xfabs(y.x)); + + r.x = x.x + y.x; + r.y = x.x - r.x + y.x + x.y + y.y; + + return r; +} + +__inline double2 add2_dd(double2 x, double2 y) { + double2 r; + + r.x = x.x + y.x; + double v = r.x - x.x; + r.y = (x.x - (r.x - v)) + (y.x - v); + r.y += x.y + y.y; + + return r; +} + +__inline double2 div_dd(double2 n, double2 d) { + double t = 1.0 / d.x; + double dh = upper(d.x), dl = d.x - dh; + double th = upper(t ), tl = t - th; + double nhh = upper(n.x), nhl = n.x - nhh; + + double2 q; + + q.x = n.x * t; + + double u = -q.x + nhh * th + nhh * tl + nhl * th + nhl * tl + + q.x * (1 - dh * th - dh * tl - dl * th - dl * tl); + + q.y = t * (n.y - q.x * d.y) + u; + + return q; +} + +__inline double2 mul_ss(double x, double y) { + double xh = upper(x), xl = x - xh; + double yh = upper(y), yl = y - yh; + double2 r; + + r.x = x * y; + r.y = xh * yh - r.x + xl * yh + xh * yl + xl * yl; + + return r; +} + +__inline double2 mul_ds(double2 x, double y) { + double xh = upper(x.x), xl = x.x - xh; + double yh = upper(y ), yl = y - yh; + double2 r; + + r.x = x.x * y; + r.y = xh * yh - r.x + xl * yh + xh * yl + xl * yl + x.y * y; + + return r; +} + +__inline double2 mul_dd(double2 x, double2 y) { + double xh = upper(x.x), xl = x.x - xh; + double yh = upper(y.x), yl = y.x - yh; + double2 r; + + r.x = x.x * y.x; + r.y = xh * yh - r.x + xl * yh + xh * yl + xl * yl + x.x * y.y + x.y * y.x; + + return r; +} + +__inline double2 squ_d(double2 x) { + double xh = upper(x.x), xl = x.x - xh; + double2 r; + + r.x = x.x * x.x; + r.y = xh * xh - r.x + (xh + xh) * xl + xl * xl + x.x * (x.y + x.y); + + return r; +} + +__inline double2 rec_s(double d) { + double t = 1.0 / d; + double dh = upper(d), dl = d - dh; + double th = upper(t), tl = t - th; + double2 q; + + q.x = t; + q.y = t * (1 - dh * th - dh * tl - dl * th - dl * tl); + + return q; +} + +__inline double2 sqrt_d(double2 d) { + double t = sqrt(d.x + d.y); + return scale_d(mul_dd(add2_dd(d, mul_ss(t, t)), rec_s(t)), 0.5); +} + +__inline double atan2k(double y, double x) { + double s, t, u; + int q = 0; + + if (x < 0) { x = -x; q = -2; } + if (y > x) { t = x; x = y; y = -t; q += 1; } + + s = y / x; + t = s * s; + + u = -1.88796008463073496563746e-05; + u = u * t + (0.000209850076645816976906797); + u = u * t + (-0.00110611831486672482563471); + u = u * t + (0.00370026744188713119232403); + u = u * t + (-0.00889896195887655491740809); + u = u * t + (0.016599329773529201970117); + u = u * t + (-0.0254517624932312641616861); + u = u * t + (0.0337852580001353069993897); + u = u * t + (-0.0407629191276836500001934); + u = u * t + (0.0466667150077840625632675); + u = u * t + (-0.0523674852303482457616113); + u = u * t + (0.0587666392926673580854313); + u = u * t + (-0.0666573579361080525984562); + u = u * t + (0.0769219538311769618355029); + u = u * t + (-0.090908995008245008229153); + u = u * t + (0.111111105648261418443745); + u = u * t + (-0.14285714266771329383765); + u = u * t + (0.199999999996591265594148); + u = u * t + (-0.333333333333311110369124); + + t = u * t * s + s; + t = q * (rtengine::RT_PI_2) + t; + + return t; +} + +__inline double xatan2(double y, double x) { + double r = atan2k(xfabs(y), x); + + r = mulsign(r, x); + if (xisinf(x) || x == 0) r = rtengine::RT_PI_2 - (xisinf(x) ? (sign(x) * (rtengine::RT_PI_2)) : 0); + if (xisinf(y) ) r = rtengine::RT_PI_2 - (xisinf(x) ? (sign(x) * (rtengine::RT_PI*1/4)) : 0); + if ( y == 0) r = (sign(x) == -1 ? rtengine::RT_PI : 0); + + return xisnan(x) || xisnan(y) ? rtengine::RT_NAN : mulsign(r, y); +} + +__inline double xasin(double d) { + return mulsign(atan2k(xfabs(d), sqrt((1+d)*(1-d))), d); +} + +__inline double xacos(double d) { + return mulsign(atan2k(sqrt((1+d)*(1-d)), xfabs(d)), d) + (d < 0 ? rtengine::RT_PI : 0); +} + +__inline double xatan(double s) { + double t, u; + int q = 0; + + if (s < 0) { s = -s; q = 2; } + if (s > 1) { s = 1.0 / s; q |= 1; } + + t = s * s; + + u = -1.88796008463073496563746e-05; + u = u * t + (0.000209850076645816976906797); + u = u * t + (-0.00110611831486672482563471); + u = u * t + (0.00370026744188713119232403); + u = u * t + (-0.00889896195887655491740809); + u = u * t + (0.016599329773529201970117); + u = u * t + (-0.0254517624932312641616861); + u = u * t + (0.0337852580001353069993897); + u = u * t + (-0.0407629191276836500001934); + u = u * t + (0.0466667150077840625632675); + u = u * t + (-0.0523674852303482457616113); + u = u * t + (0.0587666392926673580854313); + u = u * t + (-0.0666573579361080525984562); + u = u * t + (0.0769219538311769618355029); + u = u * t + (-0.090908995008245008229153); + u = u * t + (0.111111105648261418443745); + u = u * t + (-0.14285714266771329383765); + u = u * t + (0.199999999996591265594148); + u = u * t + (-0.333333333333311110369124); + + t = s + s * (t * u); + + if ((q & 1) != 0) t = 1.570796326794896557998982 - t; + if ((q & 2) != 0) t = -t; + + return t; +} + +__inline double xsin(double d) { + int q; + double u, s; + + q = (int)xrint(d * rtengine::RT_1_PI); + + d = mla(q, -PI4_A*4, d); + d = mla(q, -PI4_B*4, d); + d = mla(q, -PI4_C*4, d); + + s = d * d; + + if ((q & 1) != 0) d = -d; + + u = -7.97255955009037868891952e-18; + u = mla(u, s, 2.81009972710863200091251e-15); + u = mla(u, s, -7.64712219118158833288484e-13); + u = mla(u, s, 1.60590430605664501629054e-10); + u = mla(u, s, -2.50521083763502045810755e-08); + u = mla(u, s, 2.75573192239198747630416e-06); + u = mla(u, s, -0.000198412698412696162806809); + u = mla(u, s, 0.00833333333333332974823815); + u = mla(u, s, -0.166666666666666657414808); + + u = mla(s, u * d, d); + + return u; +} + +__inline double xcos(double d) { + int q; + double u, s; + + q = 1 + 2*(int)xrint(d * rtengine::RT_1_PI - 0.5); + + d = mla(q, -PI4_A*2, d); + d = mla(q, -PI4_B*2, d); + d = mla(q, -PI4_C*2, d); + + s = d * d; + + if ((q & 2) == 0) d = -d; + + u = -7.97255955009037868891952e-18; + u = mla(u, s, 2.81009972710863200091251e-15); + u = mla(u, s, -7.64712219118158833288484e-13); + u = mla(u, s, 1.60590430605664501629054e-10); + u = mla(u, s, -2.50521083763502045810755e-08); + u = mla(u, s, 2.75573192239198747630416e-06); + u = mla(u, s, -0.000198412698412696162806809); + u = mla(u, s, 0.00833333333333332974823815); + u = mla(u, s, -0.166666666666666657414808); + + u = mla(s, u * d, d); + + return u; +} + +__inline double2 xsincos(double d) { + int q; + double u, s, t; + double2 r; + + q = (int)xrint(d * (2 * rtengine::RT_1_PI)); + + s = d; + + s = mla(-q, PI4_A*2, s); + s = mla(-q, PI4_B*2, s); + s = mla(-q, PI4_C*2, s); + + t = s; + + s = s * s; + + u = 1.58938307283228937328511e-10; + u = mla(u, s, -2.50506943502539773349318e-08); + u = mla(u, s, 2.75573131776846360512547e-06); + u = mla(u, s, -0.000198412698278911770864914); + u = mla(u, s, 0.0083333333333191845961746); + u = mla(u, s, -0.166666666666666130709393); + u = u * s * t; + + r.x = t + u; + + u = -1.13615350239097429531523e-11; + u = mla(u, s, 2.08757471207040055479366e-09); + u = mla(u, s, -2.75573144028847567498567e-07); + u = mla(u, s, 2.48015872890001867311915e-05); + u = mla(u, s, -0.00138888888888714019282329); + u = mla(u, s, 0.0416666666666665519592062); + u = mla(u, s, -0.5); + + r.y = u * s + 1; + + if ((q & 1) != 0) { s = r.y; r.y = r.x; r.x = s; } + if ((q & 2) != 0) { r.x = -r.x; } + if (((q+1) & 2) != 0) { r.y = -r.y; } + + if (xisinf(d)) { r.x = r.y = rtengine::RT_NAN; } + + return r; +} + +__inline double xtan(double d) { + int q; + double u, s, x; + + q = (int)xrint(d * (2 * rtengine::RT_1_PI)); + + x = mla(q, -PI4_A*2, d); + x = mla(q, -PI4_B*2, x); + x = mla(q, -PI4_C*2, x); + + s = x * x; + + if ((q & 1) != 0) x = -x; + + u = 1.01419718511083373224408e-05; + u = mla(u, s, -2.59519791585924697698614e-05); + u = mla(u, s, 5.23388081915899855325186e-05); + u = mla(u, s, -3.05033014433946488225616e-05); + u = mla(u, s, 7.14707504084242744267497e-05); + u = mla(u, s, 8.09674518280159187045078e-05); + u = mla(u, s, 0.000244884931879331847054404); + u = mla(u, s, 0.000588505168743587154904506); + u = mla(u, s, 0.00145612788922812427978848); + u = mla(u, s, 0.00359208743836906619142924); + u = mla(u, s, 0.00886323944362401618113356); + u = mla(u, s, 0.0218694882853846389592078); + u = mla(u, s, 0.0539682539781298417636002); + u = mla(u, s, 0.133333333333125941821962); + u = mla(u, s, 0.333333333333334980164153); + + u = mla(s, u * x, x); + + if ((q & 1) != 0) u = 1.0 / u; + + if (xisinf(d)) u = rtengine::RT_NAN; + + return u; +} + +__inline double xlog(double d) { + double x, x2, t, m; + int e; + + e = ilogbp1(d * 0.7071); + m = ldexpk(d, -e); + + x = (m-1) / (m+1); + x2 = x * x; + + t = 0.148197055177935105296783; + t = mla(t, x2, 0.153108178020442575739679); + t = mla(t, x2, 0.181837339521549679055568); + t = mla(t, x2, 0.22222194152736701733275); + t = mla(t, x2, 0.285714288030134544449368); + t = mla(t, x2, 0.399999999989941956712869); + t = mla(t, x2, 0.666666666666685503450651); + t = mla(t, x2, 2); + + x = x * t + 0.693147180559945286226764 * e; + + if (xisinf(d)) x = rtengine::RT_INFINITY; + if (d < 0) x = rtengine::RT_NAN; + if (d == 0) x = -rtengine::RT_INFINITY; + + return x; +} + +__inline double xexp(double d) { + int q = (int)xrint(d * R_LN2); + double s, u; + + s = mla(q, -L2U, d); + s = mla(q, -L2L, s); + + u = 2.08860621107283687536341e-09; + u = mla(u, s, 2.51112930892876518610661e-08); + u = mla(u, s, 2.75573911234900471893338e-07); + u = mla(u, s, 2.75572362911928827629423e-06); + u = mla(u, s, 2.4801587159235472998791e-05); + u = mla(u, s, 0.000198412698960509205564975); + u = mla(u, s, 0.00138888888889774492207962); + u = mla(u, s, 0.00833333333331652721664984); + u = mla(u, s, 0.0416666666666665047591422); + u = mla(u, s, 0.166666666666666851703837); + u = mla(u, s, 0.5); + + u = s * s * u + s + 1; + u = ldexpk(u, q); + + if (xisminf(d)) u = 0; + + return u; +} + +__inline double2 logk(double d) { + double2 x, x2; + double m, t; + int e; + + e = ilogbp1(d * 0.7071); + m = ldexpk(d, -e); + + x = div_dd(add2_ss(-1, m), add2_ss(1, m)); + x2 = squ_d(x); + + t = 0.134601987501262130076155; + t = mla(t, x2.x, 0.132248509032032670243288); + t = mla(t, x2.x, 0.153883458318096079652524); + t = mla(t, x2.x, 0.181817427573705403298686); + t = mla(t, x2.x, 0.222222231326187414840781); + t = mla(t, x2.x, 0.285714285651261412873718); + t = mla(t, x2.x, 0.400000000000222439910458); + t = mla(t, x2.x, 0.666666666666666371239645); + + return add2_dd(mul_ds(dd(0.693147180559945286226764, 2.319046813846299558417771e-17), e), + add2_dd(scale_d(x, 2), mul_ds(mul_dd(x2, x), t))); +} + +__inline double expk(double2 d) { + int q = (int)rint((d.x + d.y) * R_LN2); + double2 s, t; + double u; + + s = add2_ds(d, q * -L2U); + s = add2_ds(s, q * -L2L); + + s = normalize_d(s); + + u = 2.51069683420950419527139e-08; + u = mla(u, s.x, 2.76286166770270649116855e-07); + u = mla(u, s.x, 2.75572496725023574143864e-06); + u = mla(u, s.x, 2.48014973989819794114153e-05); + u = mla(u, s.x, 0.000198412698809069797676111); + u = mla(u, s.x, 0.0013888888939977128960529); + u = mla(u, s.x, 0.00833333333332371417601081); + u = mla(u, s.x, 0.0416666666665409524128449); + u = mla(u, s.x, 0.166666666666666740681535); + u = mla(u, s.x, 0.500000000000000999200722); + + t = add_dd(s, mul_ds(squ_d(s), u)); + + t = add_sd(1, t); + return ldexpk(t.x + t.y, q); +} + +__inline double xpow(double x, double y) { + int yisint = (int)y == y; + int yisodd = (1 & (int)y) != 0 && yisint; + + double result = expk(mul_ds(logk(xfabs(x)), y)); + + result = xisnan(result) ? rtengine::RT_INFINITY : result; + result *= (x >= 0 ? 1 : (!yisint ? rtengine::RT_NAN : (yisodd ? -1 : 1))); + + double efx = mulsign(xfabs(x) - 1, y); + if (xisinf(y)) result = efx < 0 ? 0.0 : (efx == 0 ? 1.0 : rtengine::RT_INFINITY); + if (xisinf(x) || x == 0) result = (yisodd ? sign(x) : 1) * ((x == 0 ? -y : y) < 0 ? 0 : rtengine::RT_INFINITY); + if (xisnan(x) || xisnan(y)) result = rtengine::RT_NAN; + if (y == 0 || x == 1) result = 1; + + return result; +} + +__inline double2 expk2(double2 d) { + int q = (int)rint((d.x + d.y) * R_LN2); + double2 s, t; + double u; + + s = add2_ds(d, q * -L2U); + s = add2_ds(s, q * -L2L); + + s = normalize_d(s); + + u = 2.51069683420950419527139e-08; + u = mla(u, s.x, 2.76286166770270649116855e-07); + u = mla(u, s.x, 2.75572496725023574143864e-06); + u = mla(u, s.x, 2.48014973989819794114153e-05); + u = mla(u, s.x, 0.000198412698809069797676111); + u = mla(u, s.x, 0.0013888888939977128960529); + u = mla(u, s.x, 0.00833333333332371417601081); + u = mla(u, s.x, 0.0416666666665409524128449); + u = mla(u, s.x, 0.166666666666666740681535); + u = mla(u, s.x, 0.500000000000000999200722); + + t = add_dd(s, mul_ds(squ_d(s), u)); + + t = add_sd(1, t); + return dd(ldexpk(t.x, q), ldexpk(t.y, q)); +} + +__inline double xsinh(double x) { + double y = xfabs(x); + double2 d = expk2(dd(y, 0)); + d = add2_dd(d, div_dd(dd(-1, 0), d)); + y = (d.x + d.y) * 0.5; + + y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; + y = mulsign(y, x); + y = xisnan(x) ? rtengine::RT_NAN : y; + + return y; +} + +__inline double xcosh(double x) { + double2 d = expk2(dd(x, 0)); + d = add2_dd(d, div_dd(dd(1, 0), d)); + double y = (d.x + d.y) * 0.5; + + y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; + y = xisnan(x) ? rtengine::RT_NAN : y; + + return y; +} + +__inline double xtanh(double x) { + double y = xfabs(x); + double2 d = expk2(dd(y, 0)); + double2 e = div_dd(dd(1, 0), d); + d = div_dd(add2_dd(d, scale_d(e, -1)), add2_dd(d, e)); + y = d.x + d.y; + + y = xisinf(x) || xisnan(y) ? 1.0 : y; + y = mulsign(y, x); + y = xisnan(x) ? rtengine::RT_NAN : y; + + return y; +} + +__inline double2 logk2(double2 d) { + double2 x, x2, m; + double t; + int e; + + d = normalize_d(d); + e = ilogbp1(d.x * 0.7071); + m = scale_d(d, ldexpk(1, -e)); + + x = div_dd(add2_ds(m, -1), add2_ds(m, 1)); + x2 = squ_d(x); + + t = 0.134601987501262130076155; + t = mla(t, x2.x, 0.132248509032032670243288); + t = mla(t, x2.x, 0.153883458318096079652524); + t = mla(t, x2.x, 0.181817427573705403298686); + t = mla(t, x2.x, 0.222222231326187414840781); + t = mla(t, x2.x, 0.285714285651261412873718); + t = mla(t, x2.x, 0.400000000000222439910458); + t = mla(t, x2.x, 0.666666666666666371239645); + + return add2_dd(mul_ds(dd(0.693147180559945286226764, 2.319046813846299558417771e-17), e), + add2_dd(scale_d(x, 2), mul_ds(mul_dd(x2, x), t))); +} + +__inline double xasinh(double x) { + double y = xfabs(x); + double2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(y, y), 1)), y)); + y = d.x + d.y; + + y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; + y = mulsign(y, x); + y = xisnan(x) ? rtengine::RT_NAN : y; + + return y; +} + +__inline double xacosh(double x) { + double2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(x, x), -1)), x)); + double y = d.x + d.y; + + y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; + y = x == 1.0 ? 0.0 : y; + y = x < 1.0 ? rtengine::RT_NAN : y; + y = xisnan(x) ? rtengine::RT_NAN : y; + + return y; +} + +__inline double xatanh(double x) { + double y = xfabs(x); + double2 d = logk2(div_dd(add2_ss(1, y), add2_ss(1, -y))); + y = y > 1.0 ? rtengine::RT_NAN : (y == 1.0 ? rtengine::RT_INFINITY : (d.x + d.y) * 0.5); + + y = xisinf(x) || xisnan(y) ? rtengine::RT_NAN : y; + y = mulsign(y, x); + y = xisnan(x) ? rtengine::RT_NAN : y; + + return y; +} + +// + +__inline double xfma(double x, double y, double z) { + union { + double f; + long long int i; + } tmp; + + tmp.f = x; + tmp.i = (tmp.i + 0x4000000) & 0xfffffffff8000000LL; + double xh = tmp.f, xl = x - xh; + + tmp.f = y; + tmp.i = (tmp.i + 0x4000000) & 0xfffffffff8000000LL; + double yh = tmp.f, yl = y - yh; + + double h = x * y; + double l = xh * yh - h + xl * yh + xh * yl + xl * yl; + + double h2, l2, v; + + h2 = h + z; + v = h2 - h; + l2 = (h - (h2 - v)) + (z - v) + l; + + return h2 + l2; +} + +__inline double xsqrt(double d) { // max error : 0.5 ulp + double q = 1; + + if (d < 8.636168555094445E-78) { + d *= 1.157920892373162E77; + q = 2.9387358770557188E-39; + } + + // http://en.wikipedia.org/wiki/Fast_inverse_square_root + double x = longBitsToDouble(0x5fe6ec85e7de30da - (doubleToRawLongBits(d + 1e-320) >> 1)); + + x = x * (1.5 - 0.5 * d * x * x); + x = x * (1.5 - 0.5 * d * x * x); + x = x * (1.5 - 0.5 * d * x * x); + + // You can change xfma to fma if fma is correctly implemented + x = xfma(d * x, d * x, -d) * (x * -0.5) + d * x; + + return d == rtengine::RT_INFINITY ? rtengine::RT_INFINITY : x * q; +} + +__inline double xcbrt(double d) { // max error : 2 ulps + double x, y, q = 1.0; + int e, r; + + e = ilogbp1(d); + d = ldexpk(d, -e); + r = (e + 6144) % 3; + q = (r == 1) ? 1.2599210498948731647672106 : q; + q = (r == 2) ? 1.5874010519681994747517056 : q; + q = ldexpk(q, (e + 6144) / 3 - 2048); + + q = mulsign(q, d); + d = xfabs(d); + + x = -0.640245898480692909870982; + x = x * d + 2.96155103020039511818595; + x = x * d + -5.73353060922947843636166; + x = x * d + 6.03990368989458747961407; + x = x * d + -3.85841935510444988821632; + x = x * d + 2.2307275302496609725722; + + y = x * x; y = y * y; x -= (d * y - x) * (1.0 / 3.0); + y = d * x * x; + y = (y - (2.0 / 3.0) * y * (y * x - 1)) * q; + + return y; +} + +__inline double xexp2(double a) { + double u = expk(mul_ds(dd(0.69314718055994528623, 2.3190468138462995584e-17), a)); + if (xispinf(a)) u = rtengine::RT_INFINITY; + if (xisminf(a)) u = 0; + return u; +} + +__inline double xexp10(double a) { + double u = expk(mul_ds(dd(2.3025850929940459011, -2.1707562233822493508e-16), a)); + if (xispinf(a)) u = rtengine::RT_INFINITY; + if (xisminf(a)) u = 0; + return u; +} + +__inline double xexpm1(double a) { + double2 d = add2_ds(expk2(dd(a, 0)), -1.0); + double x = d.x + d.y; + if (xispinf(a)) x = rtengine::RT_INFINITY; + if (xisminf(a)) x = -1; + return x; +} + +__inline double xlog10(double a) { + double2 d = mul_dd(logk(a), dd(0.43429448190325176116, 6.6494347733425473126e-17)); + double x = d.x + d.y; + + if (xisinf(a)) x = rtengine::RT_INFINITY; + if (a < 0) x = rtengine::RT_NAN; + if (a == 0) x = -rtengine::RT_INFINITY; + + return x; +} + +__inline double xlog1p(double a) { + double2 d = logk2(add2_ss(a, 1)); + double x = d.x + d.y; + + if (xisinf(a)) x = rtengine::RT_INFINITY; + if (a < -1) x = rtengine::RT_NAN; + if (a == -1) x = -rtengine::RT_INFINITY; + + return x; +} + +/////////////////////////////////////////// + +#define PI4_Af 0.78515625f +#define PI4_Bf 0.00024127960205078125f +#define PI4_Cf 6.3329935073852539062e-07f +#define PI4_Df 4.9604681473525147339e-10f + +#define L2Uf 0.693145751953125f +#define L2Lf 1.428606765330187045e-06f + +#define R_LN2f 1.442695040888963407359924681001892137426645954152985934135449406931f + +__inline int32_t floatToRawIntBits(float d) { + union { + float f; + int32_t i; + } tmp; + tmp.f = d; + return tmp.i; +} + +__inline float intBitsToFloat(int32_t i) { + union { + float f; + int32_t i; + } tmp; + tmp.i = i; + return tmp.f; +} + +__inline float xfabsf(float x) { + return intBitsToFloat(0x7fffffffL & floatToRawIntBits(x)); +} + +__inline float mulsignf(float x, float y) { + return intBitsToFloat(floatToRawIntBits(x) ^ (floatToRawIntBits(y) & (1 << 31))); +} + +__inline float signf(float d) { return copysign(1, d); } +__inline float mlaf(float x, float y, float z) { return x * y + z; } + +__inline int xisnanf(float x) { return x != x; } +__inline int xisinff(float x) { return x == rtengine::RT_INFINITY_F || x == -rtengine::RT_INFINITY_F; } +__inline int xisminff(float x) { return x == -rtengine::RT_INFINITY_F; } +__inline int xispinff(float x) { return x == rtengine::RT_INFINITY_F; } + +__inline int ilogbp1f(float d) { + int m = d < 5.421010862427522E-20f; + d = m ? 1.8446744073709552E19f * d : d; + int q = (floatToRawIntBits(d) >> 23) & 0xff; + q = m ? q - (64 + 0x7e) : q - 0x7e; + return q; +} + +__inline float ldexpkf(float x, int q) { + float u; + int m; + m = q >> 31; + m = (((m + q) >> 6) - m) << 4; + q = q - (m << 2); + u = intBitsToFloat(((int32_t)(m + 0x7f)) << 23); + u = u * u; + x = x * u * u; + u = intBitsToFloat(((int32_t)(q + 0x7f)) << 23); + return x * u; +} + +__inline float xcbrtf(float d) { // max error : 2 ulps + float x, y, q = 1.0f; + int e, r; + + e = ilogbp1f(d); + d = ldexpkf(d, -e); + r = (e + 6144) % 3; + q = (r == 1) ? 1.2599210498948731647672106f : q; + q = (r == 2) ? 1.5874010519681994747517056f : q; + q = ldexpkf(q, (e + 6144) / 3 - 2048); + + q = mulsignf(q, d); + d = xfabsf(d); + + x = -0.601564466953277587890625f; + x = mlaf(x, d, 2.8208892345428466796875f); + x = mlaf(x, d, -5.532182216644287109375f); + x = mlaf(x, d, 5.898262500762939453125f); + x = mlaf(x, d, -3.8095417022705078125f); + x = mlaf(x, d, 2.2241256237030029296875f); + + y = d * x * x; + y = (y - (2.0f / 3.0f) * y * (y * x - 1.0f)) * q; + + return y; +} + +__inline float xsinf(float d) { + int q; + float u, s; + + q = rint(d * rtengine::RT_1_PI_F); + + d = mlaf(q, -PI4_Af*4, d); + d = mlaf(q, -PI4_Bf*4, d); + d = mlaf(q, -PI4_Cf*4, d); + d = mlaf(q, -PI4_Df*4, d); + + s = d * d; + + if ((q & 1) != 0) d = -d; + + u = 2.6083159809786593541503e-06f; + u = mlaf(u, s, -0.0001981069071916863322258f); + u = mlaf(u, s, 0.00833307858556509017944336f); + u = mlaf(u, s, -0.166666597127914428710938f); + + u = mlaf(s, u * d, d); + + return u; +} + +__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*rint(d * rtengine::RT_1_PI_F - 0.5f); + + d = mlaf(q, -PI4_Af*2, d); + d = mlaf(q, -PI4_Bf*2, d); + d = mlaf(q, -PI4_Cf*2, d); + d = mlaf(q, -PI4_Df*2, d); + + s = d * d; + + if ((q & 2) == 0) d = -d; + + u = 2.6083159809786593541503e-06f; + u = mlaf(u, s, -0.0001981069071916863322258f); + u = mlaf(u, s, 0.00833307858556509017944336f); + u = mlaf(u, s, -0.166666597127914428710938f); + + 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 = rint(d * rtengine::RT_2_PI_F); + + s = d; + + s = mlaf(q, -PI4_Af*2, s); + s = mlaf(q, -PI4_Bf*2, s); + s = mlaf(q, -PI4_Cf*2, s); + s = mlaf(q, -PI4_Df*2, s); + + t = s; + + s = s * s; + + u = -0.000195169282960705459117889f; + u = mlaf(u, s, 0.00833215750753879547119141f); + u = mlaf(u, s, -0.166666537523269653320312f); + u = u * s * t; + + r.x = t + u; + + u = -2.71811842367242206819355e-07f; + u = mlaf(u, s, 2.47990446951007470488548e-05f); + u = mlaf(u, s, -0.00138888787478208541870117f); + u = mlaf(u, s, 0.0416666641831398010253906f); + u = mlaf(u, s, -0.5f); + + r.y = u * s + 1; + + if ((q & 1) != 0) { s = r.y; r.y = r.x; r.x = s; } + if ((q & 2) != 0) { r.x = -r.x; } + if (((q+1) & 2) != 0) { r.y = -r.y; } + + 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 = rint(d * (float)(2 * rtengine::RT_1_PI)); + + x = d; + + x = mlaf(q, -PI4_Af*2, x); + x = mlaf(q, -PI4_Bf*2, x); + x = mlaf(q, -PI4_Cf*2, x); + x = mlaf(q, -PI4_Df*2, x); + + s = x * x; + + if ((q & 1) != 0) x = -x; + + u = 0.00927245803177356719970703f; + u = mlaf(u, s, 0.00331984995864331722259521f); + u = mlaf(u, s, 0.0242998078465461730957031f); + u = mlaf(u, s, 0.0534495301544666290283203f); + u = mlaf(u, s, 0.133383005857467651367188f); + u = mlaf(u, s, 0.333331853151321411132812f); + + u = mlaf(s, u * x, x); + + if ((q & 1) != 0) u = 1.0f / u; + + if (xisinff(d)) u = rtengine::RT_NAN_F; + + return u; +} + +__inline float xatanf(float s) { + float t, u; + int q = 0; + + if (s < 0) { s = -s; q = 2; } + if (s > 1) { s = 1.0f / s; q |= 1; } + + t = s * s; + + u = 0.00282363896258175373077393f; + u = mlaf(u, t, -0.0159569028764963150024414f); + u = mlaf(u, t, 0.0425049886107444763183594f); + u = mlaf(u, t, -0.0748900920152664184570312f); + u = mlaf(u, t, 0.106347933411598205566406f); + u = mlaf(u, t, -0.142027363181114196777344f); + u = mlaf(u, t, 0.199926957488059997558594f); + u = mlaf(u, t, -0.333331018686294555664062f); + + t = s + s * (t * u); + + if ((q & 1) != 0) t = 1.570796326794896557998982f - t; + if ((q & 2) != 0) t = -t; + + return t; +} + +__inline float atan2kf(float y, float x) { + float s, t, u; + float q = 0.f; + + if (x < 0) { x = -x; q = -2.f; } + if (y > x) { t = x; x = y; y = -t; q += 1.f; } + + s = y / x; + t = s * s; + + u = 0.00282363896258175373077393f; + u = mlaf(u, t, -0.0159569028764963150024414f); + u = mlaf(u, t, 0.0425049886107444763183594f); + u = mlaf(u, t, -0.0748900920152664184570312f); + u = mlaf(u, t, 0.106347933411598205566406f); + u = mlaf(u, t, -0.142027363181114196777344f); + u = mlaf(u, t, 0.199926957488059997558594f); + u = mlaf(u, t, -0.333331018686294555664062f); + + t = u * t; + t = mlaf(t,s,s); + return mlaf(q,(float)(rtengine::RT_PI_F_2),t); +} + +__inline float xatan2f(float y, float x) { + float r = atan2kf(xfabsf(y), x); + + r = mulsignf(r, x); + if (xisinff(x) || x == 0) r = rtengine::RT_PI_F/2 - (xisinff(x) ? (signf(x) * (float)(rtengine::RT_PI_F*.5f)) : 0); + if (xisinff(y) ) r = rtengine::RT_PI_F/2 - (xisinff(x) ? (signf(x) * (float)(rtengine::RT_PI_F*.25f)) : 0); + if ( y == 0) r = (signf(x) == -1 ? rtengine::RT_PI_F : 0); + + return xisnanf(x) || xisnanf(y) ? rtengine::RT_NAN_F : mulsignf(r, y); +} + +__inline float xasinf(float d) { + return mulsignf(atan2kf(fabsf(d), sqrtf((1.0f+d)*(1.0f-d))), d); +} + +__inline float xacosf(float d) { + return mulsignf(atan2kf(sqrtf((1.0f+d)*(1.0f-d)), fabsf(d)), d) + (d < 0 ? (float)rtengine::RT_PI : 0.0f); +} + +__inline float xlogf(float d) { + float x, x2, t, m; + int e; + + e = ilogbp1f(d * 0.7071f); + m = ldexpkf(d, -e); + + x = (m-1.0f) / (m+1.0f); + x2 = x * x; + + t = 0.2371599674224853515625f; + t = mlaf(t, x2, 0.285279005765914916992188f); + t = mlaf(t, x2, 0.400005519390106201171875f); + t = mlaf(t, x2, 0.666666567325592041015625f); + t = mlaf(t, x2, 2.0f); + + x = x * t + 0.693147180559945286226764f * e; + + if (xisinff(d)) x = rtengine::RT_INFINITY_F; + if (d < 0) x = rtengine::RT_NAN_F; + if (d == 0) x = -rtengine::RT_INFINITY_F; + + return x; +} + +__inline float xexpf(float d) { + if(d<=-104.0f) return 0.0f; + + int q = rint(d * R_LN2f); + float s, u; + + s = mlaf(q, -L2Uf, d); + s = mlaf(q, -L2Lf, s); + + u = 0.00136324646882712841033936f; + u = mlaf(u, s, 0.00836596917361021041870117f); + u = mlaf(u, s, 0.0416710823774337768554688f); + u = mlaf(u, s, 0.166665524244308471679688f); + u = mlaf(u, s, 0.499999850988388061523438f); + + u = mlaf( s, mlaf(s,u,1.f),1.f); + return ldexpkf(u, q); + +} + +__inline float xmul2f(float d) { + union { + float floatval; + int intval; + } uflint; + uflint.floatval = d; + if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing + uflint.intval += 1 << 23; // add 1 to the exponent + } + return uflint.floatval; +} + +__inline float xdiv2f(float d) { + union { + float floatval; + int intval; + } uflint; + uflint.floatval = d; + if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing + uflint.intval -= 1 << 23; // sub 1 from the exponent + } + return uflint.floatval; +} + +__inline float xdivf( float d, int n){ + union { + float floatval; + int intval; + } uflint; + uflint.floatval = d; + if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing + uflint.intval -= n << 23; // add n to the exponent + } + return uflint.floatval; +} + +__inline float xlin2log(float x, float base) +{ + constexpr float one(1); + return xlogf(x * (base - one) + one) / xlogf(base); +} + +__inline void xlin2log(float *x, float factor, float base, int w) +{ + constexpr float one(1); + base = 1.f / xlogf(base); + for (int i = 0; i < w; ++i) { + x[i] = xlogf(x[i] * factor * (base - one) + one) * base; + } +} + +__inline float xlog2lin(float x, float base) +{ + constexpr float one(1); + return (pow_F(base, x) - one) / (base - one); +} + +#endif From 47d6ee44f8532b4a96736871fc53ebffd61e245c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 1 Nov 2018 22:31:12 +0100 Subject: [PATCH 067/348] Removed accidently committed file --- rtengine/sleef.c.save-failed | 1288 ---------------------------------- 1 file changed, 1288 deletions(-) delete mode 100644 rtengine/sleef.c.save-failed diff --git a/rtengine/sleef.c.save-failed b/rtengine/sleef.c.save-failed deleted file mode 100644 index 0cde64be6..000000000 --- a/rtengine/sleef.c.save-failed +++ /dev/null @@ -1,1288 +0,0 @@ -//////////////////////////////////////////////////////////////// -// -// this code was taken from http://shibatch.sourceforge.net/ -// Many thanks to the author of original version: Naoki Shibata -// -// This version contains modifications made by Ingo Weyrich -// -//////////////////////////////////////////////////////////////// - -#ifndef _SLEEFC_ -#define _SLEEFC_ - -#include -#include -#include "rt_math.h" -#include "opthelper.h" - -#define PI4_A .7853981554508209228515625 -#define PI4_B .794662735614792836713604629039764404296875e-8 -#define PI4_C .306161699786838294306516483068750264552437361480769e-16 -#define M_4_PI 1.273239544735162542821171882678754627704620361328125 - -#define L2U .69314718055966295651160180568695068359375 -#define L2L .28235290563031577122588448175013436025525412068e-12 -#define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 -#define pow_F(a,b) (xexpf(b*xlogf(a))) - -__inline int64_t doubleToRawLongBits(double d) { - union { - double f; - int64_t i; - } tmp; - tmp.f = d; - return tmp.i; -} - -__inline double longBitsToDouble(int64_t i) { - union { - double f; - int64_t i; - } tmp; - tmp.i = i; - return tmp.f; -} - -__inline double xfabs(double x) { - return longBitsToDouble(0x7fffffffffffffffLL & doubleToRawLongBits(x)); -} - -__inline double mulsign(double x, double y) { - return longBitsToDouble(doubleToRawLongBits(x) ^ (doubleToRawLongBits(y) & (1LL << 63))); -} - -__inline double sign(double d) { return mulsign(1, d); } -__inline double mla(double x, double y, double z) { return x * y + z; } -__inline double xrint(double x) { return x < 0 ? (int)(x - 0.5) : (int)(x + 0.5); } - -__inline int xisnan(double x) { return x != x; } -__inline int xisinf(double x) { return x == rtengine::RT_INFINITY || x == -rtengine::RT_INFINITY; } -__inline int xisminf(double x) { return x == -rtengine::RT_INFINITY; } -__inline int xispinf(double x) { return x == rtengine::RT_INFINITY; } - -__inline double ldexpk(double x, int q) { - double u; - int m; - m = q >> 31; - m = (((m + q) >> 9) - m) << 7; - q = q - (m << 2); - u = longBitsToDouble(((int64_t)(m + 0x3ff)) << 52); - double u2 = u*u; - u2 = u2 * u2; - x = x * u2; - u = longBitsToDouble(((int64_t)(q + 0x3ff)) << 52); - return x * u; -} - -__inline double xldexp(double x, int q) { return ldexpk(x, q); } - -__inline int ilogbp1(double d) { - int m = d < 4.9090934652977266E-91; - d = m ? 2.037035976334486E90 * d : d; - int q = (doubleToRawLongBits(d) >> 52) & 0x7ff; - q = m ? q - (300 + 0x03fe) : q - 0x03fe; - return q; -} - -__inline int xilogb(double d) { - int e = ilogbp1(xfabs(d)) - 1; - e = d == 0 ? (-2147483647 - 1) : e; - e = d == rtengine::RT_INFINITY || d == -rtengine::RT_INFINITY ? 2147483647 : e; - return e; -} - -__inline double upper(double d) { - return longBitsToDouble(doubleToRawLongBits(d) & 0xfffffffff8000000LL); -} - -typedef struct { - double x, y; -} double2; - -typedef struct { - float x, y; -} float2; - -__inline double2 dd(double h, double l) { - double2 ret; - ret.x = h; ret.y = l; - return ret; -} - -__inline double2 normalize_d(double2 t) { - double2 s; - - s.x = t.x + t.y; - s.y = t.x - s.x + t.y; - - return s; -} - -__inline double2 scale_d(double2 d, double s) { - double2 r; - - r.x = d.x * s; - r.y = d.y * s; - - return r; -} - -__inline double2 add2_ss(double x, double y) { - double2 r; - - r.x = x + y; - double v = r.x - x; - r.y = (x - (r.x - v)) + (y - v); - - return r; -} - -__inline double2 add_ds(double2 x, double y) { - // |x| >= |y| - - double2 r; - - assert(xisnan(x.x) || xisnan(y) || xfabs(x.x) >= xfabs(y)); - - r.x = x.x + y; - r.y = x.x - r.x + y + x.y; - - return r; -} - -__inline double2 add2_ds(double2 x, double y) { - // |x| >= |y| - - double2 r; - - r.x = x.x + y; - double v = r.x - x.x; - r.y = (x.x - (r.x - v)) + (y - v); - r.y += x.y; - - return r; -} - -__inline double2 add_sd(double x, double2 y) { - // |x| >= |y| - - double2 r; - - assert(xisnan(x) || xisnan(y.x) || xfabs(x) >= xfabs(y.x)); - - r.x = x + y.x; - r.y = x - r.x + y.x + y.y; - - return r; -} - -__inline double2 add_dd(double2 x, double2 y) { - // |x| >= |y| - - double2 r; - - assert(xisnan(x.x) || xisnan(y.x) || xfabs(x.x) >= xfabs(y.x)); - - r.x = x.x + y.x; - r.y = x.x - r.x + y.x + x.y + y.y; - - return r; -} - -__inline double2 add2_dd(double2 x, double2 y) { - double2 r; - - r.x = x.x + y.x; - double v = r.x - x.x; - r.y = (x.x - (r.x - v)) + (y.x - v); - r.y += x.y + y.y; - - return r; -} - -__inline double2 div_dd(double2 n, double2 d) { - double t = 1.0 / d.x; - double dh = upper(d.x), dl = d.x - dh; - double th = upper(t ), tl = t - th; - double nhh = upper(n.x), nhl = n.x - nhh; - - double2 q; - - q.x = n.x * t; - - double u = -q.x + nhh * th + nhh * tl + nhl * th + nhl * tl + - q.x * (1 - dh * th - dh * tl - dl * th - dl * tl); - - q.y = t * (n.y - q.x * d.y) + u; - - return q; -} - -__inline double2 mul_ss(double x, double y) { - double xh = upper(x), xl = x - xh; - double yh = upper(y), yl = y - yh; - double2 r; - - r.x = x * y; - r.y = xh * yh - r.x + xl * yh + xh * yl + xl * yl; - - return r; -} - -__inline double2 mul_ds(double2 x, double y) { - double xh = upper(x.x), xl = x.x - xh; - double yh = upper(y ), yl = y - yh; - double2 r; - - r.x = x.x * y; - r.y = xh * yh - r.x + xl * yh + xh * yl + xl * yl + x.y * y; - - return r; -} - -__inline double2 mul_dd(double2 x, double2 y) { - double xh = upper(x.x), xl = x.x - xh; - double yh = upper(y.x), yl = y.x - yh; - double2 r; - - r.x = x.x * y.x; - r.y = xh * yh - r.x + xl * yh + xh * yl + xl * yl + x.x * y.y + x.y * y.x; - - return r; -} - -__inline double2 squ_d(double2 x) { - double xh = upper(x.x), xl = x.x - xh; - double2 r; - - r.x = x.x * x.x; - r.y = xh * xh - r.x + (xh + xh) * xl + xl * xl + x.x * (x.y + x.y); - - return r; -} - -__inline double2 rec_s(double d) { - double t = 1.0 / d; - double dh = upper(d), dl = d - dh; - double th = upper(t), tl = t - th; - double2 q; - - q.x = t; - q.y = t * (1 - dh * th - dh * tl - dl * th - dl * tl); - - return q; -} - -__inline double2 sqrt_d(double2 d) { - double t = sqrt(d.x + d.y); - return scale_d(mul_dd(add2_dd(d, mul_ss(t, t)), rec_s(t)), 0.5); -} - -__inline double atan2k(double y, double x) { - double s, t, u; - int q = 0; - - if (x < 0) { x = -x; q = -2; } - if (y > x) { t = x; x = y; y = -t; q += 1; } - - s = y / x; - t = s * s; - - u = -1.88796008463073496563746e-05; - u = u * t + (0.000209850076645816976906797); - u = u * t + (-0.00110611831486672482563471); - u = u * t + (0.00370026744188713119232403); - u = u * t + (-0.00889896195887655491740809); - u = u * t + (0.016599329773529201970117); - u = u * t + (-0.0254517624932312641616861); - u = u * t + (0.0337852580001353069993897); - u = u * t + (-0.0407629191276836500001934); - u = u * t + (0.0466667150077840625632675); - u = u * t + (-0.0523674852303482457616113); - u = u * t + (0.0587666392926673580854313); - u = u * t + (-0.0666573579361080525984562); - u = u * t + (0.0769219538311769618355029); - u = u * t + (-0.090908995008245008229153); - u = u * t + (0.111111105648261418443745); - u = u * t + (-0.14285714266771329383765); - u = u * t + (0.199999999996591265594148); - u = u * t + (-0.333333333333311110369124); - - t = u * t * s + s; - t = q * (rtengine::RT_PI_2) + t; - - return t; -} - -__inline double xatan2(double y, double x) { - double r = atan2k(xfabs(y), x); - - r = mulsign(r, x); - if (xisinf(x) || x == 0) r = rtengine::RT_PI_2 - (xisinf(x) ? (sign(x) * (rtengine::RT_PI_2)) : 0); - if (xisinf(y) ) r = rtengine::RT_PI_2 - (xisinf(x) ? (sign(x) * (rtengine::RT_PI*1/4)) : 0); - if ( y == 0) r = (sign(x) == -1 ? rtengine::RT_PI : 0); - - return xisnan(x) || xisnan(y) ? rtengine::RT_NAN : mulsign(r, y); -} - -__inline double xasin(double d) { - return mulsign(atan2k(xfabs(d), sqrt((1+d)*(1-d))), d); -} - -__inline double xacos(double d) { - return mulsign(atan2k(sqrt((1+d)*(1-d)), xfabs(d)), d) + (d < 0 ? rtengine::RT_PI : 0); -} - -__inline double xatan(double s) { - double t, u; - int q = 0; - - if (s < 0) { s = -s; q = 2; } - if (s > 1) { s = 1.0 / s; q |= 1; } - - t = s * s; - - u = -1.88796008463073496563746e-05; - u = u * t + (0.000209850076645816976906797); - u = u * t + (-0.00110611831486672482563471); - u = u * t + (0.00370026744188713119232403); - u = u * t + (-0.00889896195887655491740809); - u = u * t + (0.016599329773529201970117); - u = u * t + (-0.0254517624932312641616861); - u = u * t + (0.0337852580001353069993897); - u = u * t + (-0.0407629191276836500001934); - u = u * t + (0.0466667150077840625632675); - u = u * t + (-0.0523674852303482457616113); - u = u * t + (0.0587666392926673580854313); - u = u * t + (-0.0666573579361080525984562); - u = u * t + (0.0769219538311769618355029); - u = u * t + (-0.090908995008245008229153); - u = u * t + (0.111111105648261418443745); - u = u * t + (-0.14285714266771329383765); - u = u * t + (0.199999999996591265594148); - u = u * t + (-0.333333333333311110369124); - - t = s + s * (t * u); - - if ((q & 1) != 0) t = 1.570796326794896557998982 - t; - if ((q & 2) != 0) t = -t; - - return t; -} - -__inline double xsin(double d) { - int q; - double u, s; - - q = (int)xrint(d * rtengine::RT_1_PI); - - d = mla(q, -PI4_A*4, d); - d = mla(q, -PI4_B*4, d); - d = mla(q, -PI4_C*4, d); - - s = d * d; - - if ((q & 1) != 0) d = -d; - - u = -7.97255955009037868891952e-18; - u = mla(u, s, 2.81009972710863200091251e-15); - u = mla(u, s, -7.64712219118158833288484e-13); - u = mla(u, s, 1.60590430605664501629054e-10); - u = mla(u, s, -2.50521083763502045810755e-08); - u = mla(u, s, 2.75573192239198747630416e-06); - u = mla(u, s, -0.000198412698412696162806809); - u = mla(u, s, 0.00833333333333332974823815); - u = mla(u, s, -0.166666666666666657414808); - - u = mla(s, u * d, d); - - return u; -} - -__inline double xcos(double d) { - int q; - double u, s; - - q = 1 + 2*(int)xrint(d * rtengine::RT_1_PI - 0.5); - - d = mla(q, -PI4_A*2, d); - d = mla(q, -PI4_B*2, d); - d = mla(q, -PI4_C*2, d); - - s = d * d; - - if ((q & 2) == 0) d = -d; - - u = -7.97255955009037868891952e-18; - u = mla(u, s, 2.81009972710863200091251e-15); - u = mla(u, s, -7.64712219118158833288484e-13); - u = mla(u, s, 1.60590430605664501629054e-10); - u = mla(u, s, -2.50521083763502045810755e-08); - u = mla(u, s, 2.75573192239198747630416e-06); - u = mla(u, s, -0.000198412698412696162806809); - u = mla(u, s, 0.00833333333333332974823815); - u = mla(u, s, -0.166666666666666657414808); - - u = mla(s, u * d, d); - - return u; -} - -__inline double2 xsincos(double d) { - int q; - double u, s, t; - double2 r; - - q = (int)xrint(d * (2 * rtengine::RT_1_PI)); - - s = d; - - s = mla(-q, PI4_A*2, s); - s = mla(-q, PI4_B*2, s); - s = mla(-q, PI4_C*2, s); - - t = s; - - s = s * s; - - u = 1.58938307283228937328511e-10; - u = mla(u, s, -2.50506943502539773349318e-08); - u = mla(u, s, 2.75573131776846360512547e-06); - u = mla(u, s, -0.000198412698278911770864914); - u = mla(u, s, 0.0083333333333191845961746); - u = mla(u, s, -0.166666666666666130709393); - u = u * s * t; - - r.x = t + u; - - u = -1.13615350239097429531523e-11; - u = mla(u, s, 2.08757471207040055479366e-09); - u = mla(u, s, -2.75573144028847567498567e-07); - u = mla(u, s, 2.48015872890001867311915e-05); - u = mla(u, s, -0.00138888888888714019282329); - u = mla(u, s, 0.0416666666666665519592062); - u = mla(u, s, -0.5); - - r.y = u * s + 1; - - if ((q & 1) != 0) { s = r.y; r.y = r.x; r.x = s; } - if ((q & 2) != 0) { r.x = -r.x; } - if (((q+1) & 2) != 0) { r.y = -r.y; } - - if (xisinf(d)) { r.x = r.y = rtengine::RT_NAN; } - - return r; -} - -__inline double xtan(double d) { - int q; - double u, s, x; - - q = (int)xrint(d * (2 * rtengine::RT_1_PI)); - - x = mla(q, -PI4_A*2, d); - x = mla(q, -PI4_B*2, x); - x = mla(q, -PI4_C*2, x); - - s = x * x; - - if ((q & 1) != 0) x = -x; - - u = 1.01419718511083373224408e-05; - u = mla(u, s, -2.59519791585924697698614e-05); - u = mla(u, s, 5.23388081915899855325186e-05); - u = mla(u, s, -3.05033014433946488225616e-05); - u = mla(u, s, 7.14707504084242744267497e-05); - u = mla(u, s, 8.09674518280159187045078e-05); - u = mla(u, s, 0.000244884931879331847054404); - u = mla(u, s, 0.000588505168743587154904506); - u = mla(u, s, 0.00145612788922812427978848); - u = mla(u, s, 0.00359208743836906619142924); - u = mla(u, s, 0.00886323944362401618113356); - u = mla(u, s, 0.0218694882853846389592078); - u = mla(u, s, 0.0539682539781298417636002); - u = mla(u, s, 0.133333333333125941821962); - u = mla(u, s, 0.333333333333334980164153); - - u = mla(s, u * x, x); - - if ((q & 1) != 0) u = 1.0 / u; - - if (xisinf(d)) u = rtengine::RT_NAN; - - return u; -} - -__inline double xlog(double d) { - double x, x2, t, m; - int e; - - e = ilogbp1(d * 0.7071); - m = ldexpk(d, -e); - - x = (m-1) / (m+1); - x2 = x * x; - - t = 0.148197055177935105296783; - t = mla(t, x2, 0.153108178020442575739679); - t = mla(t, x2, 0.181837339521549679055568); - t = mla(t, x2, 0.22222194152736701733275); - t = mla(t, x2, 0.285714288030134544449368); - t = mla(t, x2, 0.399999999989941956712869); - t = mla(t, x2, 0.666666666666685503450651); - t = mla(t, x2, 2); - - x = x * t + 0.693147180559945286226764 * e; - - if (xisinf(d)) x = rtengine::RT_INFINITY; - if (d < 0) x = rtengine::RT_NAN; - if (d == 0) x = -rtengine::RT_INFINITY; - - return x; -} - -__inline double xexp(double d) { - int q = (int)xrint(d * R_LN2); - double s, u; - - s = mla(q, -L2U, d); - s = mla(q, -L2L, s); - - u = 2.08860621107283687536341e-09; - u = mla(u, s, 2.51112930892876518610661e-08); - u = mla(u, s, 2.75573911234900471893338e-07); - u = mla(u, s, 2.75572362911928827629423e-06); - u = mla(u, s, 2.4801587159235472998791e-05); - u = mla(u, s, 0.000198412698960509205564975); - u = mla(u, s, 0.00138888888889774492207962); - u = mla(u, s, 0.00833333333331652721664984); - u = mla(u, s, 0.0416666666666665047591422); - u = mla(u, s, 0.166666666666666851703837); - u = mla(u, s, 0.5); - - u = s * s * u + s + 1; - u = ldexpk(u, q); - - if (xisminf(d)) u = 0; - - return u; -} - -__inline double2 logk(double d) { - double2 x, x2; - double m, t; - int e; - - e = ilogbp1(d * 0.7071); - m = ldexpk(d, -e); - - x = div_dd(add2_ss(-1, m), add2_ss(1, m)); - x2 = squ_d(x); - - t = 0.134601987501262130076155; - t = mla(t, x2.x, 0.132248509032032670243288); - t = mla(t, x2.x, 0.153883458318096079652524); - t = mla(t, x2.x, 0.181817427573705403298686); - t = mla(t, x2.x, 0.222222231326187414840781); - t = mla(t, x2.x, 0.285714285651261412873718); - t = mla(t, x2.x, 0.400000000000222439910458); - t = mla(t, x2.x, 0.666666666666666371239645); - - return add2_dd(mul_ds(dd(0.693147180559945286226764, 2.319046813846299558417771e-17), e), - add2_dd(scale_d(x, 2), mul_ds(mul_dd(x2, x), t))); -} - -__inline double expk(double2 d) { - int q = (int)rint((d.x + d.y) * R_LN2); - double2 s, t; - double u; - - s = add2_ds(d, q * -L2U); - s = add2_ds(s, q * -L2L); - - s = normalize_d(s); - - u = 2.51069683420950419527139e-08; - u = mla(u, s.x, 2.76286166770270649116855e-07); - u = mla(u, s.x, 2.75572496725023574143864e-06); - u = mla(u, s.x, 2.48014973989819794114153e-05); - u = mla(u, s.x, 0.000198412698809069797676111); - u = mla(u, s.x, 0.0013888888939977128960529); - u = mla(u, s.x, 0.00833333333332371417601081); - u = mla(u, s.x, 0.0416666666665409524128449); - u = mla(u, s.x, 0.166666666666666740681535); - u = mla(u, s.x, 0.500000000000000999200722); - - t = add_dd(s, mul_ds(squ_d(s), u)); - - t = add_sd(1, t); - return ldexpk(t.x + t.y, q); -} - -__inline double xpow(double x, double y) { - int yisint = (int)y == y; - int yisodd = (1 & (int)y) != 0 && yisint; - - double result = expk(mul_ds(logk(xfabs(x)), y)); - - result = xisnan(result) ? rtengine::RT_INFINITY : result; - result *= (x >= 0 ? 1 : (!yisint ? rtengine::RT_NAN : (yisodd ? -1 : 1))); - - double efx = mulsign(xfabs(x) - 1, y); - if (xisinf(y)) result = efx < 0 ? 0.0 : (efx == 0 ? 1.0 : rtengine::RT_INFINITY); - if (xisinf(x) || x == 0) result = (yisodd ? sign(x) : 1) * ((x == 0 ? -y : y) < 0 ? 0 : rtengine::RT_INFINITY); - if (xisnan(x) || xisnan(y)) result = rtengine::RT_NAN; - if (y == 0 || x == 1) result = 1; - - return result; -} - -__inline double2 expk2(double2 d) { - int q = (int)rint((d.x + d.y) * R_LN2); - double2 s, t; - double u; - - s = add2_ds(d, q * -L2U); - s = add2_ds(s, q * -L2L); - - s = normalize_d(s); - - u = 2.51069683420950419527139e-08; - u = mla(u, s.x, 2.76286166770270649116855e-07); - u = mla(u, s.x, 2.75572496725023574143864e-06); - u = mla(u, s.x, 2.48014973989819794114153e-05); - u = mla(u, s.x, 0.000198412698809069797676111); - u = mla(u, s.x, 0.0013888888939977128960529); - u = mla(u, s.x, 0.00833333333332371417601081); - u = mla(u, s.x, 0.0416666666665409524128449); - u = mla(u, s.x, 0.166666666666666740681535); - u = mla(u, s.x, 0.500000000000000999200722); - - t = add_dd(s, mul_ds(squ_d(s), u)); - - t = add_sd(1, t); - return dd(ldexpk(t.x, q), ldexpk(t.y, q)); -} - -__inline double xsinh(double x) { - double y = xfabs(x); - double2 d = expk2(dd(y, 0)); - d = add2_dd(d, div_dd(dd(-1, 0), d)); - y = (d.x + d.y) * 0.5; - - y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; - y = mulsign(y, x); - y = xisnan(x) ? rtengine::RT_NAN : y; - - return y; -} - -__inline double xcosh(double x) { - double2 d = expk2(dd(x, 0)); - d = add2_dd(d, div_dd(dd(1, 0), d)); - double y = (d.x + d.y) * 0.5; - - y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; - y = xisnan(x) ? rtengine::RT_NAN : y; - - return y; -} - -__inline double xtanh(double x) { - double y = xfabs(x); - double2 d = expk2(dd(y, 0)); - double2 e = div_dd(dd(1, 0), d); - d = div_dd(add2_dd(d, scale_d(e, -1)), add2_dd(d, e)); - y = d.x + d.y; - - y = xisinf(x) || xisnan(y) ? 1.0 : y; - y = mulsign(y, x); - y = xisnan(x) ? rtengine::RT_NAN : y; - - return y; -} - -__inline double2 logk2(double2 d) { - double2 x, x2, m; - double t; - int e; - - d = normalize_d(d); - e = ilogbp1(d.x * 0.7071); - m = scale_d(d, ldexpk(1, -e)); - - x = div_dd(add2_ds(m, -1), add2_ds(m, 1)); - x2 = squ_d(x); - - t = 0.134601987501262130076155; - t = mla(t, x2.x, 0.132248509032032670243288); - t = mla(t, x2.x, 0.153883458318096079652524); - t = mla(t, x2.x, 0.181817427573705403298686); - t = mla(t, x2.x, 0.222222231326187414840781); - t = mla(t, x2.x, 0.285714285651261412873718); - t = mla(t, x2.x, 0.400000000000222439910458); - t = mla(t, x2.x, 0.666666666666666371239645); - - return add2_dd(mul_ds(dd(0.693147180559945286226764, 2.319046813846299558417771e-17), e), - add2_dd(scale_d(x, 2), mul_ds(mul_dd(x2, x), t))); -} - -__inline double xasinh(double x) { - double y = xfabs(x); - double2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(y, y), 1)), y)); - y = d.x + d.y; - - y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; - y = mulsign(y, x); - y = xisnan(x) ? rtengine::RT_NAN : y; - - return y; -} - -__inline double xacosh(double x) { - double2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(x, x), -1)), x)); - double y = d.x + d.y; - - y = xisinf(x) || xisnan(y) ? rtengine::RT_INFINITY : y; - y = x == 1.0 ? 0.0 : y; - y = x < 1.0 ? rtengine::RT_NAN : y; - y = xisnan(x) ? rtengine::RT_NAN : y; - - return y; -} - -__inline double xatanh(double x) { - double y = xfabs(x); - double2 d = logk2(div_dd(add2_ss(1, y), add2_ss(1, -y))); - y = y > 1.0 ? rtengine::RT_NAN : (y == 1.0 ? rtengine::RT_INFINITY : (d.x + d.y) * 0.5); - - y = xisinf(x) || xisnan(y) ? rtengine::RT_NAN : y; - y = mulsign(y, x); - y = xisnan(x) ? rtengine::RT_NAN : y; - - return y; -} - -// - -__inline double xfma(double x, double y, double z) { - union { - double f; - long long int i; - } tmp; - - tmp.f = x; - tmp.i = (tmp.i + 0x4000000) & 0xfffffffff8000000LL; - double xh = tmp.f, xl = x - xh; - - tmp.f = y; - tmp.i = (tmp.i + 0x4000000) & 0xfffffffff8000000LL; - double yh = tmp.f, yl = y - yh; - - double h = x * y; - double l = xh * yh - h + xl * yh + xh * yl + xl * yl; - - double h2, l2, v; - - h2 = h + z; - v = h2 - h; - l2 = (h - (h2 - v)) + (z - v) + l; - - return h2 + l2; -} - -__inline double xsqrt(double d) { // max error : 0.5 ulp - double q = 1; - - if (d < 8.636168555094445E-78) { - d *= 1.157920892373162E77; - q = 2.9387358770557188E-39; - } - - // http://en.wikipedia.org/wiki/Fast_inverse_square_root - double x = longBitsToDouble(0x5fe6ec85e7de30da - (doubleToRawLongBits(d + 1e-320) >> 1)); - - x = x * (1.5 - 0.5 * d * x * x); - x = x * (1.5 - 0.5 * d * x * x); - x = x * (1.5 - 0.5 * d * x * x); - - // You can change xfma to fma if fma is correctly implemented - x = xfma(d * x, d * x, -d) * (x * -0.5) + d * x; - - return d == rtengine::RT_INFINITY ? rtengine::RT_INFINITY : x * q; -} - -__inline double xcbrt(double d) { // max error : 2 ulps - double x, y, q = 1.0; - int e, r; - - e = ilogbp1(d); - d = ldexpk(d, -e); - r = (e + 6144) % 3; - q = (r == 1) ? 1.2599210498948731647672106 : q; - q = (r == 2) ? 1.5874010519681994747517056 : q; - q = ldexpk(q, (e + 6144) / 3 - 2048); - - q = mulsign(q, d); - d = xfabs(d); - - x = -0.640245898480692909870982; - x = x * d + 2.96155103020039511818595; - x = x * d + -5.73353060922947843636166; - x = x * d + 6.03990368989458747961407; - x = x * d + -3.85841935510444988821632; - x = x * d + 2.2307275302496609725722; - - y = x * x; y = y * y; x -= (d * y - x) * (1.0 / 3.0); - y = d * x * x; - y = (y - (2.0 / 3.0) * y * (y * x - 1)) * q; - - return y; -} - -__inline double xexp2(double a) { - double u = expk(mul_ds(dd(0.69314718055994528623, 2.3190468138462995584e-17), a)); - if (xispinf(a)) u = rtengine::RT_INFINITY; - if (xisminf(a)) u = 0; - return u; -} - -__inline double xexp10(double a) { - double u = expk(mul_ds(dd(2.3025850929940459011, -2.1707562233822493508e-16), a)); - if (xispinf(a)) u = rtengine::RT_INFINITY; - if (xisminf(a)) u = 0; - return u; -} - -__inline double xexpm1(double a) { - double2 d = add2_ds(expk2(dd(a, 0)), -1.0); - double x = d.x + d.y; - if (xispinf(a)) x = rtengine::RT_INFINITY; - if (xisminf(a)) x = -1; - return x; -} - -__inline double xlog10(double a) { - double2 d = mul_dd(logk(a), dd(0.43429448190325176116, 6.6494347733425473126e-17)); - double x = d.x + d.y; - - if (xisinf(a)) x = rtengine::RT_INFINITY; - if (a < 0) x = rtengine::RT_NAN; - if (a == 0) x = -rtengine::RT_INFINITY; - - return x; -} - -__inline double xlog1p(double a) { - double2 d = logk2(add2_ss(a, 1)); - double x = d.x + d.y; - - if (xisinf(a)) x = rtengine::RT_INFINITY; - if (a < -1) x = rtengine::RT_NAN; - if (a == -1) x = -rtengine::RT_INFINITY; - - return x; -} - -/////////////////////////////////////////// - -#define PI4_Af 0.78515625f -#define PI4_Bf 0.00024127960205078125f -#define PI4_Cf 6.3329935073852539062e-07f -#define PI4_Df 4.9604681473525147339e-10f - -#define L2Uf 0.693145751953125f -#define L2Lf 1.428606765330187045e-06f - -#define R_LN2f 1.442695040888963407359924681001892137426645954152985934135449406931f - -__inline int32_t floatToRawIntBits(float d) { - union { - float f; - int32_t i; - } tmp; - tmp.f = d; - return tmp.i; -} - -__inline float intBitsToFloat(int32_t i) { - union { - float f; - int32_t i; - } tmp; - tmp.i = i; - return tmp.f; -} - -__inline float xfabsf(float x) { - return intBitsToFloat(0x7fffffffL & floatToRawIntBits(x)); -} - -__inline float mulsignf(float x, float y) { - return intBitsToFloat(floatToRawIntBits(x) ^ (floatToRawIntBits(y) & (1 << 31))); -} - -__inline float signf(float d) { return copysign(1, d); } -__inline float mlaf(float x, float y, float z) { return x * y + z; } - -__inline int xisnanf(float x) { return x != x; } -__inline int xisinff(float x) { return x == rtengine::RT_INFINITY_F || x == -rtengine::RT_INFINITY_F; } -__inline int xisminff(float x) { return x == -rtengine::RT_INFINITY_F; } -__inline int xispinff(float x) { return x == rtengine::RT_INFINITY_F; } - -__inline int ilogbp1f(float d) { - int m = d < 5.421010862427522E-20f; - d = m ? 1.8446744073709552E19f * d : d; - int q = (floatToRawIntBits(d) >> 23) & 0xff; - q = m ? q - (64 + 0x7e) : q - 0x7e; - return q; -} - -__inline float ldexpkf(float x, int q) { - float u; - int m; - m = q >> 31; - m = (((m + q) >> 6) - m) << 4; - q = q - (m << 2); - u = intBitsToFloat(((int32_t)(m + 0x7f)) << 23); - u = u * u; - x = x * u * u; - u = intBitsToFloat(((int32_t)(q + 0x7f)) << 23); - return x * u; -} - -__inline float xcbrtf(float d) { // max error : 2 ulps - float x, y, q = 1.0f; - int e, r; - - e = ilogbp1f(d); - d = ldexpkf(d, -e); - r = (e + 6144) % 3; - q = (r == 1) ? 1.2599210498948731647672106f : q; - q = (r == 2) ? 1.5874010519681994747517056f : q; - q = ldexpkf(q, (e + 6144) / 3 - 2048); - - q = mulsignf(q, d); - d = xfabsf(d); - - x = -0.601564466953277587890625f; - x = mlaf(x, d, 2.8208892345428466796875f); - x = mlaf(x, d, -5.532182216644287109375f); - x = mlaf(x, d, 5.898262500762939453125f); - x = mlaf(x, d, -3.8095417022705078125f); - x = mlaf(x, d, 2.2241256237030029296875f); - - y = d * x * x; - y = (y - (2.0f / 3.0f) * y * (y * x - 1.0f)) * q; - - return y; -} - -__inline float xsinf(float d) { - int q; - float u, s; - - q = rint(d * rtengine::RT_1_PI_F); - - d = mlaf(q, -PI4_Af*4, d); - d = mlaf(q, -PI4_Bf*4, d); - d = mlaf(q, -PI4_Cf*4, d); - d = mlaf(q, -PI4_Df*4, d); - - s = d * d; - - if ((q & 1) != 0) d = -d; - - u = 2.6083159809786593541503e-06f; - u = mlaf(u, s, -0.0001981069071916863322258f); - u = mlaf(u, s, 0.00833307858556509017944336f); - u = mlaf(u, s, -0.166666597127914428710938f); - - u = mlaf(s, u * d, d); - - return u; -} - -__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*rint(d * rtengine::RT_1_PI_F - 0.5f); - - d = mlaf(q, -PI4_Af*2, d); - d = mlaf(q, -PI4_Bf*2, d); - d = mlaf(q, -PI4_Cf*2, d); - d = mlaf(q, -PI4_Df*2, d); - - s = d * d; - - if ((q & 2) == 0) d = -d; - - u = 2.6083159809786593541503e-06f; - u = mlaf(u, s, -0.0001981069071916863322258f); - u = mlaf(u, s, 0.00833307858556509017944336f); - u = mlaf(u, s, -0.166666597127914428710938f); - - 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 = rint(d * rtengine::RT_2_PI_F); - - s = d; - - s = mlaf(q, -PI4_Af*2, s); - s = mlaf(q, -PI4_Bf*2, s); - s = mlaf(q, -PI4_Cf*2, s); - s = mlaf(q, -PI4_Df*2, s); - - t = s; - - s = s * s; - - u = -0.000195169282960705459117889f; - u = mlaf(u, s, 0.00833215750753879547119141f); - u = mlaf(u, s, -0.166666537523269653320312f); - u = u * s * t; - - r.x = t + u; - - u = -2.71811842367242206819355e-07f; - u = mlaf(u, s, 2.47990446951007470488548e-05f); - u = mlaf(u, s, -0.00138888787478208541870117f); - u = mlaf(u, s, 0.0416666641831398010253906f); - u = mlaf(u, s, -0.5f); - - r.y = u * s + 1; - - if ((q & 1) != 0) { s = r.y; r.y = r.x; r.x = s; } - if ((q & 2) != 0) { r.x = -r.x; } - if (((q+1) & 2) != 0) { r.y = -r.y; } - - 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 = rint(d * (float)(2 * rtengine::RT_1_PI)); - - x = d; - - x = mlaf(q, -PI4_Af*2, x); - x = mlaf(q, -PI4_Bf*2, x); - x = mlaf(q, -PI4_Cf*2, x); - x = mlaf(q, -PI4_Df*2, x); - - s = x * x; - - if ((q & 1) != 0) x = -x; - - u = 0.00927245803177356719970703f; - u = mlaf(u, s, 0.00331984995864331722259521f); - u = mlaf(u, s, 0.0242998078465461730957031f); - u = mlaf(u, s, 0.0534495301544666290283203f); - u = mlaf(u, s, 0.133383005857467651367188f); - u = mlaf(u, s, 0.333331853151321411132812f); - - u = mlaf(s, u * x, x); - - if ((q & 1) != 0) u = 1.0f / u; - - if (xisinff(d)) u = rtengine::RT_NAN_F; - - return u; -} - -__inline float xatanf(float s) { - float t, u; - int q = 0; - - if (s < 0) { s = -s; q = 2; } - if (s > 1) { s = 1.0f / s; q |= 1; } - - t = s * s; - - u = 0.00282363896258175373077393f; - u = mlaf(u, t, -0.0159569028764963150024414f); - u = mlaf(u, t, 0.0425049886107444763183594f); - u = mlaf(u, t, -0.0748900920152664184570312f); - u = mlaf(u, t, 0.106347933411598205566406f); - u = mlaf(u, t, -0.142027363181114196777344f); - u = mlaf(u, t, 0.199926957488059997558594f); - u = mlaf(u, t, -0.333331018686294555664062f); - - t = s + s * (t * u); - - if ((q & 1) != 0) t = 1.570796326794896557998982f - t; - if ((q & 2) != 0) t = -t; - - return t; -} - -__inline float atan2kf(float y, float x) { - float s, t, u; - float q = 0.f; - - if (x < 0) { x = -x; q = -2.f; } - if (y > x) { t = x; x = y; y = -t; q += 1.f; } - - s = y / x; - t = s * s; - - u = 0.00282363896258175373077393f; - u = mlaf(u, t, -0.0159569028764963150024414f); - u = mlaf(u, t, 0.0425049886107444763183594f); - u = mlaf(u, t, -0.0748900920152664184570312f); - u = mlaf(u, t, 0.106347933411598205566406f); - u = mlaf(u, t, -0.142027363181114196777344f); - u = mlaf(u, t, 0.199926957488059997558594f); - u = mlaf(u, t, -0.333331018686294555664062f); - - t = u * t; - t = mlaf(t,s,s); - return mlaf(q,(float)(rtengine::RT_PI_F_2),t); -} - -__inline float xatan2f(float y, float x) { - float r = atan2kf(xfabsf(y), x); - - r = mulsignf(r, x); - if (xisinff(x) || x == 0) r = rtengine::RT_PI_F/2 - (xisinff(x) ? (signf(x) * (float)(rtengine::RT_PI_F*.5f)) : 0); - if (xisinff(y) ) r = rtengine::RT_PI_F/2 - (xisinff(x) ? (signf(x) * (float)(rtengine::RT_PI_F*.25f)) : 0); - if ( y == 0) r = (signf(x) == -1 ? rtengine::RT_PI_F : 0); - - return xisnanf(x) || xisnanf(y) ? rtengine::RT_NAN_F : mulsignf(r, y); -} - -__inline float xasinf(float d) { - return mulsignf(atan2kf(fabsf(d), sqrtf((1.0f+d)*(1.0f-d))), d); -} - -__inline float xacosf(float d) { - return mulsignf(atan2kf(sqrtf((1.0f+d)*(1.0f-d)), fabsf(d)), d) + (d < 0 ? (float)rtengine::RT_PI : 0.0f); -} - -__inline float xlogf(float d) { - float x, x2, t, m; - int e; - - e = ilogbp1f(d * 0.7071f); - m = ldexpkf(d, -e); - - x = (m-1.0f) / (m+1.0f); - x2 = x * x; - - t = 0.2371599674224853515625f; - t = mlaf(t, x2, 0.285279005765914916992188f); - t = mlaf(t, x2, 0.400005519390106201171875f); - t = mlaf(t, x2, 0.666666567325592041015625f); - t = mlaf(t, x2, 2.0f); - - x = x * t + 0.693147180559945286226764f * e; - - if (xisinff(d)) x = rtengine::RT_INFINITY_F; - if (d < 0) x = rtengine::RT_NAN_F; - if (d == 0) x = -rtengine::RT_INFINITY_F; - - return x; -} - -__inline float xexpf(float d) { - if(d<=-104.0f) return 0.0f; - - int q = rint(d * R_LN2f); - float s, u; - - s = mlaf(q, -L2Uf, d); - s = mlaf(q, -L2Lf, s); - - u = 0.00136324646882712841033936f; - u = mlaf(u, s, 0.00836596917361021041870117f); - u = mlaf(u, s, 0.0416710823774337768554688f); - u = mlaf(u, s, 0.166665524244308471679688f); - u = mlaf(u, s, 0.499999850988388061523438f); - - u = mlaf( s, mlaf(s,u,1.f),1.f); - return ldexpkf(u, q); - -} - -__inline float xmul2f(float d) { - union { - float floatval; - int intval; - } uflint; - uflint.floatval = d; - if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing - uflint.intval += 1 << 23; // add 1 to the exponent - } - return uflint.floatval; -} - -__inline float xdiv2f(float d) { - union { - float floatval; - int intval; - } uflint; - uflint.floatval = d; - if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing - uflint.intval -= 1 << 23; // sub 1 from the exponent - } - return uflint.floatval; -} - -__inline float xdivf( float d, int n){ - union { - float floatval; - int intval; - } uflint; - uflint.floatval = d; - if (uflint.intval & 0x7FFFFFFF) { // if f==0 do nothing - uflint.intval -= n << 23; // add n to the exponent - } - return uflint.floatval; -} - -__inline float xlin2log(float x, float base) -{ - constexpr float one(1); - return xlogf(x * (base - one) + one) / xlogf(base); -} - -__inline void xlin2log(float *x, float factor, float base, int w) -{ - constexpr float one(1); - base = 1.f / xlogf(base); - for (int i = 0; i < w; ++i) { - x[i] = xlogf(x[i] * factor * (base - one) + one) * base; - } -} - -__inline float xlog2lin(float x, float base) -{ - constexpr float one(1); - return (pow_F(base, x) - one) / (base - one); -} - -#endif From cfb61f6fbfa17d4735bb495ddad9e1e9c7547bc4 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Thu, 1 Nov 2018 16:02:01 -0500 Subject: [PATCH 068/348] Notify GUI when batch starts Closes #4906 --- rtgui/batchqueue.cc | 2 ++ rtgui/batchqueuepanel.cc | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 6c42ef89f..6f09e25f1 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -597,6 +597,8 @@ void BatchQueue::startProcessing () // start batch processing rtengine::startBatchProcessing (next->job, this); queue_draw (); + + notifyListener(); } } } diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index a2358a3b5..57481ef1d 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -281,9 +281,6 @@ void BatchQueuePanel::startBatchProc () // callback in response to the *reported* state. queueShouldRun = true; - // Don't need an update callback from the queue to know it is started: - setGuiFromBatchState(true, batchQueue->getEntries().size()); - saveOptions(); batchQueue->startProcessing (); } From 424782e8d0546089121f4aa8274c6dd36347aeff Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Thu, 1 Nov 2018 16:02:35 -0500 Subject: [PATCH 069/348] Consolidate updateTab() calls --- rtgui/batchqueuepanel.cc | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 57481ef1d..923b6f786 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -247,8 +247,6 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation) void BatchQueuePanel::queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) { - updateTab (qsize); - setGuiFromBatchState(queueRunning, qsize); if (!queueRunning && qsize == 0 && queueShouldRun) { @@ -284,8 +282,6 @@ void BatchQueuePanel::startBatchProc () saveOptions(); batchQueue->startProcessing (); } - - updateTab (batchQueue->getEntries().size()); } void BatchQueuePanel::stopBatchProc () @@ -294,8 +290,6 @@ void BatchQueuePanel::stopBatchProc () // background queue thread must check. It will notify queueSizeChanged() // when it stops. queueShouldRun = false; - - updateTab (batchQueue->getEntries().size()); } void BatchQueuePanel::setGuiFromBatchState(bool queueRunning, int qsize) @@ -313,6 +307,8 @@ void BatchQueuePanel::setGuiFromBatchState(bool queueRunning, int qsize) fdir->set_sensitive (!queueRunning); fformat->set_sensitive (!queueRunning); + + updateTab(qsize); } void BatchQueuePanel::addBatchQueueJobs(const std::vector& entries, bool head) From 77eccdf13df8f1190d13d854f5dfd12daca09011 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 2 Nov 2018 00:54:02 -0500 Subject: [PATCH 070/348] Fix mismatched malloc/delete leak From the Valgrind report: ``` Mismatched free() / delete / delete [] at 0x4838EAB: operator delete(void*) (vg_replace_malloc.c:576) by 0xBC5C87: std::default_delete::operator()(cJSON*) const (unique_ptr.h:81) by 0xBC4ACA: std::unique_ptr >::~unique_ptr() (unique_ptr.h:274) by 0xBBB755: (anonymous namespace)::getAliases(Glib::ustring const&) (dcp.cc:422) by 0xBC1CCA: rtengine::DCPStore::init(Glib::ustring const&, bool) (dcp.cc:1846) by 0xC3ED4F: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) [clone ._omp_fn.0] (init.cc:81) by 0x89743FF: GOMP_parallel_sections (sections.c:158) by 0xC3E906: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) (init.cc:52) by 0x9CE10E: Options::load(bool) (options.cc:2358) by 0x982CD6: main (main.cc:603) Address 0xd62d700 is 0 bytes inside a block of size 64 alloc'd at 0x483777F: malloc (vg_replace_malloc.c:299) by 0xE97390: cJSON_New_Item (cJSON.c:205) by 0xE98718: cJSON_ParseWithOpts (cJSON.c:1020) by 0xE9886F: cJSON_Parse (cJSON.c:1083) by 0xBBB4D3: (anonymous namespace)::getAliases(Glib::ustring const&) (dcp.cc:422) by 0xBC1CCA: rtengine::DCPStore::init(Glib::ustring const&, bool) (dcp.cc:1846) by 0xC3ED4F: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) [clone ._omp_fn.0] (init.cc:81) by 0x89743FF: GOMP_parallel_sections (sections.c:158) by 0xC3E906: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) (init.cc:52) by 0x9CE10E: Options::load(bool) (options.cc:2358) by 0x982CD6: main (main.cc:603) ``` --- rtengine/dcp.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index c18ee8915..a1b0db323 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -393,6 +393,13 @@ double xyCoordToTemperature(const std::array& white_xy) return res; } +struct cJSON_deleter { + template + void operator()(T *t) { + cJSON_Delete(const_cast::type*>(t)); + } +}; + std::map getAliases(const Glib::ustring& profile_dir) { const std::unique_ptr> file( @@ -419,7 +426,7 @@ std::map getAliases(const Glib::ustring& profile_dir) buffer[read] = 0; cJSON_Minify(buffer.get()); - const std::unique_ptr root(cJSON_Parse(buffer.get())); + const std::unique_ptr root(cJSON_Parse(buffer.get())); if (!root || !root->child) { if (settings->verbose) { std::cout << "Could not parse 'camera_model_aliases.json' file." << std::endl; From 5081c85f26d72446aae40bb4b45ff850dbcd15d1 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 2 Nov 2018 01:11:00 -0500 Subject: [PATCH 071/348] Fix leak of heap-allocated mutexes --- rtengine/rtlensfun.cc | 20 +++++++++----------- rtengine/rtlensfun.h | 4 ++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 792a86b61..50b3c8a66 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -33,7 +33,7 @@ extern const Settings *settings; LFModifier::~LFModifier() { if (data_) { - MyMutex::MyLock lock(*lfModifierMutex); + MyMutex::MyLock lock(lfModifierMutex); data_->Destroy(); } } @@ -113,14 +113,14 @@ void LFModifier::correctCA(double &x, double &y, int cx, int cy, int channel) co void LFModifier::processVignetteLine(int width, int y, float *line) const { - MyMutex::MyLock lock(*lfModifierMutex); + MyMutex::MyLock lock(lfModifierMutex); data_->ApplyColorModification(line, 0, y, width, 1, LF_CR_1(INTENSITY), 0); } void LFModifier::processVignetteLine3Channels(int width, int y, float *line) const { - MyMutex::MyLock lock(*lfModifierMutex); + MyMutex::MyLock lock(lfModifierMutex); data_->ApplyColorModification(line, 0, y, width, 1, LF_CR_3(RED, GREEN, BLUE), 0); } @@ -160,7 +160,6 @@ LFModifier::LFModifier(lfModifier *m, bool swap_xy, int flags): swap_xy_(swap_xy), flags_(flags) { - lfModifierMutex = new MyMutex; } @@ -378,14 +377,13 @@ bool LFDatabase::LoadDirectory(const char *dirname) LFDatabase::LFDatabase(): data_(nullptr) { - lfDBMutex = new MyMutex; } LFDatabase::~LFDatabase() { if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); data_->Destroy(); } } @@ -401,7 +399,7 @@ std::vector LFDatabase::getCameras() const { std::vector ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto cams = data_->GetCameras(); while (*cams) { ret.emplace_back(); @@ -417,7 +415,7 @@ std::vector LFDatabase::getLenses() const { std::vector ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto lenses = data_->GetLenses(); while (*lenses) { ret.emplace_back(); @@ -433,7 +431,7 @@ LFCamera LFDatabase::findCamera(const Glib::ustring &make, const Glib::ustring & { LFCamera ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto found = data_->FindCamerasExt(make.c_str(), model.c_str()); if (found) { ret.data_ = found[0]; @@ -448,7 +446,7 @@ LFLens LFDatabase::findLens(const LFCamera &camera, const Glib::ustring &name) c { LFLens ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto found = data_->FindLenses(camera.data_, nullptr, name.c_str()); for (size_t pos = 0; !found && pos < name.size(); ) { // try to split the maker from the model of the lens -- we have to @@ -486,7 +484,7 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons { std::unique_ptr ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); if (camera && lens) { lfModifier *mod = lfModifier::Create(lens.data_, camera.getCropFactor(), width, height); int flags = LF_MODIFY_DISTORTION | LF_MODIFY_SCALE | LF_MODIFY_TCA; diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index f75f25d4f..ef6d2192b 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -57,7 +57,7 @@ private: lfModifier *data_; bool swap_xy_; int flags_; - MyMutex *lfModifierMutex; + mutable MyMutex lfModifierMutex; }; class LFCamera final @@ -122,7 +122,7 @@ private: LFDatabase(); bool LoadDirectory(const char *dirname); - MyMutex *lfDBMutex; + mutable MyMutex lfDBMutex; static LFDatabase instance_; lfDatabase *data_; }; From ec814dbf05b8065f09ec58b74dfce8c1a1432575 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 2 Nov 2018 02:25:03 -0500 Subject: [PATCH 072/348] FramesData: Don't leak allocated frames, and remove unused functions Valgrind report: ``` 14,960 (11,544 direct, 3,416 indirect) bytes in 37 blocks are definitely lost in loss record 20,483 of 20,540 at 0x4837DEF: operator new(unsigned long) (vg_replace_malloc.c:334) by 0xC06963: rtengine::FramesData::FramesData(Glib::ustring const&, std::unique_ptr >, bool) (imagedata.cc:1121) by 0xBD774F: rtengine::DFManager::addFileInfo(Glib::ustring const&, bool) (dfmanager.cc:380) by 0xBD6E90: rtengine::DFManager::init(Glib::ustring) (dfmanager.cc:303) by 0xC3EC5D: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) [clone ._omp_fn.0] (init.cc:93) by 0x897CABD: gomp_thread_start (team.c:120) by 0x89B7A9C: start_thread (in /usr/lib/libpthread-2.28.so) by 0x8ACCB22: clone (in /usr/lib/libc-2.28.so) ``` --- rtengine/imagedata.cc | 16 +++------------- rtengine/imagedata.h | 4 ++-- rtengine/imagesource.h | 1 - rtengine/rawimagesource.h | 4 ---- rtengine/stdimagesource.h | 4 ---- 5 files changed, 5 insertions(+), 24 deletions(-) diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 572bd7e42..47bb0b490 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -809,11 +809,6 @@ unsigned int FramesData::getFrameCount () const return dcrawFrameCount ? dcrawFrameCount : frames.size(); } -FrameData *FramesData::getFrameData (unsigned int frame) const -{ - return frames.empty() || frame >= frames.size() ? nullptr : frames.at(frame); -} - bool FramesData::getPixelShift () const { // So far only Pentax and Sony provide multi-frame Pixel Shift files. @@ -1118,9 +1113,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0)); - - frames.push_back(fd); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); @@ -1142,8 +1135,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0)); - frames.push_back(fd); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } rewind (exifManager.f); // Not sure this is necessary iptc = iptc_data_new_from_jpeg_file (exifManager.f); @@ -1161,9 +1153,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0)); - - frames.push_back(fd); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 0427ee519..1c3aff7e9 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -20,6 +20,7 @@ #define __IMAGEDATA_H__ #include +#include #include "rawimage.h" #include #include @@ -89,7 +90,7 @@ public: class FramesData : public FramesMetaData { private: // frame's root IFD, can be a file root IFD or a SUB-IFD - std::vector frames; + std::vector> frames; // root IFD in the file std::vector roots; IptcData* iptc; @@ -102,7 +103,6 @@ public: void setDCRawFrameCount (unsigned int frameCount); unsigned int getRootCount () const; unsigned int getFrameCount () const; - FrameData *getFrameData (unsigned int frame) const; bool getPixelShift () const; bool getHDR (unsigned int frame = 0) const; std::string getImageType (unsigned int frame) const; diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index a7c867e08..c1bd8fd64 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -110,7 +110,6 @@ public: return 0; } - virtual FrameData* getImageData (unsigned int frameNum) = 0; virtual ImageMatrices* getImageMatrices () = 0; virtual bool isRAW () const = 0; virtual DCPProfile* getDCP (const ColorManagementParams &cmp, DCPProfile::ApplyState &as) diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 8ee403ea2..af0c1a116 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -168,10 +168,6 @@ public: return ri->get_rotateDegree(); } - FrameData* getImageData (unsigned int frameNum) - { - return idata->getFrameData (frameNum); - } ImageMatrices* getImageMatrices () { return &imatrices; diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index 1dbb65001..605b2926c 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -69,10 +69,6 @@ public: void getFullSize (int& w, int& h, int tr = TR_NONE); void getSize (const PreviewProps &pp, int& w, int& h); - FrameData* getImageData (unsigned int frameNum) - { - return idata->getFrameData (frameNum); - } ImageIO* getImageIO () { return img; From 4186c2b1394a33ffe58cc6cfec99de6e0420c816 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 2 Nov 2018 13:47:09 +0100 Subject: [PATCH 073/348] L*a*b* grid color toning: fixed scaling bug introduced in 74a467fb4e20aca7b9b9ba40eefa405f0d32e2c4 --- rtengine/improcfun.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 4dd745eb6..31c44efe4 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -5782,8 +5782,8 @@ void ImProcFunctions::lab2rgb (const LabImage &src, Imagefloat &dst, const Glib: */ void ImProcFunctions::colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread) { - const float factor = 3.f; - const float scaling = 3.f; + const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; + const float scaling = ColorToningParams::LABGRID_CORR_SCALE; float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor / scaling; float a_base = params->colorToning.labgridALow / scaling; float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor / scaling; From e611efd6b43b3d37d0e279e90c4a9781bfa95e15 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 2 Nov 2018 12:01:24 +0100 Subject: [PATCH 074/348] fixed segfault (out of range LUT access) in shadows/highlights Fixes #4922 --- rtengine/ipshadowshighlights.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index ff56c84ac..450aac221 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -160,7 +160,7 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab) float orig = 1.f - blend; if (l >= 0.f && l < 32768.f) { if (lab_mode) { - lab->L[y][x] = f[l] * blend + l * orig; + lab->L[y][x] = intp(blend, f[l], l); if (!hl && l > 1.f) { // when pushing shadows, scale also the chromaticity float s = max(lab->L[y][x] / l * 0.5f, 1.f) * blend; @@ -173,7 +173,10 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab) float rgb[3]; lab2rgb(l, lab->a[y][x], lab->b[y][x], rgb[0], rgb[1], rgb[2]); for (int i = 0; i < 3; ++i) { - rgb[i] = f[rgb[i]] * blend + rgb[i] * orig; + float c = rgb[i]; + if (!OOG(c)) { + rgb[i] = intp(blend, f[c], c); + } } rgb2lab(rgb[0], rgb[1], rgb[2], lab->L[y][x], lab->a[y][x], lab->b[y][x]); } From 86c661fdeb4c8307cdfaf4c90e45702ffea06261 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 2 Nov 2018 09:29:37 -0500 Subject: [PATCH 075/348] Fix startup ding by initializing variable Closes #4923. --- rtgui/batchqueuepanel.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 923b6f786..8c6472c70 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -57,6 +57,8 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr) qAutoStart->set_tooltip_text (M("BATCHQUEUE_AUTOSTARTHINT")); qAutoStart->set_active (options.procQueueEnabled); + queueShouldRun = false; + 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"))); From e199d1ea10fbf55833212cb020856962fb9d8066 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 2 Nov 2018 19:02:05 +0100 Subject: [PATCH 076/348] Colortoning lab regions: Move guid fill into main loop, #4914 --- rtengine/iplabregions.cc | 44 +++++++++++++++------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index aec6efa6f..66ab52370 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -87,6 +87,7 @@ BENCHFUN abmask[i](lab->W, lab->H); Lmask[i](lab->W, lab->H); } + array2D guide(lab->W, lab->H); #ifdef _OPENMP #pragma omp parallel if (multiThread) @@ -99,7 +100,7 @@ BENCHFUN constexpr float c_factor = 327.68f / 48000.f; #endif #ifdef _OPENMP - #pragma omp for + #pragma omp for schedule(dynamic, 16) #endif for (int y = 0; y < lab->H; ++y) { #ifdef __SSE2__ @@ -108,53 +109,40 @@ BENCHFUN fastlin2log(cBuffer, c_factor, 10.f, lab->W); #endif for (int x = 0; x < lab->W; ++x) { - float l = lab->L[y][x]; + float l = lab->L[y][x] / 32768.f; + guide[y][x] = LIM01(l); #ifdef __SSE2__ // use precalculated values - float c1 = cBuffer[x]; + float c = cBuffer[x]; float h = hBuffer[x]; #else // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 constexpr float c_factor = 327.68f / 48000.f; - float a = lab->a[y][x]; - float b = lab->b[y][x]; float c, h; - Color::Lab2Lch(a, b, c, h); - float c1 = xlin2log(c * c_factor, 10.f); + Color::Lab2Lch(lab->a[y][x], lab->b[y][x], c, h); + c = xlin2log(c * c_factor, 10.f); #endif - float h1 = Color::huelab_to_huehsv2(h); - h1 = h1 + 1.f/6.f; // offset the hue because we start from purple instead of red - if (h1 > 1.f) { - h1 -= 1.f; + h = Color::huelab_to_huehsv2(h); + h += 1.f/6.f; // offset the hue because we start from purple instead of red + if (h > 1.f) { + h -= 1.f; } - h1 = xlin2log(h1, 3.f); - float l1 = l / 32768.f; + h = xlin2log(h, 3.f); for (int i = begin_idx; i < end_idx; ++i) { auto &hm = hmask[i]; auto &cm = cmask[i]; auto &lm = lmask[i]; - float blend = LIM01((hm ? hm->getVal(h1) : 1.f) * (cm ? cm->getVal(c1) : 1.f) * (lm ? lm->getVal(l1) : 1.f)); + float blend = LIM01((hm ? hm->getVal(h) : 1.f) * (cm ? cm->getVal(c) : 1.f) * (lm ? lm->getVal(l) : 1.f)); Lmask[i][y][x] = abmask[i][y][x] = blend; } } } } - { - array2D guide(lab->W, lab->H, lab->L); -#ifdef _OPENMP - #pragma omp parallel for if (multiThread) -#endif - for (int y = 0; y < lab->H; ++y) { - for (int x = 0; x < lab->W; ++x) { - guide[y][x] = LIM01(lab->L[y][x] / 32768.f); - } - } - for (int i = begin_idx; i < end_idx; ++i) { - rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); - rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); - } + for (int i = begin_idx; i < end_idx; ++i) { + rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); + rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); } if (show_mask_idx >= 0) { From 64af0e7602393c37bb3b079da0f6de161663e14f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 2 Nov 2018 21:06:38 +0100 Subject: [PATCH 077/348] Colortoning lab regions: Disabled timing code and removed double declaration of c_factor, #4914 --- rtengine/iplabregions.cc | 74 +++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 66ab52370..5d49ff429 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -24,11 +24,12 @@ #include "improcfun.h" #include "guidedfilter.h" -#define BENCHMARK +//#define BENCHMARK #include "StopWatch.h" #include "sleef.c" namespace { + #ifdef __SSE2__ void fastlin2log(float *x, float factor, float base, int w) { @@ -46,6 +47,7 @@ void fastlin2log(float *x, float factor, float base, int w) } } #endif + } namespace rtengine { @@ -87,59 +89,59 @@ BENCHFUN abmask[i](lab->W, lab->H); Lmask[i](lab->W, lab->H); } + array2D guide(lab->W, lab->H); + // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 + constexpr float c_factor = 327.68f / 48000.f; + #ifdef _OPENMP #pragma omp parallel if (multiThread) #endif { #ifdef __SSE2__ - float cBuffer[lab->W]; - float hBuffer[lab->W]; - // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 - constexpr float c_factor = 327.68f / 48000.f; + float cBuffer[lab->W]; + float hBuffer[lab->W]; #endif #ifdef _OPENMP - #pragma omp for schedule(dynamic, 16) + #pragma omp for schedule(dynamic, 16) #endif - for (int y = 0; y < lab->H; ++y) { + for (int y = 0; y < lab->H; ++y) { #ifdef __SSE2__ - // vectorized precalculation - Color::Lab2Lch(lab->a[y], lab->b[y], cBuffer, hBuffer, lab->W); - fastlin2log(cBuffer, c_factor, 10.f, lab->W); + // vectorized precalculation + Color::Lab2Lch(lab->a[y], lab->b[y], cBuffer, hBuffer, lab->W); + fastlin2log(cBuffer, c_factor, 10.f, lab->W); #endif - for (int x = 0; x < lab->W; ++x) { - float l = lab->L[y][x] / 32768.f; - guide[y][x] = LIM01(l); + for (int x = 0; x < lab->W; ++x) { + const float l = lab->L[y][x] / 32768.f; + guide[y][x] = LIM01(l); #ifdef __SSE2__ - // use precalculated values - float c = cBuffer[x]; - float h = hBuffer[x]; + // use precalculated values + const float c = cBuffer[x]; + float h = hBuffer[x]; #else - // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 - constexpr float c_factor = 327.68f / 48000.f; - float c, h; - Color::Lab2Lch(lab->a[y][x], lab->b[y][x], c, h); - c = xlin2log(c * c_factor, 10.f); + float c, h; + Color::Lab2Lch(lab->a[y][x], lab->b[y][x], c, h); + c = xlin2log(c * c_factor, 10.f); #endif - h = Color::huelab_to_huehsv2(h); - h += 1.f/6.f; // offset the hue because we start from purple instead of red - if (h > 1.f) { - h -= 1.f; - } - h = xlin2log(h, 3.f); + h = Color::huelab_to_huehsv2(h); + h += 1.f/6.f; // offset the hue because we start from purple instead of red + if (h > 1.f) { + h -= 1.f; + } + h = xlin2log(h, 3.f); - for (int i = begin_idx; i < end_idx; ++i) { - auto &hm = hmask[i]; - auto &cm = cmask[i]; - auto &lm = lmask[i]; - float blend = LIM01((hm ? hm->getVal(h) : 1.f) * (cm ? cm->getVal(c) : 1.f) * (lm ? lm->getVal(l) : 1.f)); - Lmask[i][y][x] = abmask[i][y][x] = blend; + for (int i = begin_idx; i < end_idx; ++i) { + auto &hm = hmask[i]; + auto &cm = cmask[i]; + auto &lm = lmask[i]; + float blend = LIM01((hm ? hm->getVal(h) : 1.f) * (cm ? cm->getVal(c) : 1.f) * (lm ? lm->getVal(l) : 1.f)); + Lmask[i][y][x] = abmask[i][y][x] = blend; + } } } } - } - + for (int i = begin_idx; i < end_idx; ++i) { rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); @@ -176,7 +178,7 @@ BENCHFUN abca[i] = abcoord(r.a); abcb[i] = abcoord(r.b); rs[i] = 1.f + r.saturation / 100.f; - rl[i] = 1.f + float(r.lightness) / 500.f; + rl[i] = 1.f + r.lightness / 500.f; } #ifdef _OPENMP From 240f1eac6501cba182bd2b0a06478f7fe78b9de3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 2 Nov 2018 23:05:40 +0100 Subject: [PATCH 078/348] Colortoning lab regions: vectorized last loop, #4914 --- rtengine/iplabregions.cc | 68 +++++++++++++++++++++++++++++----------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 5d49ff429..d5bbd6302 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -182,27 +182,59 @@ BENCHFUN } #ifdef _OPENMP - #pragma omp parallel for if (multiThread) + #pragma omp parallel if (multiThread) #endif - for (int y = 0; y < lab->H; ++y) { - for (int x = 0; x < lab->W; ++x) { - float l = lab->L[y][x]; - float a = lab->a[y][x]; - float b = lab->b[y][x]; + { +#ifdef __SSE2__ + vfloat c42000v = F2V(42000.f); + vfloat cm42000v = F2V(-42000.f); + vfloat c32768v = F2V(32768.f); +#endif +#ifdef _OPENMP + #pragma omp for +#endif + for (int y = 0; y < lab->H; ++y) { + int x = 0; +#ifdef __SSE2__ + for (; x < lab->W - 3; x += 4) { + vfloat lv = LVFU(lab->L[y][x]); + vfloat av = LVFU(lab->a[y][x]); + vfloat bv = LVFU(lab->b[y][x]); - for (int i = 0; i < n; ++i) { - float blend = abmask[i][y][x]; - float s = rs[i]; - float a_new = LIM(s * (a + abca[i]), -42000.f, 42000.f); - float b_new = LIM(s * (b + abcb[i]), -42000.f, 42000.f); - float l_new = LIM(l * rl[i], 0.f, 32768.f); - l = intp(Lmask[i][y][x], l_new, l); - a = intp(blend, a_new, a); - b = intp(blend, b_new, b); + for (int i = 0; i < n; ++i) { + vfloat blendv = LVFU(abmask[i][y][x]); + vfloat sv = F2V(rs[i]); + vfloat a_newv = LIMV(sv * (av + F2V(abca[i])), cm42000v, c42000v); + vfloat b_newv = LIMV(sv * (bv + F2V(abcb[i])), cm42000v, c42000v); + vfloat l_newv = LIMV(lv * F2V(rl[i]), ZEROV, c32768v); + lv = vintpf(LVFU(Lmask[i][y][x]), l_newv, lv); + av = vintpf(blendv, a_newv, av); + bv = vintpf(blendv, b_newv, bv); + } + STVFU(lab->L[y][x], lv); + STVFU(lab->a[y][x], av); + STVFU(lab->b[y][x], bv); + } +#endif + for (; x < lab->W; ++x) { + float l = lab->L[y][x]; + float a = lab->a[y][x]; + float b = lab->b[y][x]; + + for (int i = 0; i < n; ++i) { + float blend = abmask[i][y][x]; + float s = rs[i]; + float a_new = LIM(s * (a + abca[i]), -42000.f, 42000.f); + float b_new = LIM(s * (b + abcb[i]), -42000.f, 42000.f); + float l_new = LIM(l * rl[i], 0.f, 32768.f); + l = intp(Lmask[i][y][x], l_new, l); + a = intp(blend, a_new, a); + b = intp(blend, b_new, b); + } + lab->L[y][x] = l; + lab->a[y][x] = a; + lab->b[y][x] = b; } - lab->L[y][x] = l; - lab->a[y][x] = a; - lab->b[y][x] = b; } } } From 0c488eadaf90ade63b738740364c68f6f92575ef Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 3 Nov 2018 02:36:30 +0100 Subject: [PATCH 079/348] DR Compression: updated defaults and renamed "Threshold" to "Detail" in the GUI Fixes #4912 --- rtdata/languages/default | 4 ++-- rtengine/procparams.cc | 4 ++-- rtgui/fattaltonemap.cc | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 03359ee09..ee4291522 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -725,7 +725,7 @@ HISTORY_MSG_485;Lens Correction HISTORY_MSG_486;Lens Correction - Camera HISTORY_MSG_487;Lens Correction - Lens HISTORY_MSG_488;Dynamic Range Compression -HISTORY_MSG_489;DRC - Threshold +HISTORY_MSG_489;DRC - Detail HISTORY_MSG_490;DRC - Amount HISTORY_MSG_491;White Balance HISTORY_MSG_492;RGB Curves @@ -2046,7 +2046,7 @@ TP_SOFTLIGHT_STRENGTH;Strength TP_TM_FATTAL_AMOUNT;Amount TP_TM_FATTAL_ANCHOR;Anchor TP_TM_FATTAL_LABEL;Dynamic Range Compression -TP_TM_FATTAL_THRESHOLD;Threshold +TP_TM_FATTAL_THRESHOLD;Detail TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 4585b767b..b82a7d440 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1532,8 +1532,8 @@ bool EPDParams::operator !=(const EPDParams& other) const FattalToneMappingParams::FattalToneMappingParams() : enabled(false), - threshold(0), - amount(30), + threshold(30), + amount(20), anchor(50) { } diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index 4bba72f2a..3a6a15a4d 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -31,7 +31,8 @@ FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_ EvTMFattalAnchor = m->newEvent(HDR, "HISTORY_MSG_TM_FATTAL_ANCHOR"); 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)); + threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 300., 1., 0.0)); + threshold->setLogScale(10, 0); Gtk::Image *al = Gtk::manage(new RTImage("circle-black-small.png")); Gtk::Image *ar = Gtk::manage(new RTImage("circle-white-small.png")); anchor = Gtk::manage(new Adjuster(M("TP_TM_FATTAL_ANCHOR"), 1, 100, 1, 50, al, ar)); From 7474598ebcc9d935318643241b3c033845ab0469 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 3 Nov 2018 13:59:04 +0100 Subject: [PATCH 080/348] Fix a crash that can occure when creating the thumbnail (no issue) --- rtengine/rtthumbnail.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index c671cc0a4..f01e87ff7 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -2224,7 +2224,7 @@ bool Thumbnail::readAEHistogram (const Glib::ustring& fname) FILE* f = g_fopen (fname.c_str (), "rb"); if (!f) { - aeHistogram (0); + aeHistogram.reset(); } else { aeHistogram (65536 >> aeHistCompression); fread (&aeHistogram[0], 1, (65536 >> aeHistCompression)*sizeof (aeHistogram[0]), f); From 555b613f21651ae0164b201d90b76a6aaca4478e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 3 Nov 2018 14:04:34 +0100 Subject: [PATCH 081/348] Updated undo/redo-small icons The icon's shape made it look off-center even though it was centered, so the icons were nudged a bit to the side. Closes #4927 --- rtdata/images/themed/png/dark/redo-small.png | Bin 448 -> 429 bytes rtdata/images/themed/png/dark/undo-small.png | Bin 422 -> 432 bytes rtdata/images/themed/png/light/redo-small.png | Bin 465 -> 431 bytes rtdata/images/themed/png/light/undo-small.png | Bin 435 -> 430 bytes rtdata/images/themed/svg/redo-small.svg | 31 +++++++----------- rtdata/images/themed/svg/undo-small.svg | 8 ++--- 6 files changed, 15 insertions(+), 24 deletions(-) diff --git a/rtdata/images/themed/png/dark/redo-small.png b/rtdata/images/themed/png/dark/redo-small.png index 84a5988efc9131f5c2d494f702d76f96872f1682..206200d6db0e9e2fb390270a9bb80e939eb80457 100644 GIT binary patch delta 177 zcmX@Wyq0+bD`UM@fKQ04dx6gxFgSPa+_7WF&YnGc^ytx3r%pixA>`@Pr!QQ%u;=>v zXa)ubzLFrnV1~_WQn^K0G<|1OyO_zwPvk8C$~b$vIEHXsPfk$aa*41uP+`c_cXX6} z#>B>Uud}JCsg0M1=brc_aV{>Y2GK%oE=|7%jd+a}Y|AWJT9-9R+AQTe63N1FbTVg* TbhY4opm_|Qu6{1-oD!Me1LfaD`UNGfKQ0)>C>m(3w+L;Idk^xSs)2#T)K1#$Ub-O98dvJ3J8FVBQuxW zXJBC9FA4GsZeUnmv$0LRM`$`%ezaX_W~a3;P%6mN#W95Ada^(Z6I%?Arh)S!?*i?P ziOUxmMYEpp2sceIFwIJtPj--y= l8Db4fmq>lQsj9)jz%)bf+m+U>UO?j+JYD@<);T3K0RSW2SxNu^ diff --git a/rtdata/images/themed/png/dark/undo-small.png b/rtdata/images/themed/png/dark/undo-small.png index 0908ba6d564b883363f3eafea6ec71ee56672bb6..9505829d49e7ff5c4e183a541473f9917546c235 100644 GIT binary patch delta 180 zcmZ3+yn%TGD`UM@fKQ0)nKNhH3w(g&>C>k#U%m`voIH8*{Q2`|&z=Q}02x3LAUJX2 zME?rmRt5$JzLFrn;LQx4nyfQKdGc1p*O|%HT;3}RlyUQPaSY+Oo-EM9#8$&2=vb(0 zD&So4(37pLOu@OMxv{bFt5Wj<7G~z{oolR`7wBj(H!DSKRADxE34g`1qGN%_Cr76+ b2S$eedpv73*{8V!jb!k2^>bP0l+XkKpC?R3 delta 170 zcmdnMyo`ARD`UNSfKQ04dx6gx7&w3a{O#Mf&z?OC6gYS89FRPH`ZSOWBp18b@-r|n z@RkJm1v6}RUn9(}mYb+Q!=jbp-NsCygoCGxV+hCfjH{oFo>FkkY-c?r7(pW(`jIZW)ztP7SL z*YfGAv7-v_Rh_MJ-bAR*lv#zopr08#o!4*&oF diff --git a/rtdata/images/themed/png/light/undo-small.png b/rtdata/images/themed/png/light/undo-small.png index 6d16726acea6587ba5b2d7d668f535bfab561d55..d6f1d01152f0b91b0585c98f079ef587e1c594af 100644 GIT binary patch delta 173 zcmdnYypDMT7h}D9fsd-HsqgffgpVnjVLPdv&E9dBiQ5*}5GR7ArP3 zHYQq4C~Rm{^bAm);CP|opcdDfh&hdlf@cI~ojJg2svgt5Ks11XA?GsR8m~8L+khrA Nc)I$ztaD0e0stzhG(-RZ diff --git a/rtdata/images/themed/svg/redo-small.svg b/rtdata/images/themed/svg/redo-small.svg index be05d9592..639aebb42 100644 --- a/rtdata/images/themed/svg/redo-small.svg +++ b/rtdata/images/themed/svg/redo-small.svg @@ -26,14 +26,14 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="22.627417" - inkscape:cx="-2.333987" - inkscape:cy="3.4079617" + inkscape:zoom="50.5" + inkscape:cx="8" + inkscape:cy="8" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1920" - inkscape:window-height="1019" + inkscape:window-height="1017" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -63,7 +63,7 @@ image/svg+xml - + Maciej Dworak @@ -100,20 +100,11 @@ inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(0,-8)"> - - - - + diff --git a/rtdata/images/themed/svg/undo-small.svg b/rtdata/images/themed/svg/undo-small.svg index 83b4663a0..f06c73392 100644 --- a/rtdata/images/themed/svg/undo-small.svg +++ b/rtdata/images/themed/svg/undo-small.svg @@ -26,14 +26,14 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="51.375" + inkscape:zoom="50.625" inkscape:cx="8" inkscape:cy="8" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1920" - inkscape:window-height="1019" + inkscape:window-height="1017" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -45,7 +45,7 @@ inkscape:object-nodes="false" inkscape:snap-grids="true" inkscape:snap-bbox-midpoints="false" - inkscape:snap-global="false"> + inkscape:snap-global="true"> From cd4fa4277618d47504cc2139a28000b1641c1eb2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 3 Nov 2018 14:14:16 +0100 Subject: [PATCH 082/348] Removed changed locale keys Related to #4912 0c488ea --- rtdata/languages/Catala | 2 -- rtdata/languages/Chinese (Simplified) | 2 -- rtdata/languages/Chinese (Traditional) | 2 -- rtdata/languages/Czech | 2 -- rtdata/languages/Dansk | 2 -- rtdata/languages/Deutsch | 2 -- rtdata/languages/English (UK) | 2 -- rtdata/languages/English (US) | 2 -- rtdata/languages/Espanol | 2 -- rtdata/languages/Euskara | 2 -- rtdata/languages/Francais | 2 -- rtdata/languages/Greek | 2 -- rtdata/languages/Hebrew | 2 -- rtdata/languages/Italiano | 2 -- rtdata/languages/Japanese | 2 -- rtdata/languages/Latvian | 2 -- rtdata/languages/Magyar | 2 -- rtdata/languages/Nederlands | 2 -- rtdata/languages/Norsk BM | 2 -- rtdata/languages/Polish | 2 -- rtdata/languages/Polish (Latin Characters) | 2 -- rtdata/languages/Portugues (Brasil) | 2 -- rtdata/languages/Russian | 2 -- rtdata/languages/Serbian (Cyrilic Characters) | 2 -- rtdata/languages/Serbian (Latin Characters) | 2 -- rtdata/languages/Slovak | 2 -- rtdata/languages/Suomi | 2 -- rtdata/languages/Swedish | 2 -- rtdata/languages/Turkish | 2 -- 29 files changed, 58 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index fa7141087..5484f536c 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1310,7 +1310,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2087,7 +2086,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index ff45df98b..bacc0ea58 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1387,7 +1387,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2064,7 +2063,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 47a604554..127fea254 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -972,7 +972,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2026,7 +2025,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 4be6bdc58..a6b19baa7 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2197,7 +2197,6 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_273;CT - Color Balance SMH !HISTORY_MSG_392;W - Residual - Color Balance !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries @@ -2298,4 +2297,3 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 7658914f7..9edb918c8 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -967,7 +967,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2024,7 +2023,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index fc3374db6..62f258cea 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -790,7 +790,6 @@ HISTORY_MSG_485;(Objektivkorrektur)\nProfil HISTORY_MSG_486;(Objektivkorrektur)\nProfil - Kamera HISTORY_MSG_487;(Objektivkorrektur)\nProfil - Objektiv HISTORY_MSG_488;(Dynamikkompression) -HISTORY_MSG_489;(Dynamikkompression)\nSchwelle HISTORY_MSG_490;(Dynamikkompression)\nIntensität HISTORY_MSG_491;(Weißabgleich) HISTORY_MSG_492;(RGB-Kurven) @@ -2109,7 +2108,6 @@ TP_SOFTLIGHT_STRENGTH;Intensität TP_TM_FATTAL_AMOUNT;Intensität TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung TP_TM_FATTAL_LABEL;Dynamikkompression -TP_TM_FATTAL_THRESHOLD;Schwelle TP_VIBRANCE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Hautfarbtöne diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 6be9b3308..1d31bdd3f 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -811,7 +811,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2017,7 +2016,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index f8ec04d1f..4e3829269 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -720,7 +720,6 @@ !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2007,7 +2006,6 @@ !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 7b0645778..b80fef3d8 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1694,7 +1694,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2158,7 +2157,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 06bfc9ae5..61de1ab54 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -968,7 +968,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2025,7 +2024,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 19a8ce8d4..15d8affc3 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2217,7 +2217,6 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !HISTORY_MSG_273;CT - Color Balance SMH !HISTORY_MSG_392;W - Residual - Color Balance !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold @@ -2286,4 +2285,3 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index cf9aef8ae..0641c6a49 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -967,7 +967,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2024,7 +2023,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index e8814d80f..0e6d6ddd3 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -968,7 +968,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2025,7 +2024,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 1c24cc52e..53fda9e49 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1569,7 +1569,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2099,7 +2098,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index bc5fa66e0..28d1b6cfd 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -751,7 +751,6 @@ HISTORY_MSG_485;レンズ補正 HISTORY_MSG_486;レンズ補正 - カメラ HISTORY_MSG_487;レンズ補正 - レンズ HISTORY_MSG_488;ダイナミックレンジ圧縮 -HISTORY_MSG_489;DRC - しきい値 HISTORY_MSG_490;DRC - 量 HISTORY_MSG_491;ホワイトバランス HISTORY_MSG_492;RGBカーブ @@ -2037,7 +2036,6 @@ TP_SOFTLIGHT_STRENGTH;強さ TP_TM_FATTAL_AMOUNT;量 TP_TM_FATTAL_ANCHOR;アンカー TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮 -TP_TM_FATTAL_THRESHOLD;しきい値 TP_VIBRANCE_AVOIDCOLORSHIFT;色ずれを回避 TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;肌色トーン diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 2a3ca3759..e8b87c19b 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -968,7 +968,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2025,7 +2024,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 9bd662821..354c32910 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1240,7 +1240,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2079,7 +2078,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 15f7b959b..45f1c5e3f 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2103,7 +2103,6 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2302,5 +2301,4 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 958ed12ad..a4a6fc523 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -967,7 +967,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2024,7 +2023,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 3e853bf20..eeb945ef2 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1651,7 +1651,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2105,7 +2104,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index f847eb6b9..ed27de93b 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1651,7 +1651,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2105,7 +2104,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index d8e5ccc1f..28822efbd 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -717,7 +717,6 @@ HISTORY_MSG_485;Correção de Lente HISTORY_MSG_486;Correção de Lente - Câmera HISTORY_MSG_487;Correção de Lente - Lente HISTORY_MSG_488;Compressão de Amplitude Dinâmica(DRC) -HISTORY_MSG_489;DRC - Limite HISTORY_MSG_490;DRC - Montante HISTORY_MSG_491;Balanço de Branco HISTORY_MSG_492;Curvas RGB @@ -2000,7 +1999,6 @@ TP_SOFTLIGHT_STRENGTH;Intensidade TP_TM_FATTAL_AMOUNT;Montante TP_TM_FATTAL_ANCHOR;Âncora TP_TM_FATTAL_LABEL;Compressão de Amplitude Dinâmica(DRC) -TP_TM_FATTAL_THRESHOLD;Limite TP_VIBRANCE_AVOIDCOLORSHIFT;Evite mudança de cor TP_VIBRANCE_CURVEEDITOR_SKINTONES;MM TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons cor de pele diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 176d86511..424be3cbf 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1633,7 +1633,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction @@ -2105,7 +2104,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 4b570abb7..8ea1f8fdb 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1545,7 +1545,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2100,7 +2099,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index a5d5094c6..1bc4057be 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1545,7 +1545,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2100,7 +2099,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 7e7fcdf86..dc0351823 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1030,7 +1030,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2034,7 +2033,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 6e32cea61..adbd43d82 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -969,7 +969,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2025,7 +2024,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 510d6696d..e491c3c8a 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1906,7 +1906,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2230,7 +2229,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_CBENAB;Toning and Color Balance !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted !TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 1ab598c2c..79fa108c0 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -968,7 +968,6 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves @@ -2024,7 +2023,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones From fb0d231cb2cb288ddb6ff0683839e2e86e8cf855 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 3 Nov 2018 14:26:39 +0100 Subject: [PATCH 083/348] use double precision gaussian blur if sigma >= 25, #4928 --- rtengine/gauss.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/gauss.cc b/rtengine/gauss.cc index ab080a3c4..b7de67851 100644 --- a/rtengine/gauss.cc +++ b/rtengine/gauss.cc @@ -1143,7 +1143,7 @@ template void gaussianBlurImpl(T** src, T** dst, const int W, const int { static constexpr auto GAUSS_SKIP = 0.25; static constexpr auto GAUSS_3X3_LIMIT = 0.6; - static constexpr auto GAUSS_DOUBLE = 70.0; + static constexpr auto GAUSS_DOUBLE = 25.0; if(buffer) { // special variant for very large sigma, currently only used by retinex algorithm From e9aa5437fe899d08aed03905ef7334daf68b5c97 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 4 Nov 2018 01:14:09 +0100 Subject: [PATCH 084/348] Update TooWaBlue theme v2.85 Minor fixes Code cleanup Made the theme a bit more structured --- rtdata/themes/TooWaBlue-GTK3-20_.css | 896 +++++++++++---------------- 1 file changed, 376 insertions(+), 520 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index 041b342e3..44546d6ec 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-2018 TooWaBoo - Version 2.83 + Version 2.85 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -113,10 +113,6 @@ window > box { dialog { background-color: @bg-grey; border-radius: 0; - -GtkDialog-button-spacing: 6; - -GtkDialog-content-area-spacing: 4; - -GtkDialog-content-area-border: 0; - -GtkDialog-action-area-border: 0; } dialog > box { padding: 0.666666666666666666em; @@ -135,18 +131,6 @@ tooltip { tooltip label { color: @text-tooltip; } -.grid-spacing > * { - margin-top: 0.166666666666666666em; - margin-bottom: 0.166666666666666666em; -} -.grid-spacing > label:not(:first-child) { - margin-left: 0.75em; - margin-right: 0.25em; -} -.grid-spacing > label:first-child { - margin-left: 0; - margin-right: 0.25em; -} paned { background-color: @bg-light-grey; @@ -176,8 +160,7 @@ undershoot { } label { - padding: 0; - margin: 0; + margin: 0 0.166666666666666666em; } /*** Frames ************************************************************************************/ @@ -219,7 +202,7 @@ frame > border { #BatchQueueButtonsMainContainer > frame > border, #MyExpander frame > border, dialog frame > border { - padding: 0.5em; + padding: 0.416666666666666666em; border-radius: 0; border: 0.083333333333333333em solid @border-color; background-color: transparent; @@ -249,7 +232,7 @@ dialog frame > label { frame > label { margin: 0; - padding: 0.416666666666666666em 0 0.333333333333333333em 0.083333333333333333em; + padding: 0.416666666666666666em 0; color: @headline-frame; } frame > checkbutton label{ @@ -284,7 +267,7 @@ textview:selected, treeview:selected { #RightNotebook > stack > :nth-child(1) checkbutton + scrolledwindow treeview { border-bottom: 0.083333333333333333em solid @bg-dark-grey; } - +/**/ #PlacesPaned > box:nth-child(3) treeview { padding: 0.25em 0.333333333333333333em 0.25em 0.333333333333333333em; @@ -321,27 +304,6 @@ textview:selected, treeview:selected { border-top: 0.083333333333333333em solid @view-grid-border; } -#Snapshots button, -#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button { - margin: 0; - padding: 0; - background-color: transparent; - background-image: none; - border: 0.083333333333333333em solid @bg-dark-grey; - border-radius: 0; - box-shadow: none; - min-height: 2em; -} - -#Snapshots button:hover, -#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:hover { -background-color: @bg-list-hover; -} -#Snapshots button:active, -#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:active { -background-color: shade(@bg-list-hover, 1.15); -} - fontchooser scrolledwindow, #PlacesPaned scrolledwindow, #HistoryPanel scrolledwindow, @@ -379,6 +341,15 @@ filechooser box > box box > button { margin-top: 0.5em; } +filechooser image { + opacity: 0.80; +} +filechooser *:selected image, +filechooser *:checked image, +filechooser *:active image { + opacity: 1; +} + filechooser list { background-color: @bg-dark-grey; } @@ -566,17 +537,14 @@ menu separator { padding: 0; } -#EditorTopPanel separator, -#IopsPanel separator, -#FileBrowser separator { +.scrollableToolbar separator:not(.dummy) { background-color: shade(@bg-light-grey,.75); - margin-top: 0.166666666666666666em; - margin-bottom: 0.166666666666666666em; + margin: 0.166666666666666666em; } #MyExpander separator { background-color: @view-grid-border; - margin: 0.333333333333333333em 0; + margin: 0.333333333333333333em 0.166666666666666666em; } #MyFileChooserButton separator { background-color: transparent; @@ -722,7 +690,7 @@ scrollbar:not(.overlay-indicator):hover { scale { padding: 0; min-height: 1.833333333333333333em; - margin: 0; + margin: 0 -0.333333333333333333em; } scale slider { @@ -996,10 +964,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-dark-grey; padding: 0.75em 0; } - -/* All tool panels have a frame except for Meta which unlike the rest is a notebook itself. - * So we use CSS to make it look like a frame. */ - +/* Meta panel notebook */ #MetaPanelNotebook > header { background-color: @bg-grey; padding: 0.333333333333333333em; @@ -1010,7 +975,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { padding-left: 0.333333333333333333em; } #MetaPanelNotebook > header tab label{ - margin: 0.083333333333333333em; + margin: 0.083333333333333333em 0.083333333333333333em 0.166666666666666666em; } #MetaPanelNotebook > stack > box { @@ -1027,68 +992,32 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow > viewport.frame { - padding: 0 0 0 1.166666666666666666em; + padding: 0 0 0 1.083333333333333333em; } #MetaPanelNotebook separator { background-color: @border-color; margin: 0.166666666666666666em 0; } -#MetaPanelNotebook entry, #MetaPanelNotebook button, #MetaPanelNotebook combobox button { - margin-top: 0; - margin-bottom: 0; - min-height: 1.666666666666666666em; - min-width: 0; -} #MetaPanelNotebook entry { padding: 0 0.333333333333333333em; background-color: @bg-dark-grey; - margin: 0; border-radius: 0; + margin-left: 0; + margin-right: 0; } -#MetaPanelNotebook > stack > box:nth-child(1) > :nth-child(1) { +#MetaPanelNotebook .view { border: 0.083333333333333333em solid @bg-dark-grey; + padding: 0.083333333333333333em 0.25em; } -#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow scrolledwindow { - background-color: @bg-dark-grey; - padding: 0; - margin: 0; -} -#MetaPanelNotebook > stack > box:nth-child(2) .view { - border: 0.083333333333333333em solid @bg-dark-grey; - padding: 0.166666666666666666em; - margin: 0; -} -#MetaPanelNotebook textview.view { - background-color: @bg-dark-grey; - padding: 0.083333333333333333em 0.333333333333333333em; - margin: 0; -} + #MetaPanelNotebook text { background-color: transparent; - padding: 0; - margin: 0; -} - -#MetaPanelNotebook combobox button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left: none; -} -#MetaPanelNotebook combobox + button, -#MetaPanelNotebook combobox + button + button { - margin-left: 0.166666666666666666em; - min-width: 1.666666666666666666em; -} -#MetaPanelNotebook > stack > box > grid > button { - margin-top: 0.083333333333333333em; - margin-bottom: 0.083333333333333333em; - min-height: 2.5em; } #MetaPanelNotebook label { - padding: 0.083333333333333333em 0; + padding: 0.083333333333333333em 0 0; } /*** end ***************************************************************************************/ @@ -1110,77 +1039,12 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #ToolBarPanelFileBrowser { - margin: 0.416666666666666666em -1px; + margin: 0.416666666666666666em 0; min-height: 0; min-width: 0; padding: 0; } -#ToolBarPanelFileBrowser > box > button, -#ToolBarPanelFileBrowser > button { - margin: 0 0.083333333333333333em; -} -/* Filter */ -#ToolBarPanelFileBrowser .smallbuttonbox { - min-height: 1.333333333333333333em; - padding: 0; - margin: 0; -} -#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(2) { - margin: 0.083333333333333333em 0 -0.166666666666666666em; -} -#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image { - margin: -0.166666666666666666em; - min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; -} -#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton { - min-height: 0; - min-width: 1.333333333333333333em; - padding: 0; - margin: 0 0.25em; - border: none; - border-radius: 0; - background-color: transparent; - background-image: none; - box-shadow: none; -} -#FileBrowser #ToolBarPanelFileBrowser box:nth-child(7) > box.smallbuttonbox > button.smallbutton:checked, -#EditorLeftPaned #ToolBarPanelFileBrowser box:nth-child(5) > box.smallbuttonbox > button.smallbutton:checked { - background-image: image(rgba(30,30,30,.3)); - background-color: @bg-button-active; -} -/**/ - -#FileBrowserQueryToolbar entry + button.flat, -#FileBrowserIconToolbar entry + button.flat { - min-height: 1.666666666666666666em; - min-width: 1.666666666666666666em; - margin: 0; - border-radius: 0 0.2em 0.2em 0; - box-shadow: inset 0 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); - border: 0.083333333333333333em solid @bg-entry-border; - background-color: @bg-scale-entry; - padding: 0; -} -#FileBrowserQueryToolbar entry + button.flat:not(:hover):not(:active), -#FileBrowserIconToolbar entry + button.flat:not(:hover):not(:active) { - border-left: none; - padding-left: 0.083333333333333333em; -} -#FileBrowserQueryToolbar entry, -#FileBrowserIconToolbar entry { - min-height: 1.666666666666666666em; - min-width: 0; - margin: 0; - padding: 0 0.333333333333333333em; - border-right: none; - border-radius: 0.2em 0 0 0.2em; -} -#FileBrowserQueryToolbar label, -#FileBrowserIconToolbar label { - margin: 0 0.333333333333333333em 0 0.5em; -} /*** end ***************************************************************************************/ /*** Image Editor ******************************************************************************/ @@ -1207,59 +1071,23 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-height: 2.666666666666666666em; padding: 0 0.5em; } -/* Small Lock Button */ -#BeforeAfterContainer button { - min-height: 2em; - min-width: 2em; - margin: 0.25em 0.25em 0.25em 0; - padding: 0; - border-radius: 0.2em; - border: 0.083333333333333333em solid @bg-button-border; - background-color: transparent; - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); - background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); -} -#BeforeAfterContainer button image{ - margin: 0 0 0 0.083333333333333333em; -} -#BeforeAfterContainer button:checked image{ - margin: 0.083333333333333333em -0.166666666666666666em 0.083333333333333333em 0.25em; -} -/**/ #EditorToolbarTop { - margin: 0 -2px 0; + margin: 0 -1px 0 -1px; padding: 0; min-height: 0; } -#EditorTopPanel button { - margin: 0 0.083333333333333333em; - min-height: 2.5em; - min-width: 2.5em; -} -/* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */ -#EditorTopPanel :last-child > button:last-child { - margin-right: 0; +#IopsPanel { + margin: 0; + padding: 0; + min-height: 0; } -#EditorTopPanel button.narrowbutton { - min-width: 0.833333333333333333em; - padding: 0 0.166666666666666666em; -} - -/*Button editor bottom*/ #EditorZoomPanel label { min-width: 4em; margin: 0; } -#IopsPanel button.Left image { - padding: 0 2px 0 3px; -} -#EditorZoomPanel button { - margin-left: 0.083333333333333333em; - margin-right: 0.083333333333333333em; -} /*** end ***************************************************************************************/ /*** Toolbox ***********************************************************************************/ @@ -1270,7 +1098,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #MyExpander image { min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em + min-height: 1.333333333333333333em; + margin: 0 0.166666666666666666em; } /*Curve spinbutton background */ @@ -1310,7 +1139,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border: none; border-radius: 0; margin: 0; - padding: 0.5em; + padding: 0.416666666666666666em; } /* Sub-tool (MyExpander) */ @@ -1319,7 +1148,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border: 0.083333333333333333em solid @border-color; border-radius: 0; margin: 0; - padding: 0.5em; + padding: 0.416666666666666666em; } #MyExpanderTitle > box { @@ -1384,11 +1213,12 @@ menuitem:hover > * { color: @text-hl-color; } -menu image { +menu image:not(.dummy), +#MyExpander menu image:not(.dummy) { min-height: 2em; min-width: 1.333333333333333333em; padding: 0; - margin: 0 0.25em 0 -1.166666666666666666em; + margin: 0 0 0 -1.583333333333333333em; } /*** Selection popup list (used in filechooser) ***/ @@ -1440,9 +1270,9 @@ popover.background modelbutton:hover { /*** Switch ***********************************************************************************/ switch { - min-height: 2.5em; + min-height: 2.333333333333333333em; min-width: 11em; - margin: 0; + margin: 0 0.166666666666666666em; padding: 0; border-radius: 0.2em; background-image: none; @@ -1487,45 +1317,17 @@ switch:disabled:not(:checked) { /** end ****************************************************************************************/ /*** Buttons ***********************************************************************************/ -button { - min-height: 2.5em; - min-width: 2.5em; - margin: 0; - padding: 0; /* x */ +button, +#BeforeAfterContainer button { + min-height: 1.666666666666666666em; + min-width: 1.666666666666666666em; + margin: 0.166666666666666666em; border-radius: 0.2em; border: 0.083333333333333333em solid @bg-button-border; background-color: transparent; box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); } -button.flat { - padding: 0;/* x */ -} -button.text-button label { - margin: 0 0.5em;/* x */ -} - -button image + label { - margin-left: 0.25em; -} - -#PrefNotebook > stack > :nth-child(5) combobox { - /* margin: 0.166666666666666666em 0; */ - margin: 2px 0; -} -#PrefNotebook > stack > :nth-child(2) #MyFileChooserButton { - /* margin: 0.25em 0.333333333333333333em; */ - margin: 3px 5px; -} - -filechooser button image, -#MyFileChooserButton image { - min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; - opacity: .85; -} - -#MainNotebook > header > grid > button, button.flat { border: 0.083333333333333333em solid transparent; box-shadow: none; @@ -1533,199 +1335,91 @@ button.flat { background-color: transparent; } -/* Resetbutton */ -#MyExpander button:last-child.flat, -#MyExpander scale + button.flat, -dialog scale + button.flat, -#MainNotebook > stack > :nth-child(2) > box:nth-child(1) scale + button.flat, -entry + button.flat { - min-height: 1.166666666666666666em; - min-width: 1.5em; - margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; - padding: 0 0 0 0.166666666666666666em; -} -dialog entry + button:last-child.flat { - min-height: 1.666666666666666666em; -} - -#MyExpander scale + button:last-child.flat, -#MyExpander spinbutton + button:last-child.flat { - margin: 0 0 0 0.166666666666666666em; -} -#MyExpander image + button:last-child.flat { - margin: 0 0 0 0.25em; -} -/**/ - -/* Buttons Curve drawingarea*/ -#MyExpander grid > grid > grid > button.flat + button.flat, -#MyExpander grid > grid > grid > button.flat:first-child { - min-height: 2.5em; - min-width: 2.5em; - margin: 0.166666666666666666em 0.166666666666666666em 0 0; - padding: 0; -} -/**/ - -#BeforeAfterContainer button:hover, -#ToolBarPanelFileBrowser entry + button:hover, -#FileBrowser entry + button:hover, button.flat:hover, -button:hover { +button:hover, +#BeforeAfterContainer button:hover { border-color: @bg-button-border; box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-hover; } +#MainNotebook > header tab #CloseButton:hover, +#MainNotebook > header > grid > button:hover { + background-color: alpha(@bg-grey, 0.6); + border-color: shade(@bg-dark-grey, 0.6); +} -#BeforeAfterContainer button:checked, -#ToolBarPanelFileBrowser entry + button:active, -#FileBrowser entry + button:active, button.flat:active, button.flat:checked, button:active, -button:checked { +button:checked, +#BeforeAfterContainer button:checked { border-color: @bg-button-border; box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.08); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-active; } - -/* Add space between connected buttons */ -button.Right, -button.MiddleH { - margin-left: 0.166666666666666666em; - border: 0.083333333333333333em solid @bg-button-border; -} -/**/ - -/* Applies special styles in main notebook */ -#ProfilePanel { - margin-bottom: -2px; - padding-bottom: 0.416666666666666666em; -} -#ProfilePanel > label { - margin-bottom: 0.083333333333333333em; -} -#ProfilePanel combobox { - margin-left: 0.166666666666666666em; - margin-right: 0.166666666666666666em; -} -#ProfilePanel button.Left { - margin-left: -2px; +#MainNotebook > header tab #CloseButton:active, +#MainNotebook > header > grid > button:active { + background-color: alpha(@bg-light-grey, 0.8); + border-color: shade(@bg-dark-grey, 0.6); } -#PlacesPaned combobox { - margin-bottom: -8px; - padding-bottom: 0.416666666666666666em; +button label { + margin: 0 0.416666666666666666em; } -/**/ - -/* Button base format for Toolbox and dialogs */ -#ToolPanelNotebook > stack > box > box > combobox button, -dialog button, -#MyExpander button, -#BatchQueueButtonsMainContainer button { - min-height: 1.666666666666666666em; - min-width: 0; - padding: 0 0.416666666666666666em; - margin: 0.083333333333333333em 0; +button image:not(.dummy), +#MyExpander button image:not(.dummy) { + margin: 0; } -#MyExpander #MyFileChooserButton + button.image-button{ - min-width: 1.666666666666666666em; - padding: 0; +#MyFileChooserButton label { + margin: 0 0 0 0.416666666666666666em; } - -combobox button.combo, -#ToolPanelNotebook > stack > box > box > combobox button.combo, -dialog combobox button.combo, -#MyExpander combobox button.combo, -#BatchQueueButtonsMainContainer combobox button.combo { - padding: 0 0.166666666666666666em 0 0.25em; +#MyFileChooserButton image { + padding: 0 0.416666666666666666em 0 0; + opacity: 0.85; } - -#ToolPanelNotebook > stack > box > box > combobox { - margin-right: 0.25em; +button.combo { + padding: 0 0 0 0.25em; } - -combobox entry + button { - padding: 0; +combobox arrow { + margin-right: 0.083333333333333333em; } -combobox entry + button arrow{ - margin: 0 -0.166666666666666666em 0 -0.25em; +#MetaPanelNotebook button + button:last-child, +#MetaPanelNotebook scrolledwindow ~ combobox entry + button:not(.dummy) { + margin-right: 0; } - -/* Add/remove space between buttons and labels in toolbox*/ -#ToolPanelNotebook > stack > box > box > label { - margin: 0 0 0 0.25em; -} - -#MyExpander combobox:not(:first-child):not(:only-child), -#MyExpander .image-combo:not(:first-child), -#MyExpander button:not(.flat) + combobox, -#MyExpander combobox + button:not(.flat), -#MyExpander combobox + combobox, -#MyExpander button + label, -#MyExpander combobox + label { - margin-left: 0.166666666666666666em; -} - -#MyExpander label + * > button:not(.flat).Left, -#MyExpander label + combobox:not(:first-child):not(:only-child), -#MyExpander label + button:not(.flat):not(spinbutton) { - margin-left: 0.333333333333333333em; -} - -buttonbox:not(.dialog-action-area) button{ - margin: 0.083333333333333333em 0 0.333333333333333333em 0.166666666666666666em; -} -#PrefNotebook buttonbox:not(.dialog-action-area) { - margin-right: -5px; -} - -/* Arrow toggle combo button */ -#IopsPanel .image-combo button.Right, -#MyExpander .image-combo button.Right { - border-left: none; +#MetaPanelNotebook scrolledwindow + grid > button:first-child, +#MetaPanelNotebook scrolledwindow + grid + grid > button:first-child { margin-left: 0; - padding-left: 0; - padding-right: 0; +} +#MetaPanelNotebook scrolledwindow + grid > button:last-child, +#MetaPanelNotebook scrolledwindow + grid + grid > button:last-child { + margin-right: 0; +} +combobox entry + button:not(.dummy) arrow { + margin-right: 0; +} +combobox entry + button:not(.dummy) { + min-width: 1em; + margin-left: 0; + padding: 0 ; border-top-left-radius: 0; border-bottom-left-radius: 0; - min-width: 1.333333333333333333em; + border-left: none; } -#IopsPanel .image-combo button.Left, -#MyExpander .image-combo button.Left { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - min-width: 2.5em; +#PlacesPaned button.combo { + margin: 0 0 calc(0.416666666666666666em - 8px) 0; } -/**/ -/**/ -#MyExpander button.text-button label { - margin: 0;/* x */ +/* Reset button */ +scale + button.flat, +spinbutton + button.flat, +scale + image + image + button.flat { + min-height: 1.333333333333333333em; } -/* Graduated filter big button */ -#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child { - min-height: 2.5em; - min-width: 2.5em; - padding: 0; - margin: 0.25em 0; -} -/**/ -/* Pipette */ -#MyExpander button.independent.image-button { - min-height: 2.5em; -} -#MyExpander button.independent.image-button + label + combobox button { - margin: 0.5em 0; -} -#MyExpander button.independent.image-button + label { - margin-left: 2em ; -} -/**/ +/*Color chooser & buttons */ button.color { min-height: 1.166666666666666666em; min-width: 2.75em; @@ -1741,12 +1435,13 @@ colorchooser colorswatch#add-color-button:first-child { /* Save, Cancel, OK ... buttons */ .dialog-action-area button { - min-height: 2.5em; - margin-top: 0.333333333333333333em; + min-height: 2.166666666666666666em; + margin-top: 1em; + padding: 0; } messagedialog .dialog-action-area button { - margin: 0 0.666666666666666666em 0.666666666666666666em 0.666666666666666666em; - min-height: 2.166666666666666666em;; + min-height: 1.833333333333333333em; + margin: -12px 0.5em 0.5em 0.5em; } messagedialog .dialog-action-area button:not(:only-child):nth-child(1) { margin-right: 0.25em; @@ -1754,25 +1449,224 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(1) { messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { margin-left: 0.25em; } + +/* Big tool buttons */ +#ToolBarPanelFileBrowser button, +#EditorTopPanel button, +#IopsPanel button, +#ProfilePanel button, +#MainNotebook > header > grid > button, +#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter big button */, +#MyExpander button.independent.image-button,/* Picker button */ +#MyExpander .drawingarea + grid > button.flat,/* Curve buttons */ +#BatchQueueButtonsMainContainer + grid + box button, +#RightNotebook > stack > scrolledwindow:last-child button.image-button,/* Fast Export */ +#MetaPanelNotebook scrolledwindow + grid > button, +#MetaPanelNotebook scrolledwindow + grid + grid > button { + min-height: 2.5em; + min-width: 2.5em; + margin: 0 0.166666666666666666em; +} +#ToolBarPanelFileBrowser > button:first-child, +#EditorTopPanel > button:first-child, +#IopsPanel > button:nth-child(6), +#ProfilePanel > grid > button:first-child { + margin-left: 0; +} +#ToolBarPanelFileBrowser > button:last-child, +#ToolBarPanelFileBrowser > box:last-child > button:last-child, +#EditorTopPanel > button:last-child, +#EditorTopPanel > box:last-child > button:last-child, +#IopsPanel > button:last-child, +#ProfilePanel > grid > button:last-child, +#BatchQueueButtonsMainContainer + grid + box button { + margin-right: 0; +} +#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter button */, +#MyExpander button.independent.image-button,/* Picker button */ +#MyExpander .drawingarea + grid > button.flat,/* Curve buttons */ +#MetaPanelNotebook scrolledwindow + grid > button, +#MetaPanelNotebook scrolledwindow + grid + grid > button { + margin: 0.166666666666666666em; +} + +#MyExpander button.independent.image-button + label + combobox button { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +#ProfilePanel combobox { + margin-right: -2px; +} +#ProfilePanel > grid { + margin-bottom: calc(0.416666666666666666em -2px); +} +#EditorTopPanel button.narrowbutton { + min-width: 0.833333333333333333em; + padding: 0 0.166666666666666666em; +} + +/* Image close button */ +#MainNotebook > header tab #CloseButton { + padding: 0; + margin: 0.333333333333333333em 0 0.416666666666666666em 0.166666666666666666em; + min-width: 1.5em; + min-height: 0; +} +#MainNotebook > header tab #CloseButton image{ + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; +} + +/* Filter buttons*/ +#ToolBarPanelFileBrowser .smallbuttonbox { + min-height: 1.333333333333333333em; + padding: 0; + margin: 0; +} +#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(2) { + margin: 0.083333333333333333em 0 -0.166666666666666666em; +} +#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image { + margin: -0.166666666666666666em; + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; +} +#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton { + min-height: 0; + min-width: 1.333333333333333333em; + padding: 0; + margin: 0 0.25em; + border: none; + border-radius: 0; + background-color: transparent; + background-image: none; + box-shadow: none; +} +#FileBrowser #ToolBarPanelFileBrowser box:nth-child(7) > box.smallbuttonbox > button.smallbutton:checked, +#EditorLeftPaned #ToolBarPanelFileBrowser box:nth-child(5) > box.smallbuttonbox > button.smallbutton:checked { + background-image: image(rgba(30,30,30,.3)); + background-color: @bg-button-active; +} + +/* Arrow toggle combo button */ +#IopsPanel .image-combo button.Right, +#MyExpander .image-combo button.Right { + border-left: none; + margin-left: 0; + padding: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + min-width: 1.333333333333333333em; +} +#IopsPanel .image-combo button.Right image, +#MyExpander .image-combo button.Right image { + margin: 0 -0.083333333333333333em; +} +#IopsPanel .image-combo button.Left, +#MyExpander .image-combo button.Left { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + min-width: 2.5em; + margin-right: 0; +} +#MyExpander .image-combo button.Left { + min-width: 2.75em; +} +#MyExpander .image-combo button.Left label { + margin-right: 0; +} + +/* Search & Query buttons */ +#FileBrowserQueryToolbar entry + button.flat, +#FileBrowserIconToolbar entry + button.flat { + min-height: 1.666666666666666666em; + min-width: 1.666666666666666666em; + margin: 0; + border-radius: 0 0.2em 0.2em 0; + box-shadow: inset 0 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + border: 0.083333333333333333em solid @bg-entry-border; + background-color: @bg-scale-entry; + padding: 0; +} +#FileBrowserQueryToolbar entry + button.flat:not(:hover):not(:active), +#FileBrowserIconToolbar entry + button.flat:not(:hover):not(:active) { + border-left: none; + padding-left: 0.083333333333333333em; +} +#FileBrowserQueryToolbar entry, +#FileBrowserIconToolbar entry { + min-height: 1.666666666666666666em; + min-width: 0; + margin: 0; + padding: 0 0.333333333333333333em; + border-right: none; + border-radius: 0.2em 0 0 0.2em; +} + +/* Small Lock Button */ +#BeforeAfterContainer button { + min-height: 2em; + min-width: 2em; + margin: 0.25em 0.25em 0.25em 0; + padding: 0; + border-radius: 0.2em; + border: 0.083333333333333333em solid @bg-button-border; + background-color: transparent; + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); +} +#BeforeAfterContainer button image{ + margin: 0 0 0 0.083333333333333333em; +} +#BeforeAfterContainer button:checked image{ + margin: 0.083333333333333333em -0.166666666666666666em 0.083333333333333333em 0.25em; +} + +/* Snapshot & Places buttons */ +#Snapshots button, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button { + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + border: 0.083333333333333333em solid @bg-dark-grey; + border-radius: 0; + box-shadow: none; + min-height: 1.833333333333333333em; +} + +#Snapshots button:hover, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:hover { +background-color: @bg-list-hover; +} +#Snapshots button:active, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:active { +background-color: shade(@bg-list-hover, 1.15); +} /**/ + /* View & Filechooser Buttons */ -dialog .view button, -window .view button { +.view button { background-color: @bg-dark-grey; background-image: none; box-shadow: none; min-height: 2em; min-width: 1.333333333333333333em; - padding: 0 0.166666666666666666em 0 0.333333333333333333em; + padding: 0 0.166666666666666666em; margin: 0; } +#pathbarbox button { + min-width: 2em; + margin: 0; + padding: 0; + } window treeview > header image { min-width: 1.333333333333333333em; } -dialog .view button.text-button label, -window .view button.text-button label { +.view button.text-button label { margin: 0; } window .view button { @@ -1793,40 +1687,34 @@ dialog .view button { color: @headline-hl; } -dialog .view header button:not(:first-child):not(:only-child), -window .view header button:not(:first-child):not(:only-child), +.view header button:not(:first-child):not(:only-child), .path-bar button:not(:first-child):not(:only-child) { border-left: none; } -dialog .view header button, -window .view header button, +.view header button, .path-bar button { border-radius: 0; } -#pathbarbox button:last-child { - min-height: 2em; - min-width: 2em; - margin: 0; - padding: 0; - } .path-bar button:first-child { border-top-left-radius: 0.2em; border-bottom-left-radius: 0.2em; - min-width: 2em; margin: 0; padding: 0; } .path-bar button:last-child { border-top-right-radius: 0.2em; border-bottom-right-radius: 0.2em; - min-width: 2em; margin: 0; padding: 0; } -.path-bar button label { - margin: 0; - padding: 0 0.333333333333333333em; +#pathbarbox button:not(:first-child):not(:last-child) label { + margin: 0 0.5em; +} + +#pathbarbox button:not(:first-child):not(:last-child) image { + margin: 0 0 0 0.5em; + min-width: 1.333333333333333333em; } /**/ @@ -1861,73 +1749,6 @@ popover button.text-button:active { } /**/ -/* Titlebar & Notebook buttons */ -#MainNotebook > header.top > grid > button { - margin: 0 0 0 0.416666666666666666em; -} -#MainNotebook > header.left > grid > button { - margin: 0.416666666666666666em 0 0; -} - -headerbar button.titlebutton image { - padding: 0; - margin: 0; -} -headerbar button.titlebutton { - margin: 0 0 0 0.333333333333333333em; - background-image: none; - border: 0.083333333333333333em solid transparent; - background-color: transparent; - box-shadow: none; - min-width: 1.5em; - min-height: 1.5em; - padding: 0; -} -messagedialog headerbar button.titlebutton { - min-width: 1.25em; - min-height: 1.25em; - margin: 0; -} - -#MainNotebook tab #CloseButton { - padding: 0; - margin: 0.333333333333333333em 0 0.416666666666666666em 0.25em; - min-width: 1.5em; - min-height: 0; -} -#MainNotebook tab #CloseButton image{ - min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; -} -#MainNotebook > header > grid > button:hover, -#MainNotebook tab #CloseButton:hover, -headerbar button.titlebutton:hover{ - border-color: rgba(0,0,0,.8); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.11); - background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); - background-color: rgba(128, 128, 128,.20); -} -#MainNotebook > header > grid > button:active, -headerbar button.titlebutton:active{ - border-color: rgba(0,0,0,.8); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.15); - background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); - background-color: rgba(128, 128, 128,.40); -} -#MainNotebook tab #CloseButton:hover, -headerbar button.titlebutton.close:hover{ - border-color: rgba(0,0,0,.8); - background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.32); -} -#MainNotebook tab #CloseButton:active, -headerbar button.titlebutton.close:active{ - border-color: rgba(0,0,0,.8); - background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.4); -} -/**/ - /*** end ***************************************************************************************/ /*** Ckeckbox & Radio **************************************************************************/ @@ -1948,7 +1769,7 @@ radio { border: 0.105em solid shade(@text-color, 0.95); background-image: none; background-color: transparent; - margin: 0; + margin: 0 0.166666666666666666em; padding: 0; min-height: 1.166666666666666666em; min-width: 1.166666666666666666em; @@ -1958,7 +1779,7 @@ radio { } radiobutton label, checkbutton label { - margin: 0 0.5em; + margin: 0 0.333333333333333333em; padding: 0; } check { @@ -1977,7 +1798,7 @@ frame > checkbutton check{ margin-left: 0.5em; } -#PartialPaste checkbutton/* :not(#PartialPasteHeader) */ { +#PartialPaste checkbutton { min-height: 1.166666666666666666em; margin-top: calc(0.416666666666666666em - 4px); margin-bottom: calc(0.416666666666666666em - 4px) @@ -1991,16 +1812,12 @@ frame > checkbutton check{ padding-top: calc(0.666666666666666666em - 5px) } -#MyExpander button + checkbutton:last-child { - margin-left: 0.333333333333333333em; -} - /*** end ***************************************************************************************/ /*** Entry & Spinbutton ************************************************************************/ #MyExpander entry, entry { - margin: 0.083333333333333333em 0; + margin: 0.166666666666666666em; padding: 0 0.333333333333333333em; min-height: 1.666666666666666666em; min-width: 0; @@ -2011,7 +1828,7 @@ entry { } spinbutton { - margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; + margin: 0.166666666666666666em; padding: 0; min-height: 1.666666666666666666em; min-width: 0; @@ -2022,7 +1839,7 @@ spinbutton { } #MyExpander spinbutton { - margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; + margin: 0.16666666666666666666em; padding: 0; min-height: 1.333333333333333333em; min-width: 0; @@ -2034,7 +1851,7 @@ spinbutton { box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, .12), 0 0.083333333333333333em rgba(255, 255, 255, 0.12); } #MyExpander button + label + spinbutton { - margin: 0.25em 0; /* Needed for Reset & and Auto button height*/ + margin: 0.333333333333333333em 0; /* Needed for Reset & and Auto button height*/ } #MyExpander checkbutton + label + spinbutton { margin: 0.333333333333333333em 0; /* Needed for Reset & and Auto checkbox button height*/ @@ -2044,19 +1861,24 @@ spinbutton { margin-left: 0.25em; } -#BatchQueueButtonsMainContainer spinbutton button, + #MyExpander spinbutton button, spinbutton button { padding: 0; margin: 0; - min-height: 0; - min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; + min-width: 1.5em; background-image: none; background-color: transparent; border: none; border-radius: 0; box-shadow: none; } +#MyExpander spinbutton button { + margin: -1px 0; + min-width: 1.333333333333333333em; +} + #MyExpander spinbutton entry, spinbutton entry { padding: 0 0.333333333333333333em; @@ -2071,7 +1893,6 @@ spinbutton entry { padding: 0 0.333333333333333333em 0 0.833333333333333333em; } -#BatchQueueButtonsMainContainer spinbutton button:hover, #MyExpander spinbutton button:hover, spinbutton button:hover { background-color: rgba(0,0,0,0.3); @@ -2079,7 +1900,6 @@ spinbutton button:hover { border: none; box-shadow: none; } -#BatchQueueButtonsMainContainer spinbutton button:active, #MyExpander spinbutton button:active, spinbutton button:active { background-color: rgba(0,0,0,0.5); @@ -2168,11 +1988,47 @@ headerbar:backdrop { headerbar .title:backdrop { color: alpha(@winTitle,.60); } +/* Titlebar buttons*/ + +headerbar button.titlebutton image { + padding: 0; + margin: 0; +} +headerbar button.titlebutton { + margin: 0 0 0 0.333333333333333333em; + background-image: none; + border: 0.083333333333333333em solid transparent; + background-color: transparent; + box-shadow: none; + min-width: 1.5em; + min-height: 1.5em; + padding: 0; +} +messagedialog headerbar button.titlebutton { + min-width: 1.25em; + min-height: 1.25em; + margin: 0; +} +headerbar button.titlebutton:hover{ + border-color: rgba(0,0,0,.8); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.11); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); + background-color: rgba(128, 128, 128,.20); +} +headerbar button.titlebutton:active{ + border-color: rgba(0,0,0,.8); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.15); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); + background-color: rgba(128, 128, 128,.40); +} +headerbar button.titlebutton.close:hover{ + border-color: rgba(0,0,0,.8); + background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.32); +} +headerbar button.titlebutton.close:active{ + border-color: rgba(0,0,0,.8); + background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.4); +} /*** end ***************************************************************************************/ - - -/* .view:not(check):not(radio), image:not(check):not(radio), spinbutton button, cellview { - -gtk-icon-transform: scale(calc(( 96 / 96 ) * ( 8 / 9 ))); -} */ -/* * {-gtk-dpi: 144;} */ - From bf19c619aeb505e7c745673e02b301496f8ab435 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 4 Nov 2018 10:24:32 +0100 Subject: [PATCH 085/348] Update TooWaBlue-GTK3-20_.css Some fine tuning. --- rtdata/themes/TooWaBlue-GTK3-20_.css | 49 ++++++++++++---------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index 44546d6ec..e500ad37c 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -1365,6 +1365,7 @@ button:checked, border-color: shade(@bg-dark-grey, 0.6); } +/* Misc */ button label { margin: 0 0.416666666666666666em; } @@ -1456,7 +1457,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { #IopsPanel button, #ProfilePanel button, #MainNotebook > header > grid > button, -#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter big button */, +#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter big button */, #MyExpander button.independent.image-button,/* Picker button */ #MyExpander .drawingarea + grid > button.flat,/* Curve buttons */ #BatchQueueButtonsMainContainer + grid + box button, @@ -1482,7 +1483,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { #BatchQueueButtonsMainContainer + grid + box button { margin-right: 0; } -#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter button */, +#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter button */, #MyExpander button.independent.image-button,/* Picker button */ #MyExpander .drawingarea + grid > button.flat,/* Curve buttons */ #MetaPanelNotebook scrolledwindow + grid > button, @@ -1725,8 +1726,6 @@ popover button.text-button { border: 0.083333333333333333em solid @border-color; box-shadow: none; background-image: none; - margin: 0.083333333333333333em 0; - min-height: 1.666666666666666666em; padding: 0 0.666666666666666666em; } popover button.text-button label { @@ -1751,16 +1750,15 @@ popover button.text-button:active { /*** end ***************************************************************************************/ -/*** Ckeckbox & Radio **************************************************************************/ -checkbox, -checkbutton, -radiobutton { +/*** Checkbox & Radio **************************************************************************/ +checkbutton { padding: 0; - margin: 0; - min-height: 2em; + margin: 0.083333333333333333em 0.166666666666666666em; + min-height: 1.666666666666666666em; } -#PrefNotebook checkbox, -#PrefNotebook checkbutton { +radiobutton { + padding: 0.083333333333333333em 0; + margin: 0.166666666666666666em; min-height: 1.666666666666666666em; } @@ -1769,7 +1767,7 @@ radio { border: 0.105em solid shade(@text-color, 0.95); background-image: none; background-color: transparent; - margin: 0 0.166666666666666666em; + margin: 0; padding: 0; min-height: 1.166666666666666666em; min-width: 1.166666666666666666em; @@ -1777,11 +1775,6 @@ radio { background-repeat: no-repeat; color: shade(@text-color, 0.95); } -radiobutton label, -checkbutton label { - margin: 0 0.333333333333333333em; - padding: 0; -} check { border-radius: 0.166666666666666666em; } @@ -1794,6 +1787,12 @@ radio:disabled { border-color: @fg-disabled; } +radiobutton label, +checkbutton label { + margin: 0 0 0 0.416666666666666666em; + padding: 0; +} + frame > checkbutton check{ margin-left: 0.5em; } @@ -1808,7 +1807,6 @@ frame > checkbutton check{ } #PartialPasteHeader { margin-left: 0.5em; - padding-top: 0.333333333333333333em; padding-top: calc(0.666666666666666666em - 5px) } @@ -1850,17 +1848,12 @@ spinbutton { color: @text-tbEntry; box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, .12), 0 0.083333333333333333em rgba(255, 255, 255, 0.12); } +/* Needed for Reset & and Auto button height*/ +#MyExpander checkbutton + label + spinbutton, #MyExpander button + label + spinbutton { - margin: 0.333333333333333333em 0; /* Needed for Reset & and Auto button height*/ + margin-top: 0.333333333333333333em; + margin-bottom: 0.333333333333333333em; } -#MyExpander checkbutton + label + spinbutton { - margin: 0.333333333333333333em 0; /* Needed for Reset & and Auto checkbox button height*/ -} - -#MyExpander image + spinbutton { - margin-left: 0.25em; -} - #MyExpander spinbutton button, spinbutton button { From 918cb434cbd7fa47bec4f7a17bfce9ec6911422f Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 4 Nov 2018 15:06:34 +0100 Subject: [PATCH 086/348] Clip label takes to much space The clip label "Clip %" takes to much space. This changes the spacing from 10px to 4px. --- rtgui/tonecurve.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index 06abe1fd2..b0a03cccc 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -48,7 +48,7 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA //----------- Auto Levels ---------------------------------- abox = Gtk::manage (new Gtk::HBox ()); - abox->set_spacing (10); + abox->set_spacing (4); autolevels = Gtk::manage (new Gtk::ToggleButton (M("TP_EXPOSURE_AUTOLEVELS"))); autolevels->set_tooltip_markup (M("TP_EXPOSURE_AUTOLEVELS_TIP")); From 4fefc9433a9c1114630898bab3c0a4c0564b0097 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 4 Nov 2018 19:06:54 +0100 Subject: [PATCH 087/348] Fixes unspecified bit depth in CLI In rawtherapee-cli, if you did not explcitly specify a bit depth then -1 was used and lead to corrupted saved images. Fixes #4937 --- rtgui/main-cli.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc index 26ee4fa81..66e0b9cfc 100644 --- a/rtgui/main-cli.cc +++ b/rtgui/main-cli.cc @@ -410,8 +410,6 @@ int processLineParams ( int argc, char **argv ) return -3; } - std::cout << "Output is " << bits << "-bit " << (isFloat ? "floating-point" : "integer") << "." << std::endl; - break; case 't': @@ -622,6 +620,18 @@ int processLineParams ( int argc, char **argv ) } } + if (bits == -1) { + if (outputType == "jpg") { + bits = 8; + } else if (outputType == "png") { + bits = 8; + } else if (outputType == "tif") { + bits = 16; + } else { + bits = 8; + } + } + if ( !argv1.empty() ) { return 1; } @@ -662,6 +672,7 @@ int processLineParams ( int argc, char **argv ) rtengine::procparams::ProcParams currentParams; Glib::ustring inputFile = inputFiles[iFile]; + std::cout << "Output is " << bits << "-bit " << (isFloat ? "floating-point" : "integer") << "." << std::endl; std::cout << "Processing: " << inputFile << std::endl; rtengine::InitialImage* ii = nullptr; From 70cd2b2033d308f64e886ad71a0fece86d3d7916 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 30 Oct 2018 23:56:49 +0100 Subject: [PATCH 088/348] Reverted changes to 'default' language file #4932 --- rtdata/languages/default | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 2a5b73e44..68c279e4e 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -402,7 +402,7 @@ HISTORY_MSG_145;Microcontrast - Uniformity HISTORY_MSG_146;Edge sharpening HISTORY_MSG_147;ES - Luminance only HISTORY_MSG_148;Microcontrast -HISTORY_MSG_149;Microcontrast - 33 matrix +HISTORY_MSG_149;Microcontrast - 3×3 matrix HISTORY_MSG_150;Post-demosaic artifact/noise red. HISTORY_MSG_151;Vibrance HISTORY_MSG_152;Vib - Pastel tones @@ -824,7 +824,7 @@ IPTCPANEL_CITY;City IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard. IPTCPANEL_COPYRIGHT;Copyright notice -IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as 2008 Jane Doe. +IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. IPTCPANEL_COUNTRY;Country IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. IPTCPANEL_CREATOR;Creator @@ -1386,9 +1386,9 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Ed TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m). +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. +TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) +TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All @@ -1425,7 +1425,7 @@ TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. TP_COLORAPP_HUE;Hue (h) -TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0 and 360. +TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 TP_COLORAPP_LABEL_CAM02;Image Adjustments TP_COLORAPP_LABEL_SCENE;Scene Conditions @@ -1586,16 +1586,16 @@ 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 33 window size often leads to better results than using one median filter iteration with a 77 window size. +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\n33 soft: treats 5 pixels in a 33 pixel window.\n33: treats 9 pixels in a 33 pixel window.\n55 soft: treats 13 pixels in a 55 pixel window.\n55: treats 25 pixels in a 55 pixel window.\n77: treats 49 pixels in a 77 pixel window.\n99: treats 81 pixels in a 99 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_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;33 -TP_DIRPYRDENOISE_TYPE_3X3SOFT;33 soft -TP_DIRPYRDENOISE_TYPE_5X5;55 -TP_DIRPYRDENOISE_TYPE_5X5SOFT;55 soft -TP_DIRPYRDENOISE_TYPE_7X7;77 -TP_DIRPYRDENOISE_TYPE_9X9;99 +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 @@ -2041,7 +2041,7 @@ TP_SHARPENING_USM;Unsharp Mask TP_SHARPENMICRO_AMOUNT;Quantity TP_SHARPENMICRO_CONTRAST;Contrast threshold TP_SHARPENMICRO_LABEL;Microcontrast -TP_SHARPENMICRO_MATRIX;33 matrix instead of 55 +TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformity TP_SOFTLIGHT_LABEL;Soft Light TP_SOFTLIGHT_STRENGTH;Strength From 4e78bba2eebd12b642bf766b3894da551acf0c89 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 4 Nov 2018 20:26:08 +0100 Subject: [PATCH 089/348] generateTranslationDiffs --- rtdata/languages/Catala | 46 ++++++++++++++++- rtdata/languages/Chinese (Simplified) | 46 ++++++++++++++++- rtdata/languages/Chinese (Traditional) | 46 ++++++++++++++++- rtdata/languages/Czech | 46 ++++++++++++++++- rtdata/languages/Dansk | 46 ++++++++++++++++- rtdata/languages/Deutsch | 49 +++++++++++++++++++ rtdata/languages/English (UK) | 46 ++++++++++++++++- rtdata/languages/English (US) | 46 ++++++++++++++++- rtdata/languages/Espanol | 46 ++++++++++++++++- rtdata/languages/Euskara | 46 ++++++++++++++++- rtdata/languages/Francais | 46 ++++++++++++++++- rtdata/languages/Greek | 46 ++++++++++++++++- rtdata/languages/Hebrew | 46 ++++++++++++++++- rtdata/languages/Italiano | 46 ++++++++++++++++- rtdata/languages/Japanese | 44 +++++++++++++++++ rtdata/languages/Latvian | 46 ++++++++++++++++- rtdata/languages/Magyar | 46 ++++++++++++++++- rtdata/languages/Nederlands | 46 ++++++++++++++++- rtdata/languages/Norsk BM | 46 ++++++++++++++++- rtdata/languages/Polish | 46 ++++++++++++++++- rtdata/languages/Polish (Latin Characters) | 46 ++++++++++++++++- rtdata/languages/Portugues (Brasil) | 44 +++++++++++++++++ rtdata/languages/Serbian (Cyrilic Characters) | 46 ++++++++++++++++- rtdata/languages/Serbian (Latin Characters) | 46 ++++++++++++++++- rtdata/languages/Slovak | 46 ++++++++++++++++- rtdata/languages/Suomi | 46 ++++++++++++++++- rtdata/languages/Swedish | 46 ++++++++++++++++- rtdata/languages/Turkish | 46 ++++++++++++++++- rtdata/languages/default | 32 ++++++------ 29 files changed, 1278 insertions(+), 41 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 5484f536c..bd9cb8359 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -954,6 +954,10 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -970,6 +974,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_POPUPCOLORLABEL1;Label: Red @@ -1310,13 +1316,27 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1340,6 +1360,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1447,6 +1468,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_CHANNELMIXERBW;Black-and-white !PARTIALPASTE_COLORAPP;CIECAM02 !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1473,6 +1495,11 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1740,6 +1767,16 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1768,6 +1805,10 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1944,6 +1985,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2086,6 +2129,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index bacc0ea58..5478d820a 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -995,6 +995,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !CURVEEDITOR_AXIS_OUT;O: !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. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !EDIT_OBJECT_TOOLTIP;Displays a widget on the preview window which lets you adjust this tool. !EDIT_PIPETTE_TOOLTIP;To add an adjustment point to the curve, hold the Ctrl key while left-clicking the desired spot in the image preview.\nTo adjust the point, hold the Ctrl key while left-clicking the corresponding area in the preview, then let go of Ctrl (unless you desire fine control) and while still holding the left mouse button move the mouse up or down to move that point up or down in the curve. !EXIFFILTER_IMAGETYPE;Image type @@ -1010,6 +1014,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_QUERYHINT;Type filenames to search for. Supports partial filenames. Separate the search terms using commas, e.g.\n1001,1004,1199\n\nExclude search terms by prefixing them with !=\ne.g.\n!=1001,1004,1199\n\nShortcuts:\nCtrl-f - focus the Find box,\nEnter - search,\nEsc - clear the Find box,\nShift-Esc - defocus the Find box. !FILEBROWSER_SHOWCOLORLABEL1HINT;Show images labeled Red.\nShortcut: Alt-1 @@ -1387,13 +1393,27 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1417,6 +1437,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1516,6 +1537,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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\n"%1" will be used instead. !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter @@ -1526,6 +1548,11 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !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 @@ -1692,6 +1719,16 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1718,6 +1755,10 @@ 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_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1919,6 +1960,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -2063,6 +2106,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 127fea254..9404a8a6b 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -453,6 +453,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -504,6 +508,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -972,13 +978,27 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1002,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1148,6 +1169,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1207,6 +1229,11 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1540,6 +1567,16 @@ TP_WBALANCE_TEMPERATURE;色溫 !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1577,6 +1614,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1863,6 +1904,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -2025,6 +2068,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index a6b19baa7..caaba31bb 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2189,6 +2189,12 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !!!!!!!!!!!!!!!!!!!!!!!!! !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. @@ -2197,8 +2203,22 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_273;CT - Color Balance SMH !HISTORY_MSG_392;W - Residual - Color Balance !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D !HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type @@ -2213,6 +2233,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -2259,11 +2280,17 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !ICCPROFCREATOR_TRC_PRESET;Tone response curve: !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance @@ -2272,6 +2299,20 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !SAVEDLG_FILEFORMAT_FLOAT; floating-point !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset +!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_ICM_WORKING_TRC;Tone response curve: !TP_ICM_WORKING_TRC_CUSTOM;Custom !TP_ICM_WORKING_TRC_GAMMA;Gamma @@ -2285,6 +2326,8 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_RCDVNG4;RCD+VNG4 @@ -2297,3 +2340,4 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 9edb918c8..aaa58fce2 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -445,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -496,6 +500,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -967,13 +973,27 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -997,6 +1017,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1145,6 +1166,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1204,6 +1226,11 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1537,6 +1564,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1574,6 +1611,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1859,6 +1900,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2023,6 +2066,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 62f258cea..14debc30f 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2350,3 +2350,52 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Ausschnitt an Bildschirm anpassen.\nTaste: f ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - + +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!HISTORY_MSG_489;DRC - Detail +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace +!PARTIALPASTE_DEHAZE;Haze removal +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 1d31bdd3f..791a913ee 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -26,7 +26,9 @@ HISTORY_MSG_392;W - Residual - Colour Balance HISTORY_MSG_419;Retinex - Colour space HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colours HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Colour correction +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Colour correction HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid colour shift +HISTORY_MSG_SH_COLORSPACE;S/H - Colourspace MAIN_TAB_COLOR;Colour MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: Theme-based\nShortcut: 9 MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: Black\nShortcut: 9 @@ -161,6 +163,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -232,6 +238,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_CLEARPROFILE;Clear !FILEBROWSER_COPYPROFILE;Copy !FILEBROWSER_CURRENT_NAME;Current name: @@ -811,11 +819,24 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1032,6 +1053,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIALOGLABEL;Partial paste processing profile !PARTIALPASTE_DIRPYRDENOISE;Noise reduction @@ -1101,6 +1123,11 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries !PREFERENCES_CACHEOPTS;Cache Options !PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height @@ -1495,6 +1522,16 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORTONING_HUE;Hue !TP_COLORTONING_LAB;L*a*b* blending !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_METHOD;Method @@ -1537,6 +1574,10 @@ 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_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1823,6 +1864,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2016,6 +2059,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 4e3829269..fe7565d28 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -44,6 +44,10 @@ !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -116,6 +120,8 @@ !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_CLEARPROFILE;Clear !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_COPYPROFILE;Copy @@ -720,13 +726,27 @@ !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -750,6 +770,7 @@ !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -951,6 +972,7 @@ !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIALOGLABEL;Partial paste processing profile !PARTIALPASTE_DIRPYRDENOISE;Noise reduction @@ -1025,6 +1047,11 @@ !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries !PREFERENCES_CACHEOPTS;Cache Options !PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height @@ -1451,6 +1478,16 @@ !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1499,6 +1536,10 @@ !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1810,6 +1851,8 @@ !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -2006,6 +2049,7 @@ !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index b80fef3d8..b70f2b3a7 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1480,6 +1480,10 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1493,6 +1497,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. @@ -1694,13 +1700,27 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1724,6 +1744,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1818,6 +1839,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !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\n"%1" will be used instead. !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_GRADIENT;Graduated filter !PARTIALPASTE_LOCALCONTRAST;Local contrast @@ -1833,6 +1855,11 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation @@ -1930,9 +1957,23 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -2024,6 +2065,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2157,6 +2200,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 61de1ab54..19ec9ba7d 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -446,6 +446,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -497,6 +501,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -968,13 +974,27 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -998,6 +1018,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1146,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1205,6 +1227,11 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1538,6 +1565,16 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1575,6 +1612,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1860,6 +1901,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2024,6 +2067,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 15d8affc3..adc0528ea 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2209,7 +2209,13 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !!!!!!!!!!!!!!!!!!!!!!!!! !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !EXIFFILTER_IMAGETYPE;Image type +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !GENERAL_RESET;Reset !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_235;B&W - CM - Auto @@ -2217,9 +2223,23 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !HISTORY_MSG_273;CT - Color Balance SMH !HISTORY_MSG_392;W - Residual - Color Balance !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D !HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type @@ -2236,17 +2256,24 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance @@ -2256,6 +2283,20 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset +!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction !TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both @@ -2271,6 +2312,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_PIXELSHIFTEPERISO;Sensitivity @@ -2285,3 +2328,4 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 0641c6a49..761d0ea77 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -445,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -496,6 +500,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -967,13 +973,27 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -997,6 +1017,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1145,6 +1166,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1204,6 +1226,11 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1537,6 +1564,16 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1574,6 +1611,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1859,6 +1900,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2023,6 +2066,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 0e6d6ddd3..d909f15c4 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -446,6 +446,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -497,6 +501,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -968,13 +974,27 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -998,6 +1018,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1146,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1205,6 +1227,11 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1538,6 +1565,16 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1575,6 +1612,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1860,6 +1901,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2024,6 +2067,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 53fda9e49..173fb2a23 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1316,6 +1316,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1329,6 +1333,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !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. @@ -1569,13 +1575,27 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1599,6 +1619,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1686,6 +1707,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1704,6 +1726,11 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1813,6 +1840,16 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1841,6 +1878,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1962,6 +2003,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2098,6 +2141,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 28d1b6cfd..8a2f90dfd 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2283,4 +2283,48 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!HISTORY_MSG_489;DRC - Detail +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index e8b87c19b..22847390d 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -446,6 +446,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -497,6 +501,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -968,13 +974,27 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -998,6 +1018,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1146,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1205,6 +1227,11 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1538,6 +1565,16 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1575,6 +1612,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1860,6 +1901,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2024,6 +2067,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 354c32910..600877671 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -872,6 +872,10 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -890,6 +894,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) !EXTPROGTARGET_1;raw !EXTPROGTARGET_2;queue-processed +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_EXTPROGMENU;Open with !FILEBROWSER_OPENDEFAULTVIEWER;Windows default viewer (queue-processed) @@ -1240,13 +1246,27 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1270,6 +1290,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1381,6 +1402,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_CHANNELMIXERBW;Black-and-white !PARTIALPASTE_COLORAPP;CIECAM02 !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1408,6 +1430,11 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1690,6 +1717,16 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1719,6 +1756,10 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1936,6 +1977,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2078,6 +2121,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 45f1c5e3f..315868150 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2073,8 +2073,14 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. !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_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !EXIFFILTER_IMAGETYPE;Image type !EXIFPANEL_SHOWALL;Show all +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider @@ -2103,13 +2109,27 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -2133,6 +2153,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -2191,6 +2212,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !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\n"%1" will be used instead. !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter @@ -2199,6 +2221,11 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !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 @@ -2246,6 +2273,20 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors @@ -2280,6 +2321,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !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_PIXELSHIFTDMETHOD;Demosaic method for motion @@ -2301,4 +2344,5 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index a4a6fc523..9ec4fc6e2 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -445,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -496,6 +500,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -967,13 +973,27 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -997,6 +1017,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1145,6 +1166,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1204,6 +1226,11 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1537,6 +1564,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1574,6 +1611,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1859,6 +1900,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2023,6 +2066,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index eeb945ef2..ec60c307f 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1438,6 +1438,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1451,6 +1455,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !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. @@ -1651,13 +1657,27 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1681,6 +1701,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1767,6 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !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\n"%1" will be used instead. !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode @@ -1781,6 +1803,11 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation @@ -1878,9 +1905,23 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1971,6 +2012,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2104,6 +2147,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index ed27de93b..a75a3c475 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1438,6 +1438,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1451,6 +1455,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. !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. @@ -1651,13 +1657,27 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1681,6 +1701,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1767,6 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !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\n"%1" will be used instead. !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode @@ -1781,6 +1803,11 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation @@ -1878,9 +1905,23 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1971,6 +2012,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2104,6 +2147,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 28822efbd..cb2c20e1a 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2246,16 +2246,60 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. +!HISTORY_MSG_489;DRC - Detail +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations !HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance !SAVEDLG_FILEFORMAT_FLOAT; floating-point +!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. +!TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 8ea1f8fdb..080824fed 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1274,6 +1274,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1289,6 +1293,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_POPUPCOLORLABEL1;Label: Red !FILEBROWSER_POPUPCOLORLABEL2;Label: Yellow @@ -1545,13 +1551,27 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1575,6 +1595,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1671,6 +1692,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1690,6 +1712,11 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1805,6 +1832,16 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1833,6 +1870,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1963,6 +2004,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2099,6 +2142,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 1bc4057be..b0d929858 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1274,6 +1274,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1289,6 +1293,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_POPUPCOLORLABEL1;Label: Red !FILEBROWSER_POPUPCOLORLABEL2;Label: Yellow @@ -1545,13 +1551,27 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1575,6 +1595,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1671,6 +1692,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1690,6 +1712,11 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1805,6 +1832,16 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1833,6 +1870,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1963,6 +2004,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2099,6 +2142,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index dc0351823..3f8854ae8 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -526,6 +526,10 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -575,6 +579,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_DARKFRAME;Dark-frame !FILEBROWSER_DELETEDLGMSGINCLPROC;Are you sure you want to delete the selected %1 files including a queue-processed version? @@ -1030,13 +1036,27 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1060,6 +1080,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1200,6 +1221,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1255,6 +1277,11 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1577,6 +1604,16 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1614,6 +1651,10 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1872,6 +1913,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2033,6 +2076,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index adbd43d82..e304366b7 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -447,6 +447,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -498,6 +502,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -969,13 +975,27 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -999,6 +1019,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1147,6 +1168,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1206,6 +1228,11 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1538,6 +1565,16 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1575,6 +1612,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1860,6 +1901,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2024,6 +2067,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index e491c3c8a..3c56bbcd1 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1828,6 +1828,10 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1840,6 +1844,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1906,13 +1912,27 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1936,6 +1956,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -2020,6 +2041,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !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\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode @@ -2032,6 +2054,11 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CMMBPC;Black point compensation !PREFERENCES_CROP;Crop editing !PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area @@ -2094,8 +2121,22 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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. @@ -2155,6 +2196,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2229,6 +2272,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_CBENAB;Toning and Color Balance !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted !TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 79fa108c0..812f70f4b 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -446,6 +446,10 @@ TP_WBALANCE_TEMPERATURE;Isı !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -497,6 +501,8 @@ TP_WBALANCE_TEMPERATURE;Isı !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -968,13 +974,27 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -998,6 +1018,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1146,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1205,6 +1227,11 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_BEHSETALL;All to 'Set' !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_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1537,6 +1564,16 @@ TP_WBALANCE_TEMPERATURE;Isı !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1574,6 +1611,10 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !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 ! @@ -1859,6 +1900,8 @@ TP_WBALANCE_TEMPERATURE;Isı !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2023,6 +2066,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtdata/languages/default b/rtdata/languages/default index 68c279e4e..6909db081 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -44,9 +44,9 @@ DYNPROFILEEDITOR_EDIT;Edit DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. DYNPROFILEEDITOR_IMGTYPE_ANY;Any -DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_IMGTYPE_HDR;HDR DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_MOVE_DOWN;Move Down DYNPROFILEEDITOR_MOVE_UP;Move Up DYNPROFILEEDITOR_NEW;New @@ -732,20 +732,20 @@ HISTORY_MSG_492;RGB Curves HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness -HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth HISTORY_MSG_DEHAZE_ENABLED;Haze Removal HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength -HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold HISTORY_MSG_HISTMATCHING;Auto-matched tone curve HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -768,8 +768,8 @@ HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift HISTORY_MSG_RAW_BORDER;Raw border HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1477,16 +1477,16 @@ 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_LABREGION_LIST_TITLE;Correction -TP_COLORTONING_LABREGION_SATURATION;Saturation -TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -TP_COLORTONING_LABREGION_MASK;Mask -TP_COLORTONING_LABREGION_HUEMASK;H -TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -TP_COLORTONING_LABREGION_SHOWMASK;Show mask TP_COLORTONING_LABREGIONS;L*a*b* correction regions +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Correction +TP_COLORTONING_LABREGION_MASK;Mask +TP_COLORTONING_LABREGION_SATURATION;Saturation +TP_COLORTONING_LABREGION_SHOWMASK;Show mask 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. From 1b6e76fc6d3271f7c6dc2cc96a42db66014d2380 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 4 Nov 2018 20:28:48 +0100 Subject: [PATCH 090/348] Russian translation updated by Kildor Closes #4936 --- rtdata/languages/Russian | 173 ++++++++++++++++++++++++--------------- 1 file changed, 109 insertions(+), 64 deletions(-) diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 424be3cbf..6769dd724 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -5,16 +5,19 @@ #05 2010-11-01 Ilia Popov #06 2012-07-17 Roman Milanskij #07 2014-02-12 Kostia (Kildor) Romanov -#07 2018-02-10 Kostia (Kildor) Romanov +#08 2018-02-10 Kostia (Kildor) Romanov +#09 2018-11-04 Kostia (Kildor) Romanov ABOUT_TAB_BUILD;Версия ABOUT_TAB_CREDITS;Авторы ABOUT_TAB_LICENSE;Лицензия ABOUT_TAB_RELEASENOTES;Примечания к выпуску ABOUT_TAB_SPLASH;Заставка +ADJUSTER_RESET_TO_DEFAULT;Click: Сбросить на значение по умолчанию.\nCtrl+click: Сбросить на начальное значение. BATCHQUEUE_AUTOSTART;Автостарт BATCHQUEUE_AUTOSTARTHINT;Автоматически запускать обработку при добавлении файла в очередь BATCHQUEUE_DESTFILENAME;Имя файла и путь к нему +BATCHQUEUE_STARTSTOPHINT;Начать или остановить обработку изображений в очереди.\n\Горячая клавиша: Ctrl-S BATCH_PROCESSING;Пакетная обработка CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_OUT;O: @@ -43,6 +46,10 @@ DYNPROFILEEDITOR_DELETE;Удалить DYNPROFILEEDITOR_EDIT;Редактировать DYNPROFILEEDITOR_EDIT_RULE;Редактировать правило подбора DYNPROFILEEDITOR_ENTRY_TOOLTIP;Сопоставление нечувствительно к регистру.\nИспользуйте префикс "re:"\nчтоб ввести регулярное выражение. +DYNPROFILEEDITOR_IMGTYPE_ANY;Любой +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Сдвиг пикселей +DYNPROFILEEDITOR_IMGTYPE_STD;Стандарт DYNPROFILEEDITOR_MOVE_DOWN;Вниз DYNPROFILEEDITOR_MOVE_UP;Вверх DYNPROFILEEDITOR_NEW;Новый @@ -52,8 +59,9 @@ EDITWINDOW_TITLE;Редактор EXIFFILTER_APERTURE;Диафрагма EXIFFILTER_CAMERA;Камера EXIFFILTER_EXPOSURECOMPENSATION;Компенсация экспозиции (EV) -EXIFFILTER_FILETYPE;Тип фильтра +EXIFFILTER_FILETYPE;Тип файла EXIFFILTER_FOCALLEN;Фокусное расстояние +EXIFFILTER_IMAGETYPE;Тип изображения EXIFFILTER_ISO;ISO EXIFFILTER_LENS;Объектив EXIFFILTER_METADATAFILTER;Включить фильтры метаданных @@ -71,6 +79,7 @@ EXIFPANEL_RESET;Сбросить EXIFPANEL_RESETALL;Сбросить все EXIFPANEL_RESETALLHINT;Сбросить все теги в первоначальные значения EXIFPANEL_RESETHINT;Сбросить выбранные теги в первоначальные значения +EXIFPANEL_SHOWALL;Показать всё EXIFPANEL_SUBDIRECTORY;Подкаталог EXPORT_BYPASS_ALL;Выделить все / Снять выделение EXPORT_BYPASS_DEFRINGE;Пропустить подавление ореолов @@ -142,6 +151,7 @@ FILEBROWSER_POPUPPROCESS;Поместить в очередь на обрабо FILEBROWSER_POPUPPROCESSFAST;Поставить в очередь (Быстрый экспорт) FILEBROWSER_POPUPPROFILEOPERATIONS;Обработка операций профиля FILEBROWSER_POPUPRANK;Рейтинг +FILEBROWSER_POPUPRANK0;Снять FILEBROWSER_POPUPRANK1;Рейтинг 1 * FILEBROWSER_POPUPRANK2;Рейтинг 2 ** FILEBROWSER_POPUPRANK3;Рейтинг 3 *** @@ -174,7 +184,7 @@ FILEBROWSER_SHOWCOLORLABEL5HINT;Показать изображения, отм FILEBROWSER_SHOWDIRHINT;Сбросить все фильтры.\nГорячая клавиша: d FILEBROWSER_SHOWEDITEDHINT;Показать измененные изображения.\nГорячая клавиша: 7 FILEBROWSER_SHOWEDITEDNOTHINT;Показать не измененные изображения.\nГорячая клавиша: 6 -FILEBROWSER_SHOWEXIFINFO;Показать информацию EXIF.\nГорячая клавиша: i\n\nГорячая клавиша в режиме Одиночного редактора: Alt-i +FILEBROWSER_SHOWEXIFINFO;Показать информацию EXIF.\nГорячая клавиша: i\n\nГорячая клавиша в режиме Одиночного редактора: Alt-I FILEBROWSER_SHOWNOTTRASHHINT;Показать только неудалённые изображения. FILEBROWSER_SHOWRANK1HINT;Показать изображения с рейтингом 1.\nГорячая клавиша: 1 FILEBROWSER_SHOWRANK2HINT;Показать изображения с рейтингом 2.\nГорячая клавиша: 2 @@ -183,11 +193,11 @@ FILEBROWSER_SHOWRANK4HINT;Показать изображения с рейти FILEBROWSER_SHOWRANK5HINT;Показать изображения с рейтингом 5.\nГорячая клавиша: 5 FILEBROWSER_SHOWRECENTLYSAVEDHINT;Показать изображения, сохранённые недавно.\nГорячая клавиша: Alt-7 FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Показать изображения, сохранённые давно.\nГорячая клавиша: Alt-6 -FILEBROWSER_SHOWTRASHHINT;Показать содержимое корзины.\nГорячая клавиша: Ctrl-t +FILEBROWSER_SHOWTRASHHINT;Показать содержимое корзины.\nГорячая клавиша: Ctrl-T FILEBROWSER_SHOWUNCOLORHINT;Показать изображения без цветовой метки.\nГорячая клавиша: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Показать изображения без рейтинга\nГорячая клавиша: 0 FILEBROWSER_THUMBSIZE;Размер эскиза -FILEBROWSER_UNRANK_TOOLTIP;Удалить рейтинг\nГорячая клавиша: Shift-~ +FILEBROWSER_UNRANK_TOOLTIP;Снять рейтинг\nГорячая клавиша: Shift-~ FILEBROWSER_ZOOMINHINT;Увеличить размер эскиза\nГорячая клавиша: +\n\nГорячая клавиша в режиме Одиночного редактора: Alt-+ FILEBROWSER_ZOOMOUTHINT;Уменьшить размер эскиза\nГорячая клавиша: +\n\nГорячая клавиша в режиме Одиночного редактора: Alt-- FILECHOOSER_FILTER_ANY;Все файлы @@ -215,7 +225,9 @@ GENERAL_NONE;Нет GENERAL_OK;OK GENERAL_OPEN;Открыть GENERAL_PORTRAIT;Портретный +GENERAL_RESET;Сбросить GENERAL_SAVE;Сохранить +GENERAL_SAVE_AS;Сохранить как... GENERAL_SLIDER;Ползунок GENERAL_UNCHANGED;(не менялось) GENERAL_WARNING;Внимание @@ -480,10 +492,21 @@ HISTORY_MSG_249;КпУД: Порог HISTORY_MSG_250;ПШ: Улучшенный HISTORY_MSG_251;Ч&Б: Алгоритм HISTORY_MSG_277;--неиспользуемый-- +HISTORY_MSG_293;Имитация плёнки +HISTORY_MSG_294;Имитация плёнки: Сила +HISTORY_MSG_295;Имитация плёнки: Плёнка +HISTORY_MSG_298;Фильтр битых пикселей HISTORY_MSG_300;- +HISTORY_MSG_488;Компрессия динамического диапазона +HISTORY_MSG_490;КДД: Величина HISTORY_MSG_491;Баланс белого HISTORY_MSG_492;Кривые RGB HISTORY_MSG_493;Настройки L*a*b* +HISTORY_MSG_CLAMPOOG;Обрезание цвета за пределами охвата +HISTORY_MSG_DEHAZE_DEPTH;Убрать дымку: Глубина +HISTORY_MSG_DEHAZE_ENABLED;Убрать дымку +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Убрать дымку: Маска глубин +HISTORY_MSG_DEHAZE_STRENGTH;Убрать дымку: Сила HISTORY_MSG_HISTMATCHING;Автоподбор тоновой кривой HISTORY_MSG_LOCALCONTRAST_AMOUNT;Лок.контраст: Величина HISTORY_MSG_LOCALCONTRAST_DARKNESS;Лок.контраст: Тёмные тона @@ -491,8 +514,11 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;Лок.контраст HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Лок.контраст: Светлые тона HISTORY_MSG_LOCALCONTRAST_RADIUS;Лок.контраст: Радиус HISTORY_MSG_METADATA_MODE;Режим копирования метаданных +HISTORY_MSG_SOFTLIGHT_ENABLED;Мягкий свет +HISTORY_MSG_SOFTLIGHT_STRENGTH;Мягкий свет: Сила +HISTORY_MSG_TM_FATTAL_ANCHOR;КДД: Привязка HISTORY_NEWSNAPSHOT;Добавить -HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-s +HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-S HISTORY_SNAPSHOT;Снимок HISTORY_SNAPSHOTS;Снимки IPTCPANEL_CATEGORY;Категория @@ -551,7 +577,7 @@ MAIN_MSG_QOVERWRITE;Вы хотите перезаписать его? MAIN_MSG_SETPATHFIRST;Прежде необходимо установить целевой каталог в настройках\nчтоб использовать эту функцию! MAIN_MSG_WRITEFAILED;Не удалось записать\n\n"%1".\n\nУбедитесь, что каталог существует и у вас есть права на запись в него. MAIN_TAB_ADVANCED;Дополнительные -MAIN_TAB_ADVANCED_TOOLTIP;Горячая клавиша: Alt-w +MAIN_TAB_ADVANCED_TOOLTIP;Горячая клавиша: Alt-W MAIN_TAB_COLOR;Цвет MAIN_TAB_COLOR_TOOLTIP;Горячая клавиша: Alt-C MAIN_TAB_DETAIL;Детализация @@ -584,10 +610,10 @@ MAIN_TOOLTIP_PREVIEWL;Просмотреть Световую составл MAIN_TOOLTIP_PREVIEWR;Просмотреть канал красного.\nГорячая клавиша: r MAIN_TOOLTIP_QINFO;Информация об изображении.\nГорячая клавиша i MAIN_TOOLTIP_SHOWHIDELP1;Показать/скрыть левую панель\nГорячая клавиша: l -MAIN_TOOLTIP_SHOWHIDERP1;Показать/скрыть правую панель\nГорячая клавиша: Alt-l +MAIN_TOOLTIP_SHOWHIDERP1;Показать/скрыть правую панель\nГорячая клавиша: Alt-L MAIN_TOOLTIP_SHOWHIDETP1;Показать/скрыть верхнюю панель\nГорячая клавиша: Shift-L MAIN_TOOLTIP_THRESHOLD;Порог -MAIN_TOOLTIP_TOGGLE;Включить режим "до/после".\nГорячая клавиша Shift-B +MAIN_TOOLTIP_TOGGLE;Включить режим "до/после".\nГорячая клавиша Shift-B NAVIGATOR_B;B: NAVIGATOR_G;G: NAVIGATOR_H;H: @@ -600,6 +626,9 @@ NAVIGATOR_S;S: NAVIGATOR_V;V: NAVIGATOR_XY_FULL;Ширина: %1, Высота: %2 NAVIGATOR_XY_NA;x: --, y: -- +OPTIONS_BUNDLED_MISSING;Встроенный профиль "%1" не найден!\n\nВаша установка может быть повреждена.\n\nБудут использованы внутренние дефолтные значения по умолчанию. +OPTIONS_DEFIMG_MISSING;Профиль по умолчанию для не-raw снимков не найден или не установлен.\n\nПожалуйста, проверьте папку с профилями, она может отсутствовать или быть повреждена.\n\nБудет использован профиль "%1". +OPTIONS_DEFRAW_MISSING;Профиль по умолчанию для raw снимков не найден или не установлен.\n\nПожалуйста, проверьте папку с профилями, она может отсутствовать или быть повреждена.\n\nБудет использован профиль "%1". PARTIALPASTE_ADVANCEDGROUP;Дополнительные параметры PARTIALPASTE_BASICGROUP;Базовые настройки PARTIALPASTE_CACORRECTION;Коррекция C/A @@ -640,7 +669,9 @@ PARTIALPASTE_METADATA;Режим метаданных PARTIALPASTE_METAGROUP;Настройка метаданных PARTIALPASTE_PCVIGNETTE;Фильтр виньетирования PARTIALPASTE_PERSPECTIVE;Перспектива +PARTIALPASTE_PREPROCESS_DEADPIXFILT;Фильтр битых пикселей PARTIALPASTE_PREPROCESS_GREENEQUIL;Выравнивание зелёного канала +PARTIALPASTE_PREPROCESS_HOTPIXFILT;Фильтр горячих пикселей PARTIALPASTE_PREPROCESS_LINEDENOISE;Фильтр полосообразного шума PARTIALPASTE_RAWCACORR_AUTO;Автоматическая коррекция ХА PARTIALPASTE_RAWEXPOS_BLACK;Уровень черного @@ -659,6 +690,8 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Тени/света PARTIALPASTE_SHARPENEDGE;Края PARTIALPASTE_SHARPENING;Повышение резкости PARTIALPASTE_SHARPENMICRO;Микроконтраст +PARTIALPASTE_SOFTLIGHT;Мягкий свет +PARTIALPASTE_TM_FATTAL;Компрессия динамического диапазона PARTIALPASTE_VIBRANCE;Красочность PARTIALPASTE_VIGNETTING;Коррекция виньетирования PARTIALPASTE_WHITEBALANCE;Баланс белого @@ -816,10 +849,10 @@ PROFILEPANEL_PINTERNAL;Нейтральный PROFILEPANEL_PLASTSAVED;Последний сохранённый PROFILEPANEL_SAVEDLGLABEL;Сохранить профиль обработки... PROFILEPANEL_SAVEPPASTE;Параметры для сохранения -PROFILEPANEL_TOOLTIPCOPY;Скопировать текущий профиль в буфер обмена.\nCtrl+click для выбора параметров для копирования -PROFILEPANEL_TOOLTIPLOAD;Загрузить профиль из файла\nCtrl+click для выбора параметров для загрузки -PROFILEPANEL_TOOLTIPPASTE;Вставить профиль из буфера обмена\nCtrl+click для выбора параметров для вставки -PROFILEPANEL_TOOLTIPSAVE;Сохранить текущий профиль\nCtrl+click для выбора параметров для сохранения +PROFILEPANEL_TOOLTIPCOPY;Скопировать текущий профиль в буфер обмена.\nCtrl+Click для выбора параметров для копирования +PROFILEPANEL_TOOLTIPLOAD;Загрузить профиль из файла\nCtrl+Click для выбора параметров для загрузки +PROFILEPANEL_TOOLTIPPASTE;Вставить профиль из буфера обмена\nCtrl+Click для выбора параметров для вставки +PROFILEPANEL_TOOLTIPSAVE;Сохранить текущий профиль\nCtrl+Click для выбора параметров для сохранения PROGRESSBAR_LOADING;Загрузка изображения... PROGRESSBAR_LOADINGTHUMBS;Загрузка миниатюр... PROGRESSBAR_LOADJPEG;Чтение JPEG файла... @@ -834,8 +867,11 @@ PROGRESSBAR_SAVEPNG;Сохранение PNG файла... PROGRESSBAR_SAVETIFF;Сохранение TIFF файла... PROGRESSBAR_SNAPSHOT_ADDED;Снимок добавлен PROGRESSDLG_PROFILECHANGEDINBROWSER;Профиль изменён в браузере +QINFO_FRAMECOUNT;%2 кадров +QINFO_HDR;HDR / %2 кадр(ов) QINFO_ISO;ISO QINFO_NOEXIF;Данные Exif недоступны +QINFO_PIXELSHIFT;Сдвиг пикселей / %2 frame(s) SAVEDLG_AUTOSUFFIX;Автоматически добавлять суффикс если файл существует SAVEDLG_FILEFORMAT;Формат файла SAVEDLG_FORCEFORMATOPTS;Принудительно установить настройки сохранения @@ -994,6 +1030,10 @@ TP_DARKFRAME_LABEL;Темновой кадр TP_DEFRINGE_LABEL;Подавление ореолов TP_DEFRINGE_RADIUS;Радиус TP_DEFRINGE_THRESHOLD;Порог +TP_DEHAZE_DEPTH;Глубина +TP_DEHAZE_LABEL;Убрать дымку +TP_DEHAZE_SHOW_DEPTH_MAP;Показать маску глубин +TP_DEHAZE_STRENGTH;Сила TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Автоматический глобальный TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Цветность: синий-жёлтый TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Кривая цветности @@ -1052,6 +1092,7 @@ TP_EXPOSURE_AUTOLEVELS;Автоуровни TP_EXPOSURE_AUTOLEVELS_TIP;Переключение выполнения автоуровней для автоматической установки параметров экспозиции на основе анализа изображения TP_EXPOSURE_BLACKLEVEL;Уровень чёрного TP_EXPOSURE_BRIGHTNESS;Яркость +TP_EXPOSURE_CLAMPOOG;Обрезать цвета за пределами охвата TP_EXPOSURE_CLIP;Ограничить TP_EXPOSURE_CLIP_TIP;Часть пикселей, обрезаемая операцией автоматических уровней TP_EXPOSURE_COMPRHIGHLIGHTS;Сжатие светов @@ -1207,16 +1248,29 @@ TP_PERSPECTIVE_LABEL;Перспектива TP_PERSPECTIVE_VERTICAL;Вертикальная TP_PFCURVE_CURVEEDITOR_CH;Цвет TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Контроль силы подавления в зависимости от цвета.\nВыше - сильней, ниже - слабей. +TP_PREPROCESS_DEADPIXFILT;Фильтр битых пикселей +TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Пытается подавить битые пиксели. TP_PREPROCESS_GREENEQUIL;Выравнивание зелёного +TP_PREPROCESS_HOTPIXFILT;Фильтр горячих пикселей +TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Пытается подавить горячие пиксели. TP_PREPROCESS_LABEL;Предобработка TP_PREPROCESS_LINEDENOISE;Фильтр линейного шума TP_PREPROCESS_NO_FOUND;Ничего не найдено TP_RAWCACORR_AUTO;Автоматическая коррекция TP_RAWCACORR_CABLUE;Синий TP_RAWCACORR_CARED;Красный +TP_RAWCACORR_CASTR;Сила TP_RAWEXPOS_BLACKS;Уровни черного +TP_RAWEXPOS_BLACK_0;Зелёный 1 (ведущий) +TP_RAWEXPOS_BLACK_1;Красный +TP_RAWEXPOS_BLACK_2;Синий +TP_RAWEXPOS_BLACK_3;Зелёный 2 +TP_RAWEXPOS_BLACK_BLUE;Синий +TP_RAWEXPOS_BLACK_GREEN;Зелёный +TP_RAWEXPOS_BLACK_RED;Красный TP_RAWEXPOS_LINEAR;Коррекция точки белого TP_RAWEXPOS_PRESER;Сохранение пересветов +TP_RAWEXPOS_RGB;Красный, Зелёный, Синий TP_RAWEXPOS_TWOGREEN;Два зеленых совместно TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE @@ -1242,6 +1296,7 @@ TP_RAW_MONO;Моно TP_RAW_NONE;Нет (Показать структуру сенсора) TP_RAW_PIXELSHIFT;Сдвиг пикселей TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Сенсор с матрицей Байера TP_RAW_SENSOR_XTRANS_LABEL;Сенсор с матрицей X-Trans TP_RAW_VNG4;VNG4 @@ -1287,6 +1342,7 @@ TP_SHARPENEDGE_LABEL;Края TP_SHARPENEDGE_PASSES;Подходы TP_SHARPENEDGE_THREE;Только освещенность TP_SHARPENING_AMOUNT;Величина +TP_SHARPENING_CONTRAST;Порог контраста TP_SHARPENING_EDRADIUS;Радиус TP_SHARPENING_EDTOLERANCE;Границы краёв TP_SHARPENING_HALOCONTROL;Регулировка хром. аберраций @@ -1302,9 +1358,16 @@ TP_SHARPENING_RLD_ITERATIONS;Повторений TP_SHARPENING_THRESHOLD;Порог TP_SHARPENING_USM;Маска размытия TP_SHARPENMICRO_AMOUNT;Величина +TP_SHARPENMICRO_CONTRAST;Порог контраста TP_SHARPENMICRO_LABEL;Микроконтраст TP_SHARPENMICRO_MATRIX;Матрица 3×3 вместо 5×5 TP_SHARPENMICRO_UNIFORMITY;Равномерность +TP_SOFTLIGHT_LABEL;Мягкий свет +TP_SOFTLIGHT_STRENGTH;Сила +TP_TM_FATTAL_AMOUNT;Величина +TP_TM_FATTAL_ANCHOR;Якорь +TP_TM_FATTAL_LABEL;Компрессия динамического диапазона +TP_TM_FATTAL_THRESHOLD;Детализация TP_VIBRANCE_AVOIDCOLORSHIFT;Избегать сдвига цветов TP_VIBRANCE_CURVEEDITOR_SKINTONES;ОО TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Оттенки кожи @@ -1381,7 +1444,7 @@ ZOOMPANEL_100;(100%) ZOOMPANEL_NEWCROPWINDOW;Новое окно детального просмотра ZOOMPANEL_ZOOM100;Масштаб 100%\nГорячая клавиша: z ZOOMPANEL_ZOOMFITCROPSCREEN;Уместить кадрированное изображение по размеру экрану\nГорячая клавиша: f -ZOOMPANEL_ZOOMFITSCREEN;Уместить изображение по размерам окна\nГорячая клавиша: Alt-f +ZOOMPANEL_ZOOMFITSCREEN;Уместить изображение по размерам окна\nГорячая клавиша: Alt-F ZOOMPANEL_ZOOMIN;Приблизить\nГорячая клавиша: + ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - @@ -1389,27 +1452,22 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!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. !EDIT_OBJECT_TOOLTIP;Displays a widget on the preview window which lets you adjust this tool. !EDIT_PIPETTE_TOOLTIP;To add an adjustment point to the curve, hold the Ctrl key while left-clicking the desired spot in the image preview.\nTo adjust the point, hold the Ctrl key while left-clicking the corresponding area in the preview, then let go of Ctrl (unless you desire fine control) and while still holding the left mouse button move the mouse up or down to move that point up or down in the curve. -!EXIFFILTER_IMAGETYPE;Image type -!EXIFPANEL_SHOWALL;Show all !EXPORT_BYPASS;Processing steps to bypass !EXPORT_BYPASS_EQUALIZER;Bypass Wavelet Levels !EXPORT_PIPELINE;Processing pipeline !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !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_POPUPRANK0;Unrank +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !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. !FILECHOOSER_FILTER_PP;Processing profiles !FILECHOOSER_FILTER_SAME;Same format as current photo -!GENERAL_RESET;Reset -!GENERAL_SAVE_AS;Save as... !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_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_235;B&W - CM - Auto @@ -1454,12 +1512,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_290;Black Level - Red !HISTORY_MSG_291;Black Level - Green !HISTORY_MSG_292;Black Level - Blue -!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 - Mode -!HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_301;NR - Luma control !HISTORY_MSG_302;NR - Chroma method @@ -1632,11 +1686,18 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_485;Lens Correction !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D !HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type @@ -1653,9 +1714,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !ICCPROFCREATOR_COPYRIGHT;Copyright: !ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" !ICCPROFCREATOR_CUSTOM;Custom @@ -1727,15 +1786,11 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default -!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. -!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\n"%1" will be used instead. -!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\n"%1" will be used instead. !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control -!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter -!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift @@ -1744,9 +1799,12 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory @@ -1803,9 +1861,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PROFILEPANEL_PDYNAMIC;Dynamic -!QINFO_FRAMECOUNT;%2 frames -!QINFO_HDR;HDR / %2 frame(s) -!QINFO_PIXELSHIFT;Pixel Shift / %2 frame(s) !SAMPLEFORMAT_0;Unknown data format !SAMPLEFORMAT_1;8-bit unsigned !SAMPLEFORMAT_2;16-bit unsigned @@ -1878,6 +1933,16 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask !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. @@ -1932,7 +1997,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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. !TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image. !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_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOS_BLACKPOINT_LABEL;Raw Black Points !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !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? @@ -1955,10 +2019,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. -!TP_PREPROCESS_DEADPIXFILT;Dead pixel filter -!TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels. -!TP_PREPROCESS_HOTPIXFILT;Hot pixel filter -!TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Tries to suppress hot pixels. !TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction !TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both !TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal @@ -1970,15 +2030,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAWCACORR_CASTR;Strength -!TP_RAWEXPOS_BLACK_0;Green 1 (lead) -!TP_RAWEXPOS_BLACK_1;Red -!TP_RAWEXPOS_BLACK_2;Blue -!TP_RAWEXPOS_BLACK_3;Green 2 -!TP_RAWEXPOS_BLACK_BLUE;Blue -!TP_RAWEXPOS_BLACK_GREEN;Green -!TP_RAWEXPOS_BLACK_RED;Red -!TP_RAWEXPOS_RGB;Red, Green, Blue !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast !TP_RAW_3PASSBEST;3-pass (Markesteijn) @@ -1986,6 +2037,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_IMAGENUM;Sub-image !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. @@ -2018,7 +2071,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value. !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. -!TP_RAW_RCDVNG4;RCD+VNG4 !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.\n+fast gives less artifacts in flat areas !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL @@ -2097,13 +2149,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RETINEX_VIEW_TRAN;Transmission - Auto !TP_RETINEX_VIEW_TRAN2;Transmission - Fixed !TP_RETINEX_VIEW_UNSHARP;Unsharp mask -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 From 8f5ffc5f5e6123f543ac182188007cd8fffb5f81 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 4 Nov 2018 21:50:48 +0100 Subject: [PATCH 091/348] Tooltip tweaks --- rtdata/languages/default | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 6909db081..a5c9976a4 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -920,20 +920,20 @@ MAIN_TAB_RAW;Raw MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r MAIN_TAB_TRANSFORM;Transform MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -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 -MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +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 +MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > -MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -1306,8 +1306,8 @@ THRESHOLDSELECTOR_HINT;Hold the Shift key to move individual control poin THRESHOLDSELECTOR_T;Top THRESHOLDSELECTOR_TL;Top-left THRESHOLDSELECTOR_TR;Top-right -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift+mouse drag. TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w From 21e01861748dfb381fee431fc8a0b27f1db8180a Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Mon, 5 Nov 2018 06:05:50 +0100 Subject: [PATCH 092/348] Update TooWaBlue-GTK3-20_.css To fit the pref changes --- rtdata/themes/TooWaBlue-GTK3-20_.css | 29 ++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index e500ad37c..f660f6ac5 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -113,6 +113,10 @@ window > box { dialog { background-color: @bg-grey; border-radius: 0; + -GtkDialog-button-spacing: 0; + -GtkDialog-content-area-spacing: 0; + -GtkDialog-content-area-border: 0; + -GtkDialog-action-area-border: 0; } dialog > box { padding: 0.666666666666666666em; @@ -336,9 +340,13 @@ fontchooser scrolledwindow, /*** end ***************************************************************************************/ /*** Load - Save dialog ************************************************************************/ +filechooser { +margin-bottom: 0.25em; +} -filechooser box > box box > button { +filechooser box > box box > button { margin-top: 0.5em; +margin-right: 0; } filechooser image { @@ -537,11 +545,14 @@ menu separator { padding: 0; } -.scrollableToolbar separator:not(.dummy) { +.scrollableToolbar separator.vertical { background-color: shade(@bg-light-grey,.75); margin: 0.166666666666666666em; } - +separator#PrefCacheSeparator.horizontal { + margin: 0.25em 0.166666666666666666em; + padding: 0; +} #MyExpander separator { background-color: @view-grid-border; margin: 0.333333333333333333em 0.166666666666666666em; @@ -944,7 +955,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #PrefNotebook > header { margin: -0.666666666666666666em -0.666666666666666666em 0.333333333333333333em; } -#PrefNotebook > header tab label { +#PrefNotebook > header tab label, +#AboutNotebook > header tab label { padding-top: 0.25em; padding-bottom: 0.25em; } @@ -1435,14 +1447,15 @@ colorchooser colorswatch#add-color-button:first-child { } /* Save, Cancel, OK ... buttons */ -.dialog-action-area button { +dialog .dialog-action-area button { min-height: 2.166666666666666666em; - margin-top: 1em; + margin: 0.5em 0 0 0.333333333333333333em; padding: 0; } messagedialog .dialog-action-area button { min-height: 1.833333333333333333em; - margin: -12px 0.5em 0.5em 0.5em; + margin: -12px 0.5em 0.5em; + padding: 0; } messagedialog .dialog-action-area button:not(:only-child):nth-child(1) { margin-right: 0.25em; @@ -1789,7 +1802,7 @@ radio:disabled { radiobutton label, checkbutton label { - margin: 0 0 0 0.416666666666666666em; + margin: 0 0.416666666666666666em; padding: 0; } From 5edf4d13a992dba6fd7c46221f4e032728ccc725 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Mon, 5 Nov 2018 06:08:01 +0100 Subject: [PATCH 093/348] Update preferences.cc Save space in File browser tab --- rtgui/preferences.cc | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 9d58244f4..54095f429 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1206,7 +1206,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () startupdir = Gtk::manage ( new Gtk::Entry () ); Gtk::Button* sdselect = Gtk::manage ( new Gtk::Button () ); - sdselect->set_image (*Gtk::manage (new RTImage ("folder-open.png"))); + sdselect->set_image (*Gtk::manage (new RTImage ("folder-open-small.png"))); Gtk::RadioButton::Group opts = sdcurrent->get_group(); sdlast->set_group (opts); @@ -1275,20 +1275,26 @@ Gtk::Widget* Preferences::getFileBrowserPanel () Gtk::Frame* frmnu = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_MENUOPTIONS")) ); + + Gtk::Grid* menuGrid = Gtk::manage(new Gtk::Grid()); + menuGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(menuGrid, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + ckbmenuGroupRank = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPRANK")) ); + setExpandAlignProperties(ckbmenuGroupRank, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); ckbmenuGroupLabel = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPLABEL")) ); ckbmenuGroupFileOperations = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPFILEOPERATIONS")) ); + setExpandAlignProperties(ckbmenuGroupFileOperations, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); ckbmenuGroupProfileOperations = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPPROFILEOPERATIONS")) ); ckbmenuGroupExtProg = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPEXTPROGS")) ); - Gtk::VBox* vbmnu = Gtk::manage ( new Gtk::VBox () ); + + menuGrid->attach (*ckbmenuGroupRank, 0, 0, 1, 1); + menuGrid->attach (*ckbmenuGroupLabel, 1, 0, 1, 1); + menuGrid->attach (*ckbmenuGroupFileOperations, 0, 1, 1, 1); + menuGrid->attach (*ckbmenuGroupProfileOperations, 1, 1, 1, 1); + menuGrid->attach (*ckbmenuGroupExtProg, 0, 2, 2, 1); - vbmnu->pack_start (*ckbmenuGroupRank, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupLabel, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupFileOperations, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupProfileOperations, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupExtProg, Gtk::PACK_SHRINK, 0); - - frmnu->add (*vbmnu); + frmnu->add (*menuGrid); Gtk::Frame* fre = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_PARSEDEXT")) ); @@ -1360,7 +1366,8 @@ Gtk::Widget* Preferences::getFileBrowserPanel () // Separation is needed so that a button is not accidentally clicked when one wanted // to click a spinbox. Ideally, the separation wouldn't require attaching a widget, but how? - Gtk::Label *separator = Gtk::manage (new Gtk::Label()); + Gtk::HSeparator *cacheSeparator = Gtk::manage (new Gtk::HSeparator()); + cacheSeparator->set_name("PrefCacheSeparator"); Gtk::Label* clearThumbsLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ALLBUTPROFILES"))); setExpandAlignProperties(clearThumbsLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); @@ -1378,7 +1385,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () cacheGrid->attach (*maxThumbHeightSB, 1, 0, 1, 1); cacheGrid->attach (*maxCacheEntriesLbl, 0, 1, 1, 1); cacheGrid->attach (*maxCacheEntriesSB, 1, 1, 1, 1); - cacheGrid->attach (*separator, 0, 2, 2, 1); + cacheGrid->attach (*cacheSeparator, 0, 2, 2, 1); cacheGrid->attach (*clearThumbsLbl, 0, 3, 1, 1); cacheGrid->attach (*clearThumbsBtn, 1, 3, 1, 1); if (moptions.saveParamsCache) { From 394f4d9b2b1bffbf4c12696f82e9c351ec273704 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Mon, 5 Nov 2018 06:08:44 +0100 Subject: [PATCH 094/348] Update TooWaBlue-GTK3-20_.css --- rtdata/themes/TooWaBlue-GTK3-20_.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index f660f6ac5..f2b631165 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-2018 TooWaBoo - Version 2.85 + Version 2.86 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From 56e45087cf556a566032b9db7cc07904ed9344a9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 5 Nov 2018 08:17:02 +0100 Subject: [PATCH 095/348] Segfault when using Tonemapping on completely black data, fixes #4934 --- rtengine/EdgePreservingDecomposition.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index 4c56cbb5d..f64caafde 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -941,7 +941,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal cev = xexpf(LVFU(Source[i]) + LVFU(u[i]) * (tempv)) - epsv; uev = xexpf(LVFU(u[i])) - epsv; sourcev = xexpf(LVFU(Source[i])) - epsv; - _mm_storeu_ps( &Source[i], cev + DetailBoostv * (sourcev - uev) ); + _mm_storeu_ps( &Source[i], vmaxf(cev + DetailBoostv * (sourcev - uev), ZEROV)); } } @@ -949,7 +949,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal float ce = xexpf(Source[i] + u[i] * (temp)) - eps; float ue = xexpf(u[i]) - eps; Source[i] = xexpf(Source[i]) - eps; - Source[i] = ce + DetailBoost * (Source[i] - ue); + Source[i] = rtengine::max(ce + DetailBoost * (Source[i] - ue), 0.f); } #else @@ -961,7 +961,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal float ce = xexpf(Source[i] + u[i] * (temp)) - eps; float ue = xexpf(u[i]) - eps; Source[i] = xexpf(Source[i]) - eps; - Source[i] = ce + DetailBoost * (Source[i] - ue); + Source[i] = rtengine::max(ce + DetailBoost * (Source[i] - ue), 0.f); } #endif From fa91103aecbdd9a3091f73cb938ed685de6ebc9e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 5 Nov 2018 09:43:45 +0100 Subject: [PATCH 096/348] Better fix for #4934 --- rtengine/EdgePreservingDecomposition.cc | 6 +++--- rtengine/improcfun.cc | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index f64caafde..4c56cbb5d 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -941,7 +941,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal cev = xexpf(LVFU(Source[i]) + LVFU(u[i]) * (tempv)) - epsv; uev = xexpf(LVFU(u[i])) - epsv; sourcev = xexpf(LVFU(Source[i])) - epsv; - _mm_storeu_ps( &Source[i], vmaxf(cev + DetailBoostv * (sourcev - uev), ZEROV)); + _mm_storeu_ps( &Source[i], cev + DetailBoostv * (sourcev - uev) ); } } @@ -949,7 +949,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal float ce = xexpf(Source[i] + u[i] * (temp)) - eps; float ue = xexpf(u[i]) - eps; Source[i] = xexpf(Source[i]) - eps; - Source[i] = rtengine::max(ce + DetailBoost * (Source[i] - ue), 0.f); + Source[i] = ce + DetailBoost * (Source[i] - ue); } #else @@ -961,7 +961,7 @@ void EdgePreservingDecomposition::CompressDynamicRange(float *Source, float Scal float ce = xexpf(Source[i] + u[i] * (temp)) - eps; float ue = xexpf(u[i]) - eps; Source[i] = xexpf(Source[i]) - eps; - Source[i] = rtengine::max(ce + DetailBoost * (Source[i] - ue), 0.f); + Source[i] = ce + DetailBoost * (Source[i] - ue); } #endif diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 31c44efe4..840535e6e 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -5264,6 +5264,10 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip minL = 0.0f; //Disable the shift if there are no negative numbers. I wish there were just no negative numbers to begin with. } + if (maxL == 0.f) { // avoid division by zero + maxL = 1.f; + } + #pragma omp parallel for for (size_t i = 0; i < N; ++i) From 09838174343e31d5465ad3dc9cf51a739a575a41 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 5 Nov 2018 15:59:41 +0100 Subject: [PATCH 097/348] SSE: Review usage of vminf, vmaxf functions, #4942 --- rtengine/FTblockDN.cc | 2 +- rtengine/LUT.h | 11 ++++++----- rtengine/ciecam02.cc | 18 +++++++++--------- rtengine/clutstore.cc | 2 +- rtengine/color.cc | 6 +++--- rtengine/fast_demo.cc | 4 ++-- rtengine/helpersse2.h | 4 ++++ rtengine/rawimagesource.cc | 4 ++-- 8 files changed, 28 insertions(+), 23 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 58e27e118..8ced521d3 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -3340,7 +3340,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, aNv = LVFU(acalc[i >> 1][j >> 1]); bNv = LVFU(bcalc[i >> 1][j >> 1]); _mm_storeu_ps(&noisevarhue[i1 >> 1][j1 >> 1], xatan2f(bNv, aNv)); - _mm_storeu_ps(&noisevarchrom[i1 >> 1][j1 >> 1], _mm_max_ps(c100v, _mm_sqrt_ps(SQRV(aNv) + SQRV(bNv)))); + _mm_storeu_ps(&noisevarchrom[i1 >> 1][j1 >> 1], vmaxf(vsqrtf(SQRV(aNv) + SQRV(bNv)),c100v)); } for (; j < tileright; j += 2) { diff --git a/rtengine/LUT.h b/rtengine/LUT.h index d2f758689..fedc20ca2 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -320,7 +320,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(ZEROV, vminf(maxsv, indexv)); + vfloat clampedIndexes = vmaxf(vminf(maxsv, indexv), ZEROV); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -352,7 +352,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(ZEROV, vminf(maxsv, indexv)); + vfloat clampedIndexes = vmaxf(vminf(maxsv, indexv), ZEROV); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -372,7 +372,7 @@ public: vfloat lower = _mm_castsi128_ps(_mm_unpacklo_epi64(temp0, temp1)); vfloat upper = _mm_castsi128_ps(_mm_unpackhi_epi64(temp0, temp1)); - vfloat diff = vmaxf(ZEROV, vminf(sizev, indexv)) - _mm_cvtepi32_ps(indexes); + vfloat diff = vmaxf(vminf(sizev, indexv), ZEROV) - _mm_cvtepi32_ps(indexes); // this automagically uses ZEROV in case indexv is NaN return vintpf(diff, upper, lower); } @@ -383,7 +383,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(ZEROV, vminf(maxsv, indexv)); + vfloat clampedIndexes = vmaxf(vminf(maxsv, indexv), ZEROV); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -420,7 +420,8 @@ public: template::value>::type> vfloat operator[](vint idxv) const { - vfloat tempv = vmaxf(ZEROV, vminf(sizev, _mm_cvtepi32_ps(idxv))); // convert to float because SSE2 has no min/max for 32bit integers + // convert to float because SSE2 has no min/max for 32bit integers + vfloat tempv = vmaxf(vminf(sizev, _mm_cvtepi32_ps(idxv)), ZEROV); // this automagically uses ZEROV in case idxv is NaN (which will never happen because it is a vector of int) idxv = _mm_cvttps_epi32(tempv); // access the LUT 4 times. Trust the compiler. It generates good code here, better than hand written SSE code return _mm_setr_ps(data[_mm_cvtsi128_si32(idxv)], diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index f9475eb4e..c5e172478 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -542,9 +542,9 @@ void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloa cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); //gamut correction M.H.Brill S.Susstrunk - rp = _mm_max_ps (rp, ZEROV); - gp = _mm_max_ps (gp, ZEROV); - bp = _mm_max_ps (bp, ZEROV); + rp = vmaxf (rp, ZEROV); + gp = vmaxf (gp, ZEROV); + bp = vmaxf (bp, ZEROV); rpa = nonlinear_adaptationfloat ( rp, fl ); gpa = nonlinear_adaptationfloat ( gp, fl ); bpa = nonlinear_adaptationfloat ( bp, fl ); @@ -559,20 +559,20 @@ void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloa myh = vself (vmaskf_lt (myh, ZEROV), temp, myh); a = ((rpa + rpa) + gpa + (F2V (0.05f) * bpa) - F2V (0.305f)) * nbb; - a = _mm_max_ps (a, ZEROV); //gamut correction M.H.Brill S.Susstrunk + a = vmaxf (a, ZEROV); //gamut correction M.H.Brill S.Susstrunk J = pow_F ( a / aw, c * cz * F2V (0.5f)); e = ((F2V (961.53846f)) * nc * ncb) * (xcosf ( myh + F2V (2.0f) ) + F2V (3.8f)); - t = (e * _mm_sqrt_ps ( (ca * ca) + (cb * cb) )) / (rpa + gpa + (F2V (1.05f) * bpa)); + t = (e * vsqrtf ( (ca * ca) + (cb * cb) )) / (rpa + gpa + (F2V (1.05f) * bpa)); C = pow_F ( t, F2V (0.9f) ) * J * pow1; Q = wh * J; J *= J * F2V (100.0f); M = C * pfl; - Q = _mm_max_ps (Q, F2V (0.0001f)); // avoid division by zero - s = F2V (100.0f) * _mm_sqrt_ps ( M / Q ); + Q = vmaxf (Q, F2V (0.0001f)); // avoid division by zero + s = F2V (100.0f) * vsqrtf ( M / Q ); h = (myh * F2V (180.f)) / F2V (rtengine::RT_PI); } #endif @@ -710,7 +710,7 @@ void Ciecam02::jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J xyz_to_cat02float ( rw, gw, bw, xw, yw, zw); e = ((F2V (961.53846f)) * nc * ncb) * (xcosf ( ((h * F2V (rtengine::RT_PI)) / F2V (180.0f)) + F2V (2.0f) ) + F2V (3.8f)); a = pow_F ( J / F2V (100.0f), reccmcz ) * aw; - t = pow_F ( F2V (10.f) * C / (_mm_sqrt_ps ( J ) * pow1), F2V (1.1111111f) ); + t = pow_F ( F2V (10.f) * C / (vsqrtf ( J ) * pow1), F2V (1.1111111f) ); calculate_abfloat ( ca, cb, h, e, t, nbb, a ); Aab_to_rgbfloat ( rpa, gpa, bpa, a, ca, cb, nbb ); @@ -780,7 +780,7 @@ vfloat Ciecam02::inverse_nonlinear_adaptationfloat ( vfloat c, vfloat fl ) c -= F2V (0.1f); fl = vmulsignf (fl, c); c = vabsf (c); - c = _mm_min_ps ( c, F2V (399.99f)); + c = vminf ( c, F2V (399.99f)); return (F2V (100.0f) / fl) * pow_F ( (F2V (27.13f) * c) / (F2V (400.0f) - c), F2V (2.38095238f) ); } #endif diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc index 87ce25d97..1a425d21b 100644 --- a/rtengine/clutstore.cc +++ b/rtengine/clutstore.cc @@ -226,7 +226,7 @@ void rtengine::HaldCLUT::getRGB( #else const vfloat v_in = _mm_set_ps(0.0f, *b, *g, *r); const vfloat v_tmp = v_in * F2V(flevel_minus_one); - const vfloat v_rgb = v_tmp - _mm_cvtepi32_ps(_mm_cvttps_epi32(_mm_min_ps(F2V(flevel_minus_two), v_tmp))); + const vfloat v_rgb = v_tmp - _mm_cvtepi32_ps(_mm_cvttps_epi32(vminf(v_tmp, F2V(flevel_minus_two)))); size_t index = color * 4; diff --git a/rtengine/color.cc b/rtengine/color.cc index 29844f64d..4ace03bc0 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -547,8 +547,8 @@ void Color::rgb2hsl(float r, float g, float b, float &h, float &s, float &l) #ifdef __SSE2__ void Color::rgb2hsl(vfloat r, vfloat g, vfloat b, vfloat &h, vfloat &s, vfloat &l) { - vfloat maxv = _mm_max_ps(r, _mm_max_ps(g, b)); - vfloat minv = _mm_min_ps(r, _mm_min_ps(g, b)); + vfloat maxv = vmaxf(r, vmaxf(g, b)); + vfloat minv = vminf(r, vminf(g, b)); vfloat C = maxv - minv; vfloat tempv = maxv + minv; l = (tempv) * F2V(7.6295109e-6f); @@ -2879,7 +2879,7 @@ void Color::LabGamutMunsell(float *labL, float *laba, float *labb, const int N, av = LVFU(laba[k]); bv = LVFU(labb[k]); _mm_storeu_ps(&HHBuffer[k], xatan2f(bv, av)); - _mm_storeu_ps(&CCBuffer[k], _mm_sqrt_ps(SQRV(av) + SQRV(bv)) / c327d68v); + _mm_storeu_ps(&CCBuffer[k], vsqrtf(SQRV(av) + SQRV(bv)) / c327d68v); } for(; k < N; k++) { diff --git a/rtengine/fast_demo.cc b/rtengine/fast_demo.cc index cab38b1f2..e88661485 100644 --- a/rtengine/fast_demo.cc +++ b/rtengine/fast_demo.cc @@ -364,7 +364,7 @@ void RawImageSource::fast_demosaic() for (int j = left + 1, cc = 1; j < right - 1; j += 4, cc += 4) { //interpolate B/R colors at R/B sites _mm_storeu_ps(&bluetile[rr * TS + cc], LVFU(greentile[rr * TS + cc]) - zd25v * ((LVFU(greentile[(rr - 1)*TS + (cc - 1)]) + LVFU(greentile[(rr - 1)*TS + (cc + 1)]) + LVFU(greentile[(rr + 1)*TS + cc + 1]) + LVFU(greentile[(rr + 1)*TS + cc - 1])) - - _mm_min_ps(clip_ptv, LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1])))); + vminf(LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1]), clip_ptv))); } #else @@ -381,7 +381,7 @@ void RawImageSource::fast_demosaic() for (int j = left + 1, cc = 1; j < right - 1; j += 4, cc += 4) { //interpolate B/R colors at R/B sites _mm_storeu_ps(&redtile[rr * TS + cc], LVFU(greentile[rr * TS + cc]) - zd25v * ((LVFU(greentile[(rr - 1)*TS + cc - 1]) + LVFU(greentile[(rr - 1)*TS + cc + 1]) + LVFU(greentile[(rr + 1)*TS + cc + 1]) + LVFU(greentile[(rr + 1)*TS + cc - 1])) - - _mm_min_ps(clip_ptv, LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1])))); + vminf(LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1]), clip_ptv))); } #else diff --git a/rtengine/helpersse2.h b/rtengine/helpersse2.h index 46af3aa89..74780cf48 100644 --- a/rtengine/helpersse2.h +++ b/rtengine/helpersse2.h @@ -157,10 +157,14 @@ static INLINE vfloat vsqrtf(vfloat x) } static INLINE vfloat vmaxf(vfloat x, vfloat y) { + // _mm_max_ps(x, y) returns y if x is NaN + // don't change the order of the parameters return _mm_max_ps(x, y); } static INLINE vfloat vminf(vfloat x, vfloat y) { + // _mm_min_ps(x, y) returns y if x is NaN + // don't change the order of the parameters return _mm_min_ps(x, y); } diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 502da8073..9b8d3794e 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -3101,8 +3101,8 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile vfloat rowBlackv = blackv[row & 1]; for (; col < W - 3; col += 4) { - vfloat linecorrv = SQRV(vmaxf(epsv, LVFU(cfablur[row * W + col]) - rowBlackv)) / - (vmaxf(epsv, LVFU(cfablur1[row * W + col]) - rowBlackv) * vmaxf(epsv, LVFU(cfablur2[row * W + col]) - rowBlackv)); + vfloat linecorrv = SQRV(vmaxf(LVFU(cfablur[row * W + col]) - rowBlackv, epsv)) / + (vmaxf(LVFU(cfablur1[row * W + col]) - rowBlackv, epsv) * vmaxf(LVFU(cfablur2[row * W + col]) - rowBlackv, epsv)); vfloat valv = LVFU(rawData[row][col]); valv -= rowBlackv; STVFU(rawData[row][col], valv * linecorrv + rowBlackv); From 8a31f0368c2452c257aad7b1d7fe98772bfb7dfb Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 5 Nov 2018 16:02:32 +0100 Subject: [PATCH 098/348] Use vsqrtf instead of _mm_sqrt_ps --- rtengine/EdgePreservingDecomposition.cc | 2 +- rtengine/dirpyr_equalizer.cc | 2 +- rtengine/improcfun.cc | 2 +- rtengine/ipwavelet.cc | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index 4c56cbb5d..f71e0043e 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -731,7 +731,7 @@ float *EdgePreservingDecomposition::CreateBlur(float *Source, float Scale, float gxv = (LVFU(rg[x + 1]) - LVFU(rg[x])) + (LVFU(rg[x + w + 1]) - LVFU(rg[x + w])); gyv = (LVFU(rg[x + w]) - LVFU(rg[x])) + (LVFU(rg[x + w + 1]) - LVFU(rg[x + 1])); //Apply power to the magnitude of the gradient to get the edge stopping function. - _mm_storeu_ps( &a[x + w * y], Scalev * pow_F((zd5v * _mm_sqrt_ps(gxv * gxv + gyv * gyv + sqrepsv)), EdgeStoppingv) ); + _mm_storeu_ps( &a[x + w * y], Scalev * pow_F((zd5v * vsqrtf(gxv * gxv + gyv * gyv + sqrepsv)), EdgeStoppingv) ); } for(; x < w1; x++) { diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index 69c01be8c..cbee70763 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -191,7 +191,7 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt int j; for(j = 0; j < srcwidth - 3; j += 4) { - _mm_storeu_ps(&tmpChr[i][j], _mm_sqrt_ps(SQRV(LVFU(l_b[i][j])) + SQRV(LVFU(l_a[i][j]))) / div); + _mm_storeu_ps(&tmpChr[i][j], vsqrtf(SQRV(LVFU(l_b[i][j])) + SQRV(LVFU(l_a[i][j]))) / div); } for(; j < srcwidth; j++) { diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 840535e6e..de4a93556 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -4407,7 +4407,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW av = LVFU (lold->a[i][k]); bv = LVFU (lold->b[i][k]); STVF (HHBuffer[k], xatan2f (bv, av)); - STVF (CCBuffer[k], _mm_sqrt_ps (SQRV (av) + SQRV (bv)) / c327d68v); + STVF (CCBuffer[k], vsqrtf (SQRV (av) + SQRV (bv)) / c327d68v); } for (; k < W; k++) { diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index e4a61caa0..e22e4553c 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -736,7 +736,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const av = LVFU(lab->a[i][j]); bv = LVFU(lab->b[i][j]); huev = xatan2f(bv, av); - chrov = _mm_sqrt_ps(SQRV(av) + SQRV(bv)) / c327d68v; + chrov = vsqrtf(SQRV(av) + SQRV(bv)) / c327d68v; _mm_storeu_ps(&varhue[i1][j1], huev); _mm_storeu_ps(&varchro[i1][j1], chrov); @@ -1104,7 +1104,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const bv = LVFU(labco->b[i1][col]); STVF(atan2Buffer[col], xatan2f(bv, av)); - cv = _mm_sqrt_ps(SQRV(av) + SQRV(bv)); + cv = vsqrtf(SQRV(av) + SQRV(bv)); yv = av / cv; xv = bv / cv; xyMask = vmaskf_eq(zerov, cv); @@ -1992,7 +1992,7 @@ void ImProcFunctions::WaveletAandBAllAB(wavelet_decomposition &WaveletCoeffs_a, __m128 av = LVFU(WavCoeffs_a0[i * W_L + k]); __m128 bv = LVFU(WavCoeffs_b0[i * W_L + k]); __m128 huev = xatan2f(bv, av); - __m128 chrv = _mm_sqrt_ps(SQRV(av) + SQRV(bv)); + __m128 chrv = vsqrtf(SQRV(av) + SQRV(bv)); STVF(huebuffer[k], huev); STVF(chrbuffer[k], chrv); } From b8af63bb047f97a30d78f97818a67ca99cd7f1c0 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 5 Nov 2018 19:50:24 +0100 Subject: [PATCH 099/348] Use vclampf(value, low, high) whereever possible, #4942 --- rtengine/CA_correct_RT.cc | 2 +- rtengine/LUT.h | 10 +++++----- rtengine/curves.h | 12 ++++++------ rtengine/demosaic_algos.cc | 16 ++++++++-------- rtengine/iplabregions.cc | 6 +++--- rtengine/ipretinex.cc | 4 ++-- rtengine/sleefsseavx.c | 5 +++-- 7 files changed, 28 insertions(+), 27 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 22ad77e63..2fa589110 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -1252,7 +1252,7 @@ float* RawImageSource::CA_correct_RT( vfloat factors = oldvals / newvals; factors = vself(vmaskf_le(newvals, onev), onev, factors); factors = vself(vmaskf_le(oldvals, onev), onev, factors); - STVFU((*nonGreen)[i/2][j/2], LIMV(factors, zd5v, twov)); + STVFU((*nonGreen)[i/2][j/2], vclampf(factors, zd5v, twov)); } #endif for (; j < W - 2 * cb; j += 2) { diff --git a/rtengine/LUT.h b/rtengine/LUT.h index fedc20ca2..de668cca8 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -320,7 +320,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(vminf(maxsv, indexv), ZEROV); // this automagically uses ZEROV in case indexv is NaN + vfloat clampedIndexes = vclampf(indexv, ZEROV, maxsv); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -352,7 +352,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(vminf(maxsv, indexv), ZEROV); // this automagically uses ZEROV in case indexv is NaN + vfloat clampedIndexes = vclampf(indexv, ZEROV, maxsv); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -372,7 +372,7 @@ public: vfloat lower = _mm_castsi128_ps(_mm_unpacklo_epi64(temp0, temp1)); vfloat upper = _mm_castsi128_ps(_mm_unpackhi_epi64(temp0, temp1)); - vfloat diff = vmaxf(vminf(sizev, indexv), ZEROV) - _mm_cvtepi32_ps(indexes); // this automagically uses ZEROV in case indexv is NaN + vfloat diff = vclampf(indexv, ZEROV, sizev) - _mm_cvtepi32_ps(indexes); // this automagically uses ZEROV in case indexv is NaN return vintpf(diff, upper, lower); } @@ -383,7 +383,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(vminf(maxsv, indexv), ZEROV); // this automagically uses ZEROV in case indexv is NaN + vfloat clampedIndexes = vclampf(indexv, ZEROV, maxsv); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -421,7 +421,7 @@ public: vfloat operator[](vint idxv) const { // convert to float because SSE2 has no min/max for 32bit integers - vfloat tempv = vmaxf(vminf(sizev, _mm_cvtepi32_ps(idxv)), ZEROV); // this automagically uses ZEROV in case idxv is NaN (which will never happen because it is a vector of int) + vfloat tempv = vclampf(_mm_cvtepi32_ps(idxv), ZEROV, sizev); // this automagically uses ZEROV in case idxv is NaN (which will never happen because it is a vector of int) idxv = _mm_cvttps_epi32(tempv); // access the LUT 4 times. Trust the compiler. It generates good code here, better than hand written SSE code return _mm_setr_ps(data[_mm_cvtsi128_si32(idxv)], diff --git a/rtengine/curves.h b/rtengine/curves.h index 30fb01102..c66c19a27 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -1157,9 +1157,9 @@ inline void WeightedStdToneCurve::BatchApply(const size_t start, const size_t en float tmpb[4] ALIGNED16; 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 r_val = vclampf(LVF(r[i]), ZEROV, c65535v); + vfloat g_val = vclampf(LVF(g[i]), ZEROV, c65535v); + vfloat b_val = vclampf(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); @@ -1172,9 +1172,9 @@ inline void WeightedStdToneCurve::BatchApply(const size_t start, const size_t en vfloat r3 = Triangle(b_val, b3, r_val); vfloat g3 = Triangle(b_val, b3, g_val); - STVF(tmpr[0], LIMV(r1 * zd5v + r2 * zd25v + r3 * zd25v, ZEROV, c65535v)); - STVF(tmpg[0], LIMV(g1 * zd25v + g2 * zd5v + g3 * zd25v, ZEROV, c65535v)); - STVF(tmpb[0], LIMV(b1 * zd25v + b2 * zd25v + b3 * zd5v, ZEROV, c65535v)); + STVF(tmpr[0], vclampf(r1 * zd5v + r2 * zd25v + r3 * zd25v, ZEROV, c65535v)); + STVF(tmpg[0], vclampf(g1 * zd25v + g2 * zd5v + g3 * zd25v, ZEROV, c65535v)); + STVF(tmpb[0], vclampf(b1 * zd25v + b2 * zd25v + b3 * zd5v, ZEROV, c65535v)); for (int j = 0; j < 4; ++j) { setUnlessOOG(r[i+j], g[i+j], b[i+j], tmpr[j], tmpg[j], tmpb[j]); } diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 10ef0dd0e..a324a7ca6 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -1399,7 +1399,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, array2D &r // Adapted to RawTherapee by Jacques Desmis 3/2013 // SSE version by Ingo Weyrich 5/2013 #ifdef __SSE2__ -#define CLIPV(a) LIMV(a,zerov,c65535v) +#define CLIPV(a) vclampf(a,zerov,c65535v) void RawImageSource::igv_interpolate(int winw, int winh) { static const float eps = 1e-5f, epssq = 1e-5f; //mod epssq -10f =>-5f Jacques 3/2013 to prevent artifact (divide by zero) @@ -1513,10 +1513,10 @@ void RawImageSource::igv_interpolate(int winw, int winh) //N,E,W,S Hamilton Adams Interpolation // (48.f * 65535.f) = 3145680.f tempv = c40v * LVFU(rgb[0][indx1]); - nvv = LIMV(((c23v * LVFU(rgb[1][(indx - v1) >> 1]) + c23v * LVFU(rgb[1][(indx - v3) >> 1]) + LVFU(rgb[1][(indx - v5) >> 1]) + LVFU(rgb[1][(indx + v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - v1)]) - c8v * LVFU(rgb[0][(indx1 - v2)]))) / c3145680v, zerov, onev); - evv = LIMV(((c23v * LVFU(rgb[1][(indx + h1) >> 1]) + c23v * LVFU(rgb[1][(indx + h3) >> 1]) + LVFU(rgb[1][(indx + h5) >> 1]) + LVFU(rgb[1][(indx - h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + h1)]) - c8v * LVFU(rgb[0][(indx1 + h2)]))) / c3145680v, zerov, onev); - wvv = LIMV(((c23v * LVFU(rgb[1][(indx - h1) >> 1]) + c23v * LVFU(rgb[1][(indx - h3) >> 1]) + LVFU(rgb[1][(indx - h5) >> 1]) + LVFU(rgb[1][(indx + h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - h1)]) - c8v * LVFU(rgb[0][(indx1 - h2)]))) / c3145680v, zerov, onev); - svv = LIMV(((c23v * LVFU(rgb[1][(indx + v1) >> 1]) + c23v * LVFU(rgb[1][(indx + v3) >> 1]) + LVFU(rgb[1][(indx + v5) >> 1]) + LVFU(rgb[1][(indx - v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + v1)]) - c8v * LVFU(rgb[0][(indx1 + v2)]))) / c3145680v, zerov, onev); + nvv = vclampf(((c23v * LVFU(rgb[1][(indx - v1) >> 1]) + c23v * LVFU(rgb[1][(indx - v3) >> 1]) + LVFU(rgb[1][(indx - v5) >> 1]) + LVFU(rgb[1][(indx + v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - v1)]) - c8v * LVFU(rgb[0][(indx1 - v2)]))) / c3145680v, zerov, onev); + evv = vclampf(((c23v * LVFU(rgb[1][(indx + h1) >> 1]) + c23v * LVFU(rgb[1][(indx + h3) >> 1]) + LVFU(rgb[1][(indx + h5) >> 1]) + LVFU(rgb[1][(indx - h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + h1)]) - c8v * LVFU(rgb[0][(indx1 + h2)]))) / c3145680v, zerov, onev); + wvv = vclampf(((c23v * LVFU(rgb[1][(indx - h1) >> 1]) + c23v * LVFU(rgb[1][(indx - h3) >> 1]) + LVFU(rgb[1][(indx - h5) >> 1]) + LVFU(rgb[1][(indx + h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - h1)]) - c8v * LVFU(rgb[0][(indx1 - h2)]))) / c3145680v, zerov, onev); + svv = vclampf(((c23v * LVFU(rgb[1][(indx + v1) >> 1]) + c23v * LVFU(rgb[1][(indx + v3) >> 1]) + LVFU(rgb[1][(indx + v5) >> 1]) + LVFU(rgb[1][(indx - v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + v1)]) - c8v * LVFU(rgb[0][(indx1 + v2)]))) / c3145680v, zerov, onev); //Horizontal and vertical color differences tempv = LVFU( rgb[0][indx1] ) / c65535v; _mm_storeu_ps( &vdif[indx1], (sgv * nvv + ngv * svv) / (ngv + sgv) - tempv ); @@ -1561,9 +1561,9 @@ void RawImageSource::igv_interpolate(int winw, int winh) for (col = 7 + (FC(row, 1) & 1), indx1 = (row * width + col) >> 1, d = FC(row, col) / 2; col < width - 14; col += 8, indx1 += 4) { //H&V integrated gaussian vector over variance on color differences //Mod Jacques 3/2013 - ngv = LIMV(epssqv + c78v * SQRV(LVFU(vdif[indx1])) + c69v * (SQRV(LVFU(vdif[indx1 - v1])) + SQRV(LVFU(vdif[indx1 + v1]))) + c51v * (SQRV(LVFU(vdif[indx1 - v2])) + SQRV(LVFU(vdif[indx1 + v2]))) + c21v * (SQRV(LVFU(vdif[indx1 - v3])) + SQRV(LVFU(vdif[indx1 + v3]))) - c6v * SQRV(LVFU(vdif[indx1 - v1]) + LVFU(vdif[indx1]) + LVFU(vdif[indx1 + v1])) + ngv = vclampf(epssqv + c78v * SQRV(LVFU(vdif[indx1])) + c69v * (SQRV(LVFU(vdif[indx1 - v1])) + SQRV(LVFU(vdif[indx1 + v1]))) + c51v * (SQRV(LVFU(vdif[indx1 - v2])) + SQRV(LVFU(vdif[indx1 + v2]))) + c21v * (SQRV(LVFU(vdif[indx1 - v3])) + SQRV(LVFU(vdif[indx1 + v3]))) - c6v * SQRV(LVFU(vdif[indx1 - v1]) + LVFU(vdif[indx1]) + LVFU(vdif[indx1 + v1])) - c10v * (SQRV(LVFU(vdif[indx1 - v2]) + LVFU(vdif[indx1 - v1]) + LVFU(vdif[indx1])) + SQRV(LVFU(vdif[indx1]) + LVFU(vdif[indx1 + v1]) + LVFU(vdif[indx1 + v2]))) - c7v * (SQRV(LVFU(vdif[indx1 - v3]) + LVFU(vdif[indx1 - v2]) + LVFU(vdif[indx1 - v1])) + SQRV(LVFU(vdif[indx1 + v1]) + LVFU(vdif[indx1 + v2]) + LVFU(vdif[indx1 + v3]))), zerov, onev); - egv = LIMV(epssqv + c78v * SQRV(LVFU(hdif[indx1])) + c69v * (SQRV(LVFU(hdif[indx1 - h1])) + SQRV(LVFU(hdif[indx1 + h1]))) + c51v * (SQRV(LVFU(hdif[indx1 - h2])) + SQRV(LVFU(hdif[indx1 + h2]))) + c21v * (SQRV(LVFU(hdif[indx1 - h3])) + SQRV(LVFU(hdif[indx1 + h3]))) - c6v * SQRV(LVFU(hdif[indx1 - h1]) + LVFU(hdif[indx1]) + LVFU(hdif[indx1 + h1])) + egv = vclampf(epssqv + c78v * SQRV(LVFU(hdif[indx1])) + c69v * (SQRV(LVFU(hdif[indx1 - h1])) + SQRV(LVFU(hdif[indx1 + h1]))) + c51v * (SQRV(LVFU(hdif[indx1 - h2])) + SQRV(LVFU(hdif[indx1 + h2]))) + c21v * (SQRV(LVFU(hdif[indx1 - h3])) + SQRV(LVFU(hdif[indx1 + h3]))) - c6v * SQRV(LVFU(hdif[indx1 - h1]) + LVFU(hdif[indx1]) + LVFU(hdif[indx1 + h1])) - c10v * (SQRV(LVFU(hdif[indx1 - h2]) + LVFU(hdif[indx1 - h1]) + LVFU(hdif[indx1])) + SQRV(LVFU(hdif[indx1]) + LVFU(hdif[indx1 + h1]) + LVFU(hdif[indx1 + h2]))) - c7v * (SQRV(LVFU(hdif[indx1 - h3]) + LVFU(hdif[indx1 - h2]) + LVFU(hdif[indx1 - h1])) + SQRV(LVFU(hdif[indx1 + h1]) + LVFU(hdif[indx1 + h2]) + LVFU(hdif[indx1 + h3]))), zerov, onev); //Limit chrominance using H/V neighbourhood nvv = median(d725v * LVFU(vdif[indx1]) + d1375v * LVFU(vdif[indx1 - v1]) + d1375v * LVFU(vdif[indx1 + v1]), LVFU(vdif[indx1 - v1]), LVFU(vdif[indx1 + v1])); @@ -2114,7 +2114,7 @@ void RawImageSource::nodemosaic(bool bw) */ #ifdef __SSE2__ -#define CLIPV(a) LIMV(a,ZEROV,c65535v) +#define CLIPV(a) vclampf(a,ZEROV,c65535v) #endif void RawImageSource::refinement(int PassCount) { diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index d5bbd6302..d2380494a 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -204,9 +204,9 @@ BENCHFUN for (int i = 0; i < n; ++i) { vfloat blendv = LVFU(abmask[i][y][x]); vfloat sv = F2V(rs[i]); - vfloat a_newv = LIMV(sv * (av + F2V(abca[i])), cm42000v, c42000v); - vfloat b_newv = LIMV(sv * (bv + F2V(abcb[i])), cm42000v, c42000v); - vfloat l_newv = LIMV(lv * F2V(rl[i]), ZEROV, c32768v); + vfloat a_newv = vclampf(sv * (av + F2V(abca[i])), cm42000v, c42000v); + vfloat b_newv = vclampf(sv * (bv + F2V(abcb[i])), cm42000v, c42000v); + vfloat l_newv = vclampf(lv * F2V(rl[i]), ZEROV, c32768v); lv = vintpf(LVFU(Lmask[i][y][x]), l_newv, lv); av = vintpf(blendv, a_newv, av); bv = vintpf(blendv, b_newv, bv); diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index e79ee52a3..fa961fbbb 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -504,11 +504,11 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e if(useHslLin) { for (; j < W_L - 3; j += 4) { - _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * (LIMV(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); + _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * (vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); } } else { for (; j < W_L - 3; j += 4) { - _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * xlogf(LIMV(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); + _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * xlogf(vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); } } diff --git a/rtengine/sleefsseavx.c b/rtengine/sleefsseavx.c index c68f11ae0..83d937bd1 100644 --- a/rtengine/sleefsseavx.c +++ b/rtengine/sleefsseavx.c @@ -1368,8 +1368,9 @@ static INLINE vfloat xcbrtf(vfloat d) { return y; } -static INLINE vfloat LIMV( vfloat a, vfloat b, vfloat c ) { -return vmaxf( b, vminf(a,c)); +static INLINE vfloat vclampf(vfloat value, vfloat low, vfloat high) { + // clamps value in [low;high], returns low if value is NaN + return vmaxf(vminf(high, value), low); } static INLINE vfloat SQRV(vfloat a){ From 3b48df2c2c5c417e0b8b2df1e8cee9ad894e259c Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 6 Nov 2018 18:26:00 +0100 Subject: [PATCH 100/348] Fixed console warnings Fix for https://github.com/Beep6581/RawTherapee/issues/4941 --- rtdata/themes/TooWaBlue-GTK3-20_.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index f2b631165..3fe3c5f38 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -1421,8 +1421,12 @@ combobox entry + button:not(.dummy) { border-bottom-left-radius: 0; border-left: none; } + #PlacesPaned button.combo { - margin: 0 0 calc(0.416666666666666666em - 8px) 0; + margin: 0; +} +#PlacesPaned combobox { + margin-bottom: calc(0.416666666666666666em - 8px); } /* Reset button */ From 7cbf198db8e565bb7c0baca637664dce86f67031 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Wed, 7 Nov 2018 11:55:02 -0600 Subject: [PATCH 101/348] Revert "Fix mismatched malloc/delete leak" This reverts commit 77eccdf13df8f1190d13d854f5dfd12daca09011. --- rtengine/dcp.cc | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index a1b0db323..c18ee8915 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -393,13 +393,6 @@ double xyCoordToTemperature(const std::array& white_xy) return res; } -struct cJSON_deleter { - template - void operator()(T *t) { - cJSON_Delete(const_cast::type*>(t)); - } -}; - std::map getAliases(const Glib::ustring& profile_dir) { const std::unique_ptr> file( @@ -426,7 +419,7 @@ std::map getAliases(const Glib::ustring& profile_dir) buffer[read] = 0; cJSON_Minify(buffer.get()); - const std::unique_ptr root(cJSON_Parse(buffer.get())); + const std::unique_ptr root(cJSON_Parse(buffer.get())); if (!root || !root->child) { if (settings->verbose) { std::cout << "Could not parse 'camera_model_aliases.json' file." << std::endl; From a63cd8a87c5e5c880d2e64c99f53c70691a68539 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Fri, 2 Nov 2018 00:54:02 -0500 Subject: [PATCH 102/348] Fix mismatched malloc/delete leak, take 2 with cJSON_Delete From the Valgrind report: ``` Mismatched free() / delete / delete [] at 0x4838EAB: operator delete(void*) (vg_replace_malloc.c:576) by 0xBC5C87: std::default_delete::operator()(cJSON*) const (unique_ptr.h:81) by 0xBC4ACA: std::unique_ptr >::~unique_ptr() (unique_ptr.h:274) by 0xBBB755: (anonymous namespace)::getAliases(Glib::ustring const&) (dcp.cc:422) by 0xBC1CCA: rtengine::DCPStore::init(Glib::ustring const&, bool) (dcp.cc:1846) by 0xC3ED4F: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) [clone ._omp_fn.0] (init.cc:81) by 0x89743FF: GOMP_parallel_sections (sections.c:158) by 0xC3E906: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) (init.cc:52) by 0x9CE10E: Options::load(bool) (options.cc:2358) by 0x982CD6: main (main.cc:603) Address 0xd62d700 is 0 bytes inside a block of size 64 alloc'd at 0x483777F: malloc (vg_replace_malloc.c:299) by 0xE97390: cJSON_New_Item (cJSON.c:205) by 0xE98718: cJSON_ParseWithOpts (cJSON.c:1020) by 0xE9886F: cJSON_Parse (cJSON.c:1083) by 0xBBB4D3: (anonymous namespace)::getAliases(Glib::ustring const&) (dcp.cc:422) by 0xBC1CCA: rtengine::DCPStore::init(Glib::ustring const&, bool) (dcp.cc:1846) by 0xC3ED4F: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) [clone ._omp_fn.0] (init.cc:81) by 0x89743FF: GOMP_parallel_sections (sections.c:158) by 0xC3E906: rtengine::init(rtengine::Settings const*, Glib::ustring, Glib::ustring, bool) (init.cc:52) by 0x9CE10E: Options::load(bool) (options.cc:2358) by 0x982CD6: main (main.cc:603) ``` --- rtengine/dcp.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index c18ee8915..c60e80587 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -419,7 +419,7 @@ std::map getAliases(const Glib::ustring& profile_dir) buffer[read] = 0; cJSON_Minify(buffer.get()); - const std::unique_ptr root(cJSON_Parse(buffer.get())); + const std::unique_ptr root(cJSON_Parse(buffer.get()), cJSON_Delete); if (!root || !root->child) { if (settings->verbose) { std::cout << "Could not parse 'camera_model_aliases.json' file." << std::endl; From b4813273d21f991789749d30eeb2ac437cdcc698 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Wed, 7 Nov 2018 12:16:16 -0600 Subject: [PATCH 103/348] ImageData: Use terser emplace_back to add unique_ptr to vector --- rtengine/imagedata.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 47bb0b490..849a7199f 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -1113,7 +1113,8 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); + // Note: could leak if emplace_back throws (below as well). Unlikely in practice. + frames.emplace_back(new FrameData(currFrame, currFrame->getRoot(), roots.at(0))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); @@ -1135,7 +1136,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); + frames.emplace_back(new FrameData(currFrame, currFrame->getRoot(), roots.at(0))); } rewind (exifManager.f); // Not sure this is necessary iptc = iptc_data_new_from_jpeg_file (exifManager.f); @@ -1153,7 +1154,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); + frames.emplace_back(new FrameData(currFrame, currFrame->getRoot(), roots.at(0))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); From bb5d8710e8d29bbca1e9d33c0fd5cc64aa3e80a7 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Thu, 8 Nov 2018 06:08:51 +0100 Subject: [PATCH 104/348] Removed "#PrefCacheSeparator" ID --- rtdata/themes/TooWaBlue-GTK3-20_.css | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index 3fe3c5f38..dbe0041a7 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -473,7 +473,7 @@ separator, background-color: transparent; } grid separator.horizontal, box separator.horizontal { - margin: 0.166666666666666666em 0; + margin: 0.166666666666666666em; padding: 0; } grid separator.vertical, box separator.vertical { @@ -549,10 +549,7 @@ menu separator { background-color: shade(@bg-light-grey,.75); margin: 0.166666666666666666em; } -separator#PrefCacheSeparator.horizontal { - margin: 0.25em 0.166666666666666666em; - padding: 0; -} + #MyExpander separator { background-color: @view-grid-border; margin: 0.333333333333333333em 0.166666666666666666em; From bbb51b1070f2e90999ea96e82f3f9b268ae8c094 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Thu, 8 Nov 2018 06:11:50 +0100 Subject: [PATCH 105/348] Removed "#PrefCacheSeparator" ID and add class "grid-row-separator" --- rtgui/preferences.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 54095f429..147e6badd 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1367,7 +1367,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () // Separation is needed so that a button is not accidentally clicked when one wanted // to click a spinbox. Ideally, the separation wouldn't require attaching a widget, but how? Gtk::HSeparator *cacheSeparator = Gtk::manage (new Gtk::HSeparator()); - cacheSeparator->set_name("PrefCacheSeparator"); + cacheSeparator->get_style_context()->add_class("grid-row-separator"); Gtk::Label* clearThumbsLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ALLBUTPROFILES"))); setExpandAlignProperties(clearThumbsLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); From 894a3523463a2401da18c65f7dcecf60830b7af3 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Thu, 8 Nov 2018 06:33:17 +0100 Subject: [PATCH 106/348] Update TooWaBlue-GTK3-20_.css Changed some separator spacing. --- rtdata/themes/TooWaBlue-GTK3-20_.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index dbe0041a7..3bc6e0bdc 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -473,7 +473,7 @@ separator, background-color: transparent; } grid separator.horizontal, box separator.horizontal { - margin: 0.166666666666666666em; + margin: 0.333333333333333333em 0.166666666666666666em; padding: 0; } grid separator.vertical, box separator.vertical { @@ -550,7 +550,7 @@ menu separator { margin: 0.166666666666666666em; } -#MyExpander separator { +#MyExpander separator.horizontal { background-color: @view-grid-border; margin: 0.333333333333333333em 0.166666666666666666em; } From 2502312242bf004dcf4ea2527b843c6dee45f215 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 8 Nov 2018 14:35:03 +0100 Subject: [PATCH 107/348] Small speedup for dehaze, closes #4944 --- rtengine/ipdehaze.cc | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index fecc73e7d..5522107e0 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -197,23 +197,16 @@ void extract_channels(Imagefloat *img, array2D &r, array2D &g, arr const int W = img->getWidth(); const int H = img->getHeight(); -#ifdef _OPENMP - #pragma omp parallel for if (multithread) -#endif - for (int y = 0; y < H; ++y) { - for (int x = 0; x < W; ++x) { - r[y][x] = img->r(y, x); - g[y][x] = img->g(y, x); - b[y][x] = img->b(y, x); - } - } + array2D imgR(W, H, img->r.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgR, imgR, r, radius, epsilon, multithread); - guidedFilter(r, r, r, radius, epsilon, multithread); - guidedFilter(g, g, g, radius, epsilon, multithread); - guidedFilter(b, b, b, radius, epsilon, multithread); + array2D imgG(W, H, img->g.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgG, imgG, g, radius, epsilon, multithread); + + array2D imgB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgB, imgB, b, radius, epsilon, multithread); } - } // namespace From 6cd50adc54f744ff5d9702548107a27dbb796d20 Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Thu, 8 Nov 2018 09:57:02 -0600 Subject: [PATCH 108/348] Revert "ImageData: Use terser emplace_back to add unique_ptr to vector" This reverts commit b4813273d21f991789749d30eeb2ac437cdcc698. --- rtengine/imagedata.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 849a7199f..47bb0b490 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -1113,8 +1113,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0))); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); @@ -1136,7 +1135,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0))); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } rewind (exifManager.f); // Not sure this is necessary iptc = iptc_data_new_from_jpeg_file (exifManager.f); @@ -1154,7 +1153,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0))); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); From 2833417133a28ad8bee962e1a2cd883413ba8b4b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 8 Nov 2018 17:16:32 +0100 Subject: [PATCH 109/348] First version of blackmagic native dng support, #4285 --- rtengine/CMakeLists.txt | 1 + rtengine/dcraw.cc | 38 ++- rtengine/dcraw.h | 1 + rtengine/lj92.c | 696 ++++++++++++++++++++++++++++++++++++++++ rtengine/lj92.h | 68 ++++ 5 files changed, 802 insertions(+), 2 deletions(-) create mode 100644 rtengine/lj92.c create mode 100644 rtengine/lj92.h diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index d31b1f237..7bb35ad01 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -130,6 +130,7 @@ set(RTENGINESOURCEFILES guidedfilter.cc ipdehaze.cc iplabregions.cc + lj92.c ) if(LENSFUN_HAS_LOAD_DIRECTORY) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 035dab2b2..328b66956 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -23,7 +23,7 @@ /*RT*/#define LOCALTIME /*RT*/#define DJGPP /*RT*/#include "jpeg.h" - +/*RT*/#include "lj92.h" #include #include #include "opthelper.h" @@ -1124,6 +1124,40 @@ void CLASS ljpeg_idct (struct jhead *jh) FORC(64) jh->idct[c] = CLIP(((float *)work[2])[c]+0.5); } +void CLASS lossless_dnglj92_load_raw() +{ + unsigned save, tcol=0; + + while (tcol < raw_width) { + save = ftell(ifp); + if (tile_length < INT_MAX) { + fseek(ifp, get4(), SEEK_SET); + } + int data_length = ifp->size - ifp->pos; + lj92 lj; + uint8_t *data = (uint8_t*)malloc(data_length); + fread(data, 1, data_length, ifp); + + fseek(ifp, save, SEEK_SET); + int newwidth, newheight, newbps; + lj92_open(&lj, data, data_length, &newwidth, &newheight, &newbps); + + uint16_t *target = (uint16_t*)malloc(newwidth * newheight * 2 * sizeof *target); + lj92_decode(lj, target, tile_width, 0, NULL, 0); + tiff_bps = 16; + for (int y = 0; y < height; ++y) { + for(int x = 0; x < tile_width; ++x) { + RAW(y, x + tcol) = target[y * tile_width + x]; + } + } + lj92_close(lj); + tcol += tile_width; + get4(); + free(data); + free (target); + } +} + void CLASS lossless_dng_load_raw() { unsigned save, trow=0, tcol=0, jwide, jrow, jcol, row, col, i, j; @@ -9280,7 +9314,7 @@ void CLASS identify() switch (tiff_compress) { case 0: case 1: load_raw = &CLASS packed_dng_load_raw; break; - case 7: load_raw = &CLASS lossless_dng_load_raw; break; + case 7: load_raw = (!RT_from_adobe_dng_converter && !strncmp(make,"Blackmagic",10)) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; case 8: load_raw = &CLASS deflate_dng_load_raw; break; case 34892: load_raw = &CLASS lossy_dng_load_raw; break; default: load_raw = 0; diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index 9c6ac4aec..f9591b640 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -290,6 +290,7 @@ void ljpeg_idct (struct jhead *jh); void canon_sraw_load_raw(); void adobe_copy_pixel (unsigned row, unsigned col, ushort **rp); void lossless_dng_load_raw(); +void lossless_dnglj92_load_raw(); void packed_dng_load_raw(); void deflate_dng_load_raw(); void init_fuji_compr(struct fuji_compressed_params* info); diff --git a/rtengine/lj92.c b/rtengine/lj92.c new file mode 100644 index 000000000..cfdae6bf9 --- /dev/null +++ b/rtengine/lj92.c @@ -0,0 +1,696 @@ +/* +lj92.c +(c) Andrew Baldwin 2014 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include +#include +#include +#include + +#include "lj92.h" + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; + +//#define SLOW_HUFF +//#define DEBUG + +typedef struct _ljp { + u8* data; + u8* dataend; + int datalen; + int scanstart; + int ix; + int x; // Width + int y; // Height + int bits; // Bit depth + int writelen; // Write rows this long + int skiplen; // Skip this many values after each row + u16* linearize; // Linearization table + int linlen; + int sssshist[16]; + + // Huffman table - only one supported, and probably needed +#ifdef SLOW_HUFF + int* maxcode; + int* mincode; + int* valptr; + u8* huffval; + int* huffsize; + int* huffcode; +#else + u16* hufflut; + int huffbits; +#endif + // Parse state + int cnt; + u32 b; + u16* image; + u16* rowcache; + u16* outrow[2]; +} ljp; + +static int find(ljp* self) { + int ix = self->ix; + u8* data = self->data; + while (data[ix] != 0xFF && ix<(self->datalen-1)) { + ix += 1; + } + ix += 2; + if (ix>=self->datalen) return -1; + self->ix = ix; + return data[ix-1]; +} + +#define BEH(ptr) ((((int)(*&ptr))<<8)|(*(&ptr+1))) + +static int parseHuff(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + u8* huffhead = &self->data[self->ix]; // xstruct.unpack('>HB16B',self.data[self.ix:self.ix+19]) + u8* bits = &huffhead[2]; + bits[0] = 0; // Because table starts from 1 + int hufflen = BEH(huffhead[0]); + if ((self->ix + hufflen) >= self->datalen) return ret; +#ifdef SLOW_HUFF + u8* huffval = calloc(hufflen - 19,sizeof(u8)); + if (huffval == NULL) return LJ92_ERROR_NO_MEMORY; + self->huffval = huffval; + for (int hix=0;hix<(hufflen-19);hix++) { + huffval[hix] = self->data[self->ix+19+hix]; +#ifdef DEBUG + printf("huffval[%d]=%d\n",hix,huffval[hix]); +#endif + } + self->ix += hufflen; + // Generate huffman table + int k = 0; + int i = 1; + int j = 1; + int huffsize_needed = 1; + // First calculate how long huffsize needs to be + while (i<=16) { + while (j<=bits[i]) { + huffsize_needed++; + k = k+1; + j = j+1; + } + i = i+1; + j = 1; + } + // Now allocate and do it + int* huffsize = calloc(huffsize_needed,sizeof(int)); + if (huffsize == NULL) return LJ92_ERROR_NO_MEMORY; + self->huffsize = huffsize; + k = 0; + i = 1; + j = 1; + // First calculate how long huffsize needs to be + int hsix = 0; + while (i<=16) { + while (j<=bits[i]) { + huffsize[hsix++] = i; + k = k+1; + j = j+1; + } + i = i+1; + j = 1; + } + huffsize[hsix++] = 0; + + // Calculate the size of huffcode array + int huffcode_needed = 0; + k = 0; + int code = 0; + int si = huffsize[0]; + while (1) { + while (huffsize[k] == si) { + huffcode_needed++; + code = code+1; + k = k+1; + } + if (huffsize[k] == 0) + break; + while (huffsize[k] != si) { + code = code << 1; + si = si + 1; + } + } + // Now fill it + int* huffcode = calloc(huffcode_needed,sizeof(int)); + if (huffcode == NULL) return LJ92_ERROR_NO_MEMORY; + self->huffcode = huffcode; + int hcix = 0; + k = 0; + code = 0; + si = huffsize[0]; + while (1) { + while (huffsize[k] == si) { + huffcode[hcix++] = code; + code = code+1; + k = k+1; + } + if (huffsize[k] == 0) + break; + while (huffsize[k] != si) { + code = code << 1; + si = si + 1; + } + } + + i = 0; + j = 0; + + int* maxcode = calloc(17,sizeof(int)); + if (maxcode == NULL) return LJ92_ERROR_NO_MEMORY; + self->maxcode = maxcode; + int* mincode = calloc(17,sizeof(int)); + if (mincode == NULL) return LJ92_ERROR_NO_MEMORY; + self->mincode = mincode; + int* valptr = calloc(17,sizeof(int)); + if (valptr == NULL) return LJ92_ERROR_NO_MEMORY; + self->valptr = valptr; + + while (1) { + while (1) { + i++; + if (i>16) + break; + if (bits[i]!=0) + break; + maxcode[i] = -1; + } + if (i>16) + break; + valptr[i] = j; + mincode[i] = huffcode[j]; + j = j+bits[i]-1; + maxcode[i] = huffcode[j]; + j++; + } + free(huffsize); + self->huffsize = NULL; + free(huffcode); + self->huffcode = NULL; + ret = LJ92_ERROR_NONE; +#else + /* Calculate huffman direct lut */ + // How many bits in the table - find highest entry + u8* huffvals = &self->data[self->ix+19]; + int maxbits = 16; + while (maxbits>0) { + if (bits[maxbits]) break; + maxbits--; + } + self->huffbits = maxbits; + /* Now fill the lut */ + u16* hufflut = (u16*)malloc((1<hufflut = hufflut; + int i = 0; + int hv = 0; + int rv = 0; + int vl = 0; // i + int hcode; + int bitsused = 1; +#ifdef DEBUG + printf("%04x:%x:%d:%x\n",i,huffvals[hv],bitsused,1<<(maxbits-bitsused)); +#endif + while (i<1<maxbits) { + break; // Done. Should never get here! + } + if (vl >= bits[bitsused]) { + bitsused++; + vl = 0; + continue; + } + if (rv == 1 << (maxbits-bitsused)) { + rv = 0; + vl++; + hv++; +#ifdef DEBUG + printf("%04x:%x:%d:%x\n",i,huffvals[hv],bitsused,1<<(maxbits-bitsused)); +#endif + continue; + } + hcode = huffvals[hv]; + hufflut[i] = hcode<<8 | bitsused; + //printf("%d %d %d\n",i,bitsused,hcode); + i++; + rv++; + } + ret = LJ92_ERROR_NONE; +#endif + return ret; +} + +static int parseSof3(ljp* self) { + if (self->ix+6 >= self->datalen) return LJ92_ERROR_CORRUPT; + self->y = BEH(self->data[self->ix+3]); + self->x = BEH(self->data[self->ix+5]); + self->bits = self->data[self->ix+2]; + self->ix += BEH(self->data[self->ix]); + return LJ92_ERROR_NONE; +} + +static int parseBlock(ljp* self,int marker) { + self->ix += BEH(self->data[self->ix]); + if (self->ix >= self->datalen) return LJ92_ERROR_CORRUPT; + return LJ92_ERROR_NONE; +} + +#ifdef SLOW_HUFF +static int nextbit(ljp* self) { + u32 b = self->b; + if (self->cnt == 0) { + u8* data = &self->data[self->ix]; + u32 next = *data++; + b = next; + if (next == 0xff) { + data++; + self->ix++; + } + self->ix++; + self->cnt = 8; + } + int bit = b >> 7; + self->cnt--; + self->b = (b << 1)&0xFF; + return bit; +} + +static int decode(ljp* self) { + int i = 1; + int code = nextbit(self); + while (code > self->maxcode[i]) { + i++; + code = (code << 1) + nextbit(self); + } + int j = self->valptr[i]; + j = j + code - self->mincode[i]; + int value = self->huffval[j]; + return value; +} + +static int receive(ljp* self,int ssss) { + int i = 0; + int v = 0; + while (i != ssss) { + i++; + v = (v<<1) + nextbit(self); + } + return v; +} + +static int extend(ljp* self,int v,int t) { + int vt = 1<<(t-1); + if (v < vt) { + vt = (-1 << t) + 1; + v = v + vt; + } + return v; +} +#endif + +inline static int nextdiff(ljp* self, int Px) { +#ifdef SLOW_HUFF + int t = decode(self); + int diff = receive(self,t); + diff = extend(self,diff,t); + //printf("%d %d %d %x\n",Px+diff,Px,diff,t);//,index,usedbits); +#else + u32 b = self->b; + int cnt = self->cnt; + int huffbits = self->huffbits; + int ix = self->ix; + int next; + while (cnt < huffbits) { + next = *(u16*)&self->data[ix]; + int one = next&0xFF; + int two = next>>8; + b = (b<<16)|(one<<8)|two; + cnt += 16; + ix += 2; + if (one==0xFF) { + //printf("%x %x %x %x %d\n",one,two,b,b>>8,cnt); + b >>= 8; + cnt -= 8; + } else if (two==0xFF) ix++; + } + int index = b >> (cnt - huffbits); + u16 ssssused = self->hufflut[index]; + int usedbits = ssssused&0xFF; + int t = ssssused>>8; + self->sssshist[t]++; + cnt -= usedbits; + int keepbitsmask = (1 << cnt)-1; + b &= keepbitsmask; + while (cnt < t) { + next = *(u16*)&self->data[ix]; + int one = next&0xFF; + int two = next>>8; + b = (b<<16)|(one<<8)|two; + cnt += 16; + ix += 2; + if (one==0xFF) { + b >>= 8; + cnt -= 8; + } else if (two==0xFF) ix++; + } + cnt -= t; + int diff = b >> cnt; + int vt = 1<<(t-1); + if (diff < vt) { + vt = (-1 << t) + 1; + diff += vt; + } + keepbitsmask = (1 << cnt)-1; + self->b = b & keepbitsmask; + self->cnt = cnt; + self->ix = ix; + //printf("%d %d\n",t,diff); + //printf("%d %d %d %x %x %d\n",Px+diff,Px,diff,t,index,usedbits); +#ifdef DEBUG +#endif +#endif + return diff; +} + +static int parsePred6(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + self->ix = self->scanstart; + //int compcount = self->data[self->ix+2]; + self->ix += BEH(self->data[self->ix]); + self->cnt = 0; + self->b = 0; + int write = self->writelen; + // Now need to decode huffman coded values + int c = 0; + int pixels = self->y * self->x; + u16* out = self->image; + u16* temprow; + u16* thisrow = self->outrow[0]; + u16* lastrow = self->outrow[1]; + + // First pixel predicted from base value + int diff; + int Px; + int col = 0; + int row = 0; + int left = 0; + int linear; + + // First pixel + diff = nextdiff(self,0); + Px = 1 << (self->bits-1); + left = Px + diff; + if (self->linearize) + linear = self->linearize[left]; + else + linear = left; + thisrow[col++] = left; + out[c++] = linear; + if (self->ix >= self->datalen) return ret; + --write; + int rowcount = self->x-1; + while (rowcount--) { + diff = nextdiff(self,0); + Px = left; + left = Px + diff; + if (self->linearize) + linear = self->linearize[left]; + else + linear = left; + thisrow[col++] = left; + out[c++] = linear; + //printf("%d %d %d %d %x\n",col-1,diff,left,thisrow[col-1],&thisrow[col-1]); + if (self->ix >= self->datalen) return ret; + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + } + temprow = lastrow; + lastrow = thisrow; + thisrow = temprow; + row++; + //printf("%x %x\n",thisrow,lastrow); + while (clinearize) { + if (left>self->linlen) return LJ92_ERROR_CORRUPT; + linear = self->linearize[left]; + } else + linear = left; + thisrow[col++] = left; + //printf("%d %d %d %d\n",col,diff,left,lastrow[col]); + out[c++] = linear; + if (self->ix >= self->datalen) break; + rowcount = self->x-1; + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + while (rowcount--) { + diff = nextdiff(self,0); + Px = lastrow[col] + ((left - lastrow[col-1])>>1); + left = Px + diff; + //printf("%d %d %d %d %d %x\n",col,diff,left,lastrow[col],lastrow[col-1],&lastrow[col]); + if (self->linearize) { + if (left>self->linlen) return LJ92_ERROR_CORRUPT; + linear = self->linearize[left]; + } else + linear = left; + thisrow[col++] = left; + out[c++] = linear; + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + } + temprow = lastrow; + lastrow = thisrow; + thisrow = temprow; + if (self->ix >= self->datalen) break; + } + if (c >= pixels) ret = LJ92_ERROR_NONE; + return ret; +} + +static int parseScan(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + memset(self->sssshist,0,sizeof(self->sssshist)); + self->ix = self->scanstart; + int compcount = self->data[self->ix+2]; + int pred = self->data[self->ix+3+2*compcount]; + if (pred<0 || pred>7) return ret; + if (pred==6) return parsePred6(self); // Fast path + self->ix += BEH(self->data[self->ix]); + self->cnt = 0; + self->b = 0; + int write = self->writelen; + // Now need to decode huffman coded values + int c = 0; + int pixels = self->y * self->x; + u16* out = self->image; + u16* thisrow = self->outrow[0]; + u16* lastrow = self->outrow[1]; + + // First pixel predicted from base value + int diff; + int Px; + int col = 0; + int row = 0; + int left = 0; + while (cbits-1); + } else if (row==0) { + Px = left; + } else if (col==0) { + Px = lastrow[col]; // Use value above for first pixel in row + } else { + switch (pred) { + case 0: + Px = 0; break; // No prediction... should not be used + case 1: + Px = left; break; + case 2: + Px = lastrow[col]; break; + case 3: + Px = lastrow[col-1];break; + case 4: + Px = left + lastrow[col] - lastrow[col-1];break; + case 5: + Px = left + ((lastrow[col] - lastrow[col-1])>>1);break; + case 6: + Px = lastrow[col] + ((left - lastrow[col-1])>>1);break; + case 7: + Px = (left + lastrow[col])>>1;break; + } + } + diff = nextdiff(self,Px); + left = Px + diff; + //printf("%d %d %d\n",c,diff,left); + int linear; + if (self->linearize) { + if (left>self->linlen) return LJ92_ERROR_CORRUPT; + linear = self->linearize[left]; + } else + linear = left; + thisrow[col] = left; + out[c++] = linear; + if (++col==self->x) { + col = 0; + row++; + u16* temprow = lastrow; + lastrow = thisrow; + thisrow = temprow; + } + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + if (self->ix >= self->datalen+2) break; + } + if (c >= pixels) ret = LJ92_ERROR_NONE; + /*for (int h=0;h<17;h++) { + printf("ssss:%d=%d (%f)\n",h,self->sssshist[h],(float)self->sssshist[h]/(float)(pixels)); + }*/ + return ret; +} + +static int parseImage(ljp* self) { + int ret = LJ92_ERROR_NONE; + while (1) { + int nextMarker = find(self); + if (nextMarker == 0xc4) + ret = parseHuff(self); + else if (nextMarker == 0xc3) + ret = parseSof3(self); + else if (nextMarker == 0xfe)// Comment + ret = parseBlock(self,nextMarker); + else if (nextMarker == 0xd9) // End of image + break; + else if (nextMarker == 0xda) { + self->scanstart = self->ix; + ret = LJ92_ERROR_NONE; + break; + } else if (nextMarker == -1) { + ret = LJ92_ERROR_CORRUPT; + break; + } else + ret = parseBlock(self,nextMarker); + if (ret != LJ92_ERROR_NONE) break; + } + return ret; +} + +static int findSoI(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + if (find(self)==0xd8) + ret = parseImage(self); + return ret; +} + +static void free_memory(ljp* self) { +#ifdef SLOW_HUFF + free(self->maxcode); + self->maxcode = NULL; + free(self->mincode); + self->mincode = NULL; + free(self->valptr); + self->valptr = NULL; + free(self->huffval); + self->huffval = NULL; + free(self->huffsize); + self->huffsize = NULL; + free(self->huffcode); + self->huffcode = NULL; +#else + free(self->hufflut); + self->hufflut = NULL; +#endif + free(self->rowcache); + self->rowcache = NULL; +} + +int lj92_open(lj92* lj, + uint8_t* data, int datalen, + int* width,int* height, int* bitdepth) { + ljp* self = (ljp*)calloc(sizeof(ljp),1); + if (self==NULL) return LJ92_ERROR_NO_MEMORY; + + self->data = (u8*)data; + self->dataend = self->data + datalen; + self->datalen = datalen; + + int ret = findSoI(self); + + if (ret == LJ92_ERROR_NONE) { + u16* rowcache = (u16*)calloc(self->x * 2,sizeof(u16)); + if (rowcache == NULL) ret = LJ92_ERROR_NO_MEMORY; + else { + self->rowcache = rowcache; + self->outrow[0] = rowcache; + self->outrow[1] = &rowcache[self->x]; + } + } + + if (ret != LJ92_ERROR_NONE) { // Failed, clean up + *lj = NULL; + free_memory(self); + free(self); + } else { + *width = self->x; + *height = self->y; + *bitdepth = self->bits; + *lj = self; + } + return ret; +} + +int lj92_decode(lj92 lj, + uint16_t* target,int writeLength, int skipLength, + uint16_t* linearize,int linearizeLength) { + int ret = LJ92_ERROR_NONE; + ljp* self = lj; + if (self == NULL) return LJ92_ERROR_BAD_HANDLE; + self->image = target; + self->writelen = writeLength; + self->skiplen = skipLength; + self->linearize = linearize; + self->linlen = linearizeLength; + ret = parseScan(self); + return ret; +} + +void lj92_close(lj92 lj) { + ljp* self = lj; + if (self != NULL) + free_memory(self); + free(self); +} diff --git a/rtengine/lj92.h b/rtengine/lj92.h new file mode 100644 index 000000000..bc8bf7604 --- /dev/null +++ b/rtengine/lj92.h @@ -0,0 +1,68 @@ +/* +lj92.h +(c) Andrew Baldwin 2014 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef LJ92_H +#define LJ92_H + +#ifdef __cplusplus +extern "C" +{ +#endif +enum LJ92_ERRORS { + LJ92_ERROR_NONE = 0, + LJ92_ERROR_CORRUPT = -1, + LJ92_ERROR_NO_MEMORY = -2, + LJ92_ERROR_BAD_HANDLE = -3, + LJ92_ERROR_TOO_WIDE = -4, +}; + +typedef struct _ljp* lj92; + +/* Parse a lossless JPEG (1992) structure returning + * - a handle that can be used to decode the data + * - width/height/bitdepth of the data + * Returns status code. + * If status == LJ92_ERROR_NONE, handle must be closed with lj92_close + */ +int lj92_open(lj92* lj, // Return handle here + uint8_t* data,int datalen, // The encoded data + int* width,int* height,int* bitdepth); // Width, height and bitdepth + +/* Release a decoder object */ +void lj92_close(lj92 lj); + +/* + * Decode previously opened lossless JPEG (1992) into a 2D tile of memory + * Starting at target, write writeLength 16bit values, then skip 16bit skipLength value before writing again + * If linearize is not NULL, use table at linearize to convert data values from output value to target value + * Data is only correct if LJ92_ERROR_NONE is returned + */ +int lj92_decode(lj92 lj, + uint16_t* target, int writeLength, int skipLength, // The image is written to target as a tile + uint16_t* linearize, int linearizeLength); // If not null, linearize the data using this table + +#endif + +#ifdef __cplusplus +} +#endif From a29a3b19a951be20aa2c8a6bf65fb113d8793a77 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 8 Nov 2018 21:03:09 +0100 Subject: [PATCH 110/348] multithreaded decoding of LJ92 encoded DNG files (for example Blackmagic native DNG files), #4285 --- rtengine/dcraw.cc | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 328b66956..f6c0bb3f6 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -24,10 +24,14 @@ /*RT*/#define DJGPP /*RT*/#include "jpeg.h" /*RT*/#include "lj92.h" +/*RT*/#ifdef _OPENMP +/*RT*/#include +/*RT*/#endif + #include #include #include "opthelper.h" -//#define BENCHMARK +#define BENCHMARK #include "StopWatch.h" /* @@ -1126,36 +1130,40 @@ void CLASS ljpeg_idct (struct jhead *jh) void CLASS lossless_dnglj92_load_raw() { - unsigned save, tcol=0; + BENCHFUN + tiff_bps = 16; + size_t tileCount = raw_width / tile_width; + size_t dataOffset[tileCount]; + for (size_t t = 0; t < tileCount; ++t) { + dataOffset[t] = get4(); + } + uint8_t *data = (uint8_t*)malloc(ifp->size); + fseek(ifp, 0, SEEK_SET); + // read whole file + fread(data, 1, ifp->size, ifp); - while (tcol < raw_width) { - save = ftell(ifp); - if (tile_length < INT_MAX) { - fseek(ifp, get4(), SEEK_SET); - } - int data_length = ifp->size - ifp->pos; +#ifdef _OPENMP + #pragma omp parallel for num_threads(std::min(tileCount, omp_get_max_threads())) +#endif + for (size_t t = 0; t < tileCount; ++t) { + size_t tcol = t * tile_width; + int data_length = ifp->size; lj92 lj; - uint8_t *data = (uint8_t*)malloc(data_length); - fread(data, 1, data_length, ifp); - fseek(ifp, save, SEEK_SET); int newwidth, newheight, newbps; - lj92_open(&lj, data, data_length, &newwidth, &newheight, &newbps); + lj92_open(&lj, &data[dataOffset[t]], data_length, &newwidth, &newheight, &newbps); uint16_t *target = (uint16_t*)malloc(newwidth * newheight * 2 * sizeof *target); lj92_decode(lj, target, tile_width, 0, NULL, 0); - tiff_bps = 16; for (int y = 0; y < height; ++y) { for(int x = 0; x < tile_width; ++x) { RAW(y, x + tcol) = target[y * tile_width + x]; } } lj92_close(lj); - tcol += tile_width; - get4(); - free(data); free (target); } + free(data); } void CLASS lossless_dng_load_raw() From afb3026b703174b58160a735d893327d9f54e5e6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 9 Nov 2018 12:07:14 +0100 Subject: [PATCH 111/348] Decode Magic Lantern CinemaDNG files, #4285 --- rtengine/dcraw.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index f6c0bb3f6..2fea27133 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1132,10 +1132,17 @@ void CLASS lossless_dnglj92_load_raw() { BENCHFUN tiff_bps = 16; + + tile_width = tile_length < INT_MAX ? tile_width : raw_width; size_t tileCount = raw_width / tile_width; + size_t dataOffset[tileCount]; - for (size_t t = 0; t < tileCount; ++t) { - dataOffset[t] = get4(); + if(tile_length < INT_MAX) { + for (size_t t = 0; t < tileCount; ++t) { + dataOffset[t] = get4(); + } + } else { + dataOffset[0] = ifp->pos; } uint8_t *data = (uint8_t*)malloc(ifp->size); fseek(ifp, 0, SEEK_SET); @@ -1161,7 +1168,7 @@ void CLASS lossless_dnglj92_load_raw() } } lj92_close(lj); - free (target); + free(target); } free(data); } @@ -9322,7 +9329,7 @@ void CLASS identify() switch (tiff_compress) { case 0: case 1: load_raw = &CLASS packed_dng_load_raw; break; - case 7: load_raw = (!RT_from_adobe_dng_converter && !strncmp(make,"Blackmagic",10)) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; + case 7: load_raw = (!RT_from_adobe_dng_converter && (!strncmp(make,"Blackmagic",10) || !strncmp(make,"Canon",5))) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; case 8: load_raw = &CLASS deflate_dng_load_raw; break; case 34892: load_raw = &CLASS lossy_dng_load_raw; break; default: load_raw = 0; From 0f2fc651687e0067cec86bff073a1aa28fbf717e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 9 Nov 2018 12:54:37 +0100 Subject: [PATCH 112/348] Fix accidently broken 'Blackmagic Pocket Cinema Camera 4K' decoding, #4285 --- rtengine/dcraw.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 2fea27133..cdd80e306 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9329,7 +9329,7 @@ void CLASS identify() switch (tiff_compress) { case 0: case 1: load_raw = &CLASS packed_dng_load_raw; break; - case 7: load_raw = (!RT_from_adobe_dng_converter && (!strncmp(make,"Blackmagic",10) || !strncmp(make,"Canon",5))) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; + case 7: load_raw = (!RT_from_adobe_dng_converter && ((!strncmp(make,"Blackmagic",10) && strncmp(model, "Pocket Cinema Camera 4K", 23)) || !strncmp(make,"Canon",5))) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; case 8: load_raw = &CLASS deflate_dng_load_raw; break; case 34892: load_raw = &CLASS lossy_dng_load_raw; break; default: load_raw = 0; From a1d4acf72f634303625b158ca0acacd06413247c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 9 Nov 2018 13:55:58 +0100 Subject: [PATCH 113/348] Artefacts with toncurve 2 / weighted standard with RT-dev-1098, fixes #4948 --- rtengine/curves.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtengine/curves.h b/rtengine/curves.h index c66c19a27..f1b402dd3 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -1084,11 +1084,12 @@ inline float WeightedStdToneCurve::Triangle(float a, float a1, float b) const #ifdef __SSE2__ inline vfloat WeightedStdToneCurve::Triangle(vfloat a, vfloat a1, vfloat b) const { + vmask eqmask = vmaskf_eq(b, a); 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; + return vself(eqmask, a1, b + a2 * b3 / a3); } #endif From 3a51bcd00a73e16b1fcda74955f9dc748b9ff650 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 9 Nov 2018 14:45:38 +0100 Subject: [PATCH 114/348] Use linearization table for Blackmagic DNG files, #4285 --- rtengine/dcraw.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index cdd80e306..31efe41da 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1131,8 +1131,10 @@ void CLASS ljpeg_idct (struct jhead *jh) void CLASS lossless_dnglj92_load_raw() { BENCHFUN + tiff_bps = 16; + uint16_t *lincurve = !strncmp(make,"Blackmagic",10) ? curve : nullptr; tile_width = tile_length < INT_MAX ? tile_width : raw_width; size_t tileCount = raw_width / tile_width; @@ -1161,7 +1163,7 @@ void CLASS lossless_dnglj92_load_raw() lj92_open(&lj, &data[dataOffset[t]], data_length, &newwidth, &newheight, &newbps); uint16_t *target = (uint16_t*)malloc(newwidth * newheight * 2 * sizeof *target); - lj92_decode(lj, target, tile_width, 0, NULL, 0); + lj92_decode(lj, target, tile_width, 0, lincurve, 0x1000); for (int y = 0; y < height; ++y) { for(int x = 0; x < tile_width; ++x) { RAW(y, x + tcol) = target[y * tile_width + x]; From 58e26add76b7f476925572f573412855daed5979 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 9 Nov 2018 15:30:29 +0100 Subject: [PATCH 115/348] Fallback to 'UniqueCameraModel' tag if model is 'Unknown' --- rtengine/imagedata.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 47bb0b490..892a9efed 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -156,6 +156,13 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* model = "Unknown"; } + if (model == "Unknown") { + tag = newFrameRootDir->findTag("UniqueCameraModel"); + if (tag) { + model = tag->valueToString(); + } + } + tag = newFrameRootDir->findTagUpward("Orientation"); if (tag) { orientation = tag->valueToString (); From f7109eec21b7feade621c77031076a7539b394b9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 9 Nov 2018 17:36:13 +0100 Subject: [PATCH 116/348] Improved check for lj92 compressed dng files, #4285 --- rtengine/dcraw.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 31efe41da..51f01469e 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1134,6 +1134,7 @@ void CLASS lossless_dnglj92_load_raw() tiff_bps = 16; + int save = ifp->pos; uint16_t *lincurve = !strncmp(make,"Blackmagic",10) ? curve : nullptr; tile_width = tile_length < INT_MAX ? tile_width : raw_width; size_t tileCount = raw_width / tile_width; @@ -1149,20 +1150,30 @@ void CLASS lossless_dnglj92_load_raw() uint8_t *data = (uint8_t*)malloc(ifp->size); fseek(ifp, 0, SEEK_SET); // read whole file - fread(data, 1, ifp->size, ifp); + int data_length = ifp->size; + fread(data, 1, data_length, ifp); + lj92 lj; + int newwidth, newheight, newbps; + lj92_open(&lj, &data[dataOffset[0]], data_length, &newwidth, &newheight, &newbps); + lj92_close(lj); + if (newwidth * newheight * tileCount != raw_width * raw_height) { + // not a lj92 file + fseek(ifp, save, SEEK_SET); + free(data); + lossless_dng_load_raw(); + return; + } #ifdef _OPENMP #pragma omp parallel for num_threads(std::min(tileCount, omp_get_max_threads())) #endif for (size_t t = 0; t < tileCount; ++t) { size_t tcol = t * tile_width; - int data_length = ifp->size; lj92 lj; - int newwidth, newheight, newbps; lj92_open(&lj, &data[dataOffset[t]], data_length, &newwidth, &newheight, &newbps); - uint16_t *target = (uint16_t*)malloc(newwidth * newheight * 2 * sizeof *target); + uint16_t *target = (uint16_t*)malloc(newwidth * newheight * sizeof *target); lj92_decode(lj, target, tile_width, 0, lincurve, 0x1000); for (int y = 0; y < height; ++y) { for(int x = 0; x < tile_width; ++x) { @@ -9331,7 +9342,7 @@ void CLASS identify() switch (tiff_compress) { case 0: case 1: load_raw = &CLASS packed_dng_load_raw; break; - case 7: load_raw = (!RT_from_adobe_dng_converter && ((!strncmp(make,"Blackmagic",10) && strncmp(model, "Pocket Cinema Camera 4K", 23)) || !strncmp(make,"Canon",5))) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; + case 7: load_raw = (!strncmp(make,"Blackmagic",10) || !strncmp(make,"Canon",5)) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; case 8: load_raw = &CLASS deflate_dng_load_raw; break; case 34892: load_raw = &CLASS lossy_dng_load_raw; break; default: load_raw = 0; From 0f50e738e49ddb53c5065403a6b304a8c056243a Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 10 Nov 2018 01:12:14 +0100 Subject: [PATCH 117/348] Disabled timing code --- rtengine/dcraw.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 51f01469e..c9bc8ccad 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -31,7 +31,7 @@ #include #include #include "opthelper.h" -#define BENCHMARK +//#define BENCHMARK #include "StopWatch.h" /* From b488e207e1f7dd82bfa7eacb65509caf961ac8bb Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 10 Nov 2018 01:36:35 +0100 Subject: [PATCH 118/348] Wrong folder selected when rt is started in verbose mode, fixes #4946 --- rtgui/dirbrowser.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 501296860..9ed8455fe 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -64,7 +64,7 @@ std::vector listSubDirs (const Glib::RefPtr& dir, bool } catch (const Glib::Exception& exception) { if (options.rtSettings.verbose) { - std::cerr << exception.what () << std::endl; + std::cerr << exception.what().c_str() << std::endl; } } From 757c1da2923f7696b79768b963b40d91394faf46 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 10 Nov 2018 21:46:55 +0100 Subject: [PATCH 119/348] Fix a memory leak, #4966 --- rtengine/improccoordinator.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index f68629564..ac330db23 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -953,6 +953,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) hListener->histogramChanged(histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI); } } + if (orig_prev != oprevi) { + delete oprevi; + oprevi = nullptr; + } + } From 83975938ef6984d9722ffe1b3df219c16d8845d1 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Sun, 11 Nov 2018 12:34:12 +0100 Subject: [PATCH 120/348] Don't use boolean logic to increment value directly --- rtengine/dcraw.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index c9bc8ccad..79c0e59f6 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9138,7 +9138,7 @@ void CLASS identify() parse_fuji (get4()); if (thumb_offset > 120) { fseek (ifp, 120, SEEK_SET); - is_raw += (i = get4()) && 1; + is_raw += (i = get4()) != 0 ? 1 : 0; if (is_raw == 2 && shot_select) parse_fuji (i); } From c5c04769e4e55729d5d7bf8a2612df3554fdff53 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Sun, 11 Nov 2018 14:34:45 +0100 Subject: [PATCH 121/348] Improvments to ICC profile creator --- rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 25508 -> 884 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 25504 -> 25452 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 764 -> 680 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 760 -> 752 bytes rtgui/iccprofilecreator.cc | 396 ++++++++++++++++------ rtgui/iccprofilecreator.h | 2 +- rtgui/preferences.cc | 9 +- 7 files changed, 306 insertions(+), 101 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc index 59bdf67067282c5abe83384f4e41303e901d0cdb..cc1f37d1d9fd8f5a9c01eb00d7a96e77cd5760e0 100644 GIT binary patch literal 884 zcmb`EF;9a~5Xb+}CQVGE9jI}9F2W^~k;Zy?e)T{2x$?&ul*u8Q}Ng(AeH!2Zu+jGC&yuX0VQm zWk>LkC1c%z7EuICnB;ocnP=Jw=6Ba(u@j-Xu;OzsLEV_@;BpYf8t&QZ^3}Fz0Eq zrbLRYa9d1sJPi*TWO4-&xlBHK#zmvzU&q+JqL~2wJh%=|yl%`4t8aGQ&CLu`j~Q>|F?A6PUKodwlMtcP`Ao z6!fZ-UaeHCNY&)F)>I3s)rYFJ##(Xp)KtkftxaOC;{PcK6lSXy)EoXXsxV-o4-;Lu R2#EuV?&$dMG1n{a^#iy#WX+U|R;$r%QQ9EQx0bIv(PMzSCo$vGogK@^oNpn?LTq5=YMJL8P zTbj^4JiX|cDF6WqU^~L{< zBn3r92LS-lnaMdp!3lv(-N4ipK~X`>IIPCh^(l$5iA+7p)SU6m1v2&AUmfr-{o}6= z{YN8+|Kzwjn*xBK13)K+{-ed@{_22#w5ir#9T*lL1wfz~GhaL~Hl8_uU>H+N2Soh6 zR^Xw(^ZaW)Oa%bZ*+0cKEI8gjHaPg7z~2~f2L2!gxPmYc4C0wOmf8Q$*Z)rY-}nD@ zeGa?epj}B(e)Ld%6$LeVg1)lqzvtxucFcxt)i-|q$Kk1iD}GL{A&$L;NPzV=1Ts?w3(l(O#L_h zKLh?f@c*IzTf6@n{>|W@nuNGc{wG$?27p5Y0Lb6}iAgE}z@`8|f9-!_YE=LZnf2zvthVjI9e4mw;01iZ4&ckY<^CW51Tsq?gt_Tq%tD9&k<3zv z1~DLxS(gbQ5hOF~G!>+Q43G)3z;2KOazP%*2Zdk{*b9n4F(?81!2wVT4uQj<43vXP zPz9<%4X6cmpdK6r$3X*V1Sh~r&SS`-@tdU2G+q3umOI7O|S+2KoA5&NC*XCAS{H32oMP( zLllS|qC%Vy4dRA)AU=p65`=^yIwT5-K@yN8Bn>ejSx6pIfRrF*NEK3pG$1WV8`6dJ zAOpwMiiDz} z7$^=(fRdnOC>2VFGNIj2Hk1qHLxs>@s2JJ@?T1RCLr@u10aZcO&=IH(Itm?!8ljU= zGjs|%4V{JBpz}~W)CqM#Jy0)n1-c6LLxa!|bQ8J--GS~w51S?C=!4=q9;q0i74=qvOMT7!N-8_;iP3kEO@BVi1Tg9$JRrodE~6Xt?>U_Mw7 z7KTM&F<1hYhGk$mSOHdsRbh2l3)X@4U<23~HigY$E7%6!20Oq`unX)4d%#}s4%iR& zhlAh{co!T2N5QdhJe&ll!0B)%yc^Di^Wi;k5nKWvfDgfCa3x#~*TVJiakvp~f?MFz z@LBjg+zwxayWw8A555Ku!b9*dd6_Kh)4Wu?wA8CX% zMOq?lkakEXq$|=L>5cS71|WlxVaP~i3^DfEGbZpc!a+v@%*9t&KK7o1iVw zHfVda3)&s+jrKzaqQlUU=vZ_jIt`tL&P5lZ_n}MCW$0>j9r`%B3EhfrLwBIN(U;Nv z=ppni^nLUr^b_F%q`44%p=Sb%yY~u%v;Pn<`d>CW)-u6`GZAbaaa9- zHNcu;t*~}jXRJHc2kVaw!A4+Xu}Ro;Y&Nz4TZ}EmmSbzMN3kccr?73<4r~v$4?Bn* z#@@p|!al)1$If8qu#4Cw>^JNW>?RI@!{SIdDvlc`h!e$0;pA}2I8B@$&KPHb+lF(( zx#7HV{-(;@$Axcz=8-J`x{~Pr+y5 z^YKOaQhWve2>v*}8Gi=fj_<)=#b3wY#y`Z5<0tXc_&NLs{1^Nx{ucovUK(utBpIidPE5EqC`#8u)i5=6q1$Rrwx zpCm$(CMl5ANxCExk`>8;w4LNb3Lxzw#gLLonWTJDG3gMgnsk)ZL^?z2AYCH$lZHw6 zNn@nvq#4qC(kIe4(gqnKW5{GOjm%FLB{Rs1WDT-D*^F#Mb|QO_{m3EYNOA%>ot#T9 zBA1dY$@S!uzmV6+n-nC4K%r82DRhbyMS-GD(W97B zY$#3?4~icpgc3zbq-0R?D8-aRlp4x$N(<#2rHj%>8KT^yJf=)iW+?9|pDC-9-)smr zJR6mbmyOOQ#iq!n!KTk<#kh0TjCfNd9BEL$pDHrpPyQnpIAqijuVXW1^YU11wy zyURApHpw=_HqW-iw#K%}j$$XWbF%ZZi?PeFtFUXc8?#%nJF>g8`>}_zN3$ohXR#Nu zA7HOwuV-&!Kg)iRy^no}{T}-m`*Zd;?2GKn>_4c0iltJh+*Dzz6jgz$K{cRSQ0=MP zsXM5_)F^5aHH%tE-A}Ec)>E6PZPYI6Rq9RZ1L_m%6m^#Rk@}7Livz(y;Nalk=MdwN z_K3Omn>FSmIdY z_``|eq;PU`(mAC$l{mFHjXAA3ojAQX131Gu6F4(C^Evl(R&dsHHglfi?BVR^yv6y5 zbAt0V=K|+f&Yv`hhNn?!{4_C|98Ha;Pcx_4)7)u(v@lvMEsd5-+ea&>)zO-0ZM1G$ zKkXLn5p9z8nzl$=p>1#>xQJYwT!LJZT#8(pTt-~hT+UoxT!CDXTuEHJx%O}!|D_a5&!?wp!e8YSre3N`{`9ATj^8Mk*@pJGC@=Nh6@$2xL@!Ruz z@CWcm@+a|U^B41%^B?6u#oxi-$3M*fi2phNEdOWzbpc3#AV3ok7GMad3g`=13OEUP z3j_Eu)SI}J0QP4{; zNH9h)O)y`uRIoBOM=%09|%4Zd?WZ#a8(Eh;e}{I!a_1aYC;A=)7!rz3q=vX=jU5L)0tI-YVHgs3IA3dC&M9-m@(5vW; z^fvk>`VjpgeUd&)U!wmML5fgB_(UW`ltgqzEJU0{d_+P;;zf3g6pK`d92Yqw(k(J5 z@<3!lN5xvjy2J*=?u$JWdn>ji_EQ`s z&L%D(E-kJqZYXXm?j{}}9xa|GUMPN8yk5Ljyi0sQ{J!{v_^kMn_=W^pf+`^-!H`gw zFqW{B@RSIah?U5cD3YjOtN?Xc8%2~=+DqJdADqrfLRGri* zsV=EOsRvTerQS(>mD-fXOLIw!Nh?b0N?S?0O7E18l1`J}BV8taO!}}MQdv@kju1B?fZNyaQn#?_!37I*WuQFS*cv)^)aamG33xea-YJg2;fyrR6GytTZWe2{#c{BHRY`6Kcz@)zZ=%a6#vlwXuzQ$Q-PD+npb zDQGKLD!3~6E5s;dD(q9JR%lk}R2WovsPIx@L19f1p~$W%q$sDTqiCtPT`@p0R&lpt ziQ*B(Q;J=RLyDt{uM|Hj{!~IMaVm*2|M%-F*(!M|g(@W~~b zrLRhVlu62b%F@aj%4W*W$~%>#l{1z1Dc2~sD0e9jDUT{oD}PenP{FEjsfeqns2Hi( ztN5sdtE8#yRjE`tsnVe`pz=^dB$vZ|q~ovM#&xN55E9@R?Kld2u6 zgQ_E{Q>q_Tf2v{BxYWeeRMm{t9MpW(BGod~iq&e=TGYDLZm5l^y;l38wy923=Tm2> zYpPqQyQ&AO$E)Y4A5=f8-lpECeph``eO`T41F6BGA)=wAVW?rR;iD0uk*-m!QLWLU z(XDY)V_f5n#I^%I{G?xIzBoPIvG0qbZT`@>-6f}(V5Vh*ICm=>(X>3bk%gt zbX{}nsObPww`>bC0+>W=Ep=zh`N(j)5$>B;Nq>)Gk~=tb&f>Xqo#>7CWPqIXa4 zh296fpZYj`UVVnXw!W3VhklrTs(z7vjs7Y9OZvC@~b&_}p;O@TU>Z zh}THQNXN*=$jd0gD8s14sNSf}=&I2}qgO_sjkb)*#zMx5#)ig@#ygE;jdP6;8=o-l zG`?XxZaioF-2`PqGm$jWFtIdoHwiOIH7Pc!H92F_XL8?U%H*@jrYYG}*i_Nf$kfTy z-!$Gd-?YNC$+X+_mg$7)yy*`!oEe{)teKwKHnSaO(Pr6Zhs+wyI?aa6#?9u;R?X4o z+~(5e+U7Rq-sX|!S>~nY$IaW#ubYpV&zgU?Kv{5GNLy%I*jRX5L|SB79JFY#=&%^F z7`K?SShK`f@>nt~buG79?y!uu%&|OddBU>Ga@g{j<$~o;D}t4PmAsXqm7`UFRf1K4 zRh88#tIJmRtfs6!Tm7+Svlg{hwKlhQvktRPw=S_hYJJ{%(0a^z)_Ty%jOPkL&e{9)oMQzn=Eo?n(ciCpx9?ayua zZ35dAwi#`6-WIeid0Wx8+HGyy`nQd4d%Nws9oml9PS#G}&cV*#F2SzQuG;Rj-Br60 zyVrIr_DFkfdxpKPy`8LgT2E}hj@oVhiZp2 z4p$vU9Nsv5b3{AxILbQeJ32ZBI3_vnb*yzf=Q!Xv<~ZlL?u2s^a8h(Kc5-zJbxL#E z?{wU$!|A5egwvwaZ)b|LsI!{0rL&iFlyi=AnRByquk(H9Y3HvlNEa>_hKrtygG+!* zl1q_Goy&Qb>n=}R=3O>iNv?EPRaXmFPuED-Y}Yc^X4hWV`>xZjE89`qdA7@LH`wm9 zJ$QTS_LA+#ws&kF-afhg`32Hy5q!-o*nmh%xszJMKI0``eGrPr^^z z&)zS@tMDD+3E{=z$HTkB?}xt*UyC3{h(>5d*hd6Kq(>ZzXoM=!^qV+3MUW2|F##w5q=k2x80Ic7BGeavPoN32Y&QLKAx zRBSz;7X87Fir4Eh)XC+IG)gx@GxO6VIz?}Q998u(Je75u^_Q7u`}^*;_Jlq zBubKGl75nFQbbZ-(vhV0q}xf;No&cZWbtI(Was4YGrsjjIJsd=fjsU4|zQ(ve4NTZ}lr5U8TrA4O|rX5Y| zN_&ttoAxW6BV8ulB;6}LF1FFW>{wUWh7^mX0&AVXFSVT%0y)f zW~yh}Wd>(vWmaaM%N)*pmH9o3m?fU2m*tujnN^TgpVgK1Fza2`=5E?<`Q7HbckE8u zePDO(9I#Jv4^&3XNK&+@+HWAf?w+WAiT z;raRbb@^TS5A)yUZxwJCC>2;0_!p!XlozxW+$?xiuvSPZlrA(b^eT)mEGcX%yjJ+E z@XH?T9+5pddtCNJ?kU`JY|o`Vqk9(j!h8Ams_nJg8@e}V?~%Qod++a^+q+rBU8GcG zT@+B1QB+xUzUX$*>!OWfj$*lDi(w5{}3>Fd&sgB%Ct4_Y4dKbUc_^5BJo zcMr}U+&sj6NcoWMq2NQ=hiVUX9U3{ba2P%;a9HE8S36cmRPU*7 ztnRCRR{gbxSR++qQnRBbrKYUrT+N-D*_y2*yhqfII2;K-Qh21{NZ*lXN50k)Yo%&U zYkh0eYAb3l)ZVLoR|o0@>NM+|>!Rw4>YC~X>R!~X*0a~k)mzpF*6*%AQr}%aTL1AV z=BVgV{iB{o6OSG`diLn8qi>IH9^*ZxcFgfu#Ie1{P8{n$_Tt#;arWbK$E}VB9?w2r zcf9BL*zu(XT!Tb|af44oYC}asd&B*P`9?&eaHDRcTVs4Nz!b z>Psu3Rl3!z)xR~XwYIgVb-eYUOW5Z?0Oq#n^K!yTX@^vwx+i0ZPRVP&hea6Kj(Zd z=G^{sr_bFwH+vqO7d)?X-u-;y`LgpD&ObQ6cmaJu?1Iq+-wPQRYA$qN7{9RGPHLBF zw`vb=&uc&4ey#mQ`+5hhL#4y9BdTLxM{CD$$80C)6zbIN^z2OTtmy3MeAM~rBL1S( zMe~aR7jrHiyV!T}`Ng#^&MuWMhpwoulCIXSTU~SAaJO)`ez$jbT6a}zob~*8K+2!`jBbPs4AzWcxvAhy;rQphmD}z^Nu59-4_v!R`^d_6ZCu>a!# zetg^!^6whWHKB8v!?RZ#3K(yfJfQ>!#pMy_?=QGj7)2ynJ)==K3)A zu*UHA;iTb;;fup#!z;JgZzxxqbKc;vMWA z={uHpLhtOk({g9{&bzy)yW)4v?grh>zkBlTjk|B}!S_V(8Q=52mwT`A-r&90_rZPo zeWUw+_p|RGzdvw)=Kh}t!Ve4|_&(VE;Mjxy2h$I>9tu4)c|?}Z@yBM5 zgC7?@Zhn00@%u5%nADi%SlC$6*y*vmV;{!x`8?lYffSvofqCOGG82fG4SH` zOX#KOOS6~3FZaA`eR=oghbh98{FMDv%+%qj&Z#F;tFO3TX}$7%mGP?nRsXA*X=qw> z+H5*_dhc}W^u6g%Go%^C8ONFUnTnb2nTeU7ulZib{krk>jo0tqpx;Qpv3V2u z=D?c^Zyvw-_LlZm^R4IG^tbhI``^Bvg=fWQEoQ@J_szD=j?6C4QRmd=+~!i}YUi%b zO}~TQiM=y_7y7RF-Pv~!-z~qVzE^wi_CD=>-TQ0rXXfE~@p+5+UGpXL=jKP}R~9%I zG#5Mz4=#2tK3QD0`pj zs*jgHPJP_^B=X7ZQ^=>{Pi>zbeOmd<`C0R`*XOLy4WDm(ez$~Ol3lW2id(8!y0r9S zY4Z#Hi|Ln;FU4QlzC8M}vP@gnTJ~Pvz1+Awyu9$0@Kxcf)7QkWHDCL_POm^K;wx4w z5i6xD9V<^)ethHqX80}OTj96U-yVEh{?74T4`C9Ep0IfBD*3=*HN8*q5pQt}&e|rAB{PTy!0miv?h@04x@O#R9Nc02T|tVgXnz0E-1+u>dRV3&3IlSS$dG1z@oNEEa&}3&8RPVEF>Dd;wU#04!esmM;Ly7l7pp z!14uP`2w(f0a(5OEMEYYF96FIfaMFo@&#b|0_1z`CC zuzUenz5py=0G2Pn|Hr-n|C}SiJRJb>_lSU#69Bko0HA&YfNthnGK6`KfKOs@D)USU m08C?I)8co9h9%Pf>of_vijuOH9NpAZ3H;{_g1_1SYX1jAiU%M7 diff --git a/rtdata/iccprofiles/output/RTv2_sRGB.icc b/rtdata/iccprofiles/output/RTv2_sRGB.icc index 5efc365f8e881f8b9e132538a324d16652203cf3..e311e5d71e11af3f0cd72c78ca2f23bbc23fff16 100644 GIT binary patch literal 25452 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 diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index d63965fa5bb813edae05a98c4512877cb41eb796..5e57952e33a1bf2275da225f3a03dbb594d5650f 100644 GIT binary patch delta 267 zcmeyvx`I`Qfq`j7PI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!Amn8bXW&UpE-vs5b_QkVb_4z$r(ktKs8H%Y?YMUJfQhZOeZD_FiLBx z0EJ{2d>K+1QW!EBN*Qt);u#be(iv0TOcr32mX!bs r$uI;lxHC90C@>^3lrm&8*l=mP1y$pMU?881xEVN!>aQu#N^@v-(a_p ziHTAZ-8}1Uk_(DT7#J7>7#J9$%1a7B>@`5PNODGE3XpvO$kr(W8Ukd$0f{Gp*-Stt zgGf4rEdpW}g#$ax#B^k`0Hd_3 z0#HbXp_n0v!JWa0A)Y~jA)UdN!H7YR!34-I2C@wqj3;|Aer7yB*@j6SPWCXR000X! BG&TSL diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 8d6e09553..f76211bd4 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -41,7 +41,7 @@ extern const Settings* settings; const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) - : Gtk::Dialog (M ("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) + : Gtk::Dialog(M("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) , primariesPreset(options.ICCPC_primariesPreset) , redPrimaryX(options.ICCPC_redPrimaryX) , redPrimaryY(options.ICCPC_redPrimaryY) @@ -141,12 +141,15 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); std::vector outputTRCPresets; outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); + for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { outputTRCPresets.push_back(sTRCPreset[i]); } + for (size_t i = 0; i < outputTRCPresets.size(); i++) { trcPresets->append(outputTRCPresets[i]); } + mainGrid->attach(*trcPresets, 1, 2, 1, 1); //--------------------------------- sliders gampos and slpos @@ -157,6 +160,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) if (aGamma->delay < options.adjusterMaxDelay) { aGamma->delay = options.adjusterMaxDelay; } + aGamma->show(); mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma @@ -166,6 +170,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) if (aSlope->delay < options.adjusterMaxDelay) { aSlope->delay = options.adjusterMaxDelay; } + aSlope->show(); mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope @@ -222,10 +227,10 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); copygrid->attach(*eCopyright, 0, 0, 1, 1); resetCopyright = Gtk::manage(new Gtk::Button()); - resetCopyright->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"))); + resetCopyright->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); - resetCopyright->set_relief (Gtk::RELIEF_NONE); - resetCopyright->set_tooltip_markup (M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); + resetCopyright->set_relief(Gtk::RELIEF_NONE); + resetCopyright->set_tooltip_markup(M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); resetCopyright->set_can_focus(false); copygrid->attach(*resetCopyright, 1, 0, 1, 1); @@ -273,6 +278,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) } trcPresets->set_active(0); + if (gammaPreset != "Custom") { trcPresets->set_active_text(gammaPreset); } @@ -309,6 +315,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) } iccVersion->set_active(0); + if (profileVersion == "v2") { iccVersion->set_active(1); } @@ -319,17 +326,17 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) //--------------- Action area button - Gtk::Button* save = Gtk::manage (new Gtk::Button (M ("GENERAL_SAVE_AS"))); - save->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::savePressed) ); - get_action_area()->pack_start (*save); + Gtk::Button* save = Gtk::manage(new Gtk::Button(M("GENERAL_SAVE_AS"))); + save->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::savePressed)); + get_action_area()->pack_start(*save); - Gtk::Button* close = Gtk::manage (new Gtk::Button (M ("GENERAL_CLOSE"))); - close->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::closePressed) ); - get_action_area()->pack_start (*close); + Gtk::Button* close = Gtk::manage(new Gtk::Button(M("GENERAL_CLOSE"))); + close->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::closePressed)); + get_action_area()->pack_start(*close); //--------------- Show childrens - show_all_children (); + show_all_children(); //--------------- Connecting the signals @@ -366,9 +373,8 @@ void ICCProfileCreator::updateICCVersion() void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) { if (a == aPrimariesRedX || a == aPrimariesRedY || - a == aPrimariesGreenX || a == aPrimariesGreenY || - a == aPrimariesBlueX || a == aPrimariesBlueY) - { + a == aPrimariesGreenX || a == aPrimariesGreenY || + a == aPrimariesBlueX || a == aPrimariesBlueY) { if (primaries->get_active_row_number() > 0) { ConnectionBlocker blocker(primariesconn); primaries->set_active(0); @@ -401,6 +407,7 @@ void ICCProfileCreator::primariesChanged() aPrimariesBlueX->setValue(p[4]); aPrimariesBlueY->setValue(p[5]); } + updateICCVersion(); } @@ -497,6 +504,7 @@ Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &pre void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) { temp = ColorTemp::D50; + if (preset == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; @@ -595,9 +603,11 @@ void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, Colo Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) { Glib::ustring name(trcPresets->get_active_text()); + if (name == M("ICCPROFCREATOR_CUSTOM")) { name = "Custom"; } + return name; } @@ -646,6 +656,8 @@ void ICCProfileCreator::onResetCopyright() void ICCProfileCreator::savePressed() { cmsHPROFILE newProfile = nullptr; + cmsHPROFILE profile_v2_except = nullptr; + Glib::ustring sNewProfile; Glib::ustring sPrimariesPreset; Glib::ustring sGammaPreset; @@ -653,47 +665,57 @@ void ICCProfileCreator::savePressed() storeValues(); // -------------------------------------------- Compute the default file name + // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- + //instead of calculations made by LCMS..small differences + + v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe") && illuminant == "DEF"); //necessary for V2 profile - if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { - sNewProfile = options.rtSettings.ACESp0; - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { - sNewProfile = options.rtSettings.ACESp1; - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { - sNewProfile = options.rtSettings.adobe; - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { - sNewProfile = options.rtSettings.prophoto; - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { - sNewProfile = options.rtSettings.rec2020; - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { - sNewProfile = options.rtSettings.widegamut; - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { - sNewProfile = options.rtSettings.best; - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { - sNewProfile = options.rtSettings.beta; - sPrimariesPreset = "Beta"; - } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { - sNewProfile = options.rtSettings.bruce; - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "custom") { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "Custom"; - } else { - // Should not occurs - if (rtengine::settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + + if (!v2except) { + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + sNewProfile = options.rtSettings.ACESp0; + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + sNewProfile = options.rtSettings.ACESp1; + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + sNewProfile = options.rtSettings.adobe; + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { + sNewProfile = options.rtSettings.prophoto; + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + sNewProfile = options.rtSettings.rec2020; + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + sNewProfile = options.rtSettings.widegamut; + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + sNewProfile = options.rtSettings.best; + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + sPrimariesPreset = "Beta"; + } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + sNewProfile = options.rtSettings.bruce; + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "custom") { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "Custom"; + } else { + // Should not occurs + if (rtengine::settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + } + + return; } - return; + } else { + sNewProfile = "RTv2_Beta"; } //begin adaptation rTRC gTRC bTRC @@ -702,16 +724,23 @@ void ICCProfileCreator::savePressed() printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); } - newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + if (!v2except) { + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + } else { + profile_v2_except = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - if (newProfile == nullptr) { - - if (rtengine::settings->verbose) { - printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); - } - return; } + /* + if (newProfile == nullptr ) { + + if (rtengine::settings->verbose) { + printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); + } + + return; + } + */ //change desc Tag , to "free gamma", or "BT709", etc. Glib::ustring fName; Glib::ustring sPrimariesAndIlluminant; @@ -719,6 +748,7 @@ void ICCProfileCreator::savePressed() double presetSlope = 12.92310; const double eps = 0.000000001; // not divide by zero getGamma(gammaPreset, presetGamma, presetSlope); + if (gammaPreset == "High_g1.3_s3.35") { sGammaPreset = "High_g=1.3_s=3.35"; ga[0] = 1.3 ; //for high dynamic images @@ -786,17 +816,18 @@ void ICCProfileCreator::savePressed() ga[4] = g_a[3] * ts; //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); ga[0] = gamma; - ga[1] = 1. /(1.0 + g_a[4]); - ga[2] = g_a[4] /(1.0 + g_a[4]); + ga[1] = 1. / (1.0 + g_a[4]); + ga[2] = g_a[4] / (1.0 + g_a[4]); ga[3] = 1. / slope2; //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); sGammaPreset = Glib::ustring::compose("g%1_s%2", - Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma), - Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); + Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); presetGamma = gamma; presetSlope = slope; } + ga[5] = 0.0; ga[6] = 0.0; @@ -804,8 +835,7 @@ void ICCProfileCreator::savePressed() sPrimariesAndIlluminant = sPrimariesPreset; if (profileVersion == "v4" && illuminant != "DEF") { - sPrimariesPreset += "-" + illuminant; - // printf("outpr=%s \n",outPr.c_str()); + sPrimariesPreset += "-" + illuminant; } Glib::ustring profileDesc; @@ -815,16 +845,17 @@ void ICCProfileCreator::savePressed() Glib::ustring sSlope; if (gammaPreset == "Custom") { - sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma); - sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); profileDesc = sPrimariesPreset; } else { - sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma); - sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope); + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); profileDesc == sPrimariesPreset + sGammaPreset; } + sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); @@ -876,12 +907,13 @@ void ICCProfileCreator::savePressed() } while (1); // --------------- main tags ------------------ - - if (profileVersion == "v4") { - cmsSetProfileVersion(newProfile, 4.3); - } else { - cmsSetProfileVersion(newProfile, 2.0); - } + /* + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); + } else { + cmsSetProfileVersion(newProfile, 2.0); + } + */ //change float p[6]; //primaries @@ -897,8 +929,17 @@ void ICCProfileCreator::savePressed() {p[4], p[5], 1.0} // blue }; + + if (v2except) { + cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); + cmsSetPCS(profile_v2_except, cmsSigXYZData); + cmsSetHeaderRenderingIntent(profile_v2_except, 0); + } + + if (profileVersion == "v4" && illuminant != "DEF") { double tempv4 = 5000.; + if (illuminant == "D41") { tempv4 = 4100.; } else if (illuminant == "D50") { @@ -914,9 +955,81 @@ void ICCProfileCreator::savePressed() } else if (illuminant == "stdA") { tempv4 = 5003.; } + cmsWhitePointFromTemp(&xyD, tempv4); } else { - cmsWhitePointFromTemp(&xyD, (double)temp); + if (v2except) { + + cmsCIExyY XYZ; + + { + // XYZ = {0.950486322, 1.0, 1.08902736};//White D65 point calculated from white point xy 0,312710 y 0,3290 + // XYZ = {0.95047, 1.0, 1.088830};//White D65 point from B.Lindbloom + XYZ = {0.95045471, 1.0, 1.08905029}; + } + cmsCIExyY blackpoint; + + { + blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs + } + + cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); + cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); + cmsCIExyY rt; + cmsCIExyY bt; + cmsCIExyY gt; + + if (primariesPreset == "sRGB") { + + //Matrix value from B.Lindbloom + /* + rt = {0.4360747, 0.2225045, 0.0139322}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1430804, 0.0606169, 0.7141733}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.3850649, 0.7168786, 0.0971045}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + */ + { + //Matrix value from spec Adobe + rt = {0.43607, 0.22249, 0.01392}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.14307, 0.06061, 0.71410}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.38515, 0.71687, 0.09708}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + + } + + } + + if (primariesPreset == "Adobe") { + { + //B.Lindbloom + /* + rt = {0.6097559, 0.3111242, 0.0194811}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1492240, 0.0632197, 0.7448387}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.2052401, 0.6256560, 0.0608902}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + */ + } + { + //Adobe spec + rt = {0.60974, 0.31111, 0.01947}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.14919, 0.06322, 0.74457}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.20528, 0.62567, 0.06087}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } } if (illuminant == "stdA") { @@ -924,26 +1037,67 @@ void ICCProfileCreator::savePressed() } // Calculate output profile's rTRC gTRC bTRC + + cmsToneCurve* GammaTRC[3]; - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + + if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + } + + if (gammaPreset == "standard_g2.2") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875); + } + + if (gammaPreset == "standard_g1.8") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); + } + + if (gammaPreset == "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); + } + + if (profileVersion == "v4") { newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); } - cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + if (profileVersion == "v2") { + if (v2except) { + cmsSetProfileVersion(profile_v2_except, 2.2); + } else { + cmsSetProfileVersion(newProfile, 2.2); + } + } + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + } else { + cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); + } // --------------- set dmnd tag ------------------ cmsMLU *dmnd; dmnd = cmsMLUalloc(nullptr, 1); cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); - cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + } else { + cmsWriteTag(profile_v2_except, cmsSigDeviceMfgDescTag, dmnd); + } + cmsMLUfree(dmnd); - // --------------- set dmdd tag ------------------ + + +// --------------- set dmdd tag ------------------ if (profileVersion == "v2") { //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile @@ -951,27 +1105,43 @@ void ICCProfileCreator::savePressed() wGammaSlopeParam << sGammaSlopeParam; cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); + // Language code (2 letters code) : https://www.iso.org/obp/ui/ // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php if (sGammaSlopeParam.is_ascii()) { if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } } } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } } } else { printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); } + cmsMLUfree(dmdd); } - // --------------- set desc tag ------------------ +// --------------- set desc tag ------------------ Glib::ustring sDescription; + if (!description.empty()) { if (cAppendParamsToDesc->get_active()) { sDescription = description + " / " + sGammaSlopeDesc; @@ -986,41 +1156,66 @@ void ICCProfileCreator::savePressed() } } - //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile +//write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile std::wostringstream wDescription; wDescription << sDescription; cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); - // Language code (2 letters code) : https://www.iso.org/obp/ui/ - // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + +// Language code (2 letters code) : https://www.iso.org/obp/ui/ +// Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php if (sDescription.is_ascii()) { if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } } } } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } } } else { printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); } + cmsMLUfree(descMLU); - // --------------- set cprt tag ------------------ +// --------------- set cprt tag ------------------ std::wostringstream wCopyright; wCopyright << copyright; cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); + if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } } else { printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); } + cmsMLUfree(copyMLU); @@ -1030,8 +1225,13 @@ void ICCProfileCreator::savePressed() cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); */ + if (!v2except) { + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } else { + printf("save except\n"); + cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); - cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } cmsFreeToneCurve(GammaTRC[0]); } diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 4ec73ff5c..e8de318d3 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -50,7 +50,7 @@ private: double gamma; double slope; bool appendParamsToDesc; - + bool v2except; Glib::ustring profileVersion; Glib::ustring illuminant; Glib::ustring description; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 147e6badd..1887bb7a5 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -769,8 +769,13 @@ Gtk::Widget* Preferences::getColorManPanel () const std::vector profiles = rtengine::ICCStore::getInstance ()->getProfiles (rtengine::ICCStore::ProfileType::MONITOR); for (const auto profile : profiles) { - if (profile.find ("file:") != 0) { - monProfile->append (profile); + if (profile.find("file:") != 0) { + std::string fileis_RTv4 = profile.substr(0, 4); + + if (fileis_RTv4 != "RTv4") { + // printf("pro=%s \n", profile.c_str()); + monProfile->append(profile); + } } } From f179eb83331a3cc930f6e2a4b1b401de02e8a7bf Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Sun, 11 Nov 2018 14:48:44 +0100 Subject: [PATCH 122/348] Add safeguards for setjmp calls when compiling with clang --- rtengine/imageio.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 802365d74..9ac72be58 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -447,7 +447,7 @@ void my_error_exit (j_common_ptr cinfo) (*cinfo->err->output_message) (cinfo); /* Return control to the setjmp point */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) __builtin_longjmp(myerr->setjmp_buffer, 1); #else longjmp(myerr->setjmp_buffer, 1); @@ -471,7 +471,7 @@ int ImageIO::loadJPEGFromMemory (const char* buffer, int bufsize) jerr.pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) if (__builtin_setjmp(jerr.setjmp_buffer)) { #else @@ -1134,7 +1134,7 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) jerr.pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) if (__builtin_setjmp(jerr.setjmp_buffer)) { #else @@ -1252,7 +1252,7 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) unsigned char *row = new unsigned char [rowlen]; /* To avoid memory leaks we establish a new setjmp return context for my_error_exit to use. */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) if (__builtin_setjmp(jerr.setjmp_buffer)) { #else From efccb23a5c95a0152d61edb275201b26698604cb Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 11 Nov 2018 16:16:59 +0100 Subject: [PATCH 123/348] Change line endings to LF --- rtgui/iccprofilecreator.cc | 2074 ++++++++++++++++++------------------ 1 file changed, 1037 insertions(+), 1037 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 8d6e09553..23c8472c5 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1,1037 +1,1037 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2018 Jacques DESMIS - * Copyright (c) 2018 Jean-Christophe FRISCH - * - * 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 -#include "iccprofilecreator.h" -#include "multilangmgr.h" -#include "cachemanager.h" -#include "addsetids.h" -#include "../rtengine/icons.h" -#include "../rtengine/color.h" -#include "rtimage.h" -#ifdef _OPENMP -#include -#endif - -extern Options options; - -namespace rtengine -{ - -extern const Settings* settings; - -} - -const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free - -ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) - : Gtk::Dialog (M ("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) - , primariesPreset(options.ICCPC_primariesPreset) - , redPrimaryX(options.ICCPC_redPrimaryX) - , redPrimaryY(options.ICCPC_redPrimaryY) - , greenPrimaryX(options.ICCPC_greenPrimaryX) - , greenPrimaryY(options.ICCPC_greenPrimaryY) - , bluePrimaryX(options.ICCPC_bluePrimaryX) - , bluePrimaryY(options.ICCPC_bluePrimaryY) - , gammaPreset(options.ICCPC_gammaPreset) - , gamma(options.ICCPC_gamma) - , slope(options.ICCPC_slope) - , appendParamsToDesc(options.ICCPC_appendParamsToDesc) - , profileVersion(options.ICCPC_profileVersion) - , illuminant(options.ICCPC_illuminant) - , description(options.ICCPC_description) - , copyright(options.ICCPC_copyright) - , parent(rtwindow) -{ - - set_default_size(600, -1); - - Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); - mainGrid->set_column_spacing(3); - mainGrid->set_row_spacing(3); - - //--------------------------------- primaries - - Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); - setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*prilab, 0, 0, 1, 1); - - primaries = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - primaries->append(M("ICCPROFCREATOR_CUSTOM")); - primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); - primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); - primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); - primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); - primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); - primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); - primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); - primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); - primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); - primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); - primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); - mainGrid->attach(*primaries, 1, 0, 1, 1); - - primariesGrid = Gtk::manage(new Gtk::Grid()); - setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - primariesGrid->set_column_spacing(5); - - /* - Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); - */ - - aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); - setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); - setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); - setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); - setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); - setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); - setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); - primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); - - primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); - primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); - - primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); - primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); - - mainGrid->attach(*primariesGrid, 1, 1, 1, 1); - - //--------------------------------- output gamma - - Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); - setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*galab, 0, 2, 1, 1); - - trcPresets = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - std::vector outputTRCPresets; - outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); - for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { - outputTRCPresets.push_back(sTRCPreset[i]); - } - for (size_t i = 0; i < outputTRCPresets.size(); i++) { - trcPresets->append(outputTRCPresets[i]); - } - mainGrid->attach(*trcPresets, 1, 2, 1, 1); - - //--------------------------------- sliders gampos and slpos - - aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); - setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - - if (aGamma->delay < options.adjusterMaxDelay) { - aGamma->delay = options.adjusterMaxDelay; - } - aGamma->show(); - mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma - - aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); - setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - - if (aSlope->delay < options.adjusterMaxDelay) { - aSlope->delay = options.adjusterMaxDelay; - } - aSlope->show(); - mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope - - //--------------------------------- temperature - - Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); - setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*illlab, 0, 5, 1, 1); //slope - cIlluminant = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); - cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); - mainGrid->attach(*cIlluminant, 1, 5, 1, 1); - - //--------------------------------- V2 or V4 profiles - - Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); - setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*proflab, 0, 6, 1, 1); - iccVersion = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); - mainGrid->attach(*iccVersion, 1, 6, 1, 1); - - //--------------------------------- Description - - Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); - setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); - mainGrid->attach(*desclab, 0, 7, 1, 2); - eDescription = Gtk::manage(new Gtk::Entry()); - setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); - mainGrid->attach(*eDescription, 1, 7, 1, 1); - cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM"))); - setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); - - //--------------------------------- Copyright - - Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); - setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*copylab, 0, 9, 1, 1); - Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); - setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); - eCopyright = Gtk::manage(new Gtk::Entry()); - setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - copygrid->attach(*eCopyright, 0, 0, 1, 1); - resetCopyright = Gtk::manage(new Gtk::Button()); - resetCopyright->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"))); - setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); - resetCopyright->set_relief (Gtk::RELIEF_NONE); - resetCopyright->set_tooltip_markup (M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); - resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); - resetCopyright->set_can_focus(false); - copygrid->attach(*resetCopyright, 1, 0, 1, 1); - mainGrid->attach(*copygrid, 1, 9, 1, 1); - - //--------------------------------- Adding the mainGrid - - get_content_area()->add(*mainGrid); - - //--------------------------------- Setting default values for Adjusters - - aGamma->setDefault(gamma); - aSlope->setDefault(slope); - aPrimariesRedX->setDefault(redPrimaryX); - aPrimariesRedY->setDefault(redPrimaryY); - aPrimariesGreenX->setDefault(greenPrimaryX); - aPrimariesGreenY->setDefault(greenPrimaryY); - aPrimariesBlueX->setDefault(bluePrimaryX); - aPrimariesBlueY->setDefault(bluePrimaryY); - - //--------------- Updating widgets with actual values (from options) - - if (primariesPreset == "custom") { - primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); - } else if (primariesPreset == "ACES-AP0") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); - } else if (primariesPreset == "ACES-AP1") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); - } else if (primariesPreset == "Adobe") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); - } else if (primariesPreset == "ProPhoto") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); - } else if (primariesPreset == "Rec2020") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); - } else if (primariesPreset == "sRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); - } else if (primariesPreset == "Widegamut") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); - } else if (primariesPreset == "BestRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); - } else if (primariesPreset == "BetaRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); - } else if (primariesPreset == "BruceRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); - } - - trcPresets->set_active(0); - if (gammaPreset != "Custom") { - trcPresets->set_active_text(gammaPreset); - } - - aGamma->setValue(gamma); - aSlope->setValue(slope); - aPrimariesRedX->setValue(redPrimaryX); - aPrimariesRedY->setValue(redPrimaryY); - aPrimariesGreenX->setValue(greenPrimaryX); - aPrimariesGreenY->setValue(greenPrimaryY); - aPrimariesBlueX->setValue(bluePrimaryX); - aPrimariesBlueY->setValue(bluePrimaryY); - - eDescription->set_text(description); - eCopyright->set_text(copyright); - cAppendParamsToDesc->set_active(appendParamsToDesc); - - if (illuminant == "DEF") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); - } else if (illuminant == "D41") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); - } else if (illuminant == "D50") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); - } else if (illuminant == "D55") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); - } else if (illuminant == "D60") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); - } else if (illuminant == "D65") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); - } else if (illuminant == "D80") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); - } else if (illuminant == "stdA") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); - } - - iccVersion->set_active(0); - if (profileVersion == "v2") { - iccVersion->set_active(1); - } - - trcPresetsChanged(); - illuminantChanged(); - primariesChanged(); - - //--------------- Action area button - - Gtk::Button* save = Gtk::manage (new Gtk::Button (M ("GENERAL_SAVE_AS"))); - save->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::savePressed) ); - get_action_area()->pack_start (*save); - - Gtk::Button* close = Gtk::manage (new Gtk::Button (M ("GENERAL_CLOSE"))); - close->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::closePressed) ); - get_action_area()->pack_start (*close); - - //--------------- Show childrens - - show_all_children (); - - //--------------- Connecting the signals - - aPrimariesRedX->setAdjusterListener(this); - aPrimariesRedY->setAdjusterListener(this); - aPrimariesGreenX->setAdjusterListener(this); - aPrimariesGreenY->setAdjusterListener(this); - aPrimariesBlueX->setAdjusterListener(this); - aPrimariesBlueY->setAdjusterListener(this); - aGamma->setAdjusterListener(this); - aSlope->setAdjusterListener(this); - primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); - trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); - illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); - resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); -} - -void ICCProfileCreator::closePressed() -{ - storeValues(); - hide(); -} - -void ICCProfileCreator::updateICCVersion() -{ - if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->set_sensitive(false); - } else { - iccVersion->set_sensitive(true); - } -} - -void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) -{ - if (a == aPrimariesRedX || a == aPrimariesRedY || - a == aPrimariesGreenX || a == aPrimariesGreenY || - a == aPrimariesBlueX || a == aPrimariesBlueY) - { - if (primaries->get_active_row_number() > 0) { - ConnectionBlocker blocker(primariesconn); - primaries->set_active(0); - updateICCVersion(); - } - } else if (a == aGamma || a == aSlope) { - if (trcPresets->get_active_row_number() > 0) { - ConnectionBlocker blocker(trcpresetsconn); - trcPresets->set_active(0); - } - } -} - -void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) -{ -} - -void ICCProfileCreator::primariesChanged() -{ - if (primaries->get_active_row_number() > 0) { - float p[6]; - ColorTemp temp; - Glib::ustring activeValue = primaries->get_active_text(); - Glib::ustring primPresetName = getPrimariesPresetName(activeValue); - getPrimaries(primPresetName, p, temp); - aPrimariesRedX->setValue(p[0]); - aPrimariesRedY->setValue(p[1]); - aPrimariesGreenX->setValue(p[2]); - aPrimariesGreenY->setValue(p[3]); - aPrimariesBlueX->setValue(p[4]); - aPrimariesBlueY->setValue(p[5]); - } - updateICCVersion(); -} - -void ICCProfileCreator::illuminantChanged() -{ - updateICCVersion(); -} - -void ICCProfileCreator::trcPresetsChanged() -{ - aGamma->block(true); - aSlope->block(true); - - double gamma; - double slope; - getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); - aGamma->setValue(gamma); - aSlope->setValue(slope); - - aGamma->block(false); - aSlope->block(false); -} - -void ICCProfileCreator::storeValues() -{ - if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { - options.ICCPC_profileVersion = profileVersion = "v4"; - } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { - options.ICCPC_profileVersion = profileVersion = "v2"; - } - - if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { - options.ICCPC_illuminant = illuminant = "DEF"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { - options.ICCPC_illuminant = illuminant = "D41"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { - options.ICCPC_illuminant = illuminant = "D50"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { - options.ICCPC_illuminant = illuminant = "D55"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { - options.ICCPC_illuminant = illuminant = "D60"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { - options.ICCPC_illuminant = illuminant = "D65"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { - options.ICCPC_illuminant = illuminant = "D80"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { - options.ICCPC_illuminant = illuminant = "stdA"; - } - - options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); - options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); - options.ICCPC_gamma = gamma = aGamma->getValue(); - options.ICCPC_slope = slope = aSlope->getValue(); - options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); - options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); - options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); - options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); - options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); - options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); - options.ICCPC_description = description = eDescription->get_text(); - options.ICCPC_copyright = copyright = eCopyright->get_text(); - options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); -} - -Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) -{ - if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { - return Glib::ustring("ACES-AP0"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { - return Glib::ustring("ACES-AP1"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { - return Glib::ustring("Adobe"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { - return Glib::ustring("ProPhoto"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { - return Glib::ustring("Rec2020"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { - return Glib::ustring("sRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { - return Glib::ustring("Widegamut"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { - return Glib::ustring("BestRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { - return Glib::ustring("BetaRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { - return Glib::ustring("BruceRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - return Glib::ustring("custom"); - } else { - return Glib::ustring(); - } -} - -void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) -{ - temp = ColorTemp::D50; - if (preset == "Widegamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - - } else if (preset == "Adobe") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "BetaRGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (preset == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (preset == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (preset == "ACES-AP0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (preset == "ACES-AP1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (preset == "ProPhoto") { - p[0] = 0.7347; // ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else if (preset == "custom") { - p[0] = redPrimaryX; - p[1] = redPrimaryY; - p[2] = greenPrimaryX; - p[3] = greenPrimaryY; - p[4] = bluePrimaryX; - p[5] = bluePrimaryY; - - } else { - p[0] = 0.7347; //default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } -} - -Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) -{ - Glib::ustring name(trcPresets->get_active_text()); - if (name == M("ICCPROFCREATOR_CUSTOM")) { - name = "Custom"; - } - return name; -} - -void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) -{ - if (preset == "High_g1.3_s3.35") { - presetGamma = 1.3; - presetSlope = 3.35; - } else if (preset == "Low_g2.6_s6.9") { - presetGamma = 2.6; - presetSlope = 6.9; - } else if (preset == "sRGB_g2.4_s12.92") { - presetGamma = 2.4; - presetSlope = 12.92310; - } else if (preset == "BT709_g2.2_s4.5") { - presetGamma = 2.22; - presetSlope = 4.5; - } else if (preset == "linear_g1.0") { - presetGamma = 1.; - presetSlope = 0.; - } else if (preset == "standard_g2.2") { - presetGamma = 2.2; - presetSlope = 0.; - } else if (preset == "standard_g1.8") { - presetGamma = 1.8; - presetSlope = 0.; - } else if (preset == "Lab_g3.0s9.03296") { - presetGamma = 3.0; - presetSlope = 9.03296; - } else if (preset == "Custom") { - presetGamma = gamma; - presetSlope = slope; - } else { - presetGamma = 2.4; - presetSlope = 12.92310; - } -} - -void ICCProfileCreator::onResetCopyright() -{ - eCopyright->set_text(Options::getICCProfileCopyright()); -} - -// Copyright (c) 2018 Jacques DESMIS -// WARNING: the caller must lock lcmsMutex -void ICCProfileCreator::savePressed() -{ - cmsHPROFILE newProfile = nullptr; - Glib::ustring sNewProfile; - Glib::ustring sPrimariesPreset; - Glib::ustring sGammaPreset; - - storeValues(); - - // -------------------------------------------- Compute the default file name - - //necessary for V2 profile - if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { - sNewProfile = options.rtSettings.ACESp0; - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { - sNewProfile = options.rtSettings.ACESp1; - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { - sNewProfile = options.rtSettings.adobe; - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { - sNewProfile = options.rtSettings.prophoto; - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { - sNewProfile = options.rtSettings.rec2020; - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { - sNewProfile = options.rtSettings.widegamut; - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { - sNewProfile = options.rtSettings.best; - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { - sNewProfile = options.rtSettings.beta; - sPrimariesPreset = "Beta"; - } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { - sNewProfile = options.rtSettings.bruce; - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "custom") { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "Custom"; - } else { - // Should not occurs - if (rtengine::settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); - } - return; - } - - //begin adaptation rTRC gTRC bTRC - //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile - if (rtengine::settings->verbose) { - printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); - } - - newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - - if (newProfile == nullptr) { - - if (rtengine::settings->verbose) { - printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); - } - return; - } - - //change desc Tag , to "free gamma", or "BT709", etc. - Glib::ustring fName; - Glib::ustring sPrimariesAndIlluminant; - double presetGamma = 2.4; - double presetSlope = 12.92310; - const double eps = 0.000000001; // not divide by zero - getGamma(gammaPreset, presetGamma, presetSlope); - if (gammaPreset == "High_g1.3_s3.35") { - sGammaPreset = "High_g=1.3_s=3.35"; - ga[0] = 1.3 ; //for high dynamic images - ga[1] = 0.998279; - ga[2] = 0.001721; - ga[3] = 0.298507; - ga[4] = 0.005746; - } else if (gammaPreset == "Low_g2.6_s6.9") { - sGammaPreset = "Low_g=2.6_s=6.9"; - ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images - ga[1] = 0.891161; - ga[2] = 0.108839; - ga[3] = 0.144928; - ga[4] = 0.076332; - } else if (gammaPreset == "sRGB_g2.4_s12.92") { - sGammaPreset = "sRGB_g=2.4_s=12.92310"; - ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom - ga[1] = 0.947858; - ga[2] = 0.052142; - ga[3] = 0.077399; - ga[4] = 0.039293; - } else if (gammaPreset == "BT709_g2.2_s4.5") { - sGammaPreset = "BT709_g=2.2_s=4.5"; - ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin - ga[1] = 0.909995; - ga[2] = 0.090005; - ga[3] = 0.222222; - ga[4] = 0.081071; - } else if (gammaPreset == "linear_g1.0") { - sGammaPreset = "Linear_g=1.0"; - ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "standard_g2.2") { - sGammaPreset = "g=2.2"; - ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "standard_g1.8") { - sGammaPreset = "g=1.8"; - ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "Lab_g3.0s9.03296") { - sGammaPreset = "LAB_g3.0_s9.03296"; - ga[0] = 3.0; //Lab gamma =3 slope=9.03296 - ga[1] = 0.8621; - ga[2] = 0.1379; - ga[3] = 0.1107; - ga[4] = 0.08; - } else if (gammaPreset == "Custom") { - rtengine::GammaValues g_a; //gamma parameters - double pwr = 1.0 / gamma; - double ts = slope; - double slope2 = slope == 0 ? eps : slope; - - int mode = 0; - rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - ga[4] = g_a[3] * ts; - //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); - ga[0] = gamma; - ga[1] = 1. /(1.0 + g_a[4]); - ga[2] = g_a[4] /(1.0 + g_a[4]); - ga[3] = 1. / slope2; - //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); - - sGammaPreset = Glib::ustring::compose("g%1_s%2", - Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma), - Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); - presetGamma = gamma; - presetSlope = slope; - } - ga[5] = 0.0; - ga[6] = 0.0; - - - sPrimariesAndIlluminant = sPrimariesPreset; - - if (profileVersion == "v4" && illuminant != "DEF") { - sPrimariesPreset += "-" + illuminant; - // printf("outpr=%s \n",outPr.c_str()); - } - - Glib::ustring profileDesc; - Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd - Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc - Glib::ustring sGamma; - Glib::ustring sSlope; - - if (gammaPreset == "Custom") { - sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma); - sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); - fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); - profileDesc = sPrimariesPreset; - } else { - sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma); - sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope); - fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); - profileDesc == sPrimariesPreset + sGammaPreset; - } - sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); - sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); - - // -------------------------------------------- Asking the file name - - Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); - bindCurrentFolder(dialog, options.lastICCProfCreatorDir); - dialog.set_current_name(fName); - //dialog.set_current_folder(lastPath); - - dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); - dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); - - Glib::RefPtr filter_icc = Gtk::FileFilter::create(); - filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); - filter_icc->add_pattern("*.icc"); - dialog.add_filter(filter_icc); - - /* - Glib::RefPtr filter_any = Gtk::FileFilter::create(); - filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); - filter_any->add_pattern("*"); - dialog.add_filter(filter_any); - */ - - dialog.show_all_children(); - //dialog.set_do_overwrite_confirmation (true); - - Glib::ustring absoluteFName; - - do { - int result = dialog.run(); - - if (result != Gtk::RESPONSE_OK) { - return; - } else { - absoluteFName = dialog.get_filename(); - Glib::ustring ext = getExtension(absoluteFName); - - if (ext != "icc") { - absoluteFName += ".icc"; - } - - if (confirmOverwrite(dialog, absoluteFName)) { - //lastPath = Glib::path_get_dirname(absoluteFName); - break; - } - } - } while (1); - - // --------------- main tags ------------------ - - if (profileVersion == "v4") { - cmsSetProfileVersion(newProfile, 4.3); - } else { - cmsSetProfileVersion(newProfile, 2.0); - } - -//change - float p[6]; //primaries - ga[6] = 0.0; - - ColorTemp temp; - getPrimaries(primariesPreset, p, temp); - - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - - if (profileVersion == "v4" && illuminant != "DEF") { - double tempv4 = 5000.; - if (illuminant == "D41") { - tempv4 = 4100.; - } else if (illuminant == "D50") { - tempv4 = 5003.; - } else if (illuminant == "D55") { - tempv4 = 5500.; - } else if (illuminant == "D60") { - tempv4 = 6004.; - } else if (illuminant == "D65") { - tempv4 = 6504.; - } else if (illuminant == "D80") { - tempv4 = 8000.; - } else if (illuminant == "stdA") { - tempv4 = 5003.; - } - cmsWhitePointFromTemp(&xyD, tempv4); - } else { - cmsWhitePointFromTemp(&xyD, (double)temp); - } - - if (illuminant == "stdA") { - xyD = {0.447573, 0.407440, 1.0}; - } - - // Calculate output profile's rTRC gTRC bTRC - cmsToneCurve* GammaTRC[3]; - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); - - if (profileVersion == "v4") { - newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); - - // --------------- set dmnd tag ------------------ - - cmsMLU *dmnd; - dmnd = cmsMLUalloc(nullptr, 1); - cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); - cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); - cmsMLUfree(dmnd); - - // --------------- set dmdd tag ------------------ - - if (profileVersion == "v2") { - //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - std::wostringstream wGammaSlopeParam; - wGammaSlopeParam << sGammaSlopeParam; - - cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); - // Language code (2 letters code) : https://www.iso.org/obp/ui/ - // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (sGammaSlopeParam.is_ascii()) { - if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } - } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); - } - } else { - printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); - } - cmsMLUfree(dmdd); - } - - // --------------- set desc tag ------------------ - - Glib::ustring sDescription; - if (!description.empty()) { - if (cAppendParamsToDesc->get_active()) { - sDescription = description + " / " + sGammaSlopeDesc; - } else { - sDescription = description; - } - } else { - if (cAppendParamsToDesc->get_active()) { - sDescription = profileDesc + " / " + sGammaSlopeDesc; - } else { - sDescription = profileDesc; - } - } - - //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - std::wostringstream wDescription; - wDescription << sDescription; - - cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); - // Language code (2 letters code) : https://www.iso.org/obp/ui/ - // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (sDescription.is_ascii()) { - if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } - } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); - } - cmsMLUfree(descMLU); - - // --------------- set cprt tag ------------------ - - std::wostringstream wCopyright; - wCopyright << copyright; - - cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); - if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); - } - } else { - printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); - } - cmsMLUfree(copyMLU); - - - /* //to read XYZ values - cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); - cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); - cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); - printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); - */ - - cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); - - cmsFreeToneCurve(GammaTRC[0]); -} +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * 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 +#include "iccprofilecreator.h" +#include "multilangmgr.h" +#include "cachemanager.h" +#include "addsetids.h" +#include "../rtengine/icons.h" +#include "../rtengine/color.h" +#include "rtimage.h" +#ifdef _OPENMP +#include +#endif + +extern Options options; + +namespace rtengine +{ + +extern const Settings* settings; + +} + +const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free + +ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) + : Gtk::Dialog (M ("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) + , primariesPreset(options.ICCPC_primariesPreset) + , redPrimaryX(options.ICCPC_redPrimaryX) + , redPrimaryY(options.ICCPC_redPrimaryY) + , greenPrimaryX(options.ICCPC_greenPrimaryX) + , greenPrimaryY(options.ICCPC_greenPrimaryY) + , bluePrimaryX(options.ICCPC_bluePrimaryX) + , bluePrimaryY(options.ICCPC_bluePrimaryY) + , gammaPreset(options.ICCPC_gammaPreset) + , gamma(options.ICCPC_gamma) + , slope(options.ICCPC_slope) + , appendParamsToDesc(options.ICCPC_appendParamsToDesc) + , profileVersion(options.ICCPC_profileVersion) + , illuminant(options.ICCPC_illuminant) + , description(options.ICCPC_description) + , copyright(options.ICCPC_copyright) + , parent(rtwindow) +{ + + set_default_size(600, -1); + + Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); + mainGrid->set_column_spacing(3); + mainGrid->set_row_spacing(3); + + //--------------------------------- primaries + + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); + setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*prilab, 0, 0, 1, 1); + + primaries = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + primaries->append(M("ICCPROFCREATOR_CUSTOM")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); + primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); + primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); + primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); + primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); + primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); + primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); + primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); + primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); + primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); + mainGrid->attach(*primaries, 1, 0, 1, 1); + + primariesGrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + primariesGrid->set_column_spacing(5); + + /* + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); + */ + + aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); + setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); + setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); + setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); + setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); + setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); + setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); + primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); + + primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); + primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); + + primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); + primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); + + mainGrid->attach(*primariesGrid, 1, 1, 1, 1); + + //--------------------------------- output gamma + + Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); + setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*galab, 0, 2, 1, 1); + + trcPresets = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + std::vector outputTRCPresets; + outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); + for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { + outputTRCPresets.push_back(sTRCPreset[i]); + } + for (size_t i = 0; i < outputTRCPresets.size(); i++) { + trcPresets->append(outputTRCPresets[i]); + } + mainGrid->attach(*trcPresets, 1, 2, 1, 1); + + //--------------------------------- sliders gampos and slpos + + aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); + setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aGamma->delay < options.adjusterMaxDelay) { + aGamma->delay = options.adjusterMaxDelay; + } + aGamma->show(); + mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma + + aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); + setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aSlope->delay < options.adjusterMaxDelay) { + aSlope->delay = options.adjusterMaxDelay; + } + aSlope->show(); + mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope + + //--------------------------------- temperature + + Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); + setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*illlab, 0, 5, 1, 1); //slope + cIlluminant = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); + cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); + mainGrid->attach(*cIlluminant, 1, 5, 1, 1); + + //--------------------------------- V2 or V4 profiles + + Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); + setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*proflab, 0, 6, 1, 1); + iccVersion = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); + mainGrid->attach(*iccVersion, 1, 6, 1, 1); + + //--------------------------------- Description + + Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); + setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); + mainGrid->attach(*desclab, 0, 7, 1, 2); + eDescription = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); + mainGrid->attach(*eDescription, 1, 7, 1, 1); + cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM"))); + setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); + + //--------------------------------- Copyright + + Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); + setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*copylab, 0, 9, 1, 1); + Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); + eCopyright = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + copygrid->attach(*eCopyright, 0, 0, 1, 1); + resetCopyright = Gtk::manage(new Gtk::Button()); + resetCopyright->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"))); + setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + resetCopyright->set_relief (Gtk::RELIEF_NONE); + resetCopyright->set_tooltip_markup (M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); + resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + resetCopyright->set_can_focus(false); + copygrid->attach(*resetCopyright, 1, 0, 1, 1); + mainGrid->attach(*copygrid, 1, 9, 1, 1); + + //--------------------------------- Adding the mainGrid + + get_content_area()->add(*mainGrid); + + //--------------------------------- Setting default values for Adjusters + + aGamma->setDefault(gamma); + aSlope->setDefault(slope); + aPrimariesRedX->setDefault(redPrimaryX); + aPrimariesRedY->setDefault(redPrimaryY); + aPrimariesGreenX->setDefault(greenPrimaryX); + aPrimariesGreenY->setDefault(greenPrimaryY); + aPrimariesBlueX->setDefault(bluePrimaryX); + aPrimariesBlueY->setDefault(bluePrimaryY); + + //--------------- Updating widgets with actual values (from options) + + if (primariesPreset == "custom") { + primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); + } else if (primariesPreset == "ACES-AP0") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); + } else if (primariesPreset == "ACES-AP1") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); + } else if (primariesPreset == "Adobe") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); + } else if (primariesPreset == "ProPhoto") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); + } else if (primariesPreset == "Rec2020") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); + } else if (primariesPreset == "sRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); + } else if (primariesPreset == "Widegamut") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); + } else if (primariesPreset == "BestRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); + } else if (primariesPreset == "BetaRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); + } else if (primariesPreset == "BruceRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); + } + + trcPresets->set_active(0); + if (gammaPreset != "Custom") { + trcPresets->set_active_text(gammaPreset); + } + + aGamma->setValue(gamma); + aSlope->setValue(slope); + aPrimariesRedX->setValue(redPrimaryX); + aPrimariesRedY->setValue(redPrimaryY); + aPrimariesGreenX->setValue(greenPrimaryX); + aPrimariesGreenY->setValue(greenPrimaryY); + aPrimariesBlueX->setValue(bluePrimaryX); + aPrimariesBlueY->setValue(bluePrimaryY); + + eDescription->set_text(description); + eCopyright->set_text(copyright); + cAppendParamsToDesc->set_active(appendParamsToDesc); + + if (illuminant == "DEF") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); + } else if (illuminant == "D41") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); + } else if (illuminant == "D50") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); + } else if (illuminant == "D55") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); + } else if (illuminant == "D60") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); + } else if (illuminant == "D65") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); + } else if (illuminant == "D80") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); + } else if (illuminant == "stdA") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); + } + + iccVersion->set_active(0); + if (profileVersion == "v2") { + iccVersion->set_active(1); + } + + trcPresetsChanged(); + illuminantChanged(); + primariesChanged(); + + //--------------- Action area button + + Gtk::Button* save = Gtk::manage (new Gtk::Button (M ("GENERAL_SAVE_AS"))); + save->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::savePressed) ); + get_action_area()->pack_start (*save); + + Gtk::Button* close = Gtk::manage (new Gtk::Button (M ("GENERAL_CLOSE"))); + close->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::closePressed) ); + get_action_area()->pack_start (*close); + + //--------------- Show childrens + + show_all_children (); + + //--------------- Connecting the signals + + aPrimariesRedX->setAdjusterListener(this); + aPrimariesRedY->setAdjusterListener(this); + aPrimariesGreenX->setAdjusterListener(this); + aPrimariesGreenY->setAdjusterListener(this); + aPrimariesBlueX->setAdjusterListener(this); + aPrimariesBlueY->setAdjusterListener(this); + aGamma->setAdjusterListener(this); + aSlope->setAdjusterListener(this); + primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); + trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); + illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); + resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); +} + +void ICCProfileCreator::closePressed() +{ + storeValues(); + hide(); +} + +void ICCProfileCreator::updateICCVersion() +{ + if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->set_sensitive(false); + } else { + iccVersion->set_sensitive(true); + } +} + +void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) +{ + if (a == aPrimariesRedX || a == aPrimariesRedY || + a == aPrimariesGreenX || a == aPrimariesGreenY || + a == aPrimariesBlueX || a == aPrimariesBlueY) + { + if (primaries->get_active_row_number() > 0) { + ConnectionBlocker blocker(primariesconn); + primaries->set_active(0); + updateICCVersion(); + } + } else if (a == aGamma || a == aSlope) { + if (trcPresets->get_active_row_number() > 0) { + ConnectionBlocker blocker(trcpresetsconn); + trcPresets->set_active(0); + } + } +} + +void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) +{ +} + +void ICCProfileCreator::primariesChanged() +{ + if (primaries->get_active_row_number() > 0) { + float p[6]; + ColorTemp temp; + Glib::ustring activeValue = primaries->get_active_text(); + Glib::ustring primPresetName = getPrimariesPresetName(activeValue); + getPrimaries(primPresetName, p, temp); + aPrimariesRedX->setValue(p[0]); + aPrimariesRedY->setValue(p[1]); + aPrimariesGreenX->setValue(p[2]); + aPrimariesGreenY->setValue(p[3]); + aPrimariesBlueX->setValue(p[4]); + aPrimariesBlueY->setValue(p[5]); + } + updateICCVersion(); +} + +void ICCProfileCreator::illuminantChanged() +{ + updateICCVersion(); +} + +void ICCProfileCreator::trcPresetsChanged() +{ + aGamma->block(true); + aSlope->block(true); + + double gamma; + double slope; + getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); + aGamma->setValue(gamma); + aSlope->setValue(slope); + + aGamma->block(false); + aSlope->block(false); +} + +void ICCProfileCreator::storeValues() +{ + if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { + options.ICCPC_profileVersion = profileVersion = "v4"; + } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { + options.ICCPC_profileVersion = profileVersion = "v2"; + } + + if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { + options.ICCPC_illuminant = illuminant = "DEF"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { + options.ICCPC_illuminant = illuminant = "D41"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { + options.ICCPC_illuminant = illuminant = "D50"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { + options.ICCPC_illuminant = illuminant = "D55"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { + options.ICCPC_illuminant = illuminant = "D60"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { + options.ICCPC_illuminant = illuminant = "D65"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { + options.ICCPC_illuminant = illuminant = "D80"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { + options.ICCPC_illuminant = illuminant = "stdA"; + } + + options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); + options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); + options.ICCPC_gamma = gamma = aGamma->getValue(); + options.ICCPC_slope = slope = aSlope->getValue(); + options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); + options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); + options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); + options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); + options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); + options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); + options.ICCPC_description = description = eDescription->get_text(); + options.ICCPC_copyright = copyright = eCopyright->get_text(); + options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); +} + +Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) +{ + if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { + return Glib::ustring("ACES-AP0"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { + return Glib::ustring("ACES-AP1"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { + return Glib::ustring("Adobe"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { + return Glib::ustring("ProPhoto"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { + return Glib::ustring("Rec2020"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { + return Glib::ustring("sRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { + return Glib::ustring("Widegamut"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { + return Glib::ustring("BestRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { + return Glib::ustring("BetaRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { + return Glib::ustring("BruceRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + return Glib::ustring("custom"); + } else { + return Glib::ustring(); + } +} + +void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) +{ + temp = ColorTemp::D50; + if (preset == "Widegamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + + } else if (preset == "Adobe") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "BetaRGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (preset == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (preset == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (preset == "ACES-AP0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (preset == "ACES-AP1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (preset == "ProPhoto") { + p[0] = 0.7347; // ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else if (preset == "custom") { + p[0] = redPrimaryX; + p[1] = redPrimaryY; + p[2] = greenPrimaryX; + p[3] = greenPrimaryY; + p[4] = bluePrimaryX; + p[5] = bluePrimaryY; + + } else { + p[0] = 0.7347; //default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } +} + +Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) +{ + Glib::ustring name(trcPresets->get_active_text()); + if (name == M("ICCPROFCREATOR_CUSTOM")) { + name = "Custom"; + } + return name; +} + +void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) +{ + if (preset == "High_g1.3_s3.35") { + presetGamma = 1.3; + presetSlope = 3.35; + } else if (preset == "Low_g2.6_s6.9") { + presetGamma = 2.6; + presetSlope = 6.9; + } else if (preset == "sRGB_g2.4_s12.92") { + presetGamma = 2.4; + presetSlope = 12.92310; + } else if (preset == "BT709_g2.2_s4.5") { + presetGamma = 2.22; + presetSlope = 4.5; + } else if (preset == "linear_g1.0") { + presetGamma = 1.; + presetSlope = 0.; + } else if (preset == "standard_g2.2") { + presetGamma = 2.2; + presetSlope = 0.; + } else if (preset == "standard_g1.8") { + presetGamma = 1.8; + presetSlope = 0.; + } else if (preset == "Lab_g3.0s9.03296") { + presetGamma = 3.0; + presetSlope = 9.03296; + } else if (preset == "Custom") { + presetGamma = gamma; + presetSlope = slope; + } else { + presetGamma = 2.4; + presetSlope = 12.92310; + } +} + +void ICCProfileCreator::onResetCopyright() +{ + eCopyright->set_text(Options::getICCProfileCopyright()); +} + +// Copyright (c) 2018 Jacques DESMIS +// WARNING: the caller must lock lcmsMutex +void ICCProfileCreator::savePressed() +{ + cmsHPROFILE newProfile = nullptr; + Glib::ustring sNewProfile; + Glib::ustring sPrimariesPreset; + Glib::ustring sGammaPreset; + + storeValues(); + + // -------------------------------------------- Compute the default file name + + //necessary for V2 profile + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + sNewProfile = options.rtSettings.ACESp0; + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + sNewProfile = options.rtSettings.ACESp1; + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + sNewProfile = options.rtSettings.adobe; + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { + sNewProfile = options.rtSettings.prophoto; + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + sNewProfile = options.rtSettings.rec2020; + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + sNewProfile = options.rtSettings.widegamut; + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + sNewProfile = options.rtSettings.best; + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + sPrimariesPreset = "Beta"; + } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + sNewProfile = options.rtSettings.bruce; + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "custom") { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "Custom"; + } else { + // Should not occurs + if (rtengine::settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + } + return; + } + + //begin adaptation rTRC gTRC bTRC + //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile + if (rtengine::settings->verbose) { + printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); + } + + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + + if (newProfile == nullptr) { + + if (rtengine::settings->verbose) { + printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); + } + return; + } + + //change desc Tag , to "free gamma", or "BT709", etc. + Glib::ustring fName; + Glib::ustring sPrimariesAndIlluminant; + double presetGamma = 2.4; + double presetSlope = 12.92310; + const double eps = 0.000000001; // not divide by zero + getGamma(gammaPreset, presetGamma, presetSlope); + if (gammaPreset == "High_g1.3_s3.35") { + sGammaPreset = "High_g=1.3_s=3.35"; + ga[0] = 1.3 ; //for high dynamic images + ga[1] = 0.998279; + ga[2] = 0.001721; + ga[3] = 0.298507; + ga[4] = 0.005746; + } else if (gammaPreset == "Low_g2.6_s6.9") { + sGammaPreset = "Low_g=2.6_s=6.9"; + ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images + ga[1] = 0.891161; + ga[2] = 0.108839; + ga[3] = 0.144928; + ga[4] = 0.076332; + } else if (gammaPreset == "sRGB_g2.4_s12.92") { + sGammaPreset = "sRGB_g=2.4_s=12.92310"; + ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom + ga[1] = 0.947858; + ga[2] = 0.052142; + ga[3] = 0.077399; + ga[4] = 0.039293; + } else if (gammaPreset == "BT709_g2.2_s4.5") { + sGammaPreset = "BT709_g=2.2_s=4.5"; + ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin + ga[1] = 0.909995; + ga[2] = 0.090005; + ga[3] = 0.222222; + ga[4] = 0.081071; + } else if (gammaPreset == "linear_g1.0") { + sGammaPreset = "Linear_g=1.0"; + ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g2.2") { + sGammaPreset = "g=2.2"; + ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g1.8") { + sGammaPreset = "g=1.8"; + ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "Lab_g3.0s9.03296") { + sGammaPreset = "LAB_g3.0_s9.03296"; + ga[0] = 3.0; //Lab gamma =3 slope=9.03296 + ga[1] = 0.8621; + ga[2] = 0.1379; + ga[3] = 0.1107; + ga[4] = 0.08; + } else if (gammaPreset == "Custom") { + rtengine::GammaValues g_a; //gamma parameters + double pwr = 1.0 / gamma; + double ts = slope; + double slope2 = slope == 0 ? eps : slope; + + int mode = 0; + rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + ga[4] = g_a[3] * ts; + //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); + ga[0] = gamma; + ga[1] = 1. /(1.0 + g_a[4]); + ga[2] = g_a[4] /(1.0 + g_a[4]); + ga[3] = 1. / slope2; + //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + + sGammaPreset = Glib::ustring::compose("g%1_s%2", + Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); + presetGamma = gamma; + presetSlope = slope; + } + ga[5] = 0.0; + ga[6] = 0.0; + + + sPrimariesAndIlluminant = sPrimariesPreset; + + if (profileVersion == "v4" && illuminant != "DEF") { + sPrimariesPreset += "-" + illuminant; + // printf("outpr=%s \n",outPr.c_str()); + } + + Glib::ustring profileDesc; + Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd + Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc + Glib::ustring sGamma; + Glib::ustring sSlope; + + if (gammaPreset == "Custom") { + sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma); + sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); + fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); + profileDesc = sPrimariesPreset; + } else { + sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope); + fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); + profileDesc == sPrimariesPreset + sGammaPreset; + } + sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); + sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); + + // -------------------------------------------- Asking the file name + + Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); + bindCurrentFolder(dialog, options.lastICCProfCreatorDir); + dialog.set_current_name(fName); + //dialog.set_current_folder(lastPath); + + dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); + dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); + + Glib::RefPtr filter_icc = Gtk::FileFilter::create(); + filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); + filter_icc->add_pattern("*.icc"); + dialog.add_filter(filter_icc); + + /* + Glib::RefPtr filter_any = Gtk::FileFilter::create(); + filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); + filter_any->add_pattern("*"); + dialog.add_filter(filter_any); + */ + + dialog.show_all_children(); + //dialog.set_do_overwrite_confirmation (true); + + Glib::ustring absoluteFName; + + do { + int result = dialog.run(); + + if (result != Gtk::RESPONSE_OK) { + return; + } else { + absoluteFName = dialog.get_filename(); + Glib::ustring ext = getExtension(absoluteFName); + + if (ext != "icc") { + absoluteFName += ".icc"; + } + + if (confirmOverwrite(dialog, absoluteFName)) { + //lastPath = Glib::path_get_dirname(absoluteFName); + break; + } + } + } while (1); + + // --------------- main tags ------------------ + + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); + } else { + cmsSetProfileVersion(newProfile, 2.0); + } + +//change + float p[6]; //primaries + ga[6] = 0.0; + + ColorTemp temp; + getPrimaries(primariesPreset, p, temp); + + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + if (profileVersion == "v4" && illuminant != "DEF") { + double tempv4 = 5000.; + if (illuminant == "D41") { + tempv4 = 4100.; + } else if (illuminant == "D50") { + tempv4 = 5003.; + } else if (illuminant == "D55") { + tempv4 = 5500.; + } else if (illuminant == "D60") { + tempv4 = 6004.; + } else if (illuminant == "D65") { + tempv4 = 6504.; + } else if (illuminant == "D80") { + tempv4 = 8000.; + } else if (illuminant == "stdA") { + tempv4 = 5003.; + } + cmsWhitePointFromTemp(&xyD, tempv4); + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } + + if (illuminant == "stdA") { + xyD = {0.447573, 0.407440, 1.0}; + } + + // Calculate output profile's rTRC gTRC bTRC + cmsToneCurve* GammaTRC[3]; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + + if (profileVersion == "v4") { + newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + + // --------------- set dmnd tag ------------------ + + cmsMLU *dmnd; + dmnd = cmsMLUalloc(nullptr, 1); + cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + cmsMLUfree(dmnd); + + // --------------- set dmdd tag ------------------ + + if (profileVersion == "v2") { + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + std::wostringstream wGammaSlopeParam; + wGammaSlopeParam << sGammaSlopeParam; + + cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); + // Language code (2 letters code) : https://www.iso.org/obp/ui/ + // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (sGammaSlopeParam.is_ascii()) { + if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); + } + cmsMLUfree(dmdd); + } + + // --------------- set desc tag ------------------ + + Glib::ustring sDescription; + if (!description.empty()) { + if (cAppendParamsToDesc->get_active()) { + sDescription = description + " / " + sGammaSlopeDesc; + } else { + sDescription = description; + } + } else { + if (cAppendParamsToDesc->get_active()) { + sDescription = profileDesc + " / " + sGammaSlopeDesc; + } else { + sDescription = profileDesc; + } + } + + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + std::wostringstream wDescription; + wDescription << sDescription; + + cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); + // Language code (2 letters code) : https://www.iso.org/obp/ui/ + // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (sDescription.is_ascii()) { + if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); + } + cmsMLUfree(descMLU); + + // --------------- set cprt tag ------------------ + + std::wostringstream wCopyright; + wCopyright << copyright; + + cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); + if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); + } + cmsMLUfree(copyMLU); + + + /* //to read XYZ values + cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); + */ + + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + + cmsFreeToneCurve(GammaTRC[0]); +} From 5e0cbd4c683b5edef32635c094536300b0c85a26 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 11 Nov 2018 16:18:06 +0100 Subject: [PATCH 124/348] Bug in iccprofilecreator.cc found by clang, fixes #4973 --- rtgui/iccprofilecreator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 23c8472c5..a2c1c60d4 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -823,7 +823,7 @@ void ICCProfileCreator::savePressed() sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma); sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope); fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); - profileDesc == sPrimariesPreset + sGammaPreset; + profileDesc = sPrimariesPreset + sGammaPreset; } sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); From 513b582b4d71ecf82e1e22f9e771e1fe533a1f59 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 11 Nov 2018 22:08:29 +0100 Subject: [PATCH 125/348] Updated rtexif using ExifTool-11.17 Closes #4921 --- rtexif/canonattribs.cc | 52 +++++++++++++++++++++++++++++++----- rtexif/nikonattribs.cc | 39 ++++++++++++++++++++++----- rtexif/pentaxattribs.cc | 1 + rtexif/sonyminoltaattribs.cc | 31 ++++++++++++++++++++- 4 files changed, 109 insertions(+), 14 deletions(-) diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc index 2e2eea676..17ce4f343 100644 --- a/rtexif/canonattribs.cc +++ b/rtexif/canonattribs.cc @@ -567,6 +567,7 @@ public: {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"}, + {6, "Sigma 28-300mm f/3.5-6.3 DG 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"}, @@ -656,7 +657,9 @@ public: {82, "Canon TS-E 135mm f/4L Macro"}, {94, "Canon TS-E 17mm f/4L"}, {95, "Canon TS-E 24mm f/3.5L II"}, - {103, "Samyang AF 14mm f/2.8 EF"}, + {103, "Samyang AF 14mm f/2.8 EF or Rokinon Lens"}, + {103, "Rokinon SP 14mm f/2.4"}, + {103, "Rokinon AF 14mm f/2.8 EF"}, {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"}, @@ -733,7 +736,7 @@ public: {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 USM or Sigma or Tamron Lens"}, + {161, "Canon EF 28-70mm f/2.8L USM or Other 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"}, @@ -741,6 +744,7 @@ public: {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"}, + {161, "Tokina AT-X 24-70mm f/2.8 PRO FX (IF)"}, {162, "Canon EF 200mm f/2.8L USM"}, {163, "Canon EF 300mm f/4L"}, {164, "Canon EF 400mm f/5.6L"}, @@ -757,6 +761,7 @@ public: {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"}, + {169, "Sigma 35mm f/1.5 FF High-Speed Prime | 017"}, {170, "Canon EF 200mm f/2.8L II USM"}, {171, "Canon EF 300mm f/4L USM"}, {172, "Canon EF 400mm f/5.6L USM or Sigma Lens"}, @@ -780,6 +785,9 @@ public: {180, "Zeiss Milvus 50mm f/1.4"}, {180, "Zeiss Milvus 85mm f/1.4"}, {180, "Zeiss Otus 28mm f/1.4 ZE"}, + {180, "Sigma 24mm f/1.5 FF High-Speed Prime | 017"}, + {180, "Sigma 50mm f/1.5 FF High-Speed Prime | 017"}, + {180, "Sigma 85mm f/1.5 FF High-Speed Prime | 017"}, {181, "Canon EF 100-400mm f/4.5-5.6L IS USM + 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 USM + 2x or Sigma Lens"}, @@ -791,6 +799,7 @@ public: {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"}, + {183, "Sigma 180mm f/3.5 APO Macro EX DG IF HSM"}, {184, "Canon EF 400mm f/2.8L USM + 2x"}, {185, "Canon EF 600mm f/4L IS USM"}, {186, "Canon EF 70-200mm f/4L USM"}, @@ -798,7 +807,8 @@ public: {188, "Canon EF 70-200mm f/4L USM + 2x"}, {189, "Canon EF 70-200mm f/4L USM + 2.8x"}, {190, "Canon EF 100mm f/2.8 Macro USM"}, - {191, "Canon EF 400mm f/4 DO IS"}, + {191, "Canon EF 400mm f/4 DO IS or Sigma Lens"}, + {191, "Sigma 500mm f/4 DG OS HSM"}, {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"}, @@ -808,6 +818,7 @@ public: {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"}, + {198, "Zeiss Milvus 25mm f/1.4"}, {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"}, @@ -841,8 +852,10 @@ public: {236, "Canon EF-S 60mm f/2.8 Macro USM"}, {237, "Canon EF 24-105mm f/4L IS USM"}, {238, "Canon EF 70-300mm f/4-5.6 IS USM"}, - {239, "Canon EF 85mm f/1.2L II USM"}, - {240, "Canon EF-S 17-55mm f/2.8 IS USM"}, + {239, "Canon EF 85mm f/1.2L II USM or Rokinon Lens"}, + {239, "Rokinon SP 85mm f/1.2"}, + {240, "Canon EF-S 17-55mm f/2.8 IS USM or Sigma Lens"}, + {240, "Sigma 17-50mm f/2.8 EX DC OS HSM"}, {241, "Canon EF 50mm f/1.2L USM"}, {242, "Canon EF 70-200mm f/4L IS USM"}, {243, "Canon EF 70-200mm f/4L IS USM + 1.4x"}, @@ -852,16 +865,23 @@ public: {247, "Canon EF 14mm f/2.8L II USM"}, {248, "Canon EF 200mm f/2L IS USM or Sigma Lens"}, {248, "Sigma 24-35mm f/2 DG HSM | A"}, + {248, "Sigma 135mm f/2 FF High-Speed Prime | 017"}, + {248, "Sigma 24-35mm f/2.2 FF Zoom | 017"}, {249, "Canon EF 800mm f/5.6L IS USM"}, {250, "Canon EF 24mm f/1.4L II USM or Sigma Lens"}, {250, "Sigma 20mm f/1.4 DG HSM | A"}, + {250, "Sigma 20mm f/1.5 FF High-Speed Prime | 017"}, {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"}, - {368, "Sigma 14-24mm f/2.8 DG HSM | A"}, + {368, "Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens"}, + {368, "Sigma 20mm f/1.4 DG HSM | A"}, + {368, "Sigma 50mm f/1.4 DG HSM | A"}, + {368, "Sigma 40mm f/1.4 DG HSM | A"}, + {368, "Sigma 60-600mm f/4.5-6.3 DG OS HSM | S"}, {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"}, @@ -869,6 +889,9 @@ public: {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)"}, {491, "Tamron 100-400mm f/4.5-6.3 Di VC USD (A035)"}, + {491, "Tamron 70-210mm f/4 Di VC USD (A034)"}, + {491, "Tamron 70-210mm f/4 Di VC USD (A034) + 1.4x"}, + {491, "Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)"}, {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"}, @@ -887,11 +910,18 @@ public: {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 f/5-6.3 Di VC USD G2"}, - {748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x"}, + {748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens"}, + {748, "Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 1.4x"}, + {748, "Tamron 70-210mm f/4 Di VC USD (A034) + 2x"}, + {749, "Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x"}, {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"}, {753, "Canon EF 85mm f/1.4L IS USM"}, + {754, "Canon EF 70-200mm f/4L IS II USM"}, + {757, "Canon EF 400mm f/2.8L IS III USM"}, + {758, "Canon EF 600mm f/4L IS III USM"}, + {1136, "Sigma 24-70mm f/2.8 DG OS HSM | Art 017"}, {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"}, @@ -909,9 +939,14 @@ public: {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"}, + {4159, "Canon EF-M 32mm f/1.4 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"}, + {61182, "Canon RF 35mm F1.8 Macro IS STM or other Canon RF Lens"}, + {61182, "Canon RF 50mm F1.2 L USM"}, + {61182, "Canon RF 24-105mm F4 L IS USM"}, + {61182, "Canon RF 28-70mm F2 L 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"}, @@ -1477,6 +1512,8 @@ public: CAModelIDInterpreter () { choices[1042] = "EOS M50 / Kiss M"; + choices[2049] = "PowerShot SX740 HS"; + choices[2053] = "PowerShot SX70 HS"; choices[16842752] = "PowerShot A30"; choices[17039360] = "PowerShot S300 / Digital IXUS 300 / IXY Digital 300"; choices[17170432] = "PowerShot A20"; @@ -1799,6 +1836,7 @@ public: choices[2147484680] = "EOS 77D / 9000D"; choices[2147484695] = "EOS Rebel SL2 / 200D / Kiss X9"; choices[2147484706] = "EOS Rebel T100 / 4000D / 3000D"; + choices[2147484708] = "EOR R"; choices[2147484722] = "EOS Rebel T7 / 2000D / 1500D / Kiss X90"; } }; diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index fc0fc22db..e534f8123 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -850,7 +850,9 @@ const std::map NALensDataInterpreter::lenses = { {"49 3C A6 A6 30 30 F2 02", "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"}, {"4A 40 11 11 2C 0C 4D 02", "Samyang 8mm f/3.5 Fish-Eye CS"}, {"4A 48 1E 1E 24 0C 4D 02", "Samyang 12mm f/2.8 ED AS NCS Fish-Eye"}, + {"4A 48 24 24 24 0C 4D 02", "Samyang 10mm f/2.8 ED AS NCS CS"}, {"4A 48 24 24 24 0C 4D 02", "Samyang AE 14mm f/2.8 ED AS IF UMC"}, + {"4A 4C 24 24 1E 6C 4D 06", "Samyang 14mm f/2.4 Premium"}, {"4A 54 29 29 18 0C 4D 02", "Samyang 16mm f/2.0 ED AS UMC CS"}, {"4A 54 62 62 0C 0C 4D 02", "AF Nikkor 85mm f/1.4D IF"}, {"4A 60 36 36 0C 0C 4D 02", "Samyang 24mm f/1.4 ED AS UMC"}, @@ -910,7 +912,7 @@ const std::map NALensDataInterpreter::lenses = { {"74 40 37 62 2C 34 78 06", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, {"75 40 3C 68 2C 3C 79 06", "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"}, {"76 58 50 50 14 14 7A 02", "AF Nikkor 50mm f/1.8D"}, - {"77 44 60 98 34 3C 7B 0E", "Sigma 80-400mm f4.5-5.6 APO DG D OS"}, + {"77 44 60 98 34 3C 7B 0E", "Sigma 80-400mm f/4.5-5.6 APO DG D OS"}, {"77 44 61 98 34 3C 7B 0E", "Sigma 80-400mm f/4.5-5.6 EX OS"}, {"77 48 5C 80 24 24 7B 0E", "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED"}, {"78 40 37 6E 2C 3C 7C 0E", "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED"}, @@ -953,6 +955,7 @@ const std::map NALensDataInterpreter::lenses = { {"8B 4C 2D 44 14 14 4B 06", "Sigma 18-35mm f/1.8 DC HSM"}, {"8C 40 2D 53 2C 3C 8E 06", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED"}, {"8D 44 5C 8E 34 3C 8F 0E", "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED"}, + {"8D 48 6E 8E 24 24 4B 0E", "Sigma 120-300mm f/2.8 DG OS HSM Sports"}, {"8E 3C 2B 5C 24 30 4B 0E", "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C"}, {"8F 40 2D 72 2C 3C 91 06", "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED"}, {"8F 48 2B 50 24 24 4B 0E", "Sigma 17-50mm f/2.8 EX DC OS HSM"}, @@ -963,7 +966,7 @@ const std::map NALensDataInterpreter::lenses = { {"92 48 24 37 24 24 94 06", "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"}, {"93 48 37 5C 24 24 95 06", "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"}, {"94 40 2D 53 2C 3C 96 06", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II"}, - {"94 48 7C 7C 24 24 4B 0E", "Sigma 180mm f/2.8 APO Macro EX DG OS"}, + {"94 48 7C 7C 24 24 4B 0E", "Sigma APO Macro 180mm f/2.8 EX DG OS HSM"}, {"95 00 37 37 2C 2C 97 06", "PC-E Nikkor 24mm f/3.5D ED"}, {"95 4C 37 37 2C 2C 97 02", "PC-E Nikkor 24mm f/3.5D ED"}, {"96 38 1F 37 34 3C 4B 06", "Sigma 12-24mm f/4.5-5.6 II DG HSM"}, @@ -975,6 +978,7 @@ const std::map NALensDataInterpreter::lenses = { {"99 40 29 62 2C 3C 9B 0E", "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED"}, {"99 48 76 76 24 24 4B 0E", "Sigma APO Macro 150mm f/2.8 EX DG OS HSM"}, {"9A 40 2D 53 2C 3C 9C 0E", "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G"}, + {"9A 4C 50 50 14 14 9C 06", "Yongnuo YN50mm f/1.8N"}, {"9B 00 4C 4C 24 24 9D 06", "PC-E Micro Nikkor 45mm f/2.8D ED"}, {"9B 54 4C 4C 24 24 9D 02", "PC-E Micro Nikkor 45mm f/2.8D ED"}, {"9B 54 62 62 0C 0C 4B 06", "Sigma 85mm f/1.4 EX DG HSM"}, @@ -997,37 +1001,54 @@ const std::map NALensDataInterpreter::lenses = { {"A1 54 55 55 0C 0C BC 06", "AF-S Nikkor 58mm f/1.4G"}, {"A2 40 2D 53 2C 3C BD 0E", "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"}, {"A2 48 5C 80 24 24 A4 0E", "AF-S Nikkor 70-200mm f/2.8G ED VR II"}, + {"A3 38 5C 8E 34 40 CE 0E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED"}, + {"A3 38 5C 8E 34 40 CE 8E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED VR"}, {"A3 3C 29 44 30 30 A5 0E", "AF-S Nikkor 16-35mm f/4G ED VR"}, {"A3 3C 5C 8E 30 3C 4B 0E", "Sigma 70-300mm f/4-5.6 DG OS"}, {"A4 40 2D 8E 2C 40 BF 0E", "AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR"}, {"A4 47 2D 50 24 34 4B 0E", "Sigma 18-50mm f/2.8-4.5 DC OS HSM"}, {"A4 48 5C 80 24 24 CF 0E", "AF-S Nikkor 70-200mm f/2.8E FL ED VR"}, + {"A4 48 5C 80 24 24 CF 4E", "AF-S Nikkor 70-200mm f/2.8E FL ED VR"}, {"A4 54 37 37 0C 0C A6 06", "AF-S Nikkor 24mm f/1.4G ED"}, {"A5 40 2D 88 2C 40 4B 0E", "Sigma 18-250mm f/3.5-6.3 DC OS HSM"}, {"A5 40 3C 8E 2C 3C A7 0E", "AF-S Nikkor 28-300mm f/3.5-5.6G ED VR"}, {"A5 4C 44 44 14 14 C0 06", "AF-S Nikkor 35mm f/1.8G ED"}, {"A5 54 6A 6A 0C 0C D0 06", "AF-S Nikkor 105mm f/1.4E ED"}, {"A5 54 6A 6A 0C 0C D0 46", "AF-S Nikkor 105mm f/1.4E ED"}, + {"A6 48 2F 2F 30 30 D1 06", "PC Nikkor 19mm f/4E ED"}, + {"A6 48 2F 2F 30 30 D1 46", "PC Nikkor 19mm f/4E ED"}, {"A6 48 37 5C 24 24 4B 06", "Sigma 24-70mm f/2.8 IF EX DG HSM"}, - {"A6 48 8E 8E 24 24 A8 0E", "AF-S VR Nikkor 300mm f/2.8G IF-ED II"}, + {"A6 48 8E 8E 24 24 A8 0E", "AF-S Nikkor 300mm f/2.8G IF-ED VR II"}, {"A6 48 98 98 24 24 C1 0E", "AF-S Nikkor 400mm f/2.8E FL ED VR"}, {"A7 3C 53 80 30 3C C2 0E", "AF-S DX Nikkor 55-200mm f/4-5.6G ED VR II"}, + {"A7 40 11 26 2C 34 D2 06", "AF-S Fisheye Nikkor 8-15mm f/3.5-4.5E ED"}, + {"A7 40 11 26 2C 34 D2 46", "AF-S Fisheye Nikkor 8-15mm f/3.5-4.5E ED"}, {"A7 49 80 A0 24 24 4B 06", "Sigma APO 200-500mm f/2.8 EX DG"}, {"A7 4B 62 62 2C 2C A9 0E", "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"}, + {"A8 38 18 30 34 3C D3 0E", "AF-P DX Nikkor 10-20mm f/4.5-5.6G VR"}, {"A8 38 18 30 34 3C D3 8E", "AF-P DX Nikkor 10-20mm f/4.5-5.6G VR"}, - {"A8 48 80 98 30 30 AA 0E", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED II"}, + {"A8 48 80 98 30 30 AA 0E", "AF-S Zoom-Nikkor 200-400mm f/4G IF-ED VR II"}, {"A8 48 8E 8E 30 30 C3 0E", "AF-S Nikkor 300mm f/4E PF ED VR"}, {"A8 48 8E 8E 30 30 C3 4E", "AF-S Nikkor 300mm f/4E PF ED VR"}, + {"A9 48 7C 98 30 30 D4 0E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR"}, {"A9 48 7C 98 30 30 D4 4E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR"}, {"A9 4C 31 31 14 14 C4 06", "AF-S Nikkor 20mm f/1.8G ED"}, {"A9 54 80 80 18 18 AB 0E", "AF-S Nikkor 200mm f/2G ED VR II"}, {"AA 3C 37 6E 30 30 AC 0E", "AF-S Nikkor 24-120mm f/4G ED VR"}, + {"AA 48 37 5C 24 24 C5 0E", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, {"AA 48 37 5C 24 24 C5 4E", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, + {"AA 48 88 A4 3C 3C D5 0E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR + 1.4x TC"}, {"AA 48 88 A4 3C 3C D5 4E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR + 1.4x TC"}, {"AB 3C A0 A0 30 30 C6 4E", "AF-S Nikkor 500mm f/4E FL ED VR"}, - {"AC 38 53 8E 34 3C AE 0E", "AF-S DX VR Nikkor 55-300mm f/4.5-5.6G ED"}, + {"AB 44 5C 8E 34 3C D6 0E", "AF-P Nikkor 70-300mm f/4.5-5.6E ED VR"}, + {"AB 44 5C 8E 34 3C D6 CE", "AF-P Nikkor 70-300mm f/4.5-5.6E ED VR"}, + {"AC 38 53 8E 34 3C AE 0E", "AF-S DX Nikkor 55-300mm f/4.5-5.6G ED VR"}, {"AC 3C A6 A6 30 30 C7 4E", "AF-S Nikkor 600mm f/4E FL ED VR"}, + {"AC 54 3C 3C 0C 0C D7 06", "AF-S Nikkor 28mm f/1.4E ED"}, + {"AC 54 3C 3C 0C 0C D7 46", "AF-S Nikkor 28mm f/1.4E ED"}, {"AD 3C 2D 8E 2C 3C AF 0E", "AF-S DX Nikkor 18-300mm f/3.5-5.6G ED VR"}, + {"AD 3C A0 A0 3C 3C D8 0E", "AF-S Nikkor 500mm f/5.6E PF ED VR"}, + {"AD 3C A0 A0 3C 3C D8 4E", "AF-S Nikkor 500mm f/5.6E PF ED VR"}, {"AD 48 28 60 24 30 C8 0E", "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"}, {"AD 48 28 60 24 30 C8 4E", "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"}, {"AE 3C 80 A0 3C 3C C9 0E", "AF-S Nikkor 200-500mm f/5.6E ED VR"}, @@ -1039,7 +1060,7 @@ const std::map NALensDataInterpreter::lenses = { {"B1 48 48 48 24 24 B3 06", "AF-S DX Micro Nikkor 40mm f/2.8G"}, {"B2 48 5C 80 30 30 B4 0E", "AF-S Nikkor 70-200mm f/4G ED VR"}, {"B3 4C 62 62 14 14 B5 06", "AF-S Nikkor 85mm f/1.8G"}, - {"B4 40 37 62 2C 34 B6 0E", "AF-S VR Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, + {"B4 40 37 62 2C 34 B6 0E", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED VR"}, {"B5 4C 3C 3C 14 14 B7 06", "AF-S Nikkor 28mm f/1.8G"}, {"B6 3C B0 B0 3C 3C B8 0E", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, {"B6 3C B0 B0 3C 3C B8 4E", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, @@ -1048,8 +1069,11 @@ const std::map NALensDataInterpreter::lenses = { {"B8 40 2D 44 2C 34 BA 06", "AF-S Nikkor 18-35mm f/3.5-4.5G ED"}, {"BF 3C 1B 1B 30 30 01 04", "Irix 11mm f/4 Firefly"}, {"BF 4E 26 26 1E 1E 01 04", "Irix 15mm f/2.4 Firefly"}, + {"C1 48 24 37 24 24 4B 46", "Sigma 14-24mm f/2.8 DG HSM | A"}, + {"C2 4C 24 24 14 14 4B 06", "Sigma 14mm f/1.8 DG HSM | A"}, {"C3 34 68 98 38 40 4B 4E", "Sigma 100-400mm f/5-6.3 DG OS HSM | C"}, {"C8 54 62 62 0C 0C 4B 46", "Sigma 85mm f/1.4 DG HSM | A"}, + {"C9 48 37 5C 24 24 4B 4E", "Sigma 24-70mm f/2.8 DG OS HSM | A"}, {"CC 4C 50 68 14 14 4B 06", "Sigma 50-100mm f/1.8 DC HSM | A"}, {"CD 3D 2D 70 2E 3C 4B 0E", "Sigma 18-125mm f/3.8-5.6 DC OS HSM"}, {"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"}, @@ -1058,7 +1082,10 @@ const std::map NALensDataInterpreter::lenses = { {"DC 48 19 19 24 24 4B 06", "Sigma 10mm f/2.8 EX DC HSM Fisheye"}, {"DE 54 50 50 0C 0C 4B 06", "Sigma 50mm f/1.4 EX DG HSM"}, {"E0 3C 5C 8E 30 3C 4B 06", "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"}, + {"E0 40 2D 98 2C 41 DF 4E", "Tamron AF 18-400mm f/3.5-6.3 Di II VC HLD (B028)"}, + {"E1 40 19 36 2C 35 DF 4E", "Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)"}, {"E1 58 37 37 14 14 1C 02", "Sigma 24mm f/1.8 EX DG Aspherical Macro"}, + {"E2 47 5C 80 24 24 DF 4E", "Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)"}, {"E3 40 76 A6 38 40 DF 4E", "Tamron SP 150-600mm f/5-6.3 Di VC USD G2"}, {"E3 54 50 50 24 24 35 02", "Sigma Macro 50mm f/2.8 EX DG"}, {"E4 54 64 64 24 24 DF 0E", "Tamron SP 90mm f/2.8 Di VC USD Macro 1:1 (F017)"}, diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 4d9a31b6f..0968271e5 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -937,6 +937,7 @@ public: choices.insert (p_t (256 * 8 + 61, "HD PENTAX-D FA 28-105mm f/3.5-5.6 ED DC WR")); choices.insert (p_t (256 * 8 + 62, "HD PENTAX-D FA 24-70mm f/2.8 ED SDM WR")); choices.insert (p_t (256 * 8 + 63, "HD PENTAX-D FA 15-30mm f/2.8 ED SDM WR")); + choices.insert (p_t (256 * 8 + 64, "HD PENTAX-D FA* 50mm f/1.4 SDM AW")); choices.insert (p_t (256 * 8 + 197, "HD PENTAX-DA 55-300mm f/4.5-6.3 ED PLM WR RE")); choices.insert (p_t (256 * 8 + 198, "smc PENTAX-DA L 18-50mm f/4-5.6 DC WR RE")); choices.insert (p_t (256 * 8 + 199, "HD PENTAX-DA 18-50mm f/4-5.6 DC WR RE")); diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index 834d436f9..76ed788c2 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -818,6 +818,7 @@ public: {2672, "Minolta AF 24-105mm f/3.5-4.5 (D)"}, {3046, "Metabones Canon EF Speed Booster"}, {4567, "Tokina 70-210mm f/4-5.6"}, + {4570, "Tamron AF 35-135mm f/3.5-4.5"}, {4571, "Vivitar 70-210mm f/4.5-5.6"}, {4574, "2x Teleconverter or Tamron or Tokina Lens"}, {4574, "Tamron SP AF 90mm f/2.5"}, @@ -851,6 +852,7 @@ public: {6553, "Sony FE 12-24mm f/4 G"}, {6553, "Sony FE 90mm f/2.8 Macro G OSS"}, {6553, "Sony E 18-50mm f/4-5.6"}, + {6553, "Sony FE 24mm f/1.4 GM"}, {6553, "Sony FE 24-105mm f/4 G OSS"}, {6553, "Sony E PZ 18-200mm f/3.5-6.3 OSS"}, {6553, "Sony FE 55mm f/1.8 ZA"}, @@ -874,20 +876,26 @@ public: {6553, "Sony FE 100-400mm f/4.5-5.6 GM OSS"}, {6553, "Sony FE 70-200mm f/2.8 GM OSS"}, {6553, "Sony FE 16-35mm f/2.8 GM"}, + {6553, "Sony FE 400mm f/2.8 GM OSS"}, {6553, "Sony E 18-135mm f/3.5-5.6 OSS"}, {6553, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter"}, {6553, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter"}, {6553, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter"}, {6553, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter"}, + {6553, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter"}, + {6553, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter"}, {6553, "Samyang AF 50mm f/1.4 FE"}, {6553, "Samyang AF 14mm f/2.8 FE"}, + {6553, "Samyang AF 24mm f/2.8"}, {6553, "Samyang AF 35mm f/2.8 FE"}, {6553, "Samyang AF 35mm f/1.4"}, {6553, "Sigma 19mm f/2.8 [EX] DN"}, {6553, "Sigma 30mm f/2.8 [EX] DN"}, {6553, "Sigma 60mm f/2.8 DN"}, {6553, "Sigma 30mm f/1.4 DC DN | C"}, + {6553, "Sigma 85mm f/1.4 DG HSM | A"}, {6553, "Sigma 16mm f/1.4 DC DN | C"}, + {6553, "Sigma 70mm f/2.8 DG MACRO | A"}, {6553, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, {6553, "Tamron 28-75mm f/2.8 Di III RXD"}, {6553, "Tokina Firin 20mm f/2 FE MF"}, @@ -897,6 +905,7 @@ public: {6553, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"}, {6553, "Voigtlander NOKTON 40mm f/1.2 Aspherical"}, {6553, "Voigtlander NOKTON classic 35mm f/1.4"}, + {6553, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"}, {6553, "Zeiss Touit 12mm f/2.8"}, {6553, "Zeiss Touit 32mm f/1.8"}, {6553, "Zeiss Touit 50mm f/2.8 Macro"}, @@ -904,6 +913,7 @@ public: {6553, "Zeiss Batis 85mm f/1.8"}, {6553, "Zeiss Batis 18mm f/2.8"}, {6553, "Zeiss Batis 135mm f/2.8"}, + {6553, "Zeiss Batis 40mm f/2 CF"}, {6553, "Zeiss Loxia 50mm f/2"}, {6553, "Zeiss Loxia 35mm f/2"}, {6553, "Zeiss Loxia 21mm f/2.8"}, @@ -1029,6 +1039,7 @@ public: {26721, "Minolta AF 24-105mm f/3.5-4.5 (D)"}, {30464, "Metabones Canon EF Speed Booster"}, {45671, "Tokina 70-210mm f/4-5.6"}, + {45701, "Tamron AF 35-135mm f/3.5-4.5"}, {45711, "Vivitar 70-210mm f/4.5-5.6"}, {45741, "2x Teleconverter or Tamron or Tokina Lens"}, {45741, "Tamron SP AF 90mm f/2.5"}, @@ -1062,6 +1073,7 @@ public: {65535, "Sony FE 12-24mm f/4 G"}, {65535, "Sony FE 90mm f/2.8 Macro G OSS"}, {65535, "Sony E 18-50mm f/4-5.6"}, + {65535, "Sony FE 24mm f/1.4 GM"}, {65535, "Sony FE 24-105mm f/4 G OSS"}, {65535, "Sony E PZ 18-200mm f/3.5-6.3 OSS"}, {65535, "Sony FE 55mm f/1.8 ZA"}, @@ -1085,20 +1097,26 @@ public: {65535, "Sony FE 100-400mm f/4.5-5.6 GM OSS"}, {65535, "Sony FE 70-200mm f/2.8 GM OSS"}, {65535, "Sony FE 16-35mm f/2.8 GM"}, + {65535, "Sony FE 400mm f/2.8 GM OSS"}, {65535, "Sony E 18-135mm f/3.5-5.6 OSS"}, {65535, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter"}, {65535, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter"}, {65535, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter"}, {65535, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter"}, + {65535, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter"}, + {65535, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter"}, {65535, "Samyang AF 50mm f/1.4 FE"}, {65535, "Samyang AF 14mm f/2.8 FE"}, + {65535, "Samyang AF 24mm f/2.8"}, {65535, "Samyang AF 35mm f/2.8 FE"}, {65535, "Samyang AF 35mm f/1.4"}, {65535, "Sigma 19mm f/2.8 [EX] DN"}, {65535, "Sigma 30mm f/2.8 [EX] DN"}, {65535, "Sigma 60mm f/2.8 DN"}, {65535, "Sigma 30mm f/1.4 DC DN | C"}, + {65535, "Sigma 85mm f/1.4 DG HSM | A"}, {65535, "Sigma 16mm f/1.4 DC DN | C"}, + {65535, "Sigma 70mm f/2.8 DG MACRO | A"}, {65535, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, {65535, "Tamron 28-75mm f/2.8 Di III RXD"}, {65535, "Tokina Firin 20mm f/2 FE MF"}, @@ -1108,6 +1126,7 @@ public: {65535, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"}, {65535, "Voigtlander NOKTON 40mm f/1.2 Aspherical"}, {65535, "Voigtlander NOKTON classic 35mm f/1.4"}, + {65535, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"}, {65535, "Zeiss Touit 12mm f/2.8"}, {65535, "Zeiss Touit 32mm f/1.8"}, {65535, "Zeiss Touit 50mm f/2.8 Macro"}, @@ -1115,6 +1134,7 @@ public: {65535, "Zeiss Batis 85mm f/1.8"}, {65535, "Zeiss Batis 18mm f/2.8"}, {65535, "Zeiss Batis 135mm f/2.8"}, + {65535, "Zeiss Batis 40mm f/2 CF"}, {65535, "Zeiss Loxia 50mm f/2"}, {65535, "Zeiss Loxia 35mm f/2"}, {65535, "Zeiss Loxia 21mm f/2.8"}, @@ -1190,7 +1210,8 @@ public: choices.insert (p_t (32791, "Sony E 16-70mm f/4 ZA OSS")); choices.insert (p_t (32792, "Sony E 10-18mm f/4 OSS")); choices.insert (p_t (32793, "Sony E PZ 16-50mm f/3.5-5.6 OSS")); - choices.insert (p_t (32794, "Sony FE 35mm f/2.8 ZA")); + choices.insert (p_t (32794, "Sony FE 35mm f/2.8 ZA or Samyang AF 24mm f/2.8 FE")); + choices.insert (p_t (32794, "Samyang AF 24mm f/2.8 FE")); choices.insert (p_t (32795, "Sony FE 24-70mm f/4 ZA OSS")); choices.insert (p_t (32796, "Sony FE 85mm f/1.8")); choices.insert (p_t (32797, "Sony E 18-200mm f/3.5-6.3 OSS LE")); @@ -1200,6 +1221,7 @@ public: choices.insert (p_t (32801, "Sony FE 12-24mm f/4 G")); choices.insert (p_t (32802, "Sony FE 90mm f/2.8 Macro G OSS")); choices.insert (p_t (32803, "Sony E 18-50mm f/4-5.6")); + choices.insert (p_t (32804, "Sony FE 24mm f/1.4 GM")); choices.insert (p_t (32805, "Sony FE 24-105mm f/4 G OSS")); choices.insert (p_t (32807, "Sony E PZ 18-200mm f/3.5-6.3 OSS")); choices.insert (p_t (32808, "Sony FE 55mm f/1.8 ZA")); @@ -1223,12 +1245,15 @@ public: choices.insert (p_t (32829, "Sony FE 100-400mm f/4.5-5.6 GM OSS")); choices.insert (p_t (32830, "Sony FE 70-200mm f/2.8 GM OSS")); choices.insert (p_t (32831, "Sony FE 16-35mm f/2.8 GM")); + choices.insert (p_t (32848, "Sony FE 400mm f/2.8 GM OSS")); choices.insert (p_t (32849, "Sony E 18-135mm f/3.5-5.6 OSS")); choices.insert (p_t (33072, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter")); choices.insert (p_t (33073, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter")); choices.insert (p_t (33076, "Sony FE 100mm f/2.8 STF GM OSS (macro mode)")); choices.insert (p_t (33077, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter")); choices.insert (p_t (33078, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter")); + choices.insert (p_t (33079, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter")); + choices.insert (p_t (33080, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter")); choices.insert (p_t (49201, "Zeiss Touit 12mm f/2.8")); choices.insert (p_t (49202, "Zeiss Touit 32mm f/1.8")); choices.insert (p_t (49203, "Zeiss Touit 50mm f/2.8 Macro")); @@ -1236,6 +1261,7 @@ public: choices.insert (p_t (49217, "Zeiss Batis 85mm f/1.8")); choices.insert (p_t (49218, "Zeiss Batis 18mm f/2.8")); choices.insert (p_t (49219, "Zeiss Batis 135mm f/2.8")); + choices.insert (p_t (49220, "Zeiss Batis 40mm f/2 CF")); choices.insert (p_t (49232, "Zeiss Loxia 50mm f/2")); choices.insert (p_t (49233, "Zeiss Loxia 35mm f/2")); choices.insert (p_t (49234, "Zeiss Loxia 21mm f/2.8")); @@ -1255,14 +1281,17 @@ public: choices.insert (p_t (50492, "Sigma 24-105mm f/4 DG OS HSM | A + MC-11")); choices.insert (p_t (50493, "Sigma 17-70mm f/2.8-4 DC MACRO OS HSM | C + MC-11")); choices.insert (p_t (50495, "Sigma 50-100mm f/1.8 DC HSM | A + MC-11")); + choices.insert (p_t (50499, "Sigma 85mm f/1.4 DG HSM | A")); choices.insert (p_t (50501, "Sigma 100-400mm f/5-6.3 DG OS HSM | C + MC-11")); choices.insert (p_t (50503, "Sigma 16mm f/1.4 DC DN | C")); + choices.insert (p_t (50513, "Sigma 70mm f/2.8 DG MACRO | A")); choices.insert (p_t (50992, "Voigtlander SUPER WIDE-HELIAR 15mm f/4.5 III")); choices.insert (p_t (50993, "Voigtlander HELIAR-HYPER WIDE 10mm f/5.6")); choices.insert (p_t (50994, "Voigtlander ULTRA WIDE-HELIAR 12mm f/5.6 III")); choices.insert (p_t (50995, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical")); choices.insert (p_t (50996, "Voigtlander NOKTON 40mm f/1.2 Aspherical")); choices.insert (p_t (50997, "Voigtlander NOKTON classic 35mm f/1.4")); + choices.insert (p_t (50999, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical")); choices.insert (p_t (51505, "Samyang AF 14mm f/2.8 FE or Samyang AF 35mm f/2.8 FE")); choices.insert (p_t (51505, "Samyang AF 35mm f/2.8 FE")); choices.insert (p_t (51507, "Samyang AF 35mm f/1.4")); From 561ea418562e6353a6b7032f2de7a7263a0d622d Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 12 Nov 2018 01:04:14 +0100 Subject: [PATCH 126/348] Updated French translation + minor change in Preferences window (no issue) --- rtdata/languages/Francais | 256 +++++++++++++++++++------------------- rtdata/languages/default | 2 +- rtgui/preferences.cc | 9 +- 3 files changed, 134 insertions(+), 133 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index adc0528ea..34c74ea67 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -5,6 +5,7 @@ ABOUT_TAB_CREDITS;Crédits ABOUT_TAB_LICENSE;Licence ABOUT_TAB_RELEASENOTES;Notes de version ABOUT_TAB_SPLASH;Splash +ADJUSTER_RESET_TO_DEFAULT;Clic - réinitialise à la valeur par défaut.\nCtrl+clic - réinitialise à la valeur initiale. 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 @@ -40,6 +41,10 @@ DYNPROFILEEDITOR_DELETE;Supprimer DYNPROFILEEDITOR_EDIT;Modifier DYNPROFILEEDITOR_EDIT_RULE;Modifier une règle de Profil Dynamique DYNPROFILEEDITOR_ENTRY_TOOLTIP;La correspondance est insensible à la casse.\nUtilisez le préfix "re:" pour entrer\nune expression régulière. +DYNPROFILEEDITOR_IMGTYPE_ANY;Tout +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_MOVE_DOWN;Déplacer vers le bas DYNPROFILEEDITOR_MOVE_UP;Déplacer vers le haut DYNPROFILEEDITOR_NEW;Nouveau @@ -53,6 +58,7 @@ EXIFFILTER_CAMERA;Appareil photo EXIFFILTER_EXPOSURECOMPENSATION;Compensation d'exposition (EV) EXIFFILTER_FILETYPE;Type de fichier EXIFFILTER_FOCALLEN;Longueur focale +EXIFFILTER_IMAGETYPE;Type d'image EXIFFILTER_ISO;ISO EXIFFILTER_LENS;Objectif EXIFFILTER_METADATAFILTER;Activer les filtres sur les Métadonnées @@ -111,6 +117,8 @@ FILEBROWSER_AUTOFLATFIELD;Champ Uniforme auto FILEBROWSER_BROWSEPATHBUTTONHINT;Cliquez pour parcourir le chemin saisi FILEBROWSER_BROWSEPATHHINT;Saisissez le chemin à parcourir\nCtrl-O pour placer le focus sur le champ de saisie.\nEntrée / Ctrl-Entrée pour y naviguer;\nEsc pour effacer les modifications.\nShift-Esc pour enlever le focus.\n\n\nRaccourcis pour les chemins:\n ~ - le dossier utilisateur\n ! - le dossier Images de l'utilisateur FILEBROWSER_CACHE;Cache +FILEBROWSER_CACHECLEARFROMFULL;Vider tout y compris les profils mis en cache +FILEBROWSER_CACHECLEARFROMPARTIAL;Vider tout sauf les profils mis en cache FILEBROWSER_CLEARPROFILE;Remettre le profil à zéro FILEBROWSER_COLORLABEL_TOOLTIP;Label couleur\n\nUtilisez le menu déroulant ou le raccourci clavier:\nShift-Ctrl-0 Pas de couleur\nShift-Ctrl-1 Rouge\nShift-Ctrl-2 Jaune\nShift-Ctrl-3 Vert\nShift-Ctrl-4 Bleu\nShift-Ctrl-5 Pourpre FILEBROWSER_COPYPROFILE;Copier le profil @@ -225,6 +233,7 @@ GENERAL_NONE;Aucun GENERAL_OK;OK GENERAL_OPEN;Ouvrir GENERAL_PORTRAIT;Portrait +GENERAL_RESET;Réinitialiser GENERAL_SAVE;Enregistrer GENERAL_SAVE_AS;Enregistrer sous... GENERAL_SLIDER;Curseur @@ -237,6 +246,7 @@ HISTOGRAM_TOOLTIP_CHRO;Montrer/Cacher l'histogramme de Chromaticité HISTOGRAM_TOOLTIP_FULL;Basculer la vue de l'histogramme : complet (activé) / zoomé (désactivé) HISTOGRAM_TOOLTIP_G;Montrer/cacher l'histogramme VERT HISTOGRAM_TOOLTIP_L;Montrer/cacher l'histogramme Luminance CIELAB +HISTOGRAM_TOOLTIP_MODE;Bascule entre une échelle linéaire, linéaire-log et log-log de l'histogramme. HISTOGRAM_TOOLTIP_R;Montrer/cacher l'histogramme ROUGE HISTOGRAM_TOOLTIP_RAW;Montrer/Cacher l'histogramme des données RAW HISTORY_CHANGED;Changé @@ -476,7 +486,9 @@ HISTORY_MSG_231;N&B - Courbe 'Avant' HISTORY_MSG_232;N&B - Type de courbe 'Avant' HISTORY_MSG_233;N&B - Courbe 'Après' HISTORY_MSG_234;N&B - Type de courbe 'Après' +HISTORY_MSG_235;N&B - Mixeur de Canaux - Auto HISTORY_MSG_236;--inutilisé-- +HISTORY_MSG_237;N&B - Mixeur de Canaux HISTORY_MSG_238;FD - Étendu HISTORY_MSG_239;FD - Force HISTORY_MSG_240;FD - Centre @@ -512,6 +524,7 @@ HISTORY_MSG_269;Virage Partiel - HL - Rouge HISTORY_MSG_270;Virage Partiel - HL - Vert HISTORY_MSG_271;Virage Partiel - HL - Bleu HISTORY_MSG_272;Virage Partiel - Balance +HISTORY_MSG_273;Virage Partiel - Balance Couleur O/TM/HL HISTORY_MSG_274;Virage Partiel - Saturation des ombres HISTORY_MSG_275;Virage Partiel - Saturation des HL HISTORY_MSG_276;Virage Partiel - Opacité @@ -630,6 +643,7 @@ HISTORY_MSG_388;O - Résiduel - BC vert moyen HISTORY_MSG_389;O - Résiduel - BC bleu moyen HISTORY_MSG_390;O - Résiduel - BC vert bas HISTORY_MSG_391;O - Résiduel - BC bleu bas +HISTORY_MSG_392;O - Résiduel - Balance Couleur HISTORY_MSG_393;DCP - Table de corresp. (LUT) HISTORY_MSG_394;DCP - Exposition de base HISTORY_MSG_395;DCP - Table de base @@ -709,25 +723,65 @@ HISTORY_MSG_484;CAM02 - Yb auto scène HISTORY_MSG_485;Correction d'Objectif HISTORY_MSG_486;Corr. d'Obj. - Appareil HISTORY_MSG_487;Corr. d'Obj. - Objectif +HISTORY_MSG_488;Compression de Plage Dymanique +HISTORY_MSG_489;CPD - Détail +HISTORY_MSG_490;CPD - Quantité HISTORY_MSG_491;Balances des Blancs HISTORY_MSG_492;Courbes RVB HISTORY_MSG_493;Ajustements L*a*b* +HISTORY_MSG_CLAMPOOG;Tronquer les couleurs hors gamut HISTORY_MSG_COLORTONING_LABGRID_VALUE;Virage Partiel - Correction couleur +HISTORY_MSG_COLORTONING_LABREGION_AB;Virage Partiel - Correction couleur +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;Virage Partiel - Masque C +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;Virage Partiel - Masque T +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;Virage Partiel - Luminosité +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;Virage Partiel - Masque L +HISTORY_MSG_COLORTONING_LABREGION_LIST;Virage Partiel - Liste +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;Virage Partiel - Saturation +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;Virage Partiel - Montrer le masque +HISTORY_MSG_DEHAZE_DEPTH;EB - Profondeur +HISTORY_MSG_DEHAZE_ENABLED;Élimination de la Brume +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;EB - Montrer carte de profondeur +HISTORY_MSG_DEHAZE_STRENGTH;EB - Force +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Double dématriçage - Seuil auto +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Double dématriçage - Seuil de contraste HISTORY_MSG_HISTMATCHING;Calcul Courbe Tonale svt Aperçu +HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Sortie - Primaires +HISTORY_MSG_ICM_OUTPUT_TEMP;Sortie - ICC-v4 illuminant D +HISTORY_MSG_ICM_OUTPUT_TYPE;Sortie - Type +HISTORY_MSG_ICM_WORKING_GAMMA;Travail - Gamma +HISTORY_MSG_ICM_WORKING_SLOPE;Travail - Pente +HISTORY_MSG_ICM_WORKING_TRC_METHOD;Travail - Méthode TRC 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_MSG_MICROCONTRAST_CONTRAST;Microcontraste - Seuil de contraste +HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Méthode de dématriçage pour les mouvements +HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Direction du filtre de bruit de ligne +HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF +HISTORY_MSG_PRSHARPEN_CONTRAST;NPR - Seuil de contraste +HISTORY_MSG_RAWCACORR_AUTOIT;A.C. Raw - Itérations +HISTORY_MSG_RAWCACORR_COLORSHIFT;A.C. Raw - Éviter les dérives de teinte +HISTORY_MSG_RAW_BORDER;Bord Raw +HISTORY_MSG_RESIZE_ALLOWUPSCALING;Redim. - Autoriser l'agrandissement +HISTORY_MSG_SHARPENING_CONTRAST;Netteté - Seuil de contraste +HISTORY_MSG_SH_COLORSPACE;O/HL - Espace couleur +HISTORY_MSG_SOFTLIGHT_ENABLED;Lumière douce +HISTORY_MSG_SOFTLIGHT_STRENGTH;Lumière douce - Force +HISTORY_MSG_TM_FATTAL_ANCHOR;CPD - Ancre HISTORY_NEWSNAPSHOT;Ajouter HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s HISTORY_SNAPSHOT;Capture HISTORY_SNAPSHOTS;Captures ICCPROFCREATOR_ADD_PARAM_IN_DESC;Ajoute le paramètre Gamma et Pente (Slope) à la fin de la description ICCPROFCREATOR_COPYRIGHT;Copyright: +ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Réinitialise au copyright par défaut, attribué à "RawTherapee, CC0" ICCPROFCREATOR_CUSTOM;Personnalisé ICCPROFCREATOR_DESCRIPTION;Description: +ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Ajouter les valeurs gamma et pente à la description ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Laisser vide pour que mettre la description par défaut ICCPROFCREATOR_GAMMA;Gamma ICCPROFCREATOR_ICCVERSION;Version du profil généré: @@ -881,6 +935,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Affichage du Masque du focus\nRaccourci: canal Vert\nRaccourci: g MAIN_TOOLTIP_PREVIEWL;Affichage de la Luminosité\nRaccourci: v\n\n0.299*R + 0.587*V + 0.114*B MAIN_TOOLTIP_PREVIEWR;Affichage du canal Rouge\nRaccourci: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Prévisualiser le masque de contraste de netteté.\nRaccourci: Aucun\n\nNe fonctionne que si l'outil Netteté est activé et pour un zomm >= 100%. MAIN_TOOLTIP_QINFO;Informations rapide sur l'image\nRaccourci: i MAIN_TOOLTIP_SHOWHIDELP1;Montrer/Cacher le panneau gauche\nRaccourci: l MAIN_TOOLTIP_SHOWHIDERP1;Afficher/Cacher le panneau droit\nRaccourci: Alt-l @@ -918,6 +973,7 @@ PARTIALPASTE_CROP;Recadrage PARTIALPASTE_DARKFRAMEAUTOSELECT;Sélection auto de la Trame Noire PARTIALPASTE_DARKFRAMEFILE;Fichier de Trame Noire PARTIALPASTE_DEFRINGE;Aberration chromatique +PARTIALPASTE_DEHAZE;Élimination de la Brume PARTIALPASTE_DETAILGROUP;Détail PARTIALPASTE_DIALOGLABEL;Collage partiel de profil de traitement PARTIALPASTE_DIRPYRDENOISE;Réduction du bruit @@ -951,13 +1007,16 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Filtrage des pixels morts PARTIALPASTE_PREPROCESS_GREENEQUIL;Équilibrage du vert PARTIALPASTE_PREPROCESS_HOTPIXFILT;Filtrage des pixels chauds PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtre de bruit de ligne +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF PARTIALPASTE_PRSHARPENING;Netteté post-redim. PARTIALPASTE_RAWCACORR_AUTO;Corr. auto. de l'aberr. chromatique -PARTIALPASTE_RAWCACORR_CAREDBLUE;Aberr. chromatique rouge et bleu +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;A.C. Raw - Éviter les dérives couleurs +PARTIALPASTE_RAWCACORR_CAREDBLUE;A.C. Raw - Rouge et bleu PARTIALPASTE_RAWEXPOS_BLACK;Niveaux de noir PARTIALPASTE_RAWEXPOS_LINEAR;Correction du point blanc PARTIALPASTE_RAWEXPOS_PRESER;Préservation des hautes humières PARTIALPASTE_RAWGROUP;Réglages RAW +PARTIALPASTE_RAW_BORDER;Bord Raw PARTIALPASTE_RAW_DCBENHANCE;Amélioration de DCB PARTIALPASTE_RAW_DCBITERATIONS;Nombre d'itération de DCB PARTIALPASTE_RAW_DMETHOD;Algorithme de dématriçage @@ -973,6 +1032,8 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Ombres/Hautes lumières PARTIALPASTE_SHARPENEDGE;Bords PARTIALPASTE_SHARPENING;Netteté PARTIALPASTE_SHARPENMICRO;Microcontraste +PARTIALPASTE_SOFTLIGHT;Lumière douce +PARTIALPASTE_TM_FATTAL;Compression de plage dynamique PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Correction du vignettage PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette @@ -988,6 +1049,11 @@ PREFERENCES_BEHAVIOR;Comportement PREFERENCES_BEHSETALL;Tout à 'Remplace' PREFERENCES_BEHSETALLHINT;Règle tous les paramètres sur le mode Remplace.\nLa modification des paramètres dans le panneau d'édition en par lot sera absolue, les valeurs réelles seront affichées PREFERENCES_BLACKBODY;Tungstène +PREFERENCES_CACHECLEAR;Vider +PREFERENCES_CACHECLEAR_ALL;Vider tous les fichiers mis en cache : +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Vider tous les fichiers mis en cache excepté les profils de traitement : +PREFERENCES_CACHECLEAR_ONLYPROFILES;Vider seulement les profils de traitement mis en cache : +PREFERENCES_CACHECLEAR_SAFETY;Seuls les fichiers mis en cache sont effacés. Les profils de traitement enregitrés à côté des images sources ne sont pas touchés. PREFERENCES_CACHEMAXENTRIES;Nombre maximal d'éléments dans le Cache PREFERENCES_CACHEOPTS;Options du Cache PREFERENCES_CACHETHUMBHEIGHT;Hauteur maximale des vignettes @@ -1001,7 +1067,7 @@ 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_AUTO_FIT;Zoomer automatiquement sur la zone recadrée lorsque vous double-cliquez sur l'image de prévisualisation PREFERENCES_CROP_GUIDES;Guides affichés en dehors de l'édition du recadrage PREFERENCES_CROP_GUIDES_FRAME;Cadre PREFERENCES_CROP_GUIDES_FULL;Original @@ -1066,8 +1132,8 @@ PREFERENCES_GREYSC;Luminance Yb de la scène (%) PREFERENCES_GREYSC18;Yb=18 CIE L#50 PREFERENCES_GREYSCA;Automatique PREFERENCES_HISTOGRAMPOSITIONLEFT;Histogramme dans le panneau de gauche -PREFERENCES_HISTOGRAMWORKING;Utiliser le profil de travail pour l'histograme principal et le Navigateur -PREFERENCES_HISTOGRAM_TOOLTIP;Si activé, le profil couleur de travail est utilisé pour les données d'histograme et le panneau Navigateur, sinon le profil de travail de sortie "gamma-corrigé" est utilisé. +PREFERENCES_HISTOGRAMWORKING;Utiliser le profil de travail pour l'histogramme principal et le Navigateur +PREFERENCES_HISTOGRAM_TOOLTIP;Si activé, le profil couleur de travail est utilisé pour les données d'histogramme et le panneau Navigateur, sinon le profil de travail de sortie "gamma-corrigé" est utilisé. PREFERENCES_HLTHRESHOLD;Seuil pour le dépassement de domaine supérieur PREFERENCES_ICCDIR;Dossier des profils ICC PREFERENCES_IMG_RELOAD_NEEDED;Ces changements nécessitent un rechargement de l'image (ou l'ouverture d'une autre image) pour prendre effet. @@ -1113,6 +1179,8 @@ PREFERENCES_PARSEDEXTADDHINT;Tapez une extension et cliquez ce bouton pour l'ajo PREFERENCES_PARSEDEXTDELHINT;Supprime de la liste les extensions sélectionnées PREFERENCES_PARSEDEXTDOWNHINT;Déplacer l'extension sélectionnée plus bas dans la liste. PREFERENCES_PARSEDEXTUPHINT;Déplacer l'extension sélectionnée plus haut dans la liste. +PREFERENCES_PERFORMANCE_THREADS;Unités d'exécution (Threads) +PREFERENCES_PERFORMANCE_THREADS_LABEL;Nombre maximum d'unité d'exécution pour la Réduction de Bruit et les Niveaux d'Ondelettes (0 = Automatique) PREFERENCES_PREVDEMO;Méthode de Dématriçage de l'Aperçu PREFERENCES_PREVDEMO_FAST;Rapide PREFERENCES_PREVDEMO_LABEL;Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%: @@ -1159,8 +1227,13 @@ PREFERENCES_TAB_COLORMGR;Gestion des couleurs PREFERENCES_TAB_DYNAMICPROFILE;Règles de Profil Dynamique PREFERENCES_TAB_GENERAL;Général PREFERENCES_TAB_IMPROC;Traitement de l'image +PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Sons PREFERENCES_THEME;Thème +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Prévisualisation JPEG incluse +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image à montrer +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Rendu Neutre des données Raw +PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG inclus si pleine taille, rendu Neutre des données Raw sinon PREFERENCES_TP_LABEL;Panneau des outils: PREFERENCES_TP_VSCROLLBAR;Cacher la barre de défilement verticale PREFERENCES_TUNNELMETADATA;Copier les données Exif/IPTC/XMP tel quel dans le fichier de sortie @@ -1277,6 +1350,8 @@ TP_BWMIX_MET;Méthode TP_BWMIX_MET_CHANMIX;Mixeur de Canaux TP_BWMIX_MET_DESAT;Désaturation TP_BWMIX_MET_LUMEQUAL;Égaliseur de Luminance +TP_BWMIX_MIXC;Mixeur de cannaux +TP_BWMIX_NEUTRAL;Réinitialiser TP_BWMIX_RGBLABEL;R: %1%% V: %2%% B: %3%% Total: %4%% TP_BWMIX_RGBLABEL_HINT;Coefficients RVB finaux qui tiennent compte de toutes les options du mixeur\nTotal affiche la somme des valeurs RVB actuellement appliqué:\n- toujours 100% en mode relatif\n- supérieur (plus clair) ou inférieur (plus sombre) à 100% en mode absolu. TP_BWMIX_RGB_TOOLTIP;Mixe les canaux RVB. Utilisez les Préréglages pour vous guider.\nAttention aux valeurs négatives qui peuvent causer des artefacts ou un comportement erratique. @@ -1410,6 +1485,16 @@ 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_LABREGIONS;Régions de correction L*a*b* +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;T +TP_COLORTONING_LABREGION_LIGHTNESS;Luminosité +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Correction +TP_COLORTONING_LABREGION_MASK;Masque +TP_COLORTONING_LABREGION_SATURATION;Saturation +TP_COLORTONING_LABREGION_SHOWMASK;Montrer le masque 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é @@ -1458,6 +1543,10 @@ TP_DARKFRAME_LABEL;Trame Noire TP_DEFRINGE_LABEL;Aberration chromatique TP_DEFRINGE_RADIUS;Rayon TP_DEFRINGE_THRESHOLD;Seuil +TP_DEHAZE_DEPTH;Profondeur +TP_DEHAZE_LABEL;Élimination de la Brume +TP_DEHAZE_SHOW_DEPTH_MAP;Montrer la Carte de Profondeur +TP_DEHAZE_STRENGTH;Force 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 ! @@ -1546,6 +1635,7 @@ TP_EXPOSURE_AUTOLEVELS;Niveaux Auto TP_EXPOSURE_AUTOLEVELS_TIP;Bascule l'usage de Niveaux automatiques afin de régler automatiquement les valeurs basé sur l'analyse de l'image\nActive la Reconstruction des Hautes Lumières si nécessaire. TP_EXPOSURE_BLACKLEVEL;Noir TP_EXPOSURE_BRIGHTNESS;Luminosité +TP_EXPOSURE_CLAMPOOG;Tronquer les couleurs hors gamut TP_EXPOSURE_CLIP;Rognage % TP_EXPOSURE_CLIP_TIP;La fraction de pixels que l'outil Niveaux Auto passera en dehors du domaine TP_EXPOSURE_COMPRHIGHLIGHTS;Compression hautes lumières @@ -1730,10 +1820,19 @@ TP_PREPROCESS_HOTPIXFILT;Filtrer les pixels chauds TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Essaie de supprimer les pixels chauds TP_PREPROCESS_LABEL;Traitement pre-dématriçage TP_PREPROCESS_LINEDENOISE;Filtre de bruit de ligne +TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction +TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Toutes +TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontale +TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontale seulement sur les lignes PDAF +TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Verticale TP_PREPROCESS_NO_FOUND;Aucun trouvé +TP_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF +TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Essaie de supprimer les bandes de bruit causées par les pixel PDAF sur le capteur, arrivant sur certains mirrorless Sony cameras avec des scènes en contre-jour avec un flare visible. TP_PRSHARPENING_LABEL;Netteté post-redimensionnement TP_PRSHARPENING_TOOLTIP;Augmente la netteté de l'image après le redimentionnement. Ne fonctionne que si la méthode de redimensionnement "Lanczos" est utilisé. Il est impossible de prévisualiser les effets de cet outil. Cf. RawPedia pour les instructions d'utilisation. TP_RAWCACORR_AUTO;Correction automatique +TP_RAWCACORR_AUTOIT;Itérations +TP_RAWCACORR_AVOIDCOLORSHIFT;Éviter les dérives couleurs TP_RAWCACORR_CABLUE;Bleu TP_RAWCACORR_CARED;Rouge TP_RAWCACORR_CASTR;Force @@ -1750,16 +1849,24 @@ TP_RAWEXPOS_PRESER;Préservation des HL TP_RAWEXPOS_RGB;Rouge, Vert, Bleu TP_RAWEXPOS_TWOGREEN;Lier les verts TP_RAW_1PASSMEDIUM;1-Passe (Medium) +TP_RAW_2PASS;1-passe+Fast TP_RAW_3PASSBEST;3-Passes (Meilleur) +TP_RAW_4PASS;3-passes+Fast TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE +TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;Bord TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Amélioration de DCB TP_RAW_DCBITERATIONS;Nombre d'itération de DCB +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Méthode TP_RAW_DMETHOD_PROGRESSBAR;Dématriçage %1... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Affinage du dématriçage... TP_RAW_DMETHOD_TOOLTIP;Note: IGV et LMMSE sont dédiés aux images à haut ISO +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Seuil auto +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Si la case est cochée (recommandé), RawTherapee calcul une valeur optimum basée sur les régions de "couleur unie" de l'image.\nS'il n'y en a pas ou que l'image est trop bruité, la valeur sera réglée à 0.\nPour régler la valeur manuellement, décochez la case d'abord (les valeurs raisonables dépendent de l'image). +TP_RAW_DUALDEMOSAICCONTRAST;Seuil de contraste TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Itérations pour la suppression\ndes fausses couleurs TP_RAW_FAST;Fast @@ -1778,6 +1885,9 @@ TP_RAW_NONE;Aucun (montre ce que voit le capteur) TP_RAW_PIXELSHIFT;Pixel Shift TP_RAW_PIXELSHIFTADAPTIVE;Détection adaptative TP_RAW_PIXELSHIFTBLUR;Flouter le masque de mouvement +TP_RAW_PIXELSHIFTDMETHOD;Méthode de dématriçage pour les mouvements +TP_RAW_PIXELSHIFTEPERISO;Sensibilité +TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;La valeur par défaut de 0 devrait bien fonctionner pour l'ISO de base.\nLes valeurs plus hautes augmentent la sensibilité de la détection de mouvement.\nChangez par petits incréments et observez le masque de mouvement se mettre à jour pendant votre ajustement.\nAugmentez la sensibilité pour les images sous-exposées ou à haut ISO. TP_RAW_PIXELSHIFTEQUALBRIGHT;Égaliser la luminosité des sous-images TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Égaliser par canal TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Activé: Égalise les canaux RVB individuellement.\nDésactivé: Utilise le même facteur d'égalisation pour tous les canaux. @@ -1813,6 +1923,7 @@ TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Poid Rouge&Bleu TP_RAW_PIXELSHIFTSHOWMOTION;Voir le masque de mouvement TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Voir uniquement le masque TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Affiche le masque sans l'image. +TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Applique un masque vert montrant les régions contenant du mouvement. TP_RAW_PIXELSHIFTSIGMA;Rayon de floutage TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;Le rayon par défaut de 1.0 fonctionne généralement bien pour l'ISO de base.\nAugmentez cette valeur pour les images de haut ISO, 5.0 est un bon point de départ.\nContrôlez le masque de mouvement à chaque nouvelle valeur. TP_RAW_PIXELSHIFTSMOOTH;Adoucir les transitions @@ -1821,10 +1932,12 @@ TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;Facteur DevStd Bleu TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;Facteur DevStd Vert TP_RAW_PIXELSHIFTSTDDEVFACTORRED;Facteur DevStd Rouge TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 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 TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Autoriser l'Agrandissement TP_RESIZE_APPLIESTO;S'applique à: TP_RESIZE_CROPPEDAREA;La zone recadrée TP_RESIZE_FITBOX;Boîte englobante @@ -1943,6 +2056,7 @@ TP_SHARPENEDGE_LABEL;Bords TP_SHARPENEDGE_PASSES;Itérations TP_SHARPENEDGE_THREE;Luminance uniquement TP_SHARPENING_AMOUNT;Quantité +TP_SHARPENING_CONTRAST;Seuil de contraste TP_SHARPENING_EDRADIUS;Rayon TP_SHARPENING_EDTOLERANCE;Tolérance des bords TP_SHARPENING_HALOCONTROL;Contrôle du halo @@ -1958,9 +2072,16 @@ TP_SHARPENING_RLD_ITERATIONS;Itérations TP_SHARPENING_THRESHOLD;Seuil TP_SHARPENING_USM;Masque flou (USM) TP_SHARPENMICRO_AMOUNT;Quantité +TP_SHARPENMICRO_CONTRAST;Seuil de contraste TP_SHARPENMICRO_LABEL;Microcontraste TP_SHARPENMICRO_MATRIX;Matrice 3×3 au lieu de 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformité +TP_SOFTLIGHT_LABEL;Lumière douce +TP_SOFTLIGHT_STRENGTH;Force +TP_TM_FATTAL_AMOUNT;Quantité +TP_TM_FATTAL_ANCHOR;Ancre +TP_TM_FATTAL_LABEL;Compression de Plage Dynamique +TP_TM_FATTAL_THRESHOLD;Détail TP_VIBRANCE_AVOIDCOLORSHIFT;Éviter les dérives de teinte TP_VIBRANCE_CURVEEDITOR_SKINTONES;TT TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons chair @@ -2024,7 +2145,7 @@ TP_WAVELET_CHTYPE;Méthode de chrominance TP_WAVELET_COLORT;Opacité Rouge-Vert TP_WAVELET_COMPCONT;Contraste TP_WAVELET_COMPGAMMA;Compression gamma -TP_WAVELET_COMPGAMMA_TOOLTIP;Ajuster le gamma de l'image résiduelle vous permet d'équiilibrer les données de l'histograme. +TP_WAVELET_COMPGAMMA_TOOLTIP;Ajuster le gamma de l'image résiduelle vous permet d'équiilibrer les données de l'histogramme. TP_WAVELET_COMPTM;Compression tonale TP_WAVELET_CONTEDIT;Courbe de contraste 'Après' TP_WAVELET_CONTR;Gamut @@ -2204,128 +2325,3 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: Alt-f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!DYNPROFILEEDITOR_IMGTYPE_ANY;Any -!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR -!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift -!DYNPROFILEEDITOR_IMGTYPE_STD;Standard -!EXIFFILTER_IMAGETYPE;Image type -!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles -!GENERAL_RESET;Reset -!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_235;B&W - CM - Auto -!HISTORY_MSG_237;B&W - CM -!HISTORY_MSG_273;CT - Color Balance SMH -!HISTORY_MSG_392;W - Residual - Color Balance -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Detail -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors -!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask -!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask -!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List -!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask -!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth -!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal -!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map -!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength -!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold -!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries -!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D -!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type -!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma -!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope -!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method -!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold -!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion -!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction -!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold -!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor -!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" -!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. -!PARTIALPASTE_DEHAZE;Haze removal -!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_CACHECLEAR;Clear -!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: -!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: -!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: -!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions -!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -!TP_COLORTONING_LABREGION_HUEMASK;H -!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -!TP_COLORTONING_LABREGION_LIST_TITLE;Correction -!TP_COLORTONING_LABREGION_MASK;Mask -!TP_COLORTONING_LABREGION_SATURATION;Saturation -!TP_COLORTONING_LABREGION_SHOWMASK;Show mask -!TP_DEHAZE_DEPTH;Depth -!TP_DEHAZE_LABEL;Haze Removal -!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map -!TP_DEHAZE_STRENGTH;Strength -!TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors -!TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction -!TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both -!TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal -!TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows -!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical -!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_4PASS;3-pass+fast -!TP_RAW_AMAZEVNG4;AMaZE+VNG4 -!TP_RAW_BORDER;Border -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). -!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_PIXELSHIFTEPERISO;Sensitivity -!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. -!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. -!TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/default b/rtdata/languages/default index a5c9976a4..5a66807ca 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1060,7 +1060,7 @@ 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_AUTO_FIT;Automatically zoom to fit the crop area when double clicking in the preview image PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop PREFERENCES_CROP_GUIDES_FRAME;Frame PREFERENCES_CROP_GUIDES_FULL;Original diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 147e6badd..06654c7cf 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -609,7 +609,12 @@ Gtk::Widget* Preferences::getImageProcessingPanel () 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"))); + Gtk::Label *cropAutoFitLabel = Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_AUTO_FIT"))); + cropAutoFitLabel->set_line_wrap(true); + setExpandAlignProperties(cropAutoFitLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); + cropAutoFit = Gtk::manage(new Gtk::CheckButton()); + setExpandAlignProperties(cropAutoFit, false, true, Gtk::ALIGN_START, Gtk::ALIGN_START); + cropAutoFit->add(*cropAutoFitLabel); cropvb->pack_start(*cropAutoFit); cropframe->add(*cropvb); vbImageProcessing->pack_start(*cropframe, Gtk::PACK_SHRINK, 4); @@ -1398,7 +1403,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () vbc->pack_start (*cacheGrid, Gtk::PACK_SHRINK, 4); Gtk::Label* clearSafetyLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_SAFETY"))); - setExpandAlignProperties(clearSafetyLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + setExpandAlignProperties(clearSafetyLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); clearSafetyLbl->set_line_wrap(true); vbc->pack_start(*clearSafetyLbl, Gtk::PACK_SHRINK, 4); From d55d3446f60246aa206f57c5d7cf1dda06f3f268 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Mon, 12 Nov 2018 12:46:33 +0100 Subject: [PATCH 127/348] various improvments to ICC Profile Creator --- rtdata/iccprofiles/output/RTv2_ACES-AP0.icc | Bin 25336 -> 25452 bytes rtdata/iccprofiles/output/RTv2_ACES-AP1.icc | Bin 25532 -> 25452 bytes rtdata/iccprofiles/output/RTv2_Best.icc | Bin 25456 -> 25452 bytes rtdata/iccprofiles/output/RTv2_Bruce.icc | Bin 25496 -> 25452 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 25504 -> 25500 bytes rtdata/iccprofiles/output/RTv2_Rec2020.icc | Bin 25544 -> 25452 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25456 -> 25452 bytes rtdata/iccprofiles/output/RTv4_ACES-AP0.icc | Bin 744 -> 752 bytes rtdata/iccprofiles/output/RTv4_ACES-AP1.icc | Bin 764 -> 752 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 760 -> 752 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 760 -> 752 bytes rtdata/iccprofiles/output/RTv4_Bruce.icc | Bin 764 -> 752 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 764 -> 752 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 680 -> 752 bytes rtdata/iccprofiles/output/RTv4_Rec2020.icc | Bin 768 -> 752 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 760 -> 752 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 752 -> 752 bytes rtgui/iccprofilecreator.cc | 144 ++++++++++++++++---- rtgui/options.cc | 60 ++++---- 19 files changed, 151 insertions(+), 53 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc index 34363781fa091909250c3ed101e06b24df93b335..03d952f9fc09d25b7e828a2213281daee89fe0ff 100644 GIT binary patch delta 878 zcmexyl=00mMiT~x zZXpanpa29DO`_|2k_(DT7#J8A0L3(lfI5Ke6F{~|I)r@(#7=^+KY-XpAwkXz3`{IQ zBY4umY$X8@I|bP{TKjK3B}GB*P6`o`Q3~vj7+4tu7&sY}8FUhpiwk^% z-9jcNN=p~Yp||k0MH-^;AC)QaAt622xia)vH}$c>$x5*|%#9 zj38x~b&J!CjldchIW93Uutfa-{|#t9>r4iQzu*7=|Fh@+|9@6M_dR7`xS%lk1f$I4 zAB;RApuhoZVqn%{VA$~us6b}3fYMG@#^am!v7csQoHn_OYcb=4$$H%Sj8iwqabIU< z{59Fn-;~j8a}NJ%M#g)S4FVMzPfWHFOk}K_JV)>}W8~z9AWKHE$?J?H86RxkBP7qr z$Ugawa53Y%%>g3c85v_HCxkUKPTzb+Y%wEa!sG&plZ^e7tt6uvA8uY3Db2`uWb!^M zT}Fw`52Os47$Y{z*>2|=bqw~9`Ol&ZPEf!YWCq3J9#IAc=hxu)1Sbjx_W%Ficul^M G)BpfxEAZ$5 diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc index 413360817fad230feda6988a9155e51a6e995ef7..cc5e59f3ccbdd3e0b78913405527fdad6a444ee7 100644 GIT binary patch literal 25452 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 W0sbI%XAb_a)BpGLzy136TK@yXC;edn literal 25532 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 KAjbLs?D!9!02w#{ diff --git a/rtdata/iccprofiles/output/RTv2_Best.icc b/rtdata/iccprofiles/output/RTv2_Best.icc index 3f9db89e0e40d0ac01ca78440dcc7325df9f1082..84037ecf7f03fa589b9bef0db53d542971a4893d 100644 GIT binary patch literal 25452 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 diff --git a/rtdata/iccprofiles/output/RTv2_Bruce.icc b/rtdata/iccprofiles/output/RTv2_Bruce.icc index c795da140de12099a41e3e8f94175b4e120fcbce..152b4171717d7acf95542e0876b79f808cec73b9 100644 GIT binary patch literal 25452 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 UVs`dH|Mm9&{r=ze`uAM_15{=AbN~PV literal 25496 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 diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc index 40f86fcf138583e6f239fdeef3412792970e0544..a7659d318bf822bca36865ab26d79e4dae456455 100644 GIT binary patch literal 25500 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 E0a{T7aR2}S literal 25504 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 diff --git a/rtdata/iccprofiles/output/RTv2_Rec2020.icc b/rtdata/iccprofiles/output/RTv2_Rec2020.icc index b6969a6f1d1c6492e22040e044c63fe615e959d0..5426e8d685ee8558e902b26fb266c8d85f5dee05 100644 GIT binary patch literal 25452 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 O|BJMXe}?~`pZ^OV!uxvw literal 25456 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 delta 217 zcmeys`hr!5fr05oPI7KBiva^eZeB@Ikh_yYL}Zi#`y&QU1~vu`23`i~#N^@v-(a_p ziHTAZ-8}1ck_(DT7#J8G7#J9$%1a7B>^VTTNODGE3Xr`4$kr(W8UkeB0f{F;*dIXb zbTFHV1;j22333M7F9Bq0q(j&aAa)XjodIGeXB6cE)l2}gRZ?>EfaWtXZJ8{D1We8@_1+oGd3^sc(u3!WJ@=z=8 diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc index 5dfb4cb0df7aec46770fffef9f78689bbb36cca8..aecee414d24b9a3bb29c1c4b446013300179c227 100644 GIT binary patch delta 242 zcmeyv`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z26+bd#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YK*<_?hv-QkVb_4z$r(ktKs8H%Y?YMUJfQhZOeZD_FiLBx z0EJ{292t@sQW=UF3K$F-;u#be(iv?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YK*-_?hv-7#N^@v-(a_p ziHTAZ-8}1Uk_(DT7#J7>7#J9$%1a7B>@`5PNODGE3XpvO$kr(W8Ukd$0f{Gp*-Stt zgGf4rEdpW}g#$ax#B^k`0Hd_3 z0#HbX!HFT2p_rkBA)Y~jA)UdN!H7YR!34-I2C@wqj3;|Aer7yB*@j6SPWCXR001sK BG?M@T diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc index 86825164a5c0f56637b348ef78a797a509f186ff..27e7c85f7fbdad6d9c680c242fb6eb05ac8c4eb9 100644 GIT binary patch delta 242 zcmeyt`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z26YD2#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YK*-_?hv-5#N^@v-(a_p ziHTAZ-8}1Uk_(DT7#J7>7#J9$%1a7B>@`5PNODGE3XpvO$kr(W8Ukd$0f{Gp*-Stt zgGf4rEdpW}g#$ax#B^k`0Hd_3 z0#HbX!HFT2p@bokA)Y~jA)UdN!H7YR!34-I2C@wqj3;|Aer7yB*@j6SPWCXR001}- BG?4%R diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc index c3a01b116a63e8dc72374a61e404ea970aba851b..72cf801a4e4ad51ba7f1747dd9239ab3ceff5070 100644 GIT binary patch delta 242 zcmeyv`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z25kn-#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YK*<_?hv-QkVb_4z$r(ktKs8H%Y?YMUJfQhZOeZD_FiLAG z0fl53oEVB2N*R(FQW@eI6d2MOY#EFg^cYNl>|!9>kinRNVX_C~XU6lBZJ5;IWDipc E0Qkr?761SM diff --git a/rtdata/iccprofiles/output/RTv4_Large.icc b/rtdata/iccprofiles/output/RTv4_Large.icc index 176bff9a7f7266d644f489b9b260c2a013c6ce72..e09992e82feca311cd714d66cc31121065790a11 100644 GIT binary patch delta 242 zcmeyv`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z24x1d#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YK*<_?hv-QkVb_4z$r(ktKs8H%Y?YMUJfQhZOeZD_FiLAG z0fl53d>9fLiWt%vQW@eI6o9lXgAs!sg9(sb3}hQJ7&9L_1kgbxEo0kG)@7XNCD9KpQ0u*9O wOJiX8w48x~H9R$(W%a Qu_zJ51OrU|>nU@ zI+)GG17a721UUokR{*j#(jjb+nHotDb^(Z;oKchuR5Js}R!Pat1Demov}dvaqqM99 tP)LR$h{2t~i9vxOiJ_DslOczpgh3Zb=S_}a{LFY^vJaCwoSegy0syb}G^79k delta 258 zcmeys+Q6p6z`)Fqlbl=3V!*(Vn^#g4eOhB6%G}0k#keM1u5OxEIot#mW3skcL$W}?o%>$ax#B^q|0Hd_7 z8c;}vA&4QBA(_F5!2pco859`O8Ek=UJq8mXyBNqeWH4r6nC!v$neqH&8zyx)*~63q E0Br*^?*IS* diff --git a/rtdata/iccprofiles/output/RTv4_Wide.icc b/rtdata/iccprofiles/output/RTv4_Wide.icc index f95587797ef41a1578ddf1ebad16512e3192073c..f8043a3c2a94b1aba565c07e2d8915a53102025f 100644 GIT binary patch delta 242 zcmeyt`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z1~mqe#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YK*-_?hv-(#N^@v-(a_p ziHTAZ-8}1Uk_(DT7#J7>7#J9$%1a7B>@`5PNODGE3XpvO$kr(W8Ukd$0f{Gp*-Stt zgGf4rEdpW}g#$ax#B^k`0Hd_3 z0#HbXA)FzTA%!88A)Y~jA)UdN!H7YR!34-I2C@wqj3;|Aer7yB*@j6SPWCXR001F! BG=Bg9 diff --git a/rtdata/iccprofiles/output/RTv4_sRGB.icc b/rtdata/iccprofiles/output/RTv4_sRGB.icc index e760848acc779f790781358d6fc3c55ba8770ff4..8827a8a85321e7856d9c956ab6b231ca23f218f3 100644 GIT binary patch delta 29 kcmeys`hj(VEI$teCxa@3Xkv14fp4%|$izgcjc%)$0DABUh5!Hn delta 29 kcmeys`hj(VEI&5`FM}8Zb7FFFfp4%|$izgcjc%)$0C@ZeXaE2J diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index f76211bd4..2054a6c15 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -668,11 +668,13 @@ void ICCProfileCreator::savePressed() // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- //instead of calculations made by LCMS..small differences - v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe") && illuminant == "DEF"); + v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); //necessary for V2 profile if (!v2except) { + std::string is_RTv4 = ""; + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { sNewProfile = options.rtSettings.ACESp0; sPrimariesPreset = "ACES-AP0"; @@ -683,7 +685,14 @@ void ICCProfileCreator::savePressed() sNewProfile = options.rtSettings.adobe; sPrimariesPreset = "Medium"; } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { + is_RTv4 = options.rtSettings.prophoto.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.prophoto = "RTv2_Large"; + }; + sNewProfile = options.rtSettings.prophoto; + sPrimariesPreset = "Large"; } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { sNewProfile = options.rtSettings.rec2020; @@ -692,13 +701,33 @@ void ICCProfileCreator::savePressed() sNewProfile = options.rtSettings.srgb; sPrimariesPreset = "sRGB"; } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + is_RTv4 = options.rtSettings.widegamut.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Wide"; + }; + sNewProfile = options.rtSettings.widegamut; + sPrimariesPreset = "Wide"; } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + is_RTv4 = options.rtSettings.best.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.best = "RTv2_Best"; + }; + sNewProfile = options.rtSettings.best; + sPrimariesPreset = "Best"; } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { sNewProfile = options.rtSettings.beta; + is_RTv4 = options.rtSettings.beta.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Beta"; + }; + sPrimariesPreset = "Beta"; } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { sNewProfile = options.rtSettings.bruce; @@ -715,7 +744,22 @@ void ICCProfileCreator::savePressed() return; } } else { - sNewProfile = "RTv2_Beta"; + //new model for v2 profile different from D50 by entering directly XYZ values and media white point + sNewProfile = "RTv2_Beta";//for copy + + if (primariesPreset == "ACES-AP0") { + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1") { + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe") { + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "Rec2020") { + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "BruceRGB") { + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "sRGB") { + sPrimariesPreset = "sRGB"; + } } //begin adaptation rTRC gTRC bTRC @@ -957,16 +1001,30 @@ void ICCProfileCreator::savePressed() } cmsWhitePointFromTemp(&xyD, tempv4); + + if (illuminant == "D65") { + xyD = {0.312700492, 0.329000939}; + } + + if (illuminant == "D60") { + xyD = {0.32168, 0.33767}; + } + + } else { if (v2except) { cmsCIExyY XYZ; { - // XYZ = {0.950486322, 1.0, 1.08902736};//White D65 point calculated from white point xy 0,312710 y 0,3290 - // XYZ = {0.95047, 1.0, 1.088830};//White D65 point from B.Lindbloom - XYZ = {0.95045471, 1.0, 1.08905029}; + XYZ = {0.95045471, 1.0, 1.08905029};//white D65 } + + if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { + XYZ = {0.952646075, 1.0, 1.008825184};//white D60 + } + + cmsCIExyY blackpoint; { @@ -981,16 +1039,6 @@ void ICCProfileCreator::savePressed() if (primariesPreset == "sRGB") { - //Matrix value from B.Lindbloom - /* - rt = {0.4360747, 0.2225045, 0.0139322}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1430804, 0.0606169, 0.7141733}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3850649, 0.7168786, 0.0971045}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - */ { //Matrix value from spec Adobe rt = {0.43607, 0.22249, 0.01392}; @@ -1005,17 +1053,6 @@ void ICCProfileCreator::savePressed() } if (primariesPreset == "Adobe") { - { - //B.Lindbloom - /* - rt = {0.6097559, 0.3111242, 0.0194811}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1492240, 0.0632197, 0.7448387}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2052401, 0.6256560, 0.0608902}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - */ - } { //Adobe spec rt = {0.60974, 0.31111, 0.01947}; @@ -1027,6 +1064,50 @@ void ICCProfileCreator::savePressed() } } + if (primariesPreset == "Rec2020") { + { + rt = {0.67337, 0.27901, -0.00192}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.12506, 0.04561, 0.79686}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.16577, 0.67538, 0.02997}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BruceRGB") { + { + rt = {0.49400, 0.25204, 0.01578}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.14949, 0.06332, 0.74617}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.32071, 0.68463, 0.06294}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ACES-AP0") { + { + rt = {0.99084, 0.36192, -0.00272}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {-0.03900, -0.08443, 0.81938}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.01236, 0.72250, 0.00824}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ACES-AP1") { + { + rt = {0.68970, 0.28445, -0.00604}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.12456, 0.04379, 0.82094}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.14995, 0.67175, 0.00999}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + } else { cmsWhitePointFromTemp(&xyD, (double)temp); } @@ -1036,6 +1117,14 @@ void ICCProfileCreator::savePressed() xyD = {0.447573, 0.407440, 1.0}; } + if (illuminant == "D65") { + xyD = {0.312700492, 0.329000939}; + } + + if (illuminant == "D60") { + xyD = {0.32168, 0.33767}; + } + // Calculate output profile's rTRC gTRC bTRC @@ -1046,7 +1135,7 @@ void ICCProfileCreator::savePressed() } if (gammaPreset == "standard_g2.2") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875); + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe } if (gammaPreset == "standard_g1.8") { @@ -1176,6 +1265,7 @@ void ICCProfileCreator::savePressed() } } } + } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { if (!v2except) { diff --git a/rtgui/options.cc b/rtgui/options.cc index c690a42e3..c1494a085 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -551,16 +551,16 @@ void Options::setDefaults() rtSettings.monitorIntent = rtengine::RI_RELATIVE; rtSettings.monitorBPC = true; rtSettings.autoMonitorProfile = false; - rtSettings.adobe = "RTv4_Medium"; // put the name of yours profiles (here windows) - rtSettings.prophoto = "RTv4_Large"; // these names appear in the menu "output profile" - rtSettings.widegamut = "RTv4_Wide"; - rtSettings.srgb = "RTv4_sRGB"; - rtSettings.bruce = "RTv4_Bruce"; - rtSettings.beta = "RTv4_Beta"; - rtSettings.best = "RTv4_Best"; - rtSettings.rec2020 = "RTv4_Rec2020"; - rtSettings.ACESp0 = "RTv4_ACES-AP0"; - rtSettings.ACESp1 = "RTv4_ACES-AP1"; + rtSettings.adobe = "RTv2_Medium"; // put the name of yours profiles (here windows) + rtSettings.prophoto = "RTv2_Large"; // these names appear in the menu "output profile" + rtSettings.widegamut = "RTv2_Wide"; + rtSettings.srgb = "RTv2_sRGB"; + rtSettings.bruce = "RTv2_Bruce"; + rtSettings.beta = "RTv2_Beta"; + rtSettings.best = "RTv2_Best"; + rtSettings.rec2020 = "RTv2_Rec2020"; + rtSettings.ACESp0 = "RTv2_ACES-AP0"; + rtSettings.ACESp1 = "RTv2_ACES-AP1"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; @@ -1442,66 +1442,74 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("Color Management", "AdobeRGB")) { rtSettings.adobe = keyFile.get_string("Color Management", "AdobeRGB"); - if (rtSettings.adobe == "RT_Medium_gsRGB") { - rtSettings.adobe = "RTv4_Medium"; + if (rtSettings.adobe == "RT_Medium_gsRGB" || rtSettings.adobe == "RTv4_Medium") { + rtSettings.adobe = "RTv2_Medium"; } } if (keyFile.has_key("Color Management", "ProPhoto")) { rtSettings.prophoto = keyFile.get_string("Color Management", "ProPhoto"); - if (rtSettings.prophoto == "RT_Large_gBT709") { - rtSettings.prophoto = "RTv4_Large"; + if (rtSettings.prophoto == "RT_Large_gBT709" || rtSettings.prophoto == "RTv4_Large") { + rtSettings.prophoto = "RTv2_Large"; } } if (keyFile.has_key("Color Management", "WideGamut")) { rtSettings.widegamut = keyFile.get_string("Color Management", "WideGamut"); - if (rtSettings.widegamut == "WideGamutRGB") { - rtSettings.widegamut = "RTv4_Wide"; + if (rtSettings.widegamut == "WideGamutRGB" || rtSettings.widegamut == "RTv4_Wide") { + rtSettings.widegamut = "RTv2_Wide"; } } if (keyFile.has_key("Color Management", "sRGB")) { rtSettings.srgb = keyFile.get_string("Color Management", "sRGB"); - if (rtSettings.srgb == "RT_sRGB") { - rtSettings.srgb = "RTv4_sRGB"; + if (rtSettings.srgb == "RT_sRGB" || rtSettings.srgb == "RTv4_sRGB") { + rtSettings.srgb = "RTv2_sRGB"; } } if (keyFile.has_key("Color Management", "Beta")) { rtSettings.beta = keyFile.get_string("Color Management", "Beta"); - if (rtSettings.beta == "BetaRGB") { - rtSettings.beta = "RTv4_Beta"; + if (rtSettings.beta == "BetaRGB" || rtSettings.beta == "RTv4_Beta") { + rtSettings.beta = "RTv2_Beta"; } } if (keyFile.has_key("Color Management", "Best")) { rtSettings.best = keyFile.get_string("Color Management", "Best"); - if (rtSettings.best == "BestRGB") { - rtSettings.best = "RTv4_Best"; + if (rtSettings.best == "BestRGB" || rtSettings.best == "RTv4_Best") { + rtSettings.best = "RTv2_Best"; } } if (keyFile.has_key("Color Management", "Rec2020")) { rtSettings.rec2020 = keyFile.get_string("Color Management", "Rec2020"); - if (rtSettings.rec2020 == "Rec2020") { - rtSettings.rec2020 = "RTv4_Rec2020"; + if (rtSettings.rec2020 == "Rec2020" || rtSettings.rec2020 == "RTv4_Rec2020") { + rtSettings.rec2020 = "RTv2_Rec2020"; } } if (keyFile.has_key("Color Management", "Bruce")) { rtSettings.bruce = keyFile.get_string("Color Management", "Bruce"); - if (rtSettings.bruce == "Bruce") { - rtSettings.bruce = "RTv4_Bruce"; + if (rtSettings.bruce == "Bruce" || rtSettings.bruce == "RTv4_Bruce") { + rtSettings.bruce = "RTv2_Bruce"; } } if (keyFile.has_key("Color Management", "ACES-AP0")) { rtSettings.ACESp0 = keyFile.get_string("Color Management", "ACES-AP0"); + if (rtSettings.ACESp0 == "RTv4_ACES-AP0") { + rtSettings.ACESp0 = "RTv2_ACES-AP0"; + } + } if (keyFile.has_key("Color Management", "ACES-AP1")) { rtSettings.ACESp1 = keyFile.get_string("Color Management", "ACES-AP1"); + if (rtSettings.ACESp1 == "RTv4_ACES-AP1") { + rtSettings.ACESp1 = "RTv2_ACES-AP1"; + } + } if (keyFile.has_key("Color Management", "GamutLch")) { From 25eb93a256e87aeb861b9c801678736b4c3a1a4c Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Mon, 12 Nov 2018 16:45:05 +0100 Subject: [PATCH 128/348] Change Tag desc for all ICCv2 and ICCv4 --- rtdata/iccprofiles/output/RTv2_ACES-AP0.icc | Bin 25452 -> 25444 bytes rtdata/iccprofiles/output/RTv2_ACES-AP1.icc | Bin 25452 -> 25444 bytes rtdata/iccprofiles/output/RTv2_Best.icc | Bin 25452 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Beta.icc | Bin 25424 -> 25412 bytes rtdata/iccprofiles/output/RTv2_Bruce.icc | Bin 25452 -> 25436 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 25500 -> 25484 bytes rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 884 -> 876 bytes rtdata/iccprofiles/output/RTv2_Rec2020.icc | Bin 25452 -> 25444 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25452 -> 25432 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 25452 -> 25432 bytes rtdata/iccprofiles/output/RTv4_ACES-AP0.icc | Bin 752 -> 756 bytes rtdata/iccprofiles/output/RTv4_ACES-AP1.icc | Bin 752 -> 756 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 752 -> 748 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 752 -> 752 bytes rtdata/iccprofiles/output/RTv4_Bruce.icc | Bin 752 -> 748 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 752 -> 748 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 752 -> 752 bytes rtdata/iccprofiles/output/RTv4_Rec2020.icc | Bin 752 -> 752 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 752 -> 748 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 752 -> 748 bytes 20 files changed, 0 insertions(+), 0 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc index 03d952f9fc09d25b7e828a2213281daee89fe0ff..b54fcfb4e51bd534ca3ccfbc6170a637a4d6dc89 100644 GIT binary patch delta 218 zcmaEJjPc1aMivH!;piyNIHal1;kE*uwQ`K zMIk}XKsA3D7!-KY!E7ZC5IYIXb`k-x%S#G?W+o|s)TiX8qyX6_K=z!J+&mEb0+8L1 zlnqkjlpFw7lvD1We5hd R0vHS?PfT*(JfHDwA^;69F7E&U delta 220 zcmaEIjPcDeMivH!=Qt?NIHal2gFW-us?v< zMIk}X3=B*_0~C1D!E7Y~5IYIXc9H?H%S#G?W+rKX)TiX8qyX7AK=z!J+&mEb29Vv5 zlnqkjk{kh6lvGpxDqz&(g@)&_EF)3KVBZXE0*WV=!SbU?^rV1hXxH Sq%nix;piyNIHal1;kE*uwQ`K zMIk}XKsA3D7!-KY!E7ZC5IYIXb`k-x%S#G?W+o|s)TiX8qyX6_K=z!J+&mEb0+8L1 zlnqkjlpFw7lvD1We5hd R0vHS@PfT*(JfHDwA^;6$F7W^W delta 220 zcmaEIjPcDeMivH!=Qt?NIHal2gFW-us?v< zMIk}X3=B*_0~C1D!E7Y~5IYIXc9H?H%S#G?W+rKX)TiX8qyX7AK=z!J+&mEb29Vv5 zlnqkjk{kh6lvGpxDqz&(g@)&_EF)3KVBZXE0*WV=!SbU?^rV1hXxH Sq%nixyko^&u< z@db#T1ZF#a0kMlBBBK}>l7Pw?MA9K_5wJNBwg!lulADqORAU2V&q>M61F>%a*$pMB z6+n9@OEK!Ias`Ey8O1xL76Sz!fQuoBA%vlf!H6NA!HFT2p_rj$^1>vK%_kU_Bmw|v C+$_id delta 211 zcmca{jPcDeMivH!i`Ng^Qi=@7OC*c=Gk2E`O^q~zv-*l&RBhLY3@ zpuLl&7?42lhn^el~x4Gk25(qJIKkj`MlpvPdsV8Bq!Ua+kioF O^28+f%^Mk)CjtN=vMkyF diff --git a/rtdata/iccprofiles/output/RTv2_Beta.icc b/rtdata/iccprofiles/output/RTv2_Beta.icc index ebd5005e278a4cbe5de8067570451140c7826cef..d697c8caf9baf1177f71f0cdb05cb7dda70f44c2 100644 GIT binary patch literal 25412 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 I|9$^|05wDT$p8QV literal 25424 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 aQ!Bt}r;b42PVE3+5WUj|{`>a-zWqOZ7x~5j diff --git a/rtdata/iccprofiles/output/RTv2_Bruce.icc b/rtdata/iccprofiles/output/RTv2_Bruce.icc index 152b4171717d7acf95542e0876b79f808cec73b9..8d53051887c297477b93446c68e08008fef7c5ef 100644 GIT binary patch delta 209 zcmaEJjPcGfMivH!>WV1NIHal2Euw=04T%|#1O(z#$dz{&)~#R#8AqR%#b>H MVv_sjd5q^00Z{%e+5i9m delta 224 zcmca}jPcDeMivH!=Qt?NIHal2gFW-us?v< zMIk}X3=B*_0~C1D!E7Y~5IYIXc9H?H%S#G?W+rKX)TiX8qyX7AK=z!J+&mEb29Vv5 zlnqkjksJY5lvGpxDqz&(g@)&_EF)3KVBZXE0*WV=!SbU?^rV1hXxH Uq%n|fz@Rv}G0A;%FXQ<{0BoNv1^@s6 diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc index a7659d318bf822bca36865ab26d79e4dae456455..019ce621310bdd86893359fbf2bd3ff764d38133 100644 GIT binary patch delta 203 zcmbPpoU!LPBMSpVa?eDT>Gd@!xhW|O3`{Z%3=DJ1OA1PW>>WV1NKr&&6p(!e#7=^+ zAAs2D5cU_anvfu81_ovh1_lM5bTC_41jJ4Pvz-+{?BtB1T%ct-K=mrg1w}yflLLTk zjihX_UC9-bWf=Q4xPwB8i5X2C|P{v@y5YOPlkjPNPkj{`gxsl0z N@;pY~&E`z0i2&okE1CcR delta 218 zcmeA<&N$~dBMSpV@|=k*)9ZUua#Ke%n}R?3Owmxwz3L{odjk(8-Uo!8AZ83%WQz^Rgw#efaWJB z0NENz*%J-0ND*m*&sDG z%n@Kksl~}a8U%QPLduNdeN$61OLHM2Krx0Oh7g7_1|x=e2499$h7^WOhEj&y$qSk6 NCl+vTp2K*95dcP2E0X{K delta 219 zcmaFE_Jxgwfq}VXB1?CDM{+??2?GP;90mpkjiQLiC?NX?kS&r9Vc!6;lOXIjAa+qm zkTU}V6OhTkmkwbIfY?b8wgQMrXNddB5fb2Obxp^S=10cI0DI285 zl{o>(5lKlcP6pB-z@KiUXJk-ppl1LAiV#7dFhe?n5rZBO8!!|Du^te^pyK3-OzxW} IG2UVX0BoHn=>Px# diff --git a/rtdata/iccprofiles/output/RTv2_Rec2020.icc b/rtdata/iccprofiles/output/RTv2_Rec2020.icc index 5426e8d685ee8558e902b26fb266c8d85f5dee05..57eb17a86eafc65cc4945d6aa8e3788540e0e204 100644 GIT binary patch delta 218 zcmaEJjPc1aMivH!;piyNIHal1;kE*uwQ`K zMIk}XKsA3D7!-KY!E7ZC5IYIXb`k-x%S#G?W+o|s)TiX8qyX6_K=z!J+&mEb0+8L1 zlnqj2pBw;Ilv=Qt?NIHal2gFW-us?v< zMIk}X3=B*_0~C1D!E7Y~5IYIXc9H?H%S#G?W+rKX)TiX8qyX7AK=z!J+&mEb29Vv5 zlnqkjk{kh6lvGpxDqz&(g@)&_EF)3KVBZXE0*WV=!SbU?^rV1hXxH Sq%nixyko^&u< z@db#T1ZF#a0kMlBBBK}>l7Pw?MA9K_5wJNBwg!lulADqORAU2V&q>M61F>%a*$pMB z6+n9@OEKyya|MNz8O4WZrlbNTz<`S(h#`cbjKPQ@o*|qelObiYLbBK96O2m|0T5&> A*#H0l delta 211 zcmca{jPcDeMivH!i`Ng^Qi=@7OC*c=Gk2E`O^q~zv-*l&RBhLY3@ zpuLl&7?42lhn^el~x4Gk25(qJIKkj`MlpvPdsV8Bq!Ua+kioF O^28+f%^Mk)CjtN=vMkyF diff --git a/rtdata/iccprofiles/output/RTv2_sRGB.icc b/rtdata/iccprofiles/output/RTv2_sRGB.icc index e311e5d71e11af3f0cd72c78ca2f23bbc23fff16..a039d2f6efa89e23a1c6698f56d9c3b48ce0492a 100644 GIT binary patch delta 206 zcmaEJjPb@XMivH!7 zlnqj2mh1vnlv=Qt?NIHal2gFW-us?v< zMIk}X3=B*_0~C1D!E7Y~5IYIXc9H?H%S#G?W+rKX)TiX8qyX7AK=z!J+&mEb29Vv5 zlnqj2lpFz8lvGpxDqz&(g@)&_EF)3KVBZXE0*WV=$SVm?X-mIJq&& Nd13+k<{ri~i2!5?EhPW| diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc index 55de42f4d619afead84ae8a70cc4eaf8620a37c5..5661f7e9ee44ee3351b7863c0a496664d7d80f14 100644 GIT binary patch delta 229 zcmeys`h``8fr05uPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}}23ZD;#N^@v-(a_p ziHTAZ-8}2fk_(DT7#J9R7#J9$%1a7B>=i(^NODGE3Xr`A$kr(W8Ukd$0Es6-*ndFm zbTFGq0K_f|333M7uL5Liq(j&sGc}SRY@oRe8p#<&xj;2@fNYhN+&rN9OiTwR3ouG6 mN&$sr7=jo=7|Iw-7~&Zm8Jrnh8G^yA00y9UHhVCxU<3exhc34O delta 229 zcmeyu`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z1~~?f#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YOIINqloM<3vUPT!SzE diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc index aecee414d24b9a3bb29c1c4b446013300179c227..4237752a48186428f964d0da3b8686528fc2d434 100644 GIT binary patch delta 229 zcmeys`h``8fr05uPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}}26+aN#N^@v-(a_p ziHTAZ-8}2fk_(DT7#J9R7#J9$%1a7B>=i(^NODGE3Xr`A$kr(W8Ukd$0Es6-*ndFm zbTFGq0K_f|333M7uL5Liq(j&sGc}SRY@oRe8p#<&xj;2@fNYhN+&rN9OiTwR3ouG6 mN&$sr7=jo=7|Iw-7~&Zm8Jrnh8G^yA00u(_hRq&~D;NQENiL=U delta 229 zcmeyu`hiu4fr05mPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}Z26+bd#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&YOIINqloM<3vUPT!k;*u!NODGE3Xr`8$kr(W8UkcL0Es6-*k3^G zbTFHV1H>*0333M7F9T$2q(j&sGc}SR>>Lm~Iin~SsAdX~t&)?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&fDz5xPlP?v>`66 diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc index 27e7c85f7fbdad6d9c680c242fb6eb05ac8c4eb9..b3c36c28bd3f2b29eb9cd6aa029e043381f097d5 100644 GIT binary patch delta 53 zcmeys`hj(VJTE_k41-Eya&duguv^H)M5&2xZ$(2G${0)-;u)M6QW;7Z5*dOR+!>rU JdoZqG1OS@h4ix|Z delta 53 zcmeys`hj(VJTE7MI)iFra&duguv^H)M5&2xZ$;f1oEQ`sk{C)EG8u9hN*Hv3blzqU H#ubbJnH>%^ diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc index 72cf801a4e4ad51ba7f1747dd9239ab3ceff5070..e6d0a69f7f321b8a41ffcfa8c5cceb82660df851 100644 GIT binary patch delta 221 zcmeys`i519fr05wPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}}26YCj#N^@v-(a_p ziHTAZ-8}0Jk_(DT7#J8`7#J9$%1a7B>;*u!NODGE3Xr`8$kr(W8UkcL0Es6-*k3^G zbTFHV1H>*0333M7F9T$2q(j&sGc}SR>>Lm~Iin~SsAdX~t&)?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&fDz5xPlP?w+}9` diff --git a/rtdata/iccprofiles/output/RTv4_Large.icc b/rtdata/iccprofiles/output/RTv4_Large.icc index e09992e82feca311cd714d66cc31121065790a11..b9cfc94894c1b63910d6990241d9b1e452717f40 100644 GIT binary patch delta 221 zcmeys`i519fr05wPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}}1|;*u!NODGE3Xr`8$kr(W8UkcL0Es6-*k3^G zbTFHV1H>*0333M7F9T$2q(j&sGc}SR>>Lm~Iin~SsAdX~t&)?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&fDz5xPlP?uM94w diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index 072bda68fe1656d154d53b7fba3d9521347cc438..40bed87871fa6e665c61166ee421387e7ec18baf 100644 GIT binary patch delta 66 zcmeys`hj(VJTE_k0s~uOa&duguv^H)M5&2xo{UBlC(M==V_;yAVF+RfVJKrTVTfn& WWk_X6VaQ}CWyob<*zCc$f)M~kwGZ3? delta 66 zcmeys`hj(VJTE7MG6Pd$a&duguv^H)M5&2xo{T0FC(M?WU|?X7VF+SyXK-RrU`S#p VWyoa6VJKnH1=4w&Js4Lo0sug+59j~@ diff --git a/rtdata/iccprofiles/output/RTv4_Rec2020.icc b/rtdata/iccprofiles/output/RTv4_Rec2020.icc index e2e2de5dd3e59793accb474af27ed385295eb890..bb7603b5528030ecbebd6d635ae5884b871a8887 100644 GIT binary patch delta 53 zcmeys`hj(VJTE_k5`$i1a&duguv^H)M5&2xZ$(2G${0)-;u(S%QW=sNj2H|+c(VuN G3Pu2#BMqzo delta 53 zcmeys`hj(VJTE7M3WH^0a&duguv^H)M5&2xZ$;f1oEQ`sk{C)EG8u9hN*Hv3blzqU H#ubbJo8b;c diff --git a/rtdata/iccprofiles/output/RTv4_Wide.icc b/rtdata/iccprofiles/output/RTv4_Wide.icc index f8043a3c2a94b1aba565c07e2d8915a53102025f..9a63a8c721d631a472452228a726dcdf84a759b5 100644 GIT binary patch delta 221 zcmeys`i519fr05wPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}}22}>R#N^@v-(a_p ziHTAZ-8}2{k_(DT7#J8`7#J9$%1a7B>;*u!NODGE3Xr`8$kr(W8UkcL0Es6-*k3^G zbTFHV1H>*0333M7F9T$2q(j&sGc}SR>>Lm~Iin~SsAdX~t&)?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&fDz5xPlP?q&qH_ diff --git a/rtdata/iccprofiles/output/RTv4_sRGB.icc b/rtdata/iccprofiles/output/RTv4_sRGB.icc index 8827a8a85321e7856d9c956ab6b231ca23f218f3..6e348a98a3939d7540c5ad7073b0170c591c7df5 100644 GIT binary patch delta 221 zcmeys`i519fr05wPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!1|9}}22}>;#N^@v-(a_p ziHTAZ-8}2{k_(DT7#J8`7#J9$%1a7B>;*u!NODGE3Xr`8$kr(W8UkcL0Es6-*k3^G zbTFHV1H>*0333M7F9T$2q(j&sGc}SR>>Lm~Iin~SsAdX~t&)p#N^@v-(a_p ziHTAZ-8}0}k_(DT7#J8m7#J9$%1a7B>?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)&fDz5xPlP?q&Y5@ From 847e20969b256047a10ea4b24578b44a844bc18f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 12 Nov 2018 18:52:26 +0100 Subject: [PATCH 129/348] Add tooltip for raw auto ca-correction iterations slider --- rtdata/languages/default | 1 + rtgui/rawcacorrection.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/rtdata/languages/default b/rtdata/languages/default index 5a66807ca..02ded5378 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1818,6 +1818,7 @@ 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. TP_RAWCACORR_AUTO;Auto-correction TP_RAWCACORR_AUTOIT;Iterations +TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, means it often does not correct all Chromatic Aberration.\nTo correct the remaining Chromatic Aberration, you can use up to 5 iterations of automatic Chromatic Aberration correction.\nEach iteration will reduce the remaining Chromatic Aberration from the last iteration at the cost of additional processing time. TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift TP_RAWCACORR_CABLUE;Blue TP_RAWCACORR_CARED;Red diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index b208f5509..2daeb102f 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -41,6 +41,7 @@ RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROM caAutoiterations = Gtk::manage(new Adjuster (M("TP_RAWCACORR_AUTOIT"), 1, 5, 1, 2)); caAutoiterations->setAdjusterListener (this); + caAutoiterations->set_tooltip_markup(M("TP_RAWCACORR_AUTOIT_TOOLTIP")); if (caAutoiterations->delay < options.adjusterMaxDelay) { caAutoiterations->delay = options.adjusterMaxDelay; From 53a99837e50ea30c3421b45791a3d603d048e5e3 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 12 Nov 2018 22:23:25 +0100 Subject: [PATCH 130/348] histmatching: avoid concavities in the upper part of the matched curve (assumed to be S-shaped) Fixes #4979 --- rtengine/histmatching.cc | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index b2fe436fd..2bc0e940e 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -216,6 +216,45 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) curve.push_back(1.0); curve.push_back(1.0); + + // we assume we are matching an S-shaped curve, so try to avoid + // concavities in the upper part of the S + const auto getpos = + [](float x, float xa, float ya, float xb, float yb) + { + // line equation: + // (x - xa) / (xb - xa) = (y - ya) / (yb - ya) + return (x - xa) / (xb - xa) * (yb - ya) + ya; + }; + idx = -1; + for (size_t i = curve.size()-1; i > 0; i -= 2) { + if (curve[i] <= 0.f) { + idx = i+1; + break; + } + } + if (idx >= 0 && size_t(idx) < curve.size()) { + // idx is the position of the first point in the upper part of the S + // for each 3 consecutive points (xa, ya), (x, y), (xb, yb) we check + // that y is above the point at x of the line between the other two + // if this is not the case, we remove (x, y) from the curve + while (size_t(idx+5) < curve.size()) { + float xa = curve[idx]; + float ya = curve[idx+1]; + float x = curve[idx+2]; + float y = curve[idx+3]; + float xb = curve[idx+4]; + float yb = curve[idx+5]; + float yy = getpos(x, xa, ya, xb, yb); + if (yy > y) { + // we have to remove (x, y) from the curve + curve.erase(curve.begin()+(idx+2), curve.begin()+(idx+4)); + } else { + // move on to the next point + idx += 2; + } + } + } if (curve.size() < 4) { curve = { DCT_Linear }; // not enough points, fall back to linear From 3cec74c50995522375f7a82969ac8c4c92fcf5f3 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Tue, 13 Nov 2018 10:36:51 +0100 Subject: [PATCH 131/348] Normalize D50 profiles --- rtdata/iccprofiles/output/RTv2_Best.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Beta.icc | Bin 25412 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 25484 -> 25436 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 752 -> 748 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 748 -> 748 bytes rtgui/iccprofilecreator.cc | 71 ++++++++++++++++++++++- 9 files changed, 69 insertions(+), 2 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Best.icc b/rtdata/iccprofiles/output/RTv2_Best.icc index 8347db4d6cda8e5a8812f316ff3661b565210e27..f04b96d2807a34cc3844d87cee7c773d3171d3d6 100644 GIT binary patch delta 296 zcmca{jPb@X#tD+rml;?X7#X-2tQgo6lZy*{gWW>eOnqbMRW3dr69WQ(Lj*e5{jBnbNsh+PyCl}Q&NCz4Iq0?N^TyAEqDaTX-LWjDN1$$DVl7u1sAYGTOHrpi0 MFp3~lfossI20 delta 295 zcmca{jPb@X#tD+r7a5otco{?(bQp9KlZy*{gWWPpVNIHZKGG8PK!qxz>Q*u*MfNBImmd#1Y%>!|60ND+bdl)q)i!fGb02M0$ z1%Tk&9R@}aec1{j2I51&<`0Z|2}TQlGcZ`yf;zQc{bP85kHv7#J8TCQhiZNy;uL0jh8T@$>e7~K;%?=Ucegf3fc)<}|J6hSBgi9!GX6OSVg delta 151 zcmca{jPb}ZMivH!WS5C7_Kb`ZUF>IGKTgQ3S}ZNiHZV0kS6m*&0Pa6M*a;K( zfY?PLLC!!mUw}sPq=VT?Kw$-*Brw~F2gEKfDFB+8Bmq*NlADqOWa|Lgb5e5ifNY_p z6F^QwQZ`6YvIj`fUK2WUF?WNpS$Bn2Qz2mk;aaYkDJ delta 377 zcmca}jIrl9qXh#)a!*cjZZVSr14C|JNl}oylR`vflmh!521W*c20;dP2K~h3;sW1b zw-5#(@NxDH22xBDExhY_Q*!fC7#J88fC3FEsl~}a_5vWgCM7ooD9$7UWX~xtDJTK5 zcL3QUML?5*>@y&C5`_H##7>8>zkt<*1UWM>Fmo_4DDb3%*~%gyb`qHFtN>ysXB6c! zFvunA05zy27Zd?4NDct9HIlMHmL*q!44Ql*sbR7RW6flpq&Wc~F98LC;M*~v$AI9{ zZ-m$xEd~b9T|hxbgct`8kPmdlWqpL0(gFsCZFc|v|Npm1Ny1^160d?X*d;)f%s|Yr hN0foV`8CiTcNiG1t1vKd#sdY}Cr@BB;sQxS008!4PLlut diff --git a/rtdata/iccprofiles/output/RTv2_Wide.icc b/rtdata/iccprofiles/output/RTv2_Wide.icc index b93ec47bac04c4d383d50417c5eff834339d1541..06d5747cba04616d580230da0d77a17fcbf56e74 100644 GIT binary patch delta 296 zcmca{jPb@X#tD+rml;?X7#X-2tQgo6lZy*{gWW>eOnqbMRW3dr69WQ(Lj*e5{jBnbNsh+PyCl}Q&NCz4Iq0?N^TyAEqDaTX-LWjDN1$$DVl7u1sAYGTOHrpi0 MFp3~lf@~ delta 295 zcmca{jPb@X#tD+r7Z^AgxEX{Q%o)@ZlZy*{gWWPpVNIHZKGG8PK!qxz>Q*u*MfNBImmd#1Y%>!|60ND+bdl)q)i!fGb02M0$ z1%Tk&9R@}aec1{j2I51&<`0Z|2}awq7#N(aK_Un>lD8QccD6Gx@X8>>R3|bpu-Gv$ M924BEktD+i0K0@dU;qFB diff --git a/rtdata/iccprofiles/output/RTv4_Best.icc b/rtdata/iccprofiles/output/RTv4_Best.icc index 0aaa2a71e0f16cca8d1feef07bdb375ca843fe0e..22ce4276cc641056bf025b047eec12513a193bbc 100644 GIT binary patch delta 29 kcmaFE`i6CaEI%&;2ZIs=dt!2Nfp4%|$izgcjc&`B0C@BWX#fBK delta 29 kcmaFE`i6CaEI$teKZ81ha$<6Efp4%|$izgcjc&`B0DFW8kN^Mx diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc index b3c36c28bd3f2b29eb9cd6aa029e043381f097d5..6d5bce2a415e2038c0a80448836bbe266c494810 100644 GIT binary patch delta 221 zcmeys`i519fr05wPI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!23`gZ1|;*u!NODGE3Xr`8$kr(W8UkcL0Es6-*k3^G zbTFHV1H>*0333M7F9T$2q(j&sGc}SR>>Lm~Iin~SsAdX~t&)?J_9NODGE3Xr`6$kr(W8UkcL0f{F;*grt* zbTFHV2gEK4333M7uK;9gq(j&sGc}SR>;e!wIin~SsAdL`t&)outputProfileExist(options.rtSettings.ACESp0)) { sNewProfile = options.rtSettings.ACESp0; sPrimariesPreset = "ACES-AP0"; @@ -759,6 +763,14 @@ void ICCProfileCreator::savePressed() sPrimariesPreset = "Bruce"; } else if (primariesPreset == "sRGB") { sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "ProPhoto") { + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Widegamut") { + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB") { + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB") { + sPrimariesPreset = "Beta"; } } @@ -1010,6 +1022,9 @@ void ICCProfileCreator::savePressed() xyD = {0.32168, 0.33767}; } + if (illuminant == "D50") { + xyD = {0.3457, 0.3585};//white D50 near LCMS values but not perfect...it's a compromise!! + } } else { if (v2except) { @@ -1024,6 +1039,9 @@ void ICCProfileCreator::savePressed() XYZ = {0.952646075, 1.0, 1.008825184};//white D60 } + if (isD50) { + XYZ = {0.964295676, 1.0, 0.825104603};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! + } cmsCIExyY blackpoint; @@ -1108,6 +1126,50 @@ void ICCProfileCreator::savePressed() } } + if (primariesPreset == "ProPhoto") { + { + rt = {0.79755, 0.28802, 0.0}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.03134, 0.00008, 0.82492}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.13531, 0.71190, -0.00002}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "Widegamut") { + { + rt = {0.71603, 0.25818, 0.0}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.14713, 0.01688, 0.77312}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.10104, 0.72493, 0.05177}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BestRGB") { + { + rt = {0.63254, 0.22844, 0.0}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.12695, 0.03418, 0.81540}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.20471, 0.73738, 0.00951}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BetaRGB") { + { + rt = {0.67113, 0.30321, 0.0}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.11833, 0.03293, 0.78419}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.17473, 0.66386, 0.04070}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + } else { cmsWhitePointFromTemp(&xyD, (double)temp); } @@ -1125,6 +1187,11 @@ void ICCProfileCreator::savePressed() xyD = {0.32168, 0.33767}; } + if (illuminant == "D50") { + xyD = {0.3457, 0.3585}; + } + +// {0.3457, 0.3585, 1.0}; // Calculate output profile's rTRC gTRC bTRC From b70d06f639d951c5d89dbfc5c28358f931c2af81 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Tue, 13 Nov 2018 11:35:17 +0100 Subject: [PATCH 132/348] small changes for xyD --- rtgui/iccprofilecreator.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 2a587a528..dc75db61f 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1015,15 +1015,15 @@ void ICCProfileCreator::savePressed() cmsWhitePointFromTemp(&xyD, tempv4); if (illuminant == "D65") { - xyD = {0.312700492, 0.329000939}; + xyD = {0.312700492, 0.329000939, 1.0}; } if (illuminant == "D60") { - xyD = {0.32168, 0.33767}; + xyD = {0.32168, 0.33767, 1.0}; } if (illuminant == "D50") { - xyD = {0.3457, 0.3585};//white D50 near LCMS values but not perfect...it's a compromise!! + xyD = {0.3457, 0.3585, 1.0};//white D50 near LCMS values but not perfect...it's a compromise!! } } else { @@ -1180,15 +1180,15 @@ void ICCProfileCreator::savePressed() } if (illuminant == "D65") { - xyD = {0.312700492, 0.329000939}; + xyD = {0.312700492, 0.329000939, 1.0}; } if (illuminant == "D60") { - xyD = {0.32168, 0.33767}; + xyD = {0.32168, 0.33767, 1.0}; } if (illuminant == "D50") { - xyD = {0.3457, 0.3585}; + xyD = {0.3457, 0.3585, 1.0}; } // {0.3457, 0.3585, 1.0}; From 3ba386d0ca8d1dd1612a0c102c8f21d3a5093c56 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Tue, 13 Nov 2018 12:23:03 +0100 Subject: [PATCH 133/348] Normalize ICCv4 white point --- rtdata/iccprofiles/output/RTv4_ACES-AP0.icc | Bin 756 -> 756 bytes rtdata/iccprofiles/output/RTv4_ACES-AP1.icc | Bin 756 -> 756 bytes rtdata/iccprofiles/output/RTv4_Best.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_Beta.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_Bruce.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_Large.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 752 -> 752 bytes rtdata/iccprofiles/output/RTv4_Rec2020.icc | Bin 752 -> 752 bytes rtdata/iccprofiles/output/RTv4_Wide.icc | Bin 748 -> 748 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 748 -> 748 bytes rtgui/iccprofilecreator.cc | 6 +++--- 11 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc index 5661f7e9ee44ee3351b7863c0a496664d7d80f14..03efd91e258071cb54fb97623a63e58034982a43 100644 GIT binary patch delta 135 zcmeyu`h|6ZEI%&;Hv>O|X<~A5fp4%|$izgcjc$#MvHKYqSp5F~|CYhPz}m^c@Q?Zb z|3CZw|Nm#nz`*p3f#HH;L}Zi#0~q{W&A;YC$Z7m_j`R1IGadh6{TUVkXfH40{eUFfbKNmSMU804wq> AK>z>% delta 127 zcmaFE`i6CaJTC`>5(9f;a&duguv^H)M5&E#<&5!+3_J`B4D3J*0^AG?|G)hQ0w9|a zNd04AWZ;X4j8XteGB7NB$G~7!4Pqh06dD*9I1Vr{T-b*YGs$3J*mIPDfhm8o4ATVw DL{lGd diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc index 6d5bce2a415e2038c0a80448836bbe266c494810..1186153260e27a9977bb1e5b4295128399e1ab8b 100644 GIT binary patch delta 93 zcmaFE`i6CaJTEtc2m@PUa&duguv^H)M5&E#<&4G*|Ns8~|NkEp|7BogU5`$J^a&duguv^H)M5&E#<&4IR3_J`B4D3J*0^AG?|G)hQ0w9|a oNd04AWZ;X4j8XteGBB(@&%oe2fAR-LW!Bvc3@blRmSDO90K?xKvH$=8 diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc index e6d0a69f7f321b8a41ffcfa8c5cceb82660df851..d617673052158f35d8a05c5349e0b6983637b811 100644 GIT binary patch delta 127 zcmaFE`i6CaEI%&;H-iX+Y+`b8fp4%|$izgcjc%2Uu}%yOtoQ!^|E$Wuz&@FQ;qQe1 z|9>z1|NrkI1_tIk3=9YIA|j&{7{H*ek%7UXhk=2G3n8ZF&cGmG!N9Pe10fc~$H1`O M1}H8)S%&EX0OFV;761SM delta 127 zcmaFE`i6CaEI$teKZ81hRbp~+fp4%|$izgcjc%2Uv0e-etdIZy|E$Hpz&@LS;cxr@ z|GyXg|NnO}0|WC728IJuA|j&{7{H*eoPoiije&uM3n8ZF%D^CC#=x+j6(JTR#lW!M M1t=~%S%&EX00s#neEy&7zZnm3&fXo5MoNR7#OzM0>v38%P?I40L@e?8~^|S delta 127 zcmaFE`i6CaJTC`>JOh7Xa&duguv^H)M5&E#<&5!+3_J`B4D3J*0^AG?|G)hQ0w9|a zNd04AWZ;X4j8XteGBBLcVPNpw17ab>IM{$(RtAR4dI&M4B@7JP>_O&CmSMU802JCF AbpQYW diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index 40bed87871fa6e665c61166ee421387e7ec18baf..f81aba3913cacce8561847d4589ce657ea58f249 100644 GIT binary patch delta 127 zcmeys`hj(VEI%&;H-jL9Qetv(fp4%|$izgcjc&D!u}%yOtoQ!^|E$Wuz&@FQ;qQe1 z|9>z1|NrkI1_tIk3=9YIA|j&{7{FkT1OtQrQU(T=KL{~3Lk0!`eFlbovk_t@y$lQs ObQl=;r%qO2x&QziR3s$; delta 127 zcmeys`hj(VEI$teKZ61TTVir?fp4%|$izgcjc&D!v0e-etdIZy|E$Hpz&@LS;cxr@ z|GyXg|NnO}0|WC728IJuA|j&{7{FkTAOnN{0tN<_KL{~30|o{GT?U4IGZA7YQyCZ* O7%?#LPoJ#7bO8V*NF+}H diff --git a/rtdata/iccprofiles/output/RTv4_Rec2020.icc b/rtdata/iccprofiles/output/RTv4_Rec2020.icc index bb7603b5528030ecbebd6d635ae5884b871a8887..9fcb5d263b82e3f388e382be0f890f0552785ea4 100644 GIT binary patch delta 127 zcmeys`hj(VEI%&;H-iv^WMXo0fp4%|$izgcjc&D!u}%yOtoQ!^|E$Wuz&@FQ;qQe1 z|9>z1|NrkI1_tIk3=9YIA|j&{7{FjnCIf?e{{R2~8xdj(%nS_NYZ(|$|3ipr0oAQ} M3^Z@;WCf-R0IlOF7ytkO delta 127 zcmeys`hj(VEI$teKZ6p3USe`_fp4%|$izgcjc&D!v0e-etdIZy|E$Hpz&@LS;cxr@ z|GyXg|NnO}0|WC728IJuA|j&{7{Fjn5(9&K?*IS)n-F3OEDQ|XYZ(|$|3`>v6)-TY Nc?L9Z&140p3joe-D0lz> diff --git a/rtdata/iccprofiles/output/RTv4_Wide.icc b/rtdata/iccprofiles/output/RTv4_Wide.icc index fced23d15f6bda0494fa4e95a78530c24102202b..6dca43823e347e6d3a519d85ee52b34f444e9137 100644 GIT binary patch delta 119 zcmaFE`i6CaJTEtcFav*La&duguv^H)M5&E#<&5DB|Ns8~|NkEp|7BogU0)us8a&duguv^H)M5&E#<&5Es3_J`B4D3J*0^AG?|G)hQ0w9|a vNd04AWZ;X4j8XteGB9lSV_z1|NrkI1_tIk3=9YIA|j&{7{DNZ0Rw}@SD^R=gqX^F1_u5X28L~i5n@Tx85p*= NGcZWpoGin10RT)+CM5s> delta 127 zcmaFE`i6CaEI$teKZ7a*b7FFFfp4%|$izgcjc%2Uv0e-etdIZy|E$Hpz&@LS;cxr@ z|GyXg|NnO}0|WC728IJuA|j&{7{DNZ3Il`1JD~UkgqX@)1_u6S28M0>5MoJ785p)t NU|^8AH(7@10su_tCP4rI diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index dc75db61f..c028ee9e7 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1179,15 +1179,15 @@ void ICCProfileCreator::savePressed() xyD = {0.447573, 0.407440, 1.0}; } - if (illuminant == "D65") { + if (isD65) { xyD = {0.312700492, 0.329000939, 1.0}; } - if (illuminant == "D60") { + if (isD60) { xyD = {0.32168, 0.33767, 1.0}; } - if (illuminant == "D50") { + if (isD50) { xyD = {0.3457, 0.3585, 1.0}; } From 5535603710282195d6c581026a9142312ff8a50f Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Tue, 13 Nov 2018 14:31:30 +0100 Subject: [PATCH 134/348] Change sligthly matrix XYZ for ICCv2 due to white point change --- rtdata/iccprofiles/output/RTv2_ACES-AP0.icc | Bin 25444 -> 25444 bytes rtdata/iccprofiles/output/RTv2_ACES-AP1.icc | Bin 25444 -> 25444 bytes rtdata/iccprofiles/output/RTv2_Best.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Beta.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Bruce.icc | Bin 25436 -> 25436 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 25436 -> 25436 bytes rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 876 -> 876 bytes rtdata/iccprofiles/output/RTv2_Rec2020.icc | Bin 25444 -> 25444 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 752 -> 752 bytes rtgui/iccprofilecreator.cc | 54 ++++++++++---------- 12 files changed, 27 insertions(+), 27 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc index b54fcfb4e51bd534ca3ccfbc6170a637a4d6dc89..a12a57402705fa3564bff99bebd5056c2ab07465 100644 GIT binary patch delta 64 zcmaEIjPc1a#to+#4OcTT#4P>)|G!^EWRwB}7%(d_Fzoooz`!I66Z`-F8|VN3uTmHo ME*{$ahcP1&02bvKm;e9( delta 64 zcmaEIjPc1a#to+#4OcKQ#4P{+|G!^EWRwB}7%*!wFzoooz`!H}6Z`-F8_WOyuaX%U ME*{?ehcP1&02fmjnE(I) diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc index dc7e1f709e7de8c83be15926b36b1f2ab61ba022..079eed297c05d9ca44d6c9347de1236be5d87c27 100644 GIT binary patch delta 44 xcmaEIjPc1a#to+#W#=$3cwGDc|6fT&WRwB}7^sCaFs%N^SXDCsK}2Mf0*Gc{Fv(zG*mIPDfhiv$rqIB^z;S?q;ljSn I9~d(d0X*0c$^ZZW diff --git a/rtdata/iccprofiles/output/RTv2_Beta.icc b/rtdata/iccprofiles/output/RTv2_Beta.icc index c17ff0f0f9b6090d80e42d0127386407752abaa3..e6772948388f460585a855fc8af1f5d699488605 100644 GIT binary patch delta 40 scmca{jPb@X#tr)!CGRjW_%3Atf{4f{1rW`^ptGKVVddM+Hy9fd0TYc3p8x;= delta 40 scmca{jPb@X#tr)!CC@W3_|9hlf{4f{1rW`^ptGBSVddw|Hy9fd0TKrco&W#< diff --git a/rtdata/iccprofiles/output/RTv2_Bruce.icc b/rtdata/iccprofiles/output/RTv2_Bruce.icc index 8d53051887c297477b93446c68e08008fef7c5ef..601c485fd5d73571fb12bad7ef194ad604f77523 100644 GIT binary patch delta 72 zcmca}jPcGf#tnxV4I3F49C{cSShyl0qZAmxAc&8FVZ99lgMc(bOwAq0w_sq{&#_5K P!eNsVkHTh&Bo{^ia^Vjx delta 72 zcmca}jPcGf#tnxV4a*rA9NHKdShyl0qZAmxAV`XVVZ93jgMchTOwAR@H)CMf&$>xT P!eNsVkHTh&Bo{^iatjYE diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc index 962c759bbaae93009497befacaff670aeb255295..acb6a91f993470d6bbe4f7c0a548930659e9c6f0 100644 GIT binary patch delta 72 zcmca}jPcGf#tnxV4b2%CJohmGK}2Mf0*Gc{P@2WSu+0|8U_^**w-S&6qp$pxYsf;oc_1@ I4`W6m0MT?4>Hq)$ delta 64 zcmaEIjPc1a#to+#4U-rc+;ji`|KAi58KuAg23iFS3~Qb-FtD#dh$*lzFmSJBU^xAM J^B=~HL;%qS6YT&1 diff --git a/rtdata/iccprofiles/output/RTv2_Wide.icc b/rtdata/iccprofiles/output/RTv2_Wide.icc index 06d5747cba04616d580230da0d77a17fcbf56e74..a932f5a06ec1686765ca94d7b8f47859b9a04a26 100644 GIT binary patch delta 36 ocmca{jPb@X#tr)!MZ*~woTM0lAR;nK0Yoz}NM7B1g|Q_O0L)tn{Qv*} delta 36 ocmca{jPb@X#tr)!Mg15UoFo{4AR;nK0Yoz}NZ#9gg|Q_O0Lyy``v3p{ diff --git a/rtdata/iccprofiles/output/RTv2_sRGB.icc b/rtdata/iccprofiles/output/RTv2_sRGB.icc index a039d2f6efa89e23a1c6698f56d9c3b48ce0492a..e0f967bfe4a296e12e95de7886163450cd033aed 100644 GIT binary patch delta 64 zcmca{jPb@X#tr)!4HqylSbSw*V4e^W8KuAg21(Ny7`C@FFi6})h^fqHVBl|IVAyte J^9RO^L;!C|5&8fC delta 64 zcmca{jPb@X#tr)!4Hq#mSbSw*V4e^W8KuAg21zp+7`C@EFi6}&h^Z`KVBl|IVAytk J^9RO^L;!Ft5()qS diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index f81aba3913cacce8561847d4589ce657ea58f249..075e9637c4daf56c91e68ba325a3ef214bc9eda3 100644 GIT binary patch delta 27 icmeys`hj(VJTEVU00UoQa&duguv^H)M5&E#tC#?D0tjLN delta 27 icmeys`hj(VJTEtcAcIn3a&duguv^H)M5&E#tC#?EEC_V~ diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index e5e0f759f..0e4921b3f 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1063,12 +1063,12 @@ void ICCProfileCreator::savePressed() if (primariesPreset == "sRGB") { { - //Matrix value from spec Adobe - rt = {0.43607, 0.22249, 0.01392}; + //Matrix value from spec Adobe but adapted with wp + rt = {0.43604, 0.22249, 0.01392}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14307, 0.06061, 0.71410}; + bt = {0.14305, 0.06061, 0.71391}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.38515, 0.71687, 0.09708}; + gt = {0.38512, 0.71690, 0.09706}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } @@ -1077,10 +1077,10 @@ void ICCProfileCreator::savePressed() if (primariesPreset == "Adobe") { { - //Adobe spec + //Adobe spec adapted with wp rt = {0.60974, 0.31111, 0.01947}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14919, 0.06322, 0.74457}; + bt = {0.14919, 0.06322, 0.74455}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); gt = {0.20528, 0.62567, 0.06087}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); @@ -1089,88 +1089,88 @@ void ICCProfileCreator::savePressed() if (primariesPreset == "Rec2020") { { - rt = {0.67337, 0.27901, -0.00192}; + rt = {0.67348, 0.27904, -0.00194}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.12506, 0.04561, 0.79686}; + bt = {0.12505, 0.04561, 0.79684}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.16577, 0.67538, 0.02997}; + gt = {0.16566, 0.67534, 0.02998}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "BruceRGB") { { - rt = {0.49400, 0.25204, 0.01578}; + rt = {0.49416, 0.25214, 0.01578}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14949, 0.06332, 0.74617}; + bt = {0.14952, 0.06335, 0.74622}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.32071, 0.68463, 0.06294}; + gt = {0.32053, 0.68451, 0.06291}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "ACES-AP0") { { - rt = {0.99084, 0.36192, -0.00272}; + rt = {0.99089, 0.36189, -0.00272}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {-0.03900, -0.08443, 0.81938}; + bt = {-0.03893, -0.08441, 0.81937}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.01236, 0.72250, 0.00824}; + gt = {0.01224, 0.72250, 0.00826}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "ACES-AP1") { { - rt = {0.68970, 0.28445, -0.00604}; + rt = {0.68988, 0.28452, -0.00604}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); bt = {0.12456, 0.04379, 0.82094}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.14995, 0.67175, 0.00999}; + gt = {0.14977, 0.67169, 0.01001}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "ProPhoto") { { - rt = {0.79755, 0.28802, 0.0}; + rt = {0.79771, 0.28806, 0.0}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.03134, 0.00008, 0.82492}; + bt = {0.03133, 0.00008, 0.82489}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.13531, 0.71190, -0.00002}; + gt = {0.13516, 0.71187, 0.00002}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "Widegamut") { { - rt = {0.71603, 0.25818, 0.0}; + rt = {0.71617, 0.25821, 0.0}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); bt = {0.14713, 0.01688, 0.77312}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.10104, 0.72493, 0.05177}; + gt = {0.10091, 0.72493, 0.05177}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "BestRGB") { { - rt = {0.63254, 0.22844, 0.0}; + rt = {0.63274, 0.22847, 0.0}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.12695, 0.03418, 0.81540}; + bt = {0.12694, 0.03418, 0.81538}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.20471, 0.73738, 0.00951}; + gt = {0.20451, 0.73735, 0.00952}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "BetaRGB") { { - rt = {0.67113, 0.30321, 0.0}; + rt = {0.67133, 0.30330, 0.0}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); bt = {0.11833, 0.03293, 0.78419}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.17473, 0.66386, 0.04070}; + gt = {0.17455, 0.66377, 0.04070}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } From b0bc0c7addef9894cca0545c464a6e17c3330f99 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 13 Nov 2018 15:02:08 +0100 Subject: [PATCH 135/348] Fix bug in pdaf lines filter --- rtengine/pdaflinesfilter.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index 92fd68b41..ee279f3c0 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -151,12 +151,10 @@ public: if (it > pattern_.begin()) { int b2 = *(it-1); int d2 = key - b2; - float f = BORDER[std::min(std::min(d, d2), BORDER_WIDTH)]; - return f; - } else { - float f = BORDER[std::min(d, BORDER_WIDTH)]; - return f; + d = std::min(d, d2); } + float f = (d <= BORDER_WIDTH) ? BORDER[d] : 0.f; + return f; } return 0.f; } From 7a84f8211ecb6b7ebe31b3dff25ad51f89842b49 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 13 Nov 2018 22:22:09 +0100 Subject: [PATCH 136/348] Show 'Could not extract thumb from ...' only in verbose mode, closes #4984 --- rtengine/rtthumbnail.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index f01e87ff7..aafdea029 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -421,7 +421,9 @@ Thumbnail* Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, RawMetaDataL // did we succeed? if ( err ) { - printf ("Could not extract thumb from %s\n", fname.data()); + if (options.rtSettings.verbose) { + std::cout << "Could not extract thumb from " << fname.c_str() << std::endl; + } delete tpp; delete img; delete ri; From 24ce9148b96b9cb62246e272540a3b9f53518dfb Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 13 Nov 2018 22:23:30 +0100 Subject: [PATCH 137/348] Remove useless logging in verbose mode, #4985 --- rtengine/ipvibrance.cc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index f7a938c33..86c942731 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -170,12 +170,6 @@ void ImProcFunctions::vibrance (LabImage* lab) {static_cast(wiprof[2][0]), static_cast(wiprof[2][1]), static_cast(wiprof[2][2])} }; - - if (settings->verbose) { - printf ("vibrance: p0=%1.2f p1=%1.2f p2=%1.2f s0=%1.2f s1=%1.2f s2=%1.2f\n", p0, p1, p2, s0, s1, s2); - printf (" pastel=%f satur=%f limit= %1.2f chromamean=%0.5f\n", 1.0f + chromaPastel, 1.0f + chromaSatur, limitpastelsatur, chromamean); - } - #pragma omp parallel if (multiThread) { From be4027349d583149be4c3e9457cde813e0d4cd77 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 13 Nov 2018 22:39:54 +0100 Subject: [PATCH 138/348] Remove useless logging while panning in verbose mode, #4985 --- rtengine/dcrop.cc | 12 ------------ rtengine/improccoordinator.cc | 17 ----------------- 2 files changed, 29 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 6aa1bd2fe..ddb1b750d 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -1163,10 +1163,6 @@ bool check_need_larger_crop_for_lcp_distortion(int fw, int fh, int x, int y, int bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool internal) { - if (settings->verbose) { - printf("setcropsizes before lock\n"); - } - if (!internal) { cropMutex.lock(); } @@ -1258,10 +1254,6 @@ bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool inter int cw = skips(bw, skip); int ch = skips(bh, skip); - if (settings->verbose) { - printf("setsizes starts (%d, %d, %d, %d, %d, %d)\n", orW, orH, trafw, trafh, cw, ch); - } - EditType editType = ET_PIPETTE; if (const auto editProvider = PipetteBuffer::getDataProvider()) { @@ -1326,10 +1318,6 @@ bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool inter cropx = bx1; cropy = by1; - if (settings->verbose) { - printf("setsizes ends\n"); - } - if (!internal) { cropMutex.unlock(); } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index ac330db23..f683f0b71 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -1010,10 +1010,6 @@ void ImProcCoordinator::freeAll() void ImProcCoordinator::setScale(int prevscale) { - if (settings->verbose) { - printf("setscale before lock\n"); - } - tr = getCoarseBitMask(params.coarse); int nW, nH; @@ -1027,10 +1023,6 @@ void ImProcCoordinator::setScale(int prevscale) imgsrc->getSize(pp, nW, nH); } while (nH < 400 && prevscale > 1 && (nW * nH < 1000000)); // sctually hardcoded values, perhaps a better choice is possible - if (settings->verbose) { - printf("setscale starts (%d, %d)\n", nW, nH); - } - if (nW != pW || nH != pH) { freeAll(); @@ -1054,19 +1046,10 @@ void ImProcCoordinator::setScale(int prevscale) fullw = fw; fullh = fh; - if (settings->verbose) { - printf("setscale ends\n"); - } - if (!sizeListeners.empty()) for (size_t i = 0; i < sizeListeners.size(); i++) { sizeListeners[i]->sizeChanged(fullw, fullh, fw, fh); } - - if (settings->verbose) { - printf("setscale ends2\n"); - } - } From 9453c23b48cb587cffdd731c3902916b8c5a38bf Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 13 Nov 2018 22:46:13 +0100 Subject: [PATCH 139/348] Remove useless 'freeall...' logs, #4985 --- rtengine/dcrop.cc | 4 ---- rtengine/improccoordinator.cc | 4 ---- 2 files changed, 8 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index ddb1b750d..48d1df191 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -1100,10 +1100,6 @@ void Crop::update(int todo) void Crop::freeAll() { - if (settings->verbose) { - printf("freeallcrop starts %d\n", (int)cropAllocated); - } - if (cropAllocated) { if (origCrop) { delete origCrop; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index f683f0b71..2eb72a72b 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -965,10 +965,6 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) void ImProcCoordinator::freeAll() { - if (settings->verbose) { - printf("freeall starts %d\n", (int)allocated); - } - if (allocated) { if (orig_prev != oprevi) { delete oprevi; From 406a64c4697b0170f198916b83120c9cbde7ea47 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 13 Nov 2018 22:59:29 +0100 Subject: [PATCH 140/348] Don't log filter settings on startup, #4985 --- rtgui/filecatalog.cc | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 55e293718..49559f93e 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -1623,26 +1623,6 @@ BrowserFilter FileCatalog::getFilter () anyRankFilterActive || anyCLabelFilterActive || anyEditedFilterActive; } - if( options.rtSettings.verbose ) { - printf ("\n**************** FileCatalog::getFilter *** AFTER STEP 1 \n"); - - for (int i = 0; i <= 5; i++) { - printf ("filter.showRanked[%i] = %i\n", i, filter.showRanked[i]); - } - - for (int i = 0; i <= 5; i++) { - printf ("filter.showCLabeled[%i] = %i\n", i, filter.showCLabeled[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showEdited[%i] = %i\n", i, filter.showEdited[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showRecentlySaved[%i] = %i\n", i, filter.showRecentlySaved[i]); - } - } - filter.multiselect = false; /* From 88e9cf165c9b463bc70a0eb2c36227ab3db42e2d Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Wed, 14 Nov 2018 09:07:14 +0100 Subject: [PATCH 141/348] Increases the accuracy of XYZ matrix for ICC v2 --- rtgui/iccprofilecreator.cc | 82 +++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 0e4921b3f..10d3614d9 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1061,14 +1061,14 @@ void ICCProfileCreator::savePressed() cmsCIExyY gt; if (primariesPreset == "sRGB") { - + //calculated with personnal special spreadsheat { //Matrix value from spec Adobe but adapted with wp - rt = {0.43604, 0.22249, 0.01392}; + rt = {0.4360411843, 0.2224843154, 0.0139201582}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14305, 0.06061, 0.71391}; + bt = {0.1430457992, 0.0606099658, 0.7139121724}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.38512, 0.71690, 0.09706}; + gt = {0.3851136574, 0.7169049862, 0.0970677661}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } @@ -1077,100 +1077,100 @@ void ICCProfileCreator::savePressed() if (primariesPreset == "Adobe") { { - //Adobe spec adapted with wp - rt = {0.60974, 0.31111, 0.01947}; + //Adobe spec adapted with wp calculated with personnal special spreadsheat + rt = {0.6097408852, 0.3111123176, 0.0194653393}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14919, 0.06322, 0.74455}; + bt = {0.1491866649, 0.0632119133, 0.7445599707}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.20528, 0.62567, 0.06087}; + gt = {0.2052730908, 0.6256750365, 0.0608747867}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "Rec2020") { - { - rt = {0.67348, 0.27904, -0.00194}; + {//calculated with personnal special spreadsheat + rt = {0.6734800343, 0.2790423273, -0.0019336766}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.12505, 0.04561, 0.79684}; + bt = {0.1250489478, 0.0456126910, 0.7968509159}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.16566, 0.67534, 0.02998}; + gt = {0.1656716588, 0.6753442491, 0.0299828575}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "BruceRGB") { - { - rt = {0.49416, 0.25214, 0.01578}; + {//calculated with personnal special spreadsheat + rt = {0.4941542253, 0.2521357351, 0.0157753562}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14952, 0.06335, 0.74622}; + bt = {0.1495175342, 0.0633521060, 0.7462112712}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.32053, 0.68451, 0.06291}; + gt = {0.3205288814, 0.6845114263, 0.0629134693}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "ACES-AP0") { - { - rt = {0.99089, 0.36189, -0.00272}; + {//calculated with personnal special spreadsheat + rt = {0.9908835135, 0.3618940325, -0.0027137400}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {-0.03893, -0.08441, 0.81937}; + bt = {-0.0389246557, -0.084405166, 0.8193659780}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.01224, 0.72250, 0.00826}; + gt = {0.0122417831, 0.7225104015, 0.0082478587}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } - if (primariesPreset == "ACES-AP1") { - { - rt = {0.68988, 0.28452, -0.00604}; + if (primariesPreset == "ACES-AP1") {//done + {//calculated with personnal special spreadsheat + rt = {0.6898756188, 0.2845109670, -0.0060455375}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.12456, 0.04379, 0.82094}; + bt = {0.1245615936, 0.0437959432, 0.8209388333}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.14977, 0.67169, 0.01001}; + gt = {0.1497634285, 0.6716923572, 0.0100068009}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "ProPhoto") { - { - rt = {0.79771, 0.28806, 0.0}; + {//calculated with personnal special spreadsheat + rt = {0.7977198204, 0.2880493171, -0.0000030551}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.03133, 0.00008, 0.82489}; + bt = {0.0313194091, 0.0000771282, 0.8248890748}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.13516, 0.71187, 0.00002}; + gt = {0.1351614114, 0.7118728221, 0.0000140770}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "Widegamut") { - { - rt = {0.71617, 0.25821, 0.0}; + {//calculated with personnal special spreadsheat + rt = {0.7161680478, 0.2582038074, -0.0000027515}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.14713, 0.01688, 0.77312}; + bt = {0.1471328469, 0.0168600579, 0.7731227232}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.10091, 0.72493, 0.05177}; + gt = {0.1008997462, 0.7249354021, 0.0517801251}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "BestRGB") { - { - rt = {0.63274, 0.22847, 0.0}; + {//calculated with personnal special spreadsheat + rt = {0.6327383009, 0.2284760022, -0.0000024233}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.12694, 0.03418, 0.81538}; + bt = {0.1269437333, 0.0341753604, 0.8153773703}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.20451, 0.73735, 0.00952}; + gt = {0.2045186067, 0.7373479048, 0.0095251497}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } if (primariesPreset == "BetaRGB") { - { - rt = {0.67133, 0.30330, 0.0}; + {//calculated with personnal special spreadsheat + rt = {0.6713200674, 0.3033034560, -0.0000012307}; cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.11833, 0.03293, 0.78419}; + bt = {0.1183343909, 0.0329265310, 0.7842009909}; cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.17455, 0.66377, 0.04070}; + gt = {0.1745461827, 0.6637692805, 0.0407003365}; cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); } } From 1f04599bc31fbba73879fbb3c73e7575f4814878 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Wed, 14 Nov 2018 11:29:26 +0100 Subject: [PATCH 142/348] change ICCv2 to be in line with the most accurate data XYZ --- rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25432 -> 25432 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Wide.icc b/rtdata/iccprofiles/output/RTv2_Wide.icc index a932f5a06ec1686765ca94d7b8f47859b9a04a26..3d3f72f5359d6d32378b582b17e239990ca237d7 100644 GIT binary patch delta 16 Ycmca{jPb@X#tp9-83Q-JVa!Pc07nJ~ng9R* delta 16 Ycmca{jPb@X#tp9-8G|;zVa!Pc07nc5n*aa+ From e02d4ac24d058ff706df875f65f360c5fd013fa4 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Wed, 14 Nov 2018 13:01:43 +0100 Subject: [PATCH 143/348] Change CmsCIExyY by cmsCIEXYZ in some cases --- rtgui/iccprofilecreator.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 10d3614d9..6ac043437 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1034,7 +1034,7 @@ void ICCProfileCreator::savePressed() } else { if (v2except) { - cmsCIExyY XYZ; + cmsCIEXYZ XYZ; { XYZ = {0.95045471, 1.0, 1.08905029};//white D65 @@ -1056,9 +1056,9 @@ void ICCProfileCreator::savePressed() cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); - cmsCIExyY rt; - cmsCIExyY bt; - cmsCIExyY gt; + cmsCIEXYZ rt; + cmsCIEXYZ bt; + cmsCIEXYZ gt; if (primariesPreset == "sRGB") { //calculated with personnal special spreadsheat From 297324794821b13fee28d81ceebc4792bf0bada8 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 14 Nov 2018 14:42:25 +0100 Subject: [PATCH 144/348] lossless_dnglj92_load_raw(), don't use malloc/free --- rtengine/dcraw.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 79c0e59f6..f61cd94c2 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1147,11 +1147,11 @@ void CLASS lossless_dnglj92_load_raw() } else { dataOffset[0] = ifp->pos; } - uint8_t *data = (uint8_t*)malloc(ifp->size); + const int data_length = ifp->size; + const std::unique_ptr data(new uint8_t[data_length]); fseek(ifp, 0, SEEK_SET); // read whole file - int data_length = ifp->size; - fread(data, 1, data_length, ifp); + fread(data.get(), 1, data_length, ifp); lj92 lj; int newwidth, newheight, newbps; lj92_open(&lj, &data[dataOffset[0]], data_length, &newwidth, &newheight, &newbps); @@ -1159,7 +1159,6 @@ void CLASS lossless_dnglj92_load_raw() if (newwidth * newheight * tileCount != raw_width * raw_height) { // not a lj92 file fseek(ifp, save, SEEK_SET); - free(data); lossless_dng_load_raw(); return; } @@ -1173,17 +1172,15 @@ void CLASS lossless_dnglj92_load_raw() int newwidth, newheight, newbps; lj92_open(&lj, &data[dataOffset[t]], data_length, &newwidth, &newheight, &newbps); - uint16_t *target = (uint16_t*)malloc(newwidth * newheight * sizeof *target); - lj92_decode(lj, target, tile_width, 0, lincurve, 0x1000); + const std::unique_ptr target(new uint16_t[newwidth * newheight]); + lj92_decode(lj, target.get(), tile_width, 0, lincurve, 0x1000); for (int y = 0; y < height; ++y) { for(int x = 0; x < tile_width; ++x) { RAW(y, x + tcol) = target[y * tile_width + x]; } } lj92_close(lj); - free(target); } - free(data); } void CLASS lossless_dng_load_raw() From 66bb7ba8540a5bf86b2fa510501c1be3c34de7a3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 14 Nov 2018 15:18:14 +0100 Subject: [PATCH 145/348] Fix broken arm builds --- rtengine/boxblur.h | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/boxblur.h b/rtengine/boxblur.h index 71452ceae..d686ad43e 100644 --- a/rtengine/boxblur.h +++ b/rtengine/boxblur.h @@ -19,6 +19,7 @@ #ifndef _BOXBLUR_H_ #define _BOXBLUR_H_ +#include #include #include #include From ff8ec9be084b9b887dd222783a158f52eebdda1e Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Wed, 14 Nov 2018 17:47:34 +0100 Subject: [PATCH 146/348] Small changes to ICCv2 profiles --- rtdata/iccprofiles/output/RTv2_ACES-AP0.icc | Bin 25444 -> 25444 bytes rtdata/iccprofiles/output/RTv2_ACES-AP1.icc | Bin 25444 -> 25444 bytes rtdata/iccprofiles/output/RTv2_Best.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Beta.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_Bruce.icc | Bin 25436 -> 25436 bytes rtdata/iccprofiles/output/RTv2_Large.icc | Bin 25436 -> 25436 bytes rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 876 -> 876 bytes rtdata/iccprofiles/output/RTv2_Rec2020.icc | Bin 25444 -> 25444 bytes rtdata/iccprofiles/output/RTv2_Wide.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 25432 -> 25432 bytes rtdata/iccprofiles/output/RTv4_ACES-AP0.icc | Bin 756 -> 756 bytes rtdata/iccprofiles/output/RTv4_ACES-AP1.icc | Bin 756 -> 756 bytes rtgui/iccprofilecreator.cc | 1 - 13 files changed, 1 deletion(-) diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc index a12a57402705fa3564bff99bebd5056c2ab07465..dce81742c5c408e7fef01ee483ed2dcf6acf8e59 100644 GIT binary patch delta 24 gcmaEIjPc1a#tD+#j~KWa_!tBk6d8m!syHMA0BUIl!vFvP delta 24 gcmaEIjPc1a#tD+#ml;?X7#X-2tQgogsyHMA0BF(%rT_o{ diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc index 079eed297c05d9ca44d6c9347de1236be5d87c27..65af92f1ce79354c7453f5e54e96c810ee4dd5c7 100644 GIT binary patch delta 24 gcmaEIjPc1a#tD+#j~KWa_!tBk6d8m!syHMA0BUIl!vFvP delta 24 gcmaEIjPc1a#tD+#ml;?X7#X-2tQgogsyHMA0BF(%rT_o{ diff --git a/rtdata/iccprofiles/output/RTv2_Best.icc b/rtdata/iccprofiles/output/RTv2_Best.icc index 36b0b2c28d718c2b760438d1bffd015e9b3979f9..6390b1f34c055effde63fb82b6cee9c842558985 100644 GIT binary patch delta 24 gcmca{jPb@X#tD+#j~KWa_!tBk6d8m!s+c4L0BAJ^p8x;= delta 24 gcmca{jPb@X#tD+#ml;?X7#X-2tQgogs+c4L0A`*Bf&c&j diff --git a/rtdata/iccprofiles/output/RTv2_Beta.icc b/rtdata/iccprofiles/output/RTv2_Beta.icc index e6772948388f460585a855fc8af1f5d699488605..13907b35a3f3c05f331cefad0ba6a2e88fd68e2f 100644 GIT binary patch delta 24 gcmca{jPb@X#tD+#j~KWa_!tBk6d8m!s+c4L0BAJ^p8x;= delta 24 gcmca{jPb@X#tD+#ml;?X7#X-2tQgogs+c4L0A`*Bf&c&j diff --git a/rtdata/iccprofiles/output/RTv2_Bruce.icc b/rtdata/iccprofiles/output/RTv2_Bruce.icc index 601c485fd5d73571fb12bad7ef194ad604f77523..7dd7f383c831b207ae50de7c31600ee56aa40739 100644 GIT binary patch delta 24 gcmca}jPcGf#tD+#j~KWa_!tBk6d8m!s#qig0BG?Bs{jB1 delta 24 gcmca}jPcGf#tD+#ml;?X7#X-2tQgogs#qig0B2eTjsO4v diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc index acb6a91f993470d6bbe4f7c0a548930659e9c6f0..9d2c3fc01171f83e59c50667f3773030697261be 100644 GIT binary patch delta 24 gcmca}jPcGf#tD+#j~KWa_!tBk6d8m!s#qig0BG?Bs{jB1 delta 24 gcmca}jPcGf#tD+#ml;?X7#X-2tQgogs#qig0B2eTjsO4v diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc index 3ab78bcaad5ee50c985e43433c471d3594a82381..065c43bc44ed6cbe53fd332875a727a48fc03eb0 100644 GIT binary patch delta 22 dcmaFE_J(bOB=;i*ZU#OEK?X$z;f*RD%m7G01o;2} delta 22 dcmaFE_J(bOB==O|X<~A5fp4%|$izgcjc)6h0DOuFp8x;= diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc index ce26048890878eb5acec135e34668d2a3ef857cb..7194ff6dac9f2f388c39a4c7390ae970ee1d50d6 100644 GIT binary patch delta 29 kcmeyu`h|6ZEI%KE0D}&LWnyx1fp4%|$izgcjc)6h0Dn#h#sB~S delta 29 kcmeyu`h|6ZEI%&;H-i9!Wnyx1fp4%|$izgcjc)6h0DRmCqyPW_ diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 6ac043437..e0fc1365f 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1387,7 +1387,6 @@ void ICCProfileCreator::savePressed() if (!v2except) { cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); } else { - printf("save except\n"); cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); } From 834f6bafead2813781ea8651c9c6bdccc1f8d18d Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 15 Nov 2018 07:49:58 +0100 Subject: [PATCH 147/348] Japanese translation updated by firefly, closes #4988 --- rtdata/languages/Japanese | 92 +++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 8a2f90dfd..e36e77efb 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -74,6 +74,10 @@ DYNPROFILEEDITOR_DELETE;削除 DYNPROFILEEDITOR_EDIT;編集 DYNPROFILEEDITOR_EDIT_RULE;ダイナミックプロファイルの規定を変更 DYNPROFILEEDITOR_ENTRY_TOOLTIP;既定の符号は鈍いので\n入力する際に"re:"という接頭語を付けます\n通常の表現を使います +DYNPROFILEEDITOR_IMGTYPE_ANY;任意 +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;ピクセルシフト +DYNPROFILEEDITOR_IMGTYPE_STD;標準え DYNPROFILEEDITOR_MOVE_DOWN;下に移動 DYNPROFILEEDITOR_MOVE_UP;上に移動 DYNPROFILEEDITOR_NEW;新規 @@ -146,6 +150,8 @@ FILEBROWSER_AUTOFLATFIELD;オート・フラットフィールド FILEBROWSER_BROWSEPATHBUTTONHINT;クリックで選択したパスをブラウズ FILEBROWSER_BROWSEPATHHINT;参照するパスを入力します\nCtrl-O パスのテキストボックスにフォーカス\nEnter / Ctrl-Enterその場所をブラウズします\nEsc 変更をクリア\nShift-Escフォーカスを削除\nパスのショートカット:\n ~ - ユーザーのホームディレクトリ\n ! - ユーザーの画像ディレクトリ FILEBROWSER_CACHE;cache +FILEBROWSER_CACHECLEARFROMFULL;プロファイルを含めcache内をクリアにする +FILEBROWSER_CACHECLEARFROMPARTIAL;プロファイルを除き、cache内をクリアにする FILEBROWSER_CLEARPROFILE;プロファイルのクリア FILEBROWSER_COLORLABEL_TOOLTIP;カラー・ラベル\n\nドロップダウン・メニューからか、ショートカット:\nShift-Ctrl-1 レッド\nShift-Ctrl-2 イエロー\nShift-Ctrl-3 グリーン\nShift-Ctrl-4 ブルー\nShift-Ctrl-5 パープル FILEBROWSER_COPYPROFILE;プロファイルをコピー @@ -751,12 +757,26 @@ HISTORY_MSG_485;レンズ補正 HISTORY_MSG_486;レンズ補正 - カメラ HISTORY_MSG_487;レンズ補正 - レンズ HISTORY_MSG_488;ダイナミックレンジ圧縮 +HISTORY_MSG_489;DRC - 細部 HISTORY_MSG_490;DRC - 量 HISTORY_MSG_491;ホワイトバランス HISTORY_MSG_492;RGBカーブ HISTORY_MSG_493;L*a*b*調整 HISTORY_MSG_CLAMPOOG;色域外の色を切り取る HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - カラー補正 +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - 色の補正 +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - 色度のマスク +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - 色相のマスク +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - 明度 +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - 輝度のマスク +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - リスト +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - 彩度 +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - マスクの表示 +HISTORY_MSG_DEHAZE_DEPTH;霞除去 - 深度 +HISTORY_MSG_DEHAZE_ENABLED;霞除去 +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;霞除去 - 深度マップの表示 +HISTORY_MSG_DEHAZE_STRENGTH;霞除去 - 強さ +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;デュアルデモザイク - 自動しきい値 HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - コントラストのしきい値 HISTORY_MSG_HISTMATCHING;トーンカーブの自動調節 HISTORY_MSG_ICM_OUTPUT_PRIMARIES;出力 - プライマリ @@ -781,6 +801,7 @@ HISTORY_MSG_RAWCACORR_COLORSHIFT;Rawの色収差補正 - 色ずれを回避 HISTORY_MSG_RAW_BORDER;Rawの境界 HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値 +HISTORY_MSG_SH_COLORSPACE;S/H - 色空間 HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトライト HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトライト - 強さ HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - アンカー @@ -982,6 +1003,7 @@ PARTIALPASTE_CROP;切り抜き PARTIALPASTE_DARKFRAMEAUTOSELECT;ダークフレーム自動選択 PARTIALPASTE_DARKFRAMEFILE;ダークフレーム・ファイル PARTIALPASTE_DEFRINGE;フリンジ低減 +PARTIALPASTE_DEHAZE;霞除去 PARTIALPASTE_DETAILGROUP;ディテールの設定 PARTIALPASTE_DIALOGLABEL;処理プロファイルの部分ペースト PARTIALPASTE_DIRPYRDENOISE;ノイズ低減 @@ -1018,6 +1040,7 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化 PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正 +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA 色ずれを回避 PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー PARTIALPASTE_RAWEXPOS_BLACK;黒レベル PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数 @@ -1055,6 +1078,11 @@ PREFERENCES_BEHAVIOR;ビヘイビア PREFERENCES_BEHSETALL;すべて '設定' PREFERENCES_BEHSETALLHINT;すべてのパラメータを 設定モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に取って代わり同一になります PREFERENCES_BLACKBODY;タングステン +PREFERENCES_CACHECLEAR;クリア +PREFERENCES_CACHECLEAR_ALL;cacheに入れられたファイルを全てクリア: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;cacheに入れた処理プロファイル以外をクリア: +PREFERENCES_CACHECLEAR_ONLYPROFILES;cacheに入れた処理プロファイルだけをクリア: +PREFERENCES_CACHECLEAR_SAFETY;casheに入れたファイルだけをクリア。元画像に付随した処理プロファイルはそのまま PREFERENCES_CACHEMAXENTRIES;キャッシュエントリーの最大数 PREFERENCES_CACHEOPTS;cache オプション PREFERENCES_CACHETHUMBHEIGHT;サムネイル縦の最大値 @@ -1481,6 +1509,16 @@ TP_COLORTONING_LAB;L*a*b*モデルでブレンド TP_COLORTONING_LABEL;カラートーン調整 TP_COLORTONING_LABGRID;L*a*b*カラー補正グリッド TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;L*a*b*の補正領域 +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHROMATICITYMASK;色度 +TP_COLORTONING_LABREGION_HUEMASK;色相 +TP_COLORTONING_LABREGION_LIGHTNESS;明度 +TP_COLORTONING_LABREGION_LIGHTNESSMASK;明度 +TP_COLORTONING_LABREGION_LIST_TITLE;補正 +TP_COLORTONING_LABREGION_MASK;マスク +TP_COLORTONING_LABREGION_SATURATION;彩度 +TP_COLORTONING_LABREGION_SHOWMASK;マスクの表示 TP_COLORTONING_LUMA;明度 TP_COLORTONING_LUMAMODE;明度を維持 TP_COLORTONING_LUMAMODE_TOOLTIP;カラー(レッド、グリーン、シアン、ブルーなど)を変える際に、これを有効にすると、各ピクセルの明度は維持されます。 @@ -1529,6 +1567,10 @@ TP_DARKFRAME_LABEL;ダークフレーム TP_DEFRINGE_LABEL;フリンジ低減 TP_DEFRINGE_RADIUS;半径 TP_DEFRINGE_THRESHOLD;しきい値 +TP_DEHAZE_DEPTH;深度 +TP_DEHAZE_LABEL;霞除去 +TP_DEHAZE_SHOW_DEPTH_MAP;深度マップの表示 +TP_DEHAZE_STRENGTH;強さ TP_DIRPYRDENOISE_CHROMINANCE_AMZ;自動(多分割方式) TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;自動(分割方式) TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;色ノイズ低減の効果を確認して下さい\n注意:設定値の計算はあくまで平均的なもので、かなり主観的でです @@ -1840,6 +1882,8 @@ TP_RAW_DMETHOD;方式 TP_RAW_DMETHOD_PROGRESSBAR;%1 デモザイク中... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;デモザイク・リファイン中... TP_RAW_DMETHOD_TOOLTIP;注: IGVとLMMSEは高ISO画像に適しています +TP_RAW_DUALDEMOSAICAUTOCONTRAST;自動しきい値 +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;チェックボックスを有効にすると(推奨), RawTherapeeは画像の滑らかな部分をベースに最適値を計算します。\n画像に滑らかな部分がない、或いはノイズが非常に多い画像の場合、最適値は0に設定されます。\n最適値を手動で設定する場合は、チェックボックスを無効にします(画像に次第で最適値は異なります)。 TP_RAW_DUALDEMOSAICCONTRAST;コントラストのしきい値 TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;偽色抑制処理の回数 @@ -1902,7 +1946,7 @@ TP_RESIZE_HEIGHT;高さ TP_RESIZE_LABEL;リサイズ TP_RESIZE_LANCZOS;ランチョス TP_RESIZE_METHOD;方式: -TP_RESIZE_NEAREST;ニアリスト +TP_RESIZE_NEAREST;ニアレスト TP_RESIZE_SCALE;スケール TP_RESIZE_SPECIFY;条件指定: TP_RESIZE_W;幅: @@ -2036,6 +2080,7 @@ TP_SOFTLIGHT_STRENGTH;強さ TP_TM_FATTAL_AMOUNT;量 TP_TM_FATTAL_ANCHOR;アンカー TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮 +TP_TM_FATTAL_THRESHOLD;細部 TP_VIBRANCE_AVOIDCOLORSHIFT;色ずれを回避 TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;肌色トーン @@ -2283,48 +2328,3 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!DYNPROFILEEDITOR_IMGTYPE_ANY;Any -!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR -!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift -!DYNPROFILEEDITOR_IMGTYPE_STD;Standard -!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles -!HISTORY_MSG_489;DRC - Detail -!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask -!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask -!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List -!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask -!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth -!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal -!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map -!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength -!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold -!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace -!PARTIALPASTE_DEHAZE;Haze removal -!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PREFERENCES_CACHECLEAR;Clear -!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: -!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: -!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: -!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions -!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -!TP_COLORTONING_LABREGION_HUEMASK;H -!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -!TP_COLORTONING_LABREGION_LIST_TITLE;Correction -!TP_COLORTONING_LABREGION_MASK;Mask -!TP_COLORTONING_LABREGION_SATURATION;Saturation -!TP_COLORTONING_LABREGION_SHOWMASK;Show mask -!TP_DEHAZE_DEPTH;Depth -!TP_DEHAZE_LABEL;Haze Removal -!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map -!TP_DEHAZE_STRENGTH;Strength -!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). -!TP_TM_FATTAL_THRESHOLD;Detail From a1d2fcdc2c8ec1b68f4525becffa892f346b038c Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Thu, 15 Nov 2018 10:47:45 +0100 Subject: [PATCH 148/348] Add comment for RTv2_Beta usage --- rtgui/iccprofilecreator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index e0fc1365f..0d16a401a 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -749,7 +749,7 @@ void ICCProfileCreator::savePressed() } } else { //new model for v2 profile different from D50 by entering directly XYZ values and media white point - sNewProfile = "RTv2_Beta";//for copy + sNewProfile = "RTv2_Beta";//for copy generate others v2 profile. To change date of new profile, I used "ICC profile inspector" and "save as" if (primariesPreset == "ACES-AP0") { sPrimariesPreset = "ACES-AP0"; From 220714e376d00f717525aaca40a914fe9b6a52ca Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 15 Nov 2018 15:35:56 +0100 Subject: [PATCH 149/348] Remove some logging, #4985 --- rtengine/dirpyr_equalizer.cc | 8 -------- rtengine/improccoordinator.cc | 4 ---- rtengine/iplab2rgb.cc | 2 -- rtengine/rawimagesource.cc | 4 ++++ 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index cbee70763..5e33fd3b3 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -44,10 +44,6 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt { int lastlevel = maxlevel; - if(settings->verbose) { - printf("Dirpyr scaleprev=%i\n", scaleprev); - } - float atten123 = (float) settings->level123_cbdl; if(atten123 > 50.f) { @@ -105,10 +101,6 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt } - if(settings->verbose) { - printf("CbDL mult0=%f 1=%f 2=%f 3=%f 4=%f 5=%f\n", multi[0], multi[1], multi[2], multi[3], multi[4], multi[5]); - } - multi_array2D dirpyrlo (srcwidth, srcheight); level = 0; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 2eb72a72b..16d94dd57 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -653,10 +653,6 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) } if (params.colorToning.enabled && params.colorToning.autosat && actListener) { - if (settings->verbose) { - printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); - } - actListener->autoColorTonChanged(indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat } diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index c4707f16f..b2fd20cb8 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -335,8 +335,6 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i #endif delete [] buffer; if (!modelDesc.empty()) { - printf("dmdd=%s\n", modelDesc.c_str()); - std::size_t pos = modelDesc.find("g"); std::size_t posmid = modelDesc.find("s"); std::size_t posend = modelDesc.find("!"); diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 9b8d3794e..85e68745b 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -894,6 +894,10 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima DCPProfile *RawImageSource::getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as) { + if (cmp.inputProfile == "(camera)" || cmp.inputProfile == "(none)") { + return nullptr; + } + DCPProfile *dcpProf = nullptr; cmsHPROFILE dummy; findInputProfile(cmp.inputProfile, nullptr, (static_cast(getMetaData()))->getCamera(), &dcpProf, dummy); From 6074fe3be4386b276f32baad743236dede0a2460 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 15 Nov 2018 17:16:55 +0100 Subject: [PATCH 150/348] Do not search lensfun modifier if make, model or lens is empty, #4985 --- rtengine/rtlensfun.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 50b3c8a66..4856909f7 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -501,7 +501,6 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons std::unique_ptr LFDatabase::findModifier(const LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const CoarseTransformParams &coarse, int rawRotationDeg) { - const LFDatabase *db = getInstance(); Glib::ustring make, model, lens; float focallen = idata->getFocalLen(); if (lensProf.lfAutoMatch()) { @@ -516,6 +515,11 @@ std::unique_ptr LFDatabase::findModifier(const LensProfParams &lensP model = lensProf.lfCameraModel; lens = lensProf.lfLens; } + if (make.empty() || model.empty() || lens.empty()) { + return nullptr; + } + + const LFDatabase *db = getInstance(); LFCamera c = db->findCamera(make, model); LFLens l = db->findLens(lensProf.lfAutoMatch() ? c : LFCamera(), lens); if (focallen <= 0 && l.data_ && l.data_->MinFocal == l.data_->MaxFocal) { From 7c2953986826d4b977e486590a5f17b6bc97e2f2 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 15 Nov 2018 18:36:11 +0100 Subject: [PATCH 151/348] Don't log filter settings, #4985 --- rtgui/filecatalog.cc | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 49559f93e..0b45d3e3d 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -1652,28 +1652,6 @@ BrowserFilter FileCatalog::getFilter () filter.showEdited[i] = anyEditedFilterActive ? bEdited[i]->get_active() : true; filter.showRecentlySaved[i] = anyRecentlySavedFilterActive ? bRecentlySaved[i]->get_active() : true; } - - if( options.rtSettings.verbose ) { - printf ("\n**************** FileCatalog::getFilter *** AFTER STEP 2 \n"); - - for (int i = 0; i <= 5; i++) { - printf ("filter.showRanked[%i] = %i\n", i, filter.showRanked[i]); - } - - for (int i = 0; i <= 5; i++) { - printf ("filter.showCLabeled[%i] = %i\n", i, filter.showCLabeled[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showEdited[%i] = %i\n", i, filter.showEdited[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showRecentlySaved[%i] = %i\n", i, filter.showRecentlySaved[i]); - } - - printf ("filter.multiselect = %i\n", filter.multiselect); - } } From 94f4afeb6b5f3b743693139c8c3015b62fde2102 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 16 Nov 2018 14:50:51 +0100 Subject: [PATCH 152/348] Fix two issues reported by coverity --- rtengine/ipdehaze.cc | 1 + rtgui/labgrid.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 5522107e0..97c1883c9 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -183,6 +183,7 @@ float estimate_ambient_light(const array2D &R, const array2D &G, c } } } + n = std::max(n, 1); ambient[0] = rr / n; ambient[1] = gg / n; ambient[2] = bb / n; diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h index 35e259996..30f6e76e5 100644 --- a/rtgui/labgrid.h +++ b/rtgui/labgrid.h @@ -66,7 +66,6 @@ private: sigc::connection delayconn; static const int inset = 2; - bool grid_visible; bool low_enabled; bool notifyListener(); From 0b8117ef35422825e88f4855c79c2be0fca7d4fa Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 16 Nov 2018 15:00:20 +0100 Subject: [PATCH 153/348] Change line endings --- rtgui/iccprofilecreator.cc | 2790 ++++++++++++++++++------------------ rtgui/iccprofilecreator.h | 214 +-- 2 files changed, 1502 insertions(+), 1502 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 0d16a401a..b322fa005 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1,1395 +1,1395 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2018 Jacques DESMIS - * Copyright (c) 2018 Jean-Christophe FRISCH - * - * 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 -#include "iccprofilecreator.h" -#include "multilangmgr.h" -#include "cachemanager.h" -#include "addsetids.h" -#include "../rtengine/icons.h" -#include "../rtengine/color.h" -#include "rtimage.h" -#ifdef _OPENMP -#include -#endif - -extern Options options; - -namespace rtengine -{ - -extern const Settings* settings; - -} - -const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free - -ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) - : Gtk::Dialog(M("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) - , primariesPreset(options.ICCPC_primariesPreset) - , redPrimaryX(options.ICCPC_redPrimaryX) - , redPrimaryY(options.ICCPC_redPrimaryY) - , greenPrimaryX(options.ICCPC_greenPrimaryX) - , greenPrimaryY(options.ICCPC_greenPrimaryY) - , bluePrimaryX(options.ICCPC_bluePrimaryX) - , bluePrimaryY(options.ICCPC_bluePrimaryY) - , gammaPreset(options.ICCPC_gammaPreset) - , gamma(options.ICCPC_gamma) - , slope(options.ICCPC_slope) - , appendParamsToDesc(options.ICCPC_appendParamsToDesc) - , profileVersion(options.ICCPC_profileVersion) - , illuminant(options.ICCPC_illuminant) - , description(options.ICCPC_description) - , copyright(options.ICCPC_copyright) - , parent(rtwindow) -{ - - set_default_size(600, -1); - - Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); - mainGrid->set_column_spacing(3); - mainGrid->set_row_spacing(3); - - //--------------------------------- primaries - - Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); - setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*prilab, 0, 0, 1, 1); - - primaries = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - primaries->append(M("ICCPROFCREATOR_CUSTOM")); - primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); - primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); - primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); - primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); - primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); - primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); - primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); - primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); - primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); - primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); - primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); - mainGrid->attach(*primaries, 1, 0, 1, 1); - - primariesGrid = Gtk::manage(new Gtk::Grid()); - setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - primariesGrid->set_column_spacing(5); - - /* - Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); - */ - - aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); - setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); - setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); - setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); - setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); - setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); - setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); - primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); - - primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); - primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); - - primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); - primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); - - mainGrid->attach(*primariesGrid, 1, 1, 1, 1); - - //--------------------------------- output gamma - - Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); - setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*galab, 0, 2, 1, 1); - - trcPresets = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - std::vector outputTRCPresets; - outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); - - for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { - outputTRCPresets.push_back(sTRCPreset[i]); - } - - for (size_t i = 0; i < outputTRCPresets.size(); i++) { - trcPresets->append(outputTRCPresets[i]); - } - - mainGrid->attach(*trcPresets, 1, 2, 1, 1); - - //--------------------------------- sliders gampos and slpos - - aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); - setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - - if (aGamma->delay < options.adjusterMaxDelay) { - aGamma->delay = options.adjusterMaxDelay; - } - - aGamma->show(); - mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma - - aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); - setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - - if (aSlope->delay < options.adjusterMaxDelay) { - aSlope->delay = options.adjusterMaxDelay; - } - - aSlope->show(); - mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope - - //--------------------------------- temperature - - Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); - setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*illlab, 0, 5, 1, 1); //slope - cIlluminant = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); - cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); - mainGrid->attach(*cIlluminant, 1, 5, 1, 1); - - //--------------------------------- V2 or V4 profiles - - Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); - setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*proflab, 0, 6, 1, 1); - iccVersion = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); - mainGrid->attach(*iccVersion, 1, 6, 1, 1); - - //--------------------------------- Description - - Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); - setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); - mainGrid->attach(*desclab, 0, 7, 1, 2); - eDescription = Gtk::manage(new Gtk::Entry()); - setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); - mainGrid->attach(*eDescription, 1, 7, 1, 1); - cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM"))); - setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); - - //--------------------------------- Copyright - - Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); - setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*copylab, 0, 9, 1, 1); - Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); - setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); - eCopyright = Gtk::manage(new Gtk::Entry()); - setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - copygrid->attach(*eCopyright, 0, 0, 1, 1); - resetCopyright = Gtk::manage(new Gtk::Button()); - resetCopyright->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); - setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); - resetCopyright->set_relief(Gtk::RELIEF_NONE); - resetCopyright->set_tooltip_markup(M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); - resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); - resetCopyright->set_can_focus(false); - copygrid->attach(*resetCopyright, 1, 0, 1, 1); - mainGrid->attach(*copygrid, 1, 9, 1, 1); - - //--------------------------------- Adding the mainGrid - - get_content_area()->add(*mainGrid); - - //--------------------------------- Setting default values for Adjusters - - aGamma->setDefault(gamma); - aSlope->setDefault(slope); - aPrimariesRedX->setDefault(redPrimaryX); - aPrimariesRedY->setDefault(redPrimaryY); - aPrimariesGreenX->setDefault(greenPrimaryX); - aPrimariesGreenY->setDefault(greenPrimaryY); - aPrimariesBlueX->setDefault(bluePrimaryX); - aPrimariesBlueY->setDefault(bluePrimaryY); - - //--------------- Updating widgets with actual values (from options) - - if (primariesPreset == "custom") { - primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); - } else if (primariesPreset == "ACES-AP0") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); - } else if (primariesPreset == "ACES-AP1") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); - } else if (primariesPreset == "Adobe") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); - } else if (primariesPreset == "ProPhoto") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); - } else if (primariesPreset == "Rec2020") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); - } else if (primariesPreset == "sRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); - } else if (primariesPreset == "Widegamut") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); - } else if (primariesPreset == "BestRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); - } else if (primariesPreset == "BetaRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); - } else if (primariesPreset == "BruceRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); - } - - trcPresets->set_active(0); - - if (gammaPreset != "Custom") { - trcPresets->set_active_text(gammaPreset); - } - - aGamma->setValue(gamma); - aSlope->setValue(slope); - aPrimariesRedX->setValue(redPrimaryX); - aPrimariesRedY->setValue(redPrimaryY); - aPrimariesGreenX->setValue(greenPrimaryX); - aPrimariesGreenY->setValue(greenPrimaryY); - aPrimariesBlueX->setValue(bluePrimaryX); - aPrimariesBlueY->setValue(bluePrimaryY); - - eDescription->set_text(description); - eCopyright->set_text(copyright); - cAppendParamsToDesc->set_active(appendParamsToDesc); - - if (illuminant == "DEF") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); - } else if (illuminant == "D41") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); - } else if (illuminant == "D50") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); - } else if (illuminant == "D55") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); - } else if (illuminant == "D60") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); - } else if (illuminant == "D65") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); - } else if (illuminant == "D80") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); - } else if (illuminant == "stdA") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); - } - - iccVersion->set_active(0); - - if (profileVersion == "v2") { - iccVersion->set_active(1); - } - - trcPresetsChanged(); - illuminantChanged(); - primariesChanged(); - - //--------------- Action area button - - Gtk::Button* save = Gtk::manage(new Gtk::Button(M("GENERAL_SAVE_AS"))); - save->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::savePressed)); - get_action_area()->pack_start(*save); - - Gtk::Button* close = Gtk::manage(new Gtk::Button(M("GENERAL_CLOSE"))); - close->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::closePressed)); - get_action_area()->pack_start(*close); - - //--------------- Show childrens - - show_all_children(); - - //--------------- Connecting the signals - - aPrimariesRedX->setAdjusterListener(this); - aPrimariesRedY->setAdjusterListener(this); - aPrimariesGreenX->setAdjusterListener(this); - aPrimariesGreenY->setAdjusterListener(this); - aPrimariesBlueX->setAdjusterListener(this); - aPrimariesBlueY->setAdjusterListener(this); - aGamma->setAdjusterListener(this); - aSlope->setAdjusterListener(this); - primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); - trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); - illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); - resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); -} - -void ICCProfileCreator::closePressed() -{ - storeValues(); - hide(); -} - -void ICCProfileCreator::updateICCVersion() -{ - if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->set_sensitive(false); - } else { - iccVersion->set_sensitive(true); - } -} - -void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) -{ - if (a == aPrimariesRedX || a == aPrimariesRedY || - a == aPrimariesGreenX || a == aPrimariesGreenY || - a == aPrimariesBlueX || a == aPrimariesBlueY) { - if (primaries->get_active_row_number() > 0) { - ConnectionBlocker blocker(primariesconn); - primaries->set_active(0); - updateICCVersion(); - } - } else if (a == aGamma || a == aSlope) { - if (trcPresets->get_active_row_number() > 0) { - ConnectionBlocker blocker(trcpresetsconn); - trcPresets->set_active(0); - } - } -} - -void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) -{ -} - -void ICCProfileCreator::primariesChanged() -{ - if (primaries->get_active_row_number() > 0) { - float p[6]; - ColorTemp temp; - Glib::ustring activeValue = primaries->get_active_text(); - Glib::ustring primPresetName = getPrimariesPresetName(activeValue); - getPrimaries(primPresetName, p, temp); - aPrimariesRedX->setValue(p[0]); - aPrimariesRedY->setValue(p[1]); - aPrimariesGreenX->setValue(p[2]); - aPrimariesGreenY->setValue(p[3]); - aPrimariesBlueX->setValue(p[4]); - aPrimariesBlueY->setValue(p[5]); - } - - updateICCVersion(); -} - -void ICCProfileCreator::illuminantChanged() -{ - updateICCVersion(); -} - -void ICCProfileCreator::trcPresetsChanged() -{ - aGamma->block(true); - aSlope->block(true); - - double gamma; - double slope; - getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); - aGamma->setValue(gamma); - aSlope->setValue(slope); - - aGamma->block(false); - aSlope->block(false); -} - -void ICCProfileCreator::storeValues() -{ - if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { - options.ICCPC_profileVersion = profileVersion = "v4"; - } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { - options.ICCPC_profileVersion = profileVersion = "v2"; - } - - if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { - options.ICCPC_illuminant = illuminant = "DEF"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { - options.ICCPC_illuminant = illuminant = "D41"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { - options.ICCPC_illuminant = illuminant = "D50"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { - options.ICCPC_illuminant = illuminant = "D55"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { - options.ICCPC_illuminant = illuminant = "D60"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { - options.ICCPC_illuminant = illuminant = "D65"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { - options.ICCPC_illuminant = illuminant = "D80"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { - options.ICCPC_illuminant = illuminant = "stdA"; - } - - options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); - options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); - options.ICCPC_gamma = gamma = aGamma->getValue(); - options.ICCPC_slope = slope = aSlope->getValue(); - options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); - options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); - options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); - options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); - options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); - options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); - options.ICCPC_description = description = eDescription->get_text(); - options.ICCPC_copyright = copyright = eCopyright->get_text(); - options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); -} - -Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) -{ - if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { - return Glib::ustring("ACES-AP0"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { - return Glib::ustring("ACES-AP1"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { - return Glib::ustring("Adobe"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { - return Glib::ustring("ProPhoto"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { - return Glib::ustring("Rec2020"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { - return Glib::ustring("sRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { - return Glib::ustring("Widegamut"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { - return Glib::ustring("BestRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { - return Glib::ustring("BetaRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { - return Glib::ustring("BruceRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - return Glib::ustring("custom"); - } else { - return Glib::ustring(); - } -} - -void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) -{ - temp = ColorTemp::D50; - - if (preset == "Widegamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - - } else if (preset == "Adobe") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "BetaRGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (preset == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (preset == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (preset == "ACES-AP0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (preset == "ACES-AP1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (preset == "ProPhoto") { - p[0] = 0.7347; // ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else if (preset == "custom") { - p[0] = redPrimaryX; - p[1] = redPrimaryY; - p[2] = greenPrimaryX; - p[3] = greenPrimaryY; - p[4] = bluePrimaryX; - p[5] = bluePrimaryY; - - } else { - p[0] = 0.7347; //default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } -} - -Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) -{ - Glib::ustring name(trcPresets->get_active_text()); - - if (name == M("ICCPROFCREATOR_CUSTOM")) { - name = "Custom"; - } - - return name; -} - -void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) -{ - if (preset == "High_g1.3_s3.35") { - presetGamma = 1.3; - presetSlope = 3.35; - } else if (preset == "Low_g2.6_s6.9") { - presetGamma = 2.6; - presetSlope = 6.9; - } else if (preset == "sRGB_g2.4_s12.92") { - presetGamma = 2.4; - presetSlope = 12.92310; - } else if (preset == "BT709_g2.2_s4.5") { - presetGamma = 2.22; - presetSlope = 4.5; - } else if (preset == "linear_g1.0") { - presetGamma = 1.; - presetSlope = 0.; - } else if (preset == "standard_g2.2") { - presetGamma = 2.2; - presetSlope = 0.; - } else if (preset == "standard_g1.8") { - presetGamma = 1.8; - presetSlope = 0.; - } else if (preset == "Lab_g3.0s9.03296") { - presetGamma = 3.0; - presetSlope = 9.03296; - } else if (preset == "Custom") { - presetGamma = gamma; - presetSlope = slope; - } else { - presetGamma = 2.4; - presetSlope = 12.92310; - } -} - -void ICCProfileCreator::onResetCopyright() -{ - eCopyright->set_text(Options::getICCProfileCopyright()); -} - -// Copyright (c) 2018 Jacques DESMIS -// WARNING: the caller must lock lcmsMutex -void ICCProfileCreator::savePressed() -{ - cmsHPROFILE newProfile = nullptr; - cmsHPROFILE profile_v2_except = nullptr; - - Glib::ustring sNewProfile; - Glib::ustring sPrimariesPreset; - Glib::ustring sGammaPreset; - - storeValues(); - - // -------------------------------------------- Compute the default file name - // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- - //instead of calculations made by LCMS..small differences - bool isD65 = (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB"); - bool isD60 = (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0"); - bool isD50 = (primariesPreset == "ProPhoto" || primariesPreset == "Widegamut" || primariesPreset == "BestRGB" || primariesPreset == "BetaRGB"); - // v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); - v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); - - //necessary for V2 profile - - if (!v2except) { - std::string is_RTv4 = ""; - - //used partially for v4, and in case of if we want to back to old manner for v2 - if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { - sNewProfile = options.rtSettings.ACESp0; - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { - sNewProfile = options.rtSettings.ACESp1; - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { - sNewProfile = options.rtSettings.adobe; - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { - is_RTv4 = options.rtSettings.prophoto.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.prophoto = "RTv2_Large"; - }; - - sNewProfile = options.rtSettings.prophoto; - - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { - sNewProfile = options.rtSettings.rec2020; - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { - is_RTv4 = options.rtSettings.widegamut.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.widegamut = "RTv2_Wide"; - }; - - sNewProfile = options.rtSettings.widegamut; - - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { - is_RTv4 = options.rtSettings.best.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.best = "RTv2_Best"; - }; - - sNewProfile = options.rtSettings.best; - - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { - sNewProfile = options.rtSettings.beta; - is_RTv4 = options.rtSettings.beta.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.widegamut = "RTv2_Beta"; - }; - - sPrimariesPreset = "Beta"; - } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { - sNewProfile = options.rtSettings.bruce; - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "custom") { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "Custom"; - } else { - // Should not occurs - if (rtengine::settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); - } - - return; - } - } else { - //new model for v2 profile different from D50 by entering directly XYZ values and media white point - sNewProfile = "RTv2_Beta";//for copy generate others v2 profile. To change date of new profile, I used "ICC profile inspector" and "save as" - - if (primariesPreset == "ACES-AP0") { - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1") { - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe") { - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "Rec2020") { - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "BruceRGB") { - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "sRGB") { - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "ProPhoto") { - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Widegamut") { - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB") { - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB") { - sPrimariesPreset = "Beta"; - } - } - - //begin adaptation rTRC gTRC bTRC - //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile - if (rtengine::settings->verbose) { - printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); - } - - if (!v2except) { - newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - } else { - profile_v2_except = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - - } - - /* - if (newProfile == nullptr ) { - - if (rtengine::settings->verbose) { - printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); - } - - return; - } - */ - //change desc Tag , to "free gamma", or "BT709", etc. - Glib::ustring fName; - Glib::ustring sPrimariesAndIlluminant; - double presetGamma = 2.4; - double presetSlope = 12.92310; - const double eps = 0.000000001; // not divide by zero - getGamma(gammaPreset, presetGamma, presetSlope); - - if (gammaPreset == "High_g1.3_s3.35") { - sGammaPreset = "High_g=1.3_s=3.35"; - ga[0] = 1.3 ; //for high dynamic images - ga[1] = 0.998279; - ga[2] = 0.001721; - ga[3] = 0.298507; - ga[4] = 0.005746; - } else if (gammaPreset == "Low_g2.6_s6.9") { - sGammaPreset = "Low_g=2.6_s=6.9"; - ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images - ga[1] = 0.891161; - ga[2] = 0.108839; - ga[3] = 0.144928; - ga[4] = 0.076332; - } else if (gammaPreset == "sRGB_g2.4_s12.92") { - sGammaPreset = "sRGB_g=2.4_s=12.92310"; - ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom - ga[1] = 0.947858; - ga[2] = 0.052142; - ga[3] = 0.077399; - ga[4] = 0.039293; - } else if (gammaPreset == "BT709_g2.2_s4.5") { - sGammaPreset = "BT709_g=2.2_s=4.5"; - ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin - ga[1] = 0.909995; - ga[2] = 0.090005; - ga[3] = 0.222222; - ga[4] = 0.081071; - } else if (gammaPreset == "linear_g1.0") { - sGammaPreset = "Linear_g=1.0"; - ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "standard_g2.2") { - sGammaPreset = "g=2.2"; - ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "standard_g1.8") { - sGammaPreset = "g=1.8"; - ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "Lab_g3.0s9.03296") { - sGammaPreset = "LAB_g3.0_s9.03296"; - ga[0] = 3.0; //Lab gamma =3 slope=9.03296 - ga[1] = 0.8621; - ga[2] = 0.1379; - ga[3] = 0.1107; - ga[4] = 0.08; - } else if (gammaPreset == "Custom") { - rtengine::GammaValues g_a; //gamma parameters - double pwr = 1.0 / gamma; - double ts = slope; - double slope2 = slope == 0 ? eps : slope; - - int mode = 0; - rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - ga[4] = g_a[3] * ts; - //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); - ga[0] = gamma; - ga[1] = 1. / (1.0 + g_a[4]); - ga[2] = g_a[4] / (1.0 + g_a[4]); - ga[3] = 1. / slope2; - //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); - - sGammaPreset = Glib::ustring::compose("g%1_s%2", - Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), - Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); - presetGamma = gamma; - presetSlope = slope; - } - - ga[5] = 0.0; - ga[6] = 0.0; - - - sPrimariesAndIlluminant = sPrimariesPreset; - - if (profileVersion == "v4" && illuminant != "DEF") { - sPrimariesPreset += "-" + illuminant; - } - - Glib::ustring profileDesc; - Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd - Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc - Glib::ustring sGamma; - Glib::ustring sSlope; - - if (gammaPreset == "Custom") { - sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); - sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); - fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); - profileDesc = sPrimariesPreset; - } else { - sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); - sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); - fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); - profileDesc = sPrimariesPreset + sGammaPreset; - } - - sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); - sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); - - // -------------------------------------------- Asking the file name - - Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); - bindCurrentFolder(dialog, options.lastICCProfCreatorDir); - dialog.set_current_name(fName); - //dialog.set_current_folder(lastPath); - - dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); - dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); - - Glib::RefPtr filter_icc = Gtk::FileFilter::create(); - filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); - filter_icc->add_pattern("*.icc"); - dialog.add_filter(filter_icc); - - /* - Glib::RefPtr filter_any = Gtk::FileFilter::create(); - filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); - filter_any->add_pattern("*"); - dialog.add_filter(filter_any); - */ - - dialog.show_all_children(); - //dialog.set_do_overwrite_confirmation (true); - - Glib::ustring absoluteFName; - - do { - int result = dialog.run(); - - if (result != Gtk::RESPONSE_OK) { - return; - } else { - absoluteFName = dialog.get_filename(); - Glib::ustring ext = getExtension(absoluteFName); - - if (ext != "icc") { - absoluteFName += ".icc"; - } - - if (confirmOverwrite(dialog, absoluteFName)) { - //lastPath = Glib::path_get_dirname(absoluteFName); - break; - } - } - } while (1); - - // --------------- main tags ------------------ - /* - if (profileVersion == "v4") { - cmsSetProfileVersion(newProfile, 4.3); - } else { - cmsSetProfileVersion(newProfile, 2.0); - } - */ - -//change - float p[6]; //primaries - ga[6] = 0.0; - - ColorTemp temp; - getPrimaries(primariesPreset, p, temp); - - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - - - if (v2except) { - cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); - cmsSetPCS(profile_v2_except, cmsSigXYZData); - cmsSetHeaderRenderingIntent(profile_v2_except, 0); - } - - - if (profileVersion == "v4" && illuminant != "DEF") { - double tempv4 = 5000.; - - if (illuminant == "D41") { - tempv4 = 4100.; - } else if (illuminant == "D50") { - tempv4 = 5003.; - } else if (illuminant == "D55") { - tempv4 = 5500.; - } else if (illuminant == "D60") { - tempv4 = 6004.; - } else if (illuminant == "D65") { - tempv4 = 6504.; - } else if (illuminant == "D80") { - tempv4 = 8000.; - } else if (illuminant == "stdA") { - tempv4 = 5003.; - } - - cmsWhitePointFromTemp(&xyD, tempv4); - - if (illuminant == "D65") { - xyD = {0.312700492, 0.329000939, 1.0}; - } - - if (illuminant == "D60") { - xyD = {0.32168, 0.33767, 1.0}; - } - - if (illuminant == "D50") { - xyD = {0.3457, 0.3585, 1.0};//white D50 near LCMS values but not perfect...it's a compromise!! - } - - if (illuminant == "stdA") { - xyD = {0.447573, 0.407440, 1.0}; - } - - - } else { - if (v2except) { - - cmsCIEXYZ XYZ; - - { - XYZ = {0.95045471, 1.0, 1.08905029};//white D65 - } - - if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { - XYZ = {0.952646075, 1.0, 1.008825184};//white D60 - } - - if (isD50) { - XYZ = {0.964295676, 1.0, 0.825104603};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! - } - - cmsCIExyY blackpoint; - - { - blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs - } - - cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); - cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); - cmsCIEXYZ rt; - cmsCIEXYZ bt; - cmsCIEXYZ gt; - - if (primariesPreset == "sRGB") { - //calculated with personnal special spreadsheat - { - //Matrix value from spec Adobe but adapted with wp - rt = {0.4360411843, 0.2224843154, 0.0139201582}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1430457992, 0.0606099658, 0.7139121724}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3851136574, 0.7169049862, 0.0970677661}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - - } - - } - - if (primariesPreset == "Adobe") { - { - //Adobe spec adapted with wp calculated with personnal special spreadsheat - rt = {0.6097408852, 0.3111123176, 0.0194653393}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1491866649, 0.0632119133, 0.7445599707}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2052730908, 0.6256750365, 0.0608747867}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "Rec2020") { - {//calculated with personnal special spreadsheat - rt = {0.6734800343, 0.2790423273, -0.0019336766}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1250489478, 0.0456126910, 0.7968509159}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1656716588, 0.6753442491, 0.0299828575}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BruceRGB") { - {//calculated with personnal special spreadsheat - rt = {0.4941542253, 0.2521357351, 0.0157753562}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1495175342, 0.0633521060, 0.7462112712}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3205288814, 0.6845114263, 0.0629134693}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "ACES-AP0") { - {//calculated with personnal special spreadsheat - rt = {0.9908835135, 0.3618940325, -0.0027137400}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {-0.0389246557, -0.084405166, 0.8193659780}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.0122417831, 0.7225104015, 0.0082478587}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "ACES-AP1") {//done - {//calculated with personnal special spreadsheat - rt = {0.6898756188, 0.2845109670, -0.0060455375}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1245615936, 0.0437959432, 0.8209388333}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1497634285, 0.6716923572, 0.0100068009}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "ProPhoto") { - {//calculated with personnal special spreadsheat - rt = {0.7977198204, 0.2880493171, -0.0000030551}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.0313194091, 0.0000771282, 0.8248890748}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1351614114, 0.7118728221, 0.0000140770}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "Widegamut") { - {//calculated with personnal special spreadsheat - rt = {0.7161680478, 0.2582038074, -0.0000027515}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1471328469, 0.0168600579, 0.7731227232}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1008997462, 0.7249354021, 0.0517801251}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BestRGB") { - {//calculated with personnal special spreadsheat - rt = {0.6327383009, 0.2284760022, -0.0000024233}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1269437333, 0.0341753604, 0.8153773703}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2045186067, 0.7373479048, 0.0095251497}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BetaRGB") { - {//calculated with personnal special spreadsheat - rt = {0.6713200674, 0.3033034560, -0.0000012307}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1183343909, 0.0329265310, 0.7842009909}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1745461827, 0.6637692805, 0.0407003365}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - } else { - cmsWhitePointFromTemp(&xyD, (double)temp); - } - } - - - if (isD65 && illuminant == "DEF") { - xyD = {0.312700492, 0.329000939, 1.0}; - } - - if (isD60 && illuminant == "DEF") { - xyD = {0.32168, 0.33767, 1.0}; - } - - if (isD50 && illuminant == "DEF") { - xyD = {0.3457, 0.3585, 1.0}; - } - -// {0.3457, 0.3585, 1.0}; - // Calculate output profile's rTRC gTRC bTRC - - - cmsToneCurve* GammaTRC[3]; - - if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); - } - - if (gammaPreset == "standard_g2.2") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe - } - - if (gammaPreset == "standard_g1.8") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); - } - - if (gammaPreset == "linear_g1.0") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); - } - - - - if (profileVersion == "v4") { - newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - if (profileVersion == "v2") { - if (v2except) { - cmsSetProfileVersion(profile_v2_except, 2.2); - } else { - cmsSetProfileVersion(newProfile, 2.2); - } - } - - if (!v2except) { - cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); - } else { - cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); - } - - // --------------- set dmnd tag ------------------ - - cmsMLU *dmnd; - dmnd = cmsMLUalloc(nullptr, 1); - cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); - - if (!v2except) { - cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); - } else { - cmsWriteTag(profile_v2_except, cmsSigDeviceMfgDescTag, dmnd); - } - - cmsMLUfree(dmnd); - - - -// --------------- set dmdd tag ------------------ - - if (profileVersion == "v2") { - //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - std::wostringstream wGammaSlopeParam; - wGammaSlopeParam << sGammaSlopeParam; - - cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); - - // Language code (2 letters code) : https://www.iso.org/obp/ui/ - // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (sGammaSlopeParam.is_ascii()) { - if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { - if (!v2except) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - - } - } - } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { - if (!v2except) { - if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); - } - } - } else { - printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); - } - - cmsMLUfree(dmdd); - } - -// --------------- set desc tag ------------------ - - Glib::ustring sDescription; - - if (!description.empty()) { - if (cAppendParamsToDesc->get_active()) { - sDescription = description + " / " + sGammaSlopeDesc; - } else { - sDescription = description; - } - } else { - if (cAppendParamsToDesc->get_active()) { - sDescription = profileDesc + " / " + sGammaSlopeDesc; - } else { - sDescription = profileDesc; - } - } - -//write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - std::wostringstream wDescription; - wDescription << sDescription; - - cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); - -// Language code (2 letters code) : https://www.iso.org/obp/ui/ -// Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (sDescription.is_ascii()) { - if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { - if (!v2except) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } - } - - } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { - if (!v2except) { - - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } - } else { - printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); - } - - cmsMLUfree(descMLU); - -// --------------- set cprt tag ------------------ - - std::wostringstream wCopyright; - wCopyright << copyright; - - cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); - - if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { - if (!v2except) { - - if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); - } - - } - } else { - printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); - } - - cmsMLUfree(copyMLU); - - - /* //to read XYZ values - cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); - cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); - cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); - printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); - */ - if (!v2except) { - cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); - } else { - cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); - - } - - cmsFreeToneCurve(GammaTRC[0]); -} +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * 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 +#include "iccprofilecreator.h" +#include "multilangmgr.h" +#include "cachemanager.h" +#include "addsetids.h" +#include "../rtengine/icons.h" +#include "../rtengine/color.h" +#include "rtimage.h" +#ifdef _OPENMP +#include +#endif + +extern Options options; + +namespace rtengine +{ + +extern const Settings* settings; + +} + +const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free + +ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) + : Gtk::Dialog(M("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) + , primariesPreset(options.ICCPC_primariesPreset) + , redPrimaryX(options.ICCPC_redPrimaryX) + , redPrimaryY(options.ICCPC_redPrimaryY) + , greenPrimaryX(options.ICCPC_greenPrimaryX) + , greenPrimaryY(options.ICCPC_greenPrimaryY) + , bluePrimaryX(options.ICCPC_bluePrimaryX) + , bluePrimaryY(options.ICCPC_bluePrimaryY) + , gammaPreset(options.ICCPC_gammaPreset) + , gamma(options.ICCPC_gamma) + , slope(options.ICCPC_slope) + , appendParamsToDesc(options.ICCPC_appendParamsToDesc) + , profileVersion(options.ICCPC_profileVersion) + , illuminant(options.ICCPC_illuminant) + , description(options.ICCPC_description) + , copyright(options.ICCPC_copyright) + , parent(rtwindow) +{ + + set_default_size(600, -1); + + Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); + mainGrid->set_column_spacing(3); + mainGrid->set_row_spacing(3); + + //--------------------------------- primaries + + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); + setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*prilab, 0, 0, 1, 1); + + primaries = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + primaries->append(M("ICCPROFCREATOR_CUSTOM")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); + primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); + primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); + primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); + primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); + primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); + primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); + primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); + primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); + primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); + mainGrid->attach(*primaries, 1, 0, 1, 1); + + primariesGrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + primariesGrid->set_column_spacing(5); + + /* + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); + */ + + aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); + setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); + setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); + setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); + setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); + setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); + setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); + primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); + + primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); + primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); + + primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); + primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); + + mainGrid->attach(*primariesGrid, 1, 1, 1, 1); + + //--------------------------------- output gamma + + Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); + setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*galab, 0, 2, 1, 1); + + trcPresets = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + std::vector outputTRCPresets; + outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); + + for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { + outputTRCPresets.push_back(sTRCPreset[i]); + } + + for (size_t i = 0; i < outputTRCPresets.size(); i++) { + trcPresets->append(outputTRCPresets[i]); + } + + mainGrid->attach(*trcPresets, 1, 2, 1, 1); + + //--------------------------------- sliders gampos and slpos + + aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); + setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aGamma->delay < options.adjusterMaxDelay) { + aGamma->delay = options.adjusterMaxDelay; + } + + aGamma->show(); + mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma + + aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); + setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aSlope->delay < options.adjusterMaxDelay) { + aSlope->delay = options.adjusterMaxDelay; + } + + aSlope->show(); + mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope + + //--------------------------------- temperature + + Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); + setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*illlab, 0, 5, 1, 1); //slope + cIlluminant = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); + cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); + mainGrid->attach(*cIlluminant, 1, 5, 1, 1); + + //--------------------------------- V2 or V4 profiles + + Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); + setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*proflab, 0, 6, 1, 1); + iccVersion = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); + mainGrid->attach(*iccVersion, 1, 6, 1, 1); + + //--------------------------------- Description + + Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); + setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); + mainGrid->attach(*desclab, 0, 7, 1, 2); + eDescription = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); + mainGrid->attach(*eDescription, 1, 7, 1, 1); + cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM"))); + setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); + + //--------------------------------- Copyright + + Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); + setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*copylab, 0, 9, 1, 1); + Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); + eCopyright = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + copygrid->attach(*eCopyright, 0, 0, 1, 1); + resetCopyright = Gtk::manage(new Gtk::Button()); + resetCopyright->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); + setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + resetCopyright->set_relief(Gtk::RELIEF_NONE); + resetCopyright->set_tooltip_markup(M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); + resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + resetCopyright->set_can_focus(false); + copygrid->attach(*resetCopyright, 1, 0, 1, 1); + mainGrid->attach(*copygrid, 1, 9, 1, 1); + + //--------------------------------- Adding the mainGrid + + get_content_area()->add(*mainGrid); + + //--------------------------------- Setting default values for Adjusters + + aGamma->setDefault(gamma); + aSlope->setDefault(slope); + aPrimariesRedX->setDefault(redPrimaryX); + aPrimariesRedY->setDefault(redPrimaryY); + aPrimariesGreenX->setDefault(greenPrimaryX); + aPrimariesGreenY->setDefault(greenPrimaryY); + aPrimariesBlueX->setDefault(bluePrimaryX); + aPrimariesBlueY->setDefault(bluePrimaryY); + + //--------------- Updating widgets with actual values (from options) + + if (primariesPreset == "custom") { + primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); + } else if (primariesPreset == "ACES-AP0") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); + } else if (primariesPreset == "ACES-AP1") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); + } else if (primariesPreset == "Adobe") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); + } else if (primariesPreset == "ProPhoto") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); + } else if (primariesPreset == "Rec2020") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); + } else if (primariesPreset == "sRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); + } else if (primariesPreset == "Widegamut") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); + } else if (primariesPreset == "BestRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); + } else if (primariesPreset == "BetaRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); + } else if (primariesPreset == "BruceRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); + } + + trcPresets->set_active(0); + + if (gammaPreset != "Custom") { + trcPresets->set_active_text(gammaPreset); + } + + aGamma->setValue(gamma); + aSlope->setValue(slope); + aPrimariesRedX->setValue(redPrimaryX); + aPrimariesRedY->setValue(redPrimaryY); + aPrimariesGreenX->setValue(greenPrimaryX); + aPrimariesGreenY->setValue(greenPrimaryY); + aPrimariesBlueX->setValue(bluePrimaryX); + aPrimariesBlueY->setValue(bluePrimaryY); + + eDescription->set_text(description); + eCopyright->set_text(copyright); + cAppendParamsToDesc->set_active(appendParamsToDesc); + + if (illuminant == "DEF") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); + } else if (illuminant == "D41") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); + } else if (illuminant == "D50") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); + } else if (illuminant == "D55") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); + } else if (illuminant == "D60") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); + } else if (illuminant == "D65") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); + } else if (illuminant == "D80") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); + } else if (illuminant == "stdA") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); + } + + iccVersion->set_active(0); + + if (profileVersion == "v2") { + iccVersion->set_active(1); + } + + trcPresetsChanged(); + illuminantChanged(); + primariesChanged(); + + //--------------- Action area button + + Gtk::Button* save = Gtk::manage(new Gtk::Button(M("GENERAL_SAVE_AS"))); + save->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::savePressed)); + get_action_area()->pack_start(*save); + + Gtk::Button* close = Gtk::manage(new Gtk::Button(M("GENERAL_CLOSE"))); + close->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::closePressed)); + get_action_area()->pack_start(*close); + + //--------------- Show childrens + + show_all_children(); + + //--------------- Connecting the signals + + aPrimariesRedX->setAdjusterListener(this); + aPrimariesRedY->setAdjusterListener(this); + aPrimariesGreenX->setAdjusterListener(this); + aPrimariesGreenY->setAdjusterListener(this); + aPrimariesBlueX->setAdjusterListener(this); + aPrimariesBlueY->setAdjusterListener(this); + aGamma->setAdjusterListener(this); + aSlope->setAdjusterListener(this); + primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); + trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); + illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); + resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); +} + +void ICCProfileCreator::closePressed() +{ + storeValues(); + hide(); +} + +void ICCProfileCreator::updateICCVersion() +{ + if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->set_sensitive(false); + } else { + iccVersion->set_sensitive(true); + } +} + +void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) +{ + if (a == aPrimariesRedX || a == aPrimariesRedY || + a == aPrimariesGreenX || a == aPrimariesGreenY || + a == aPrimariesBlueX || a == aPrimariesBlueY) { + if (primaries->get_active_row_number() > 0) { + ConnectionBlocker blocker(primariesconn); + primaries->set_active(0); + updateICCVersion(); + } + } else if (a == aGamma || a == aSlope) { + if (trcPresets->get_active_row_number() > 0) { + ConnectionBlocker blocker(trcpresetsconn); + trcPresets->set_active(0); + } + } +} + +void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) +{ +} + +void ICCProfileCreator::primariesChanged() +{ + if (primaries->get_active_row_number() > 0) { + float p[6]; + ColorTemp temp; + Glib::ustring activeValue = primaries->get_active_text(); + Glib::ustring primPresetName = getPrimariesPresetName(activeValue); + getPrimaries(primPresetName, p, temp); + aPrimariesRedX->setValue(p[0]); + aPrimariesRedY->setValue(p[1]); + aPrimariesGreenX->setValue(p[2]); + aPrimariesGreenY->setValue(p[3]); + aPrimariesBlueX->setValue(p[4]); + aPrimariesBlueY->setValue(p[5]); + } + + updateICCVersion(); +} + +void ICCProfileCreator::illuminantChanged() +{ + updateICCVersion(); +} + +void ICCProfileCreator::trcPresetsChanged() +{ + aGamma->block(true); + aSlope->block(true); + + double gamma; + double slope; + getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); + aGamma->setValue(gamma); + aSlope->setValue(slope); + + aGamma->block(false); + aSlope->block(false); +} + +void ICCProfileCreator::storeValues() +{ + if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { + options.ICCPC_profileVersion = profileVersion = "v4"; + } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { + options.ICCPC_profileVersion = profileVersion = "v2"; + } + + if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { + options.ICCPC_illuminant = illuminant = "DEF"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { + options.ICCPC_illuminant = illuminant = "D41"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { + options.ICCPC_illuminant = illuminant = "D50"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { + options.ICCPC_illuminant = illuminant = "D55"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { + options.ICCPC_illuminant = illuminant = "D60"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { + options.ICCPC_illuminant = illuminant = "D65"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { + options.ICCPC_illuminant = illuminant = "D80"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { + options.ICCPC_illuminant = illuminant = "stdA"; + } + + options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); + options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); + options.ICCPC_gamma = gamma = aGamma->getValue(); + options.ICCPC_slope = slope = aSlope->getValue(); + options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); + options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); + options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); + options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); + options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); + options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); + options.ICCPC_description = description = eDescription->get_text(); + options.ICCPC_copyright = copyright = eCopyright->get_text(); + options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); +} + +Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) +{ + if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { + return Glib::ustring("ACES-AP0"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { + return Glib::ustring("ACES-AP1"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { + return Glib::ustring("Adobe"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { + return Glib::ustring("ProPhoto"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { + return Glib::ustring("Rec2020"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { + return Glib::ustring("sRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { + return Glib::ustring("Widegamut"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { + return Glib::ustring("BestRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { + return Glib::ustring("BetaRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { + return Glib::ustring("BruceRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + return Glib::ustring("custom"); + } else { + return Glib::ustring(); + } +} + +void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) +{ + temp = ColorTemp::D50; + + if (preset == "Widegamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + + } else if (preset == "Adobe") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "BetaRGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (preset == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (preset == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (preset == "ACES-AP0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (preset == "ACES-AP1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (preset == "ProPhoto") { + p[0] = 0.7347; // ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else if (preset == "custom") { + p[0] = redPrimaryX; + p[1] = redPrimaryY; + p[2] = greenPrimaryX; + p[3] = greenPrimaryY; + p[4] = bluePrimaryX; + p[5] = bluePrimaryY; + + } else { + p[0] = 0.7347; //default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } +} + +Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) +{ + Glib::ustring name(trcPresets->get_active_text()); + + if (name == M("ICCPROFCREATOR_CUSTOM")) { + name = "Custom"; + } + + return name; +} + +void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) +{ + if (preset == "High_g1.3_s3.35") { + presetGamma = 1.3; + presetSlope = 3.35; + } else if (preset == "Low_g2.6_s6.9") { + presetGamma = 2.6; + presetSlope = 6.9; + } else if (preset == "sRGB_g2.4_s12.92") { + presetGamma = 2.4; + presetSlope = 12.92310; + } else if (preset == "BT709_g2.2_s4.5") { + presetGamma = 2.22; + presetSlope = 4.5; + } else if (preset == "linear_g1.0") { + presetGamma = 1.; + presetSlope = 0.; + } else if (preset == "standard_g2.2") { + presetGamma = 2.2; + presetSlope = 0.; + } else if (preset == "standard_g1.8") { + presetGamma = 1.8; + presetSlope = 0.; + } else if (preset == "Lab_g3.0s9.03296") { + presetGamma = 3.0; + presetSlope = 9.03296; + } else if (preset == "Custom") { + presetGamma = gamma; + presetSlope = slope; + } else { + presetGamma = 2.4; + presetSlope = 12.92310; + } +} + +void ICCProfileCreator::onResetCopyright() +{ + eCopyright->set_text(Options::getICCProfileCopyright()); +} + +// Copyright (c) 2018 Jacques DESMIS +// WARNING: the caller must lock lcmsMutex +void ICCProfileCreator::savePressed() +{ + cmsHPROFILE newProfile = nullptr; + cmsHPROFILE profile_v2_except = nullptr; + + Glib::ustring sNewProfile; + Glib::ustring sPrimariesPreset; + Glib::ustring sGammaPreset; + + storeValues(); + + // -------------------------------------------- Compute the default file name + // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- + //instead of calculations made by LCMS..small differences + bool isD65 = (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB"); + bool isD60 = (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0"); + bool isD50 = (primariesPreset == "ProPhoto" || primariesPreset == "Widegamut" || primariesPreset == "BestRGB" || primariesPreset == "BetaRGB"); + // v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); + v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); + + //necessary for V2 profile + + if (!v2except) { + std::string is_RTv4 = ""; + + //used partially for v4, and in case of if we want to back to old manner for v2 + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + sNewProfile = options.rtSettings.ACESp0; + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + sNewProfile = options.rtSettings.ACESp1; + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + sNewProfile = options.rtSettings.adobe; + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { + is_RTv4 = options.rtSettings.prophoto.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.prophoto = "RTv2_Large"; + }; + + sNewProfile = options.rtSettings.prophoto; + + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + sNewProfile = options.rtSettings.rec2020; + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + is_RTv4 = options.rtSettings.widegamut.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Wide"; + }; + + sNewProfile = options.rtSettings.widegamut; + + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + is_RTv4 = options.rtSettings.best.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.best = "RTv2_Best"; + }; + + sNewProfile = options.rtSettings.best; + + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + is_RTv4 = options.rtSettings.beta.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Beta"; + }; + + sPrimariesPreset = "Beta"; + } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + sNewProfile = options.rtSettings.bruce; + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "custom") { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "Custom"; + } else { + // Should not occurs + if (rtengine::settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + } + + return; + } + } else { + //new model for v2 profile different from D50 by entering directly XYZ values and media white point + sNewProfile = "RTv2_Beta";//for copy generate others v2 profile. To change date of new profile, I used "ICC profile inspector" and "save as" + + if (primariesPreset == "ACES-AP0") { + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1") { + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe") { + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "Rec2020") { + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "BruceRGB") { + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "sRGB") { + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "ProPhoto") { + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Widegamut") { + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB") { + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB") { + sPrimariesPreset = "Beta"; + } + } + + //begin adaptation rTRC gTRC bTRC + //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile + if (rtengine::settings->verbose) { + printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); + } + + if (!v2except) { + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + } else { + profile_v2_except = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + + } + + /* + if (newProfile == nullptr ) { + + if (rtengine::settings->verbose) { + printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); + } + + return; + } + */ + //change desc Tag , to "free gamma", or "BT709", etc. + Glib::ustring fName; + Glib::ustring sPrimariesAndIlluminant; + double presetGamma = 2.4; + double presetSlope = 12.92310; + const double eps = 0.000000001; // not divide by zero + getGamma(gammaPreset, presetGamma, presetSlope); + + if (gammaPreset == "High_g1.3_s3.35") { + sGammaPreset = "High_g=1.3_s=3.35"; + ga[0] = 1.3 ; //for high dynamic images + ga[1] = 0.998279; + ga[2] = 0.001721; + ga[3] = 0.298507; + ga[4] = 0.005746; + } else if (gammaPreset == "Low_g2.6_s6.9") { + sGammaPreset = "Low_g=2.6_s=6.9"; + ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images + ga[1] = 0.891161; + ga[2] = 0.108839; + ga[3] = 0.144928; + ga[4] = 0.076332; + } else if (gammaPreset == "sRGB_g2.4_s12.92") { + sGammaPreset = "sRGB_g=2.4_s=12.92310"; + ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom + ga[1] = 0.947858; + ga[2] = 0.052142; + ga[3] = 0.077399; + ga[4] = 0.039293; + } else if (gammaPreset == "BT709_g2.2_s4.5") { + sGammaPreset = "BT709_g=2.2_s=4.5"; + ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin + ga[1] = 0.909995; + ga[2] = 0.090005; + ga[3] = 0.222222; + ga[4] = 0.081071; + } else if (gammaPreset == "linear_g1.0") { + sGammaPreset = "Linear_g=1.0"; + ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g2.2") { + sGammaPreset = "g=2.2"; + ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g1.8") { + sGammaPreset = "g=1.8"; + ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "Lab_g3.0s9.03296") { + sGammaPreset = "LAB_g3.0_s9.03296"; + ga[0] = 3.0; //Lab gamma =3 slope=9.03296 + ga[1] = 0.8621; + ga[2] = 0.1379; + ga[3] = 0.1107; + ga[4] = 0.08; + } else if (gammaPreset == "Custom") { + rtengine::GammaValues g_a; //gamma parameters + double pwr = 1.0 / gamma; + double ts = slope; + double slope2 = slope == 0 ? eps : slope; + + int mode = 0; + rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + ga[4] = g_a[3] * ts; + //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); + ga[0] = gamma; + ga[1] = 1. / (1.0 + g_a[4]); + ga[2] = g_a[4] / (1.0 + g_a[4]); + ga[3] = 1. / slope2; + //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + + sGammaPreset = Glib::ustring::compose("g%1_s%2", + Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); + presetGamma = gamma; + presetSlope = slope; + } + + ga[5] = 0.0; + ga[6] = 0.0; + + + sPrimariesAndIlluminant = sPrimariesPreset; + + if (profileVersion == "v4" && illuminant != "DEF") { + sPrimariesPreset += "-" + illuminant; + } + + Glib::ustring profileDesc; + Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd + Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc + Glib::ustring sGamma; + Glib::ustring sSlope; + + if (gammaPreset == "Custom") { + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); + fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); + profileDesc = sPrimariesPreset; + } else { + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); + fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); + profileDesc = sPrimariesPreset + sGammaPreset; + } + + sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); + sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); + + // -------------------------------------------- Asking the file name + + Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); + bindCurrentFolder(dialog, options.lastICCProfCreatorDir); + dialog.set_current_name(fName); + //dialog.set_current_folder(lastPath); + + dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); + dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); + + Glib::RefPtr filter_icc = Gtk::FileFilter::create(); + filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); + filter_icc->add_pattern("*.icc"); + dialog.add_filter(filter_icc); + + /* + Glib::RefPtr filter_any = Gtk::FileFilter::create(); + filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); + filter_any->add_pattern("*"); + dialog.add_filter(filter_any); + */ + + dialog.show_all_children(); + //dialog.set_do_overwrite_confirmation (true); + + Glib::ustring absoluteFName; + + do { + int result = dialog.run(); + + if (result != Gtk::RESPONSE_OK) { + return; + } else { + absoluteFName = dialog.get_filename(); + Glib::ustring ext = getExtension(absoluteFName); + + if (ext != "icc") { + absoluteFName += ".icc"; + } + + if (confirmOverwrite(dialog, absoluteFName)) { + //lastPath = Glib::path_get_dirname(absoluteFName); + break; + } + } + } while (1); + + // --------------- main tags ------------------ + /* + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); + } else { + cmsSetProfileVersion(newProfile, 2.0); + } + */ + +//change + float p[6]; //primaries + ga[6] = 0.0; + + ColorTemp temp; + getPrimaries(primariesPreset, p, temp); + + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + + if (v2except) { + cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); + cmsSetPCS(profile_v2_except, cmsSigXYZData); + cmsSetHeaderRenderingIntent(profile_v2_except, 0); + } + + + if (profileVersion == "v4" && illuminant != "DEF") { + double tempv4 = 5000.; + + if (illuminant == "D41") { + tempv4 = 4100.; + } else if (illuminant == "D50") { + tempv4 = 5003.; + } else if (illuminant == "D55") { + tempv4 = 5500.; + } else if (illuminant == "D60") { + tempv4 = 6004.; + } else if (illuminant == "D65") { + tempv4 = 6504.; + } else if (illuminant == "D80") { + tempv4 = 8000.; + } else if (illuminant == "stdA") { + tempv4 = 5003.; + } + + cmsWhitePointFromTemp(&xyD, tempv4); + + if (illuminant == "D65") { + xyD = {0.312700492, 0.329000939, 1.0}; + } + + if (illuminant == "D60") { + xyD = {0.32168, 0.33767, 1.0}; + } + + if (illuminant == "D50") { + xyD = {0.3457, 0.3585, 1.0};//white D50 near LCMS values but not perfect...it's a compromise!! + } + + if (illuminant == "stdA") { + xyD = {0.447573, 0.407440, 1.0}; + } + + + } else { + if (v2except) { + + cmsCIEXYZ XYZ; + + { + XYZ = {0.95045471, 1.0, 1.08905029};//white D65 + } + + if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { + XYZ = {0.952646075, 1.0, 1.008825184};//white D60 + } + + if (isD50) { + XYZ = {0.964295676, 1.0, 0.825104603};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! + } + + cmsCIExyY blackpoint; + + { + blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs + } + + cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); + cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); + cmsCIEXYZ rt; + cmsCIEXYZ bt; + cmsCIEXYZ gt; + + if (primariesPreset == "sRGB") { + //calculated with personnal special spreadsheat + { + //Matrix value from spec Adobe but adapted with wp + rt = {0.4360411843, 0.2224843154, 0.0139201582}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1430457992, 0.0606099658, 0.7139121724}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.3851136574, 0.7169049862, 0.0970677661}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + + } + + } + + if (primariesPreset == "Adobe") { + { + //Adobe spec adapted with wp calculated with personnal special spreadsheat + rt = {0.6097408852, 0.3111123176, 0.0194653393}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1491866649, 0.0632119133, 0.7445599707}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.2052730908, 0.6256750365, 0.0608747867}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "Rec2020") { + {//calculated with personnal special spreadsheat + rt = {0.6734800343, 0.2790423273, -0.0019336766}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1250489478, 0.0456126910, 0.7968509159}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1656716588, 0.6753442491, 0.0299828575}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BruceRGB") { + {//calculated with personnal special spreadsheat + rt = {0.4941542253, 0.2521357351, 0.0157753562}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1495175342, 0.0633521060, 0.7462112712}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.3205288814, 0.6845114263, 0.0629134693}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ACES-AP0") { + {//calculated with personnal special spreadsheat + rt = {0.9908835135, 0.3618940325, -0.0027137400}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {-0.0389246557, -0.084405166, 0.8193659780}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.0122417831, 0.7225104015, 0.0082478587}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ACES-AP1") {//done + {//calculated with personnal special spreadsheat + rt = {0.6898756188, 0.2845109670, -0.0060455375}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1245615936, 0.0437959432, 0.8209388333}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1497634285, 0.6716923572, 0.0100068009}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ProPhoto") { + {//calculated with personnal special spreadsheat + rt = {0.7977198204, 0.2880493171, -0.0000030551}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.0313194091, 0.0000771282, 0.8248890748}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1351614114, 0.7118728221, 0.0000140770}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "Widegamut") { + {//calculated with personnal special spreadsheat + rt = {0.7161680478, 0.2582038074, -0.0000027515}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1471328469, 0.0168600579, 0.7731227232}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1008997462, 0.7249354021, 0.0517801251}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BestRGB") { + {//calculated with personnal special spreadsheat + rt = {0.6327383009, 0.2284760022, -0.0000024233}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1269437333, 0.0341753604, 0.8153773703}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.2045186067, 0.7373479048, 0.0095251497}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BetaRGB") { + {//calculated with personnal special spreadsheat + rt = {0.6713200674, 0.3033034560, -0.0000012307}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1183343909, 0.0329265310, 0.7842009909}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1745461827, 0.6637692805, 0.0407003365}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } + } + + + if (isD65 && illuminant == "DEF") { + xyD = {0.312700492, 0.329000939, 1.0}; + } + + if (isD60 && illuminant == "DEF") { + xyD = {0.32168, 0.33767, 1.0}; + } + + if (isD50 && illuminant == "DEF") { + xyD = {0.3457, 0.3585, 1.0}; + } + +// {0.3457, 0.3585, 1.0}; + // Calculate output profile's rTRC gTRC bTRC + + + cmsToneCurve* GammaTRC[3]; + + if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + } + + if (gammaPreset == "standard_g2.2") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe + } + + if (gammaPreset == "standard_g1.8") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); + } + + if (gammaPreset == "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); + } + + + + if (profileVersion == "v4") { + newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + if (profileVersion == "v2") { + if (v2except) { + cmsSetProfileVersion(profile_v2_except, 2.2); + } else { + cmsSetProfileVersion(newProfile, 2.2); + } + } + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + } else { + cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); + } + + // --------------- set dmnd tag ------------------ + + cmsMLU *dmnd; + dmnd = cmsMLUalloc(nullptr, 1); + cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + } else { + cmsWriteTag(profile_v2_except, cmsSigDeviceMfgDescTag, dmnd); + } + + cmsMLUfree(dmnd); + + + +// --------------- set dmdd tag ------------------ + + if (profileVersion == "v2") { + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + std::wostringstream wGammaSlopeParam; + wGammaSlopeParam << sGammaSlopeParam; + + cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); + + // Language code (2 letters code) : https://www.iso.org/obp/ui/ + // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (sGammaSlopeParam.is_ascii()) { + if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + + } + } + } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } + } else { + printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); + } + + cmsMLUfree(dmdd); + } + +// --------------- set desc tag ------------------ + + Glib::ustring sDescription; + + if (!description.empty()) { + if (cAppendParamsToDesc->get_active()) { + sDescription = description + " / " + sGammaSlopeDesc; + } else { + sDescription = description; + } + } else { + if (cAppendParamsToDesc->get_active()) { + sDescription = profileDesc + " / " + sGammaSlopeDesc; + } else { + sDescription = profileDesc; + } + } + +//write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + std::wostringstream wDescription; + wDescription << sDescription; + + cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); + +// Language code (2 letters code) : https://www.iso.org/obp/ui/ +// Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (sDescription.is_ascii()) { + if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } + + } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } else { + printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); + } + + cmsMLUfree(descMLU); + +// --------------- set cprt tag ------------------ + + std::wostringstream wCopyright; + wCopyright << copyright; + + cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); + + if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + + } + } else { + printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); + } + + cmsMLUfree(copyMLU); + + + /* //to read XYZ values + cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); + */ + if (!v2except) { + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } else { + cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); + + } + + cmsFreeToneCurve(GammaTRC[0]); +} diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index e8de318d3..605cb9dcd 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -1,107 +1,107 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2018 Jacques DESMIS - * Copyright (c) 2018 Jean-Christophe FRISCH - * - * 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 "options.h" -#include -#include "rtwindow.h" - -class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener -{ - -private: - - enum class ColorTemp { - D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D60 = 6005, // for ACESc -> D60 - D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - }; - - cmsFloat64Number ga[7]; // 7 parameters for smoother curves - - //------------------------ Params ----------------------- - Glib::ustring primariesPreset; - double redPrimaryX; - double redPrimaryY; - double greenPrimaryX; - double greenPrimaryY; - double bluePrimaryX; - double bluePrimaryY; - Glib::ustring gammaPreset; - double gamma; - double slope; - bool appendParamsToDesc; - bool v2except; - Glib::ustring profileVersion; - Glib::ustring illuminant; - Glib::ustring description; - Glib::ustring copyright; - //------------------------------------------------------- - - RTWindow *parent; - - Adjuster* aGamma; - Adjuster* aSlope; - Adjuster* aPrimariesRedX; - Adjuster* aPrimariesRedY; - Adjuster* aPrimariesGreenX; - Adjuster* aPrimariesGreenY; - Adjuster* aPrimariesBlueX; - Adjuster* aPrimariesBlueY; - - Gtk::Grid* primariesGrid; - MyComboBoxText* iccVersion; - MyComboBoxText* trcPresets; - sigc::connection trcpresetsconn; - MyComboBoxText* primaries; - sigc::connection primariesconn; - MyComboBoxText* cIlluminant; - sigc::connection illconn; - Gtk::Entry* eDescription; - Gtk::Entry* eCopyright; - Gtk::Button* resetCopyright; - Gtk::CheckButton *cAppendParamsToDesc; - - //Glib::ustring lastPath; - - void initWithDefaults (); - void storeDefaults (); - void storeValues(); - - void updateICCVersion(); - void primariesChanged(); - void illuminantChanged(); - void trcPresetsChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - static std::vector getGamma(); - Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); - void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp); - Glib::ustring getGammaPresetName(const Glib::ustring &preset); - void getGamma(const Glib::ustring &preset, double &gamma, double &slope); - void savePressed(); - void closePressed(); - void onResetCopyright(); - -public: - explicit ICCProfileCreator (RTWindow *rtwindow); -}; +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * 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 "options.h" +#include +#include "rtwindow.h" + +class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener +{ + +private: + + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D60 = 6005, // for ACESc -> D60 + D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + }; + + cmsFloat64Number ga[7]; // 7 parameters for smoother curves + + //------------------------ Params ----------------------- + Glib::ustring primariesPreset; + double redPrimaryX; + double redPrimaryY; + double greenPrimaryX; + double greenPrimaryY; + double bluePrimaryX; + double bluePrimaryY; + Glib::ustring gammaPreset; + double gamma; + double slope; + bool appendParamsToDesc; + bool v2except; + Glib::ustring profileVersion; + Glib::ustring illuminant; + Glib::ustring description; + Glib::ustring copyright; + //------------------------------------------------------- + + RTWindow *parent; + + Adjuster* aGamma; + Adjuster* aSlope; + Adjuster* aPrimariesRedX; + Adjuster* aPrimariesRedY; + Adjuster* aPrimariesGreenX; + Adjuster* aPrimariesGreenY; + Adjuster* aPrimariesBlueX; + Adjuster* aPrimariesBlueY; + + Gtk::Grid* primariesGrid; + MyComboBoxText* iccVersion; + MyComboBoxText* trcPresets; + sigc::connection trcpresetsconn; + MyComboBoxText* primaries; + sigc::connection primariesconn; + MyComboBoxText* cIlluminant; + sigc::connection illconn; + Gtk::Entry* eDescription; + Gtk::Entry* eCopyright; + Gtk::Button* resetCopyright; + Gtk::CheckButton *cAppendParamsToDesc; + + //Glib::ustring lastPath; + + void initWithDefaults (); + void storeDefaults (); + void storeValues(); + + void updateICCVersion(); + void primariesChanged(); + void illuminantChanged(); + void trcPresetsChanged(); + void adjusterChanged(Adjuster* a, double newval); + void adjusterAutoToggled(Adjuster* a, bool newval); + static std::vector getGamma(); + Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); + void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp); + Glib::ustring getGammaPresetName(const Glib::ustring &preset); + void getGamma(const Glib::ustring &preset, double &gamma, double &slope); + void savePressed(); + void closePressed(); + void onResetCopyright(); + +public: + explicit ICCProfileCreator (RTWindow *rtwindow); +}; From 91706c284a73efc8e8967768d815bba6d037a8b3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 16 Nov 2018 15:04:08 +0100 Subject: [PATCH 154/348] Fix issue reported by coverity --- rtgui/iccprofilecreator.cc | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index b322fa005..3e868ce04 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1199,29 +1199,21 @@ void ICCProfileCreator::savePressed() cmsToneCurve* GammaTRC[3]; - if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); - } - if (gammaPreset == "standard_g2.2") { GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe - } - - if (gammaPreset == "standard_g1.8") { + } else if (gammaPreset == "standard_g1.8") { GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); - } - - if (gammaPreset == "linear_g1.0") { + } else if (gammaPreset == "linear_g1.0") { GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); + } else { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); } if (profileVersion == "v4") { newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - if (profileVersion == "v2") { + } else if (profileVersion == "v2") { if (v2except) { cmsSetProfileVersion(profile_v2_except, 2.2); } else { From 1c081965624a88888a9adf1dbf26652c7cd8d1de Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 16 Nov 2018 18:14:04 +0100 Subject: [PATCH 155/348] Added color-picker-small icon #4986 --- .../themed/png/dark/color-picker-small.png | Bin 0 -> 455 bytes .../themed/png/light/color-picker-small.png | Bin 0 -> 475 bytes .../images/themed/svg/color-picker-small.svg | 133 ++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 rtdata/images/themed/png/dark/color-picker-small.png create mode 100644 rtdata/images/themed/png/light/color-picker-small.png create mode 100644 rtdata/images/themed/svg/color-picker-small.svg diff --git a/rtdata/images/themed/png/dark/color-picker-small.png b/rtdata/images/themed/png/dark/color-picker-small.png new file mode 100644 index 0000000000000000000000000000000000000000..5976b6e11c0f9e7e121e422c9f3a206265ffb36c GIT binary patch literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}P>E|qiF1BIWl?5&MhSznvw~wu zNl|7}X-Q^&o^EhPVo|DNPG)whLPkkRft9{~a#3nxNoHAUa(-@ZeqOO&eo?x9PG)jy zUU6!%ep01waiYG7o`L@1kR(>1>9QcxT~dpai!uv91~LRCmWO1d79|#>rYdA6=jZ9& zSk*NLs89r?(6O{6Bfp5jH!(RgHA}&zJijP0+co zc5yP$9FPlUzq647D&j2gh%9Dc;5!1sj8nDwq=ACQ0X`wF?gc()&YU@Q>J*SXefl(z zgae2mgaitnJbCi$*|R{#_Ey;*pmxEMAirP+R_O^bTOLneDR{`YBv+%#X4x^v2B2i1 zr;B5V#O2!ajzSFv9Lx?;Tr8`u{@;Hsn!V)M9kT+?i~iFR)5<#(DqA`VcCB8uAb)pj z*2kBESrE|qiF1BIWl?5&MhSznvw~wu zNl|7}X-Q^&o^EhPVo|DNPG)whLPkkRft9{~a#3nxNoHAUa(-@ZeqOO&eo?x9PG)jy zUU6!%ep01waiYG7o`L@1kR(>1>9QcxT~dpai!uv91~LRCmWO1d79|#>rYdA6=jZ9& zSk*NLs89r?(6O{6Bfp5jH!(RgHA}&zJijP0+co zc5yP$9FPlUzq647D&j2gh%9Dc;5!1sj8nDwq=AC=0X`wF?gc(7Dk?TMHb4>xR8>`# zl$3xZ5J0#F&vqgH^D#7{tHTrxm zm-<(6*t8z~ycMV*)YHW=MB;Moc}u + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + From 1fa253ba635707db657b68370d2fc1a555e8d6ff Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 16 Nov 2018 20:48:33 +0100 Subject: [PATCH 156/348] Fix some issues reported by coverity --- rtengine/FTblockDN.cc | 4 ++-- rtengine/image16.cc | 2 +- rtengine/image16.h | 2 +- rtengine/image8.cc | 2 +- rtengine/image8.h | 2 +- rtengine/imagefloat.cc | 2 +- rtengine/imagefloat.h | 2 +- rtengine/imageio.h | 2 +- rtengine/imagesource.h | 2 +- rtengine/rawimagesource.cc | 6 +++--- rtengine/rawimagesource.h | 2 +- rtengine/stdimagesource.cc | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 8ced521d3..dfab72089 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -807,8 +807,8 @@ BENCHFUN #endif const std::size_t blox_array_size = denoiseNestedLevels * numthreads; - float *LbloxArray[blox_array_size]; - float *fLbloxArray[blox_array_size]; + float *LbloxArray[blox_array_size] = {}; + float *fLbloxArray[blox_array_size] = {}; for (std::size_t i = 0; i < blox_array_size; ++i) { LbloxArray[i] = nullptr; diff --git a/rtengine/image16.cc b/rtengine/image16.cc index c014d1c06..5ceb4f804 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -132,7 +132,7 @@ Image16* Image16::copy() return cp; } -void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) { // compute channel multipliers diff --git a/rtengine/image16.h b/rtengine/image16.h index 1c5504bd9..804f8cc72 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -45,7 +45,7 @@ public: Image8* to8(); Imagefloat* tofloat(); - virtual void getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + virtual void getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp); virtual const char* getType() const { diff --git a/rtengine/image8.cc b/rtengine/image8.cc index ab7393100..15a6d9acc 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -97,7 +97,7 @@ Image8* Image8::copy () return cp; } -void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) { // compute channel multipliers float rm = 1.f, gm = 1.f, bm = 1.f; diff --git a/rtengine/image8.h b/rtengine/image8.h index 59d13c298..9bb5d51e3 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -40,7 +40,7 @@ public: Image8* copy (); - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp); virtual const char* getType () const { diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 2cf73204d..fd6bc1c75 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -168,7 +168,7 @@ Imagefloat* Imagefloat::copy () } // This is called by the StdImageSource class. We assume that fp images from StdImageSource don't have to deal with gamma -void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) { // compute channel multipliers diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 65c291775..d84e742ce 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -49,7 +49,7 @@ public: Image8* to8(); Image16* to16(); - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp); virtual const char* getType () const { diff --git a/rtengine/imageio.h b/rtengine/imageio.h index cbf245291..0de1de1c0 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -106,7 +106,7 @@ public: return sampleArrangement; } - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) + virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first) { printf("getStdImage NULL!\n"); } diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index c1bd8fd64..2c7ded588 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -74,7 +74,7 @@ public: 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) {}; + virtual void HLRecovery_Global (const ToneCurveParams &hrp) {}; virtual void HLRecovery_inpaint (float** red, float** green, float** blue) {}; virtual void MSR (LabImage* lab, LUTf & mapcurve, bool &mapcontlutili, int width, int height, int skip, RetinexParams deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) {}; diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 85e68745b..086747b1b 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -2825,7 +2825,7 @@ void RawImageSource::flushRGB() } } -void RawImageSource::HLRecovery_Global(ToneCurveParams hrp) +void RawImageSource::HLRecovery_Global(const ToneCurveParams &hrp) { if (hrp.hrenabled && hrp.method == "Color") { if(!rgbSourceModified) { @@ -3236,10 +3236,10 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw } } -void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, const int boxH, const int boxW) +void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH, int boxW) { - if(boxW == 0 && boxH == 0) { // nothing to blur + if (boxW < 0 || boxH < 0 || (boxW == 0 && boxH == 0)) { // nothing to blur or negative values memcpy(cfablur, riFlatFile->data[0], W * H * sizeof(float)); return; } diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index af0c1a116..7244f4c7c 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -122,7 +122,7 @@ public: void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); void flushRawData (); void flushRGB (); - void HLRecovery_Global (ToneCurveParams hrp); + void HLRecovery_Global (const ToneCurveParams &hrp); void refinement_lassus (int PassCount); void refinement(int PassCount); void setBorder(unsigned int rawBorder) {border = rawBorder;} diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index c75995b25..241d5f81d 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -194,7 +194,7 @@ void StdImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima // the code will use OpenMP as of now. - img->getStdImage(ctemp, tran, image, pp, true, hrp); + img->getStdImage(ctemp, tran, image, pp, true); // Hombre: we could have rotated the image here too, with just few line of code, but: // 1. it would require other modifications in the engine, so "do not touch that little plonker!" From d66d8ce320f397f80c21a035001c60a891a6cd7c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 16 Nov 2018 21:49:46 +0100 Subject: [PATCH 157/348] Fix issue reported by coverity --- rtengine/ipresize.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index b3275b2e4..f33b8f0c9 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -231,7 +231,7 @@ void ImProcFunctions::Lanczos (const LabImage* src, LabImage* dst, float scale) float* const la = aligned_buffer_la.data; float* const lb = aligned_buffer_lb.data; // weights for interpolation in y direction - float w[support] ALIGNED64; + float w[support] ALIGNED64 = {}; // Phase 2: do actual interpolation #ifdef _OPENMP From 0ff68afcdfee71269a0addd169880fca5d956dd2 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 16 Nov 2018 22:05:32 +0100 Subject: [PATCH 158/348] Change line endings --- rtgui/iccprofilecreator.cc | 2790 ++++++++++++++++++------------------ rtgui/iccprofilecreator.h | 214 +-- 2 files changed, 1502 insertions(+), 1502 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 0d16a401a..15823f9d4 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1,1395 +1,1395 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2018 Jacques DESMIS - * Copyright (c) 2018 Jean-Christophe FRISCH - * - * 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 -#include "iccprofilecreator.h" -#include "multilangmgr.h" -#include "cachemanager.h" -#include "addsetids.h" -#include "../rtengine/icons.h" -#include "../rtengine/color.h" -#include "rtimage.h" -#ifdef _OPENMP -#include -#endif - -extern Options options; - -namespace rtengine -{ - -extern const Settings* settings; - -} - -const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free - -ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) - : Gtk::Dialog(M("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) - , primariesPreset(options.ICCPC_primariesPreset) - , redPrimaryX(options.ICCPC_redPrimaryX) - , redPrimaryY(options.ICCPC_redPrimaryY) - , greenPrimaryX(options.ICCPC_greenPrimaryX) - , greenPrimaryY(options.ICCPC_greenPrimaryY) - , bluePrimaryX(options.ICCPC_bluePrimaryX) - , bluePrimaryY(options.ICCPC_bluePrimaryY) - , gammaPreset(options.ICCPC_gammaPreset) - , gamma(options.ICCPC_gamma) - , slope(options.ICCPC_slope) - , appendParamsToDesc(options.ICCPC_appendParamsToDesc) - , profileVersion(options.ICCPC_profileVersion) - , illuminant(options.ICCPC_illuminant) - , description(options.ICCPC_description) - , copyright(options.ICCPC_copyright) - , parent(rtwindow) -{ - - set_default_size(600, -1); - - Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); - mainGrid->set_column_spacing(3); - mainGrid->set_row_spacing(3); - - //--------------------------------- primaries - - Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); - setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*prilab, 0, 0, 1, 1); - - primaries = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - primaries->append(M("ICCPROFCREATOR_CUSTOM")); - primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); - primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); - primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); - primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); - primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); - primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); - primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); - primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); - primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); - primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); - primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); - mainGrid->attach(*primaries, 1, 0, 1, 1); - - primariesGrid = Gtk::manage(new Gtk::Grid()); - setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - primariesGrid->set_column_spacing(5); - - /* - Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); - Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); - Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); - */ - - aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); - setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); - setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); - setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); - setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); - setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); - setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); - primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); - - primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); - primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); - - primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); - primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); - - mainGrid->attach(*primariesGrid, 1, 1, 1, 1); - - //--------------------------------- output gamma - - Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); - setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*galab, 0, 2, 1, 1); - - trcPresets = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - std::vector outputTRCPresets; - outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); - - for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { - outputTRCPresets.push_back(sTRCPreset[i]); - } - - for (size_t i = 0; i < outputTRCPresets.size(); i++) { - trcPresets->append(outputTRCPresets[i]); - } - - mainGrid->attach(*trcPresets, 1, 2, 1, 1); - - //--------------------------------- sliders gampos and slpos - - aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); - setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - - if (aGamma->delay < options.adjusterMaxDelay) { - aGamma->delay = options.adjusterMaxDelay; - } - - aGamma->show(); - mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma - - aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); - setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - - if (aSlope->delay < options.adjusterMaxDelay) { - aSlope->delay = options.adjusterMaxDelay; - } - - aSlope->show(); - mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope - - //--------------------------------- temperature - - Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); - setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*illlab, 0, 5, 1, 1); //slope - cIlluminant = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); - cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); - cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); - mainGrid->attach(*cIlluminant, 1, 5, 1, 1); - - //--------------------------------- V2 or V4 profiles - - Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); - setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*proflab, 0, 6, 1, 1); - iccVersion = Gtk::manage(new MyComboBoxText()); - setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); - mainGrid->attach(*iccVersion, 1, 6, 1, 1); - - //--------------------------------- Description - - Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); - setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); - mainGrid->attach(*desclab, 0, 7, 1, 2); - eDescription = Gtk::manage(new Gtk::Entry()); - setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); - mainGrid->attach(*eDescription, 1, 7, 1, 1); - cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM"))); - setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); - - //--------------------------------- Copyright - - Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); - setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - mainGrid->attach(*copylab, 0, 9, 1, 1); - Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); - setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); - eCopyright = Gtk::manage(new Gtk::Entry()); - setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - copygrid->attach(*eCopyright, 0, 0, 1, 1); - resetCopyright = Gtk::manage(new Gtk::Button()); - resetCopyright->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); - setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); - resetCopyright->set_relief(Gtk::RELIEF_NONE); - resetCopyright->set_tooltip_markup(M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); - resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); - resetCopyright->set_can_focus(false); - copygrid->attach(*resetCopyright, 1, 0, 1, 1); - mainGrid->attach(*copygrid, 1, 9, 1, 1); - - //--------------------------------- Adding the mainGrid - - get_content_area()->add(*mainGrid); - - //--------------------------------- Setting default values for Adjusters - - aGamma->setDefault(gamma); - aSlope->setDefault(slope); - aPrimariesRedX->setDefault(redPrimaryX); - aPrimariesRedY->setDefault(redPrimaryY); - aPrimariesGreenX->setDefault(greenPrimaryX); - aPrimariesGreenY->setDefault(greenPrimaryY); - aPrimariesBlueX->setDefault(bluePrimaryX); - aPrimariesBlueY->setDefault(bluePrimaryY); - - //--------------- Updating widgets with actual values (from options) - - if (primariesPreset == "custom") { - primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); - } else if (primariesPreset == "ACES-AP0") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); - } else if (primariesPreset == "ACES-AP1") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); - } else if (primariesPreset == "Adobe") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); - } else if (primariesPreset == "ProPhoto") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); - } else if (primariesPreset == "Rec2020") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); - } else if (primariesPreset == "sRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); - } else if (primariesPreset == "Widegamut") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); - } else if (primariesPreset == "BestRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); - } else if (primariesPreset == "BetaRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); - } else if (primariesPreset == "BruceRGB") { - primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); - } - - trcPresets->set_active(0); - - if (gammaPreset != "Custom") { - trcPresets->set_active_text(gammaPreset); - } - - aGamma->setValue(gamma); - aSlope->setValue(slope); - aPrimariesRedX->setValue(redPrimaryX); - aPrimariesRedY->setValue(redPrimaryY); - aPrimariesGreenX->setValue(greenPrimaryX); - aPrimariesGreenY->setValue(greenPrimaryY); - aPrimariesBlueX->setValue(bluePrimaryX); - aPrimariesBlueY->setValue(bluePrimaryY); - - eDescription->set_text(description); - eCopyright->set_text(copyright); - cAppendParamsToDesc->set_active(appendParamsToDesc); - - if (illuminant == "DEF") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); - } else if (illuminant == "D41") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); - } else if (illuminant == "D50") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); - } else if (illuminant == "D55") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); - } else if (illuminant == "D60") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); - } else if (illuminant == "D65") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); - } else if (illuminant == "D80") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); - } else if (illuminant == "stdA") { - cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); - } - - iccVersion->set_active(0); - - if (profileVersion == "v2") { - iccVersion->set_active(1); - } - - trcPresetsChanged(); - illuminantChanged(); - primariesChanged(); - - //--------------- Action area button - - Gtk::Button* save = Gtk::manage(new Gtk::Button(M("GENERAL_SAVE_AS"))); - save->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::savePressed)); - get_action_area()->pack_start(*save); - - Gtk::Button* close = Gtk::manage(new Gtk::Button(M("GENERAL_CLOSE"))); - close->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::closePressed)); - get_action_area()->pack_start(*close); - - //--------------- Show childrens - - show_all_children(); - - //--------------- Connecting the signals - - aPrimariesRedX->setAdjusterListener(this); - aPrimariesRedY->setAdjusterListener(this); - aPrimariesGreenX->setAdjusterListener(this); - aPrimariesGreenY->setAdjusterListener(this); - aPrimariesBlueX->setAdjusterListener(this); - aPrimariesBlueY->setAdjusterListener(this); - aGamma->setAdjusterListener(this); - aSlope->setAdjusterListener(this); - primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); - trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); - illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); - resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); -} - -void ICCProfileCreator::closePressed() -{ - storeValues(); - hide(); -} - -void ICCProfileCreator::updateICCVersion() -{ - if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->set_sensitive(false); - } else { - iccVersion->set_sensitive(true); - } -} - -void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) -{ - if (a == aPrimariesRedX || a == aPrimariesRedY || - a == aPrimariesGreenX || a == aPrimariesGreenY || - a == aPrimariesBlueX || a == aPrimariesBlueY) { - if (primaries->get_active_row_number() > 0) { - ConnectionBlocker blocker(primariesconn); - primaries->set_active(0); - updateICCVersion(); - } - } else if (a == aGamma || a == aSlope) { - if (trcPresets->get_active_row_number() > 0) { - ConnectionBlocker blocker(trcpresetsconn); - trcPresets->set_active(0); - } - } -} - -void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) -{ -} - -void ICCProfileCreator::primariesChanged() -{ - if (primaries->get_active_row_number() > 0) { - float p[6]; - ColorTemp temp; - Glib::ustring activeValue = primaries->get_active_text(); - Glib::ustring primPresetName = getPrimariesPresetName(activeValue); - getPrimaries(primPresetName, p, temp); - aPrimariesRedX->setValue(p[0]); - aPrimariesRedY->setValue(p[1]); - aPrimariesGreenX->setValue(p[2]); - aPrimariesGreenY->setValue(p[3]); - aPrimariesBlueX->setValue(p[4]); - aPrimariesBlueY->setValue(p[5]); - } - - updateICCVersion(); -} - -void ICCProfileCreator::illuminantChanged() -{ - updateICCVersion(); -} - -void ICCProfileCreator::trcPresetsChanged() -{ - aGamma->block(true); - aSlope->block(true); - - double gamma; - double slope; - getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); - aGamma->setValue(gamma); - aSlope->setValue(slope); - - aGamma->block(false); - aSlope->block(false); -} - -void ICCProfileCreator::storeValues() -{ - if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { - options.ICCPC_profileVersion = profileVersion = "v4"; - } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { - options.ICCPC_profileVersion = profileVersion = "v2"; - } - - if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { - options.ICCPC_illuminant = illuminant = "DEF"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { - options.ICCPC_illuminant = illuminant = "D41"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { - options.ICCPC_illuminant = illuminant = "D50"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { - options.ICCPC_illuminant = illuminant = "D55"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { - options.ICCPC_illuminant = illuminant = "D60"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { - options.ICCPC_illuminant = illuminant = "D65"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { - options.ICCPC_illuminant = illuminant = "D80"; - } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { - options.ICCPC_illuminant = illuminant = "stdA"; - } - - options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); - options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); - options.ICCPC_gamma = gamma = aGamma->getValue(); - options.ICCPC_slope = slope = aSlope->getValue(); - options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); - options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); - options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); - options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); - options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); - options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); - options.ICCPC_description = description = eDescription->get_text(); - options.ICCPC_copyright = copyright = eCopyright->get_text(); - options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); -} - -Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) -{ - if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { - return Glib::ustring("ACES-AP0"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { - return Glib::ustring("ACES-AP1"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { - return Glib::ustring("Adobe"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { - return Glib::ustring("ProPhoto"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { - return Glib::ustring("Rec2020"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { - return Glib::ustring("sRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { - return Glib::ustring("Widegamut"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { - return Glib::ustring("BestRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { - return Glib::ustring("BetaRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { - return Glib::ustring("BruceRGB"); - } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - return Glib::ustring("custom"); - } else { - return Glib::ustring(); - } -} - -void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) -{ - temp = ColorTemp::D50; - - if (preset == "Widegamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - - } else if (preset == "Adobe") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (preset == "BetaRGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (preset == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (preset == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (preset == "ACES-AP0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (preset == "ACES-AP1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (preset == "ProPhoto") { - p[0] = 0.7347; // ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else if (preset == "custom") { - p[0] = redPrimaryX; - p[1] = redPrimaryY; - p[2] = greenPrimaryX; - p[3] = greenPrimaryY; - p[4] = bluePrimaryX; - p[5] = bluePrimaryY; - - } else { - p[0] = 0.7347; //default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } -} - -Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) -{ - Glib::ustring name(trcPresets->get_active_text()); - - if (name == M("ICCPROFCREATOR_CUSTOM")) { - name = "Custom"; - } - - return name; -} - -void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) -{ - if (preset == "High_g1.3_s3.35") { - presetGamma = 1.3; - presetSlope = 3.35; - } else if (preset == "Low_g2.6_s6.9") { - presetGamma = 2.6; - presetSlope = 6.9; - } else if (preset == "sRGB_g2.4_s12.92") { - presetGamma = 2.4; - presetSlope = 12.92310; - } else if (preset == "BT709_g2.2_s4.5") { - presetGamma = 2.22; - presetSlope = 4.5; - } else if (preset == "linear_g1.0") { - presetGamma = 1.; - presetSlope = 0.; - } else if (preset == "standard_g2.2") { - presetGamma = 2.2; - presetSlope = 0.; - } else if (preset == "standard_g1.8") { - presetGamma = 1.8; - presetSlope = 0.; - } else if (preset == "Lab_g3.0s9.03296") { - presetGamma = 3.0; - presetSlope = 9.03296; - } else if (preset == "Custom") { - presetGamma = gamma; - presetSlope = slope; - } else { - presetGamma = 2.4; - presetSlope = 12.92310; - } -} - -void ICCProfileCreator::onResetCopyright() -{ - eCopyright->set_text(Options::getICCProfileCopyright()); -} - -// Copyright (c) 2018 Jacques DESMIS -// WARNING: the caller must lock lcmsMutex -void ICCProfileCreator::savePressed() -{ - cmsHPROFILE newProfile = nullptr; - cmsHPROFILE profile_v2_except = nullptr; - - Glib::ustring sNewProfile; - Glib::ustring sPrimariesPreset; - Glib::ustring sGammaPreset; - - storeValues(); - - // -------------------------------------------- Compute the default file name - // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- - //instead of calculations made by LCMS..small differences - bool isD65 = (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB"); - bool isD60 = (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0"); - bool isD50 = (primariesPreset == "ProPhoto" || primariesPreset == "Widegamut" || primariesPreset == "BestRGB" || primariesPreset == "BetaRGB"); - // v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); - v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); - - //necessary for V2 profile - - if (!v2except) { - std::string is_RTv4 = ""; - - //used partially for v4, and in case of if we want to back to old manner for v2 - if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { - sNewProfile = options.rtSettings.ACESp0; - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { - sNewProfile = options.rtSettings.ACESp1; - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { - sNewProfile = options.rtSettings.adobe; - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { - is_RTv4 = options.rtSettings.prophoto.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.prophoto = "RTv2_Large"; - }; - - sNewProfile = options.rtSettings.prophoto; - - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { - sNewProfile = options.rtSettings.rec2020; - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { - is_RTv4 = options.rtSettings.widegamut.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.widegamut = "RTv2_Wide"; - }; - - sNewProfile = options.rtSettings.widegamut; - - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { - is_RTv4 = options.rtSettings.best.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.best = "RTv2_Best"; - }; - - sNewProfile = options.rtSettings.best; - - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { - sNewProfile = options.rtSettings.beta; - is_RTv4 = options.rtSettings.beta.substr(0, 4); - - if (is_RTv4 == "RTv4") { - options.rtSettings.widegamut = "RTv2_Beta"; - }; - - sPrimariesPreset = "Beta"; - } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { - sNewProfile = options.rtSettings.bruce; - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "custom") { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "Custom"; - } else { - // Should not occurs - if (rtengine::settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); - } - - return; - } - } else { - //new model for v2 profile different from D50 by entering directly XYZ values and media white point - sNewProfile = "RTv2_Beta";//for copy generate others v2 profile. To change date of new profile, I used "ICC profile inspector" and "save as" - - if (primariesPreset == "ACES-AP0") { - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1") { - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe") { - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "Rec2020") { - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "BruceRGB") { - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "sRGB") { - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "ProPhoto") { - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Widegamut") { - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB") { - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB") { - sPrimariesPreset = "Beta"; - } - } - - //begin adaptation rTRC gTRC bTRC - //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile - if (rtengine::settings->verbose) { - printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); - } - - if (!v2except) { - newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - } else { - profile_v2_except = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - - } - - /* - if (newProfile == nullptr ) { - - if (rtengine::settings->verbose) { - printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); - } - - return; - } - */ - //change desc Tag , to "free gamma", or "BT709", etc. - Glib::ustring fName; - Glib::ustring sPrimariesAndIlluminant; - double presetGamma = 2.4; - double presetSlope = 12.92310; - const double eps = 0.000000001; // not divide by zero - getGamma(gammaPreset, presetGamma, presetSlope); - - if (gammaPreset == "High_g1.3_s3.35") { - sGammaPreset = "High_g=1.3_s=3.35"; - ga[0] = 1.3 ; //for high dynamic images - ga[1] = 0.998279; - ga[2] = 0.001721; - ga[3] = 0.298507; - ga[4] = 0.005746; - } else if (gammaPreset == "Low_g2.6_s6.9") { - sGammaPreset = "Low_g=2.6_s=6.9"; - ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images - ga[1] = 0.891161; - ga[2] = 0.108839; - ga[3] = 0.144928; - ga[4] = 0.076332; - } else if (gammaPreset == "sRGB_g2.4_s12.92") { - sGammaPreset = "sRGB_g=2.4_s=12.92310"; - ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom - ga[1] = 0.947858; - ga[2] = 0.052142; - ga[3] = 0.077399; - ga[4] = 0.039293; - } else if (gammaPreset == "BT709_g2.2_s4.5") { - sGammaPreset = "BT709_g=2.2_s=4.5"; - ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin - ga[1] = 0.909995; - ga[2] = 0.090005; - ga[3] = 0.222222; - ga[4] = 0.081071; - } else if (gammaPreset == "linear_g1.0") { - sGammaPreset = "Linear_g=1.0"; - ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "standard_g2.2") { - sGammaPreset = "g=2.2"; - ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "standard_g1.8") { - sGammaPreset = "g=1.8"; - ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) - ga[1] = 1.; - ga[2] = 0.; - ga[3] = 1. / eps; - ga[4] = 0.; - } else if (gammaPreset == "Lab_g3.0s9.03296") { - sGammaPreset = "LAB_g3.0_s9.03296"; - ga[0] = 3.0; //Lab gamma =3 slope=9.03296 - ga[1] = 0.8621; - ga[2] = 0.1379; - ga[3] = 0.1107; - ga[4] = 0.08; - } else if (gammaPreset == "Custom") { - rtengine::GammaValues g_a; //gamma parameters - double pwr = 1.0 / gamma; - double ts = slope; - double slope2 = slope == 0 ? eps : slope; - - int mode = 0; - rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - ga[4] = g_a[3] * ts; - //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); - ga[0] = gamma; - ga[1] = 1. / (1.0 + g_a[4]); - ga[2] = g_a[4] / (1.0 + g_a[4]); - ga[3] = 1. / slope2; - //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); - - sGammaPreset = Glib::ustring::compose("g%1_s%2", - Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), - Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); - presetGamma = gamma; - presetSlope = slope; - } - - ga[5] = 0.0; - ga[6] = 0.0; - - - sPrimariesAndIlluminant = sPrimariesPreset; - - if (profileVersion == "v4" && illuminant != "DEF") { - sPrimariesPreset += "-" + illuminant; - } - - Glib::ustring profileDesc; - Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd - Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc - Glib::ustring sGamma; - Glib::ustring sSlope; - - if (gammaPreset == "Custom") { - sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); - sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); - fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); - profileDesc = sPrimariesPreset; - } else { - sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); - sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); - fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); - profileDesc = sPrimariesPreset + sGammaPreset; - } - - sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); - sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); - - // -------------------------------------------- Asking the file name - - Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); - bindCurrentFolder(dialog, options.lastICCProfCreatorDir); - dialog.set_current_name(fName); - //dialog.set_current_folder(lastPath); - - dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); - dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); - - Glib::RefPtr filter_icc = Gtk::FileFilter::create(); - filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); - filter_icc->add_pattern("*.icc"); - dialog.add_filter(filter_icc); - - /* - Glib::RefPtr filter_any = Gtk::FileFilter::create(); - filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); - filter_any->add_pattern("*"); - dialog.add_filter(filter_any); - */ - - dialog.show_all_children(); - //dialog.set_do_overwrite_confirmation (true); - - Glib::ustring absoluteFName; - - do { - int result = dialog.run(); - - if (result != Gtk::RESPONSE_OK) { - return; - } else { - absoluteFName = dialog.get_filename(); - Glib::ustring ext = getExtension(absoluteFName); - - if (ext != "icc") { - absoluteFName += ".icc"; - } - - if (confirmOverwrite(dialog, absoluteFName)) { - //lastPath = Glib::path_get_dirname(absoluteFName); - break; - } - } - } while (1); - - // --------------- main tags ------------------ - /* - if (profileVersion == "v4") { - cmsSetProfileVersion(newProfile, 4.3); - } else { - cmsSetProfileVersion(newProfile, 2.0); - } - */ - -//change - float p[6]; //primaries - ga[6] = 0.0; - - ColorTemp temp; - getPrimaries(primariesPreset, p, temp); - - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - - - if (v2except) { - cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); - cmsSetPCS(profile_v2_except, cmsSigXYZData); - cmsSetHeaderRenderingIntent(profile_v2_except, 0); - } - - - if (profileVersion == "v4" && illuminant != "DEF") { - double tempv4 = 5000.; - - if (illuminant == "D41") { - tempv4 = 4100.; - } else if (illuminant == "D50") { - tempv4 = 5003.; - } else if (illuminant == "D55") { - tempv4 = 5500.; - } else if (illuminant == "D60") { - tempv4 = 6004.; - } else if (illuminant == "D65") { - tempv4 = 6504.; - } else if (illuminant == "D80") { - tempv4 = 8000.; - } else if (illuminant == "stdA") { - tempv4 = 5003.; - } - - cmsWhitePointFromTemp(&xyD, tempv4); - - if (illuminant == "D65") { - xyD = {0.312700492, 0.329000939, 1.0}; - } - - if (illuminant == "D60") { - xyD = {0.32168, 0.33767, 1.0}; - } - - if (illuminant == "D50") { - xyD = {0.3457, 0.3585, 1.0};//white D50 near LCMS values but not perfect...it's a compromise!! - } - - if (illuminant == "stdA") { - xyD = {0.447573, 0.407440, 1.0}; - } - - - } else { - if (v2except) { - - cmsCIEXYZ XYZ; - - { - XYZ = {0.95045471, 1.0, 1.08905029};//white D65 - } - - if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { - XYZ = {0.952646075, 1.0, 1.008825184};//white D60 - } - - if (isD50) { - XYZ = {0.964295676, 1.0, 0.825104603};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! - } - - cmsCIExyY blackpoint; - - { - blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs - } - - cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); - cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); - cmsCIEXYZ rt; - cmsCIEXYZ bt; - cmsCIEXYZ gt; - - if (primariesPreset == "sRGB") { - //calculated with personnal special spreadsheat - { - //Matrix value from spec Adobe but adapted with wp - rt = {0.4360411843, 0.2224843154, 0.0139201582}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1430457992, 0.0606099658, 0.7139121724}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3851136574, 0.7169049862, 0.0970677661}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - - } - - } - - if (primariesPreset == "Adobe") { - { - //Adobe spec adapted with wp calculated with personnal special spreadsheat - rt = {0.6097408852, 0.3111123176, 0.0194653393}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1491866649, 0.0632119133, 0.7445599707}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2052730908, 0.6256750365, 0.0608747867}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "Rec2020") { - {//calculated with personnal special spreadsheat - rt = {0.6734800343, 0.2790423273, -0.0019336766}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1250489478, 0.0456126910, 0.7968509159}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1656716588, 0.6753442491, 0.0299828575}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BruceRGB") { - {//calculated with personnal special spreadsheat - rt = {0.4941542253, 0.2521357351, 0.0157753562}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1495175342, 0.0633521060, 0.7462112712}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3205288814, 0.6845114263, 0.0629134693}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "ACES-AP0") { - {//calculated with personnal special spreadsheat - rt = {0.9908835135, 0.3618940325, -0.0027137400}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {-0.0389246557, -0.084405166, 0.8193659780}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.0122417831, 0.7225104015, 0.0082478587}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "ACES-AP1") {//done - {//calculated with personnal special spreadsheat - rt = {0.6898756188, 0.2845109670, -0.0060455375}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1245615936, 0.0437959432, 0.8209388333}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1497634285, 0.6716923572, 0.0100068009}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "ProPhoto") { - {//calculated with personnal special spreadsheat - rt = {0.7977198204, 0.2880493171, -0.0000030551}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.0313194091, 0.0000771282, 0.8248890748}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1351614114, 0.7118728221, 0.0000140770}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "Widegamut") { - {//calculated with personnal special spreadsheat - rt = {0.7161680478, 0.2582038074, -0.0000027515}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1471328469, 0.0168600579, 0.7731227232}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1008997462, 0.7249354021, 0.0517801251}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BestRGB") { - {//calculated with personnal special spreadsheat - rt = {0.6327383009, 0.2284760022, -0.0000024233}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1269437333, 0.0341753604, 0.8153773703}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2045186067, 0.7373479048, 0.0095251497}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BetaRGB") { - {//calculated with personnal special spreadsheat - rt = {0.6713200674, 0.3033034560, -0.0000012307}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1183343909, 0.0329265310, 0.7842009909}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1745461827, 0.6637692805, 0.0407003365}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - } else { - cmsWhitePointFromTemp(&xyD, (double)temp); - } - } - - - if (isD65 && illuminant == "DEF") { - xyD = {0.312700492, 0.329000939, 1.0}; - } - - if (isD60 && illuminant == "DEF") { - xyD = {0.32168, 0.33767, 1.0}; - } - - if (isD50 && illuminant == "DEF") { - xyD = {0.3457, 0.3585, 1.0}; - } - -// {0.3457, 0.3585, 1.0}; - // Calculate output profile's rTRC gTRC bTRC - - - cmsToneCurve* GammaTRC[3]; - - if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); - } - - if (gammaPreset == "standard_g2.2") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe - } - - if (gammaPreset == "standard_g1.8") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); - } - - if (gammaPreset == "linear_g1.0") { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); - } - - - - if (profileVersion == "v4") { - newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - } - - if (profileVersion == "v2") { - if (v2except) { - cmsSetProfileVersion(profile_v2_except, 2.2); - } else { - cmsSetProfileVersion(newProfile, 2.2); - } - } - - if (!v2except) { - cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); - } else { - cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); - } - - // --------------- set dmnd tag ------------------ - - cmsMLU *dmnd; - dmnd = cmsMLUalloc(nullptr, 1); - cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); - - if (!v2except) { - cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); - } else { - cmsWriteTag(profile_v2_except, cmsSigDeviceMfgDescTag, dmnd); - } - - cmsMLUfree(dmnd); - - - -// --------------- set dmdd tag ------------------ - - if (profileVersion == "v2") { - //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - std::wostringstream wGammaSlopeParam; - wGammaSlopeParam << sGammaSlopeParam; - - cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); - - // Language code (2 letters code) : https://www.iso.org/obp/ui/ - // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (sGammaSlopeParam.is_ascii()) { - if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { - if (!v2except) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - - } - } - } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { - if (!v2except) { - if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); - } - } - } else { - printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); - } - - cmsMLUfree(dmdd); - } - -// --------------- set desc tag ------------------ - - Glib::ustring sDescription; - - if (!description.empty()) { - if (cAppendParamsToDesc->get_active()) { - sDescription = description + " / " + sGammaSlopeDesc; - } else { - sDescription = description; - } - } else { - if (cAppendParamsToDesc->get_active()) { - sDescription = profileDesc + " / " + sGammaSlopeDesc; - } else { - sDescription = profileDesc; - } - } - -//write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile - std::wostringstream wDescription; - wDescription << sDescription; - - cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); - -// Language code (2 letters code) : https://www.iso.org/obp/ui/ -// Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php - if (sDescription.is_ascii()) { - if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { - if (!v2except) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } - } - - } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { - if (!v2except) { - - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); - } - } - } else { - printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); - } - - cmsMLUfree(descMLU); - -// --------------- set cprt tag ------------------ - - std::wostringstream wCopyright; - wCopyright << copyright; - - cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); - - if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { - if (!v2except) { - - if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); - } - } else { - if (!cmsWriteTag(profile_v2_except, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); - } - - } - } else { - printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); - } - - cmsMLUfree(copyMLU); - - - /* //to read XYZ values - cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); - cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); - cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); - printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); - */ - if (!v2except) { - cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); - } else { - cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); - - } - - cmsFreeToneCurve(GammaTRC[0]); -} +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * 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 +#include "iccprofilecreator.h" +#include "multilangmgr.h" +#include "cachemanager.h" +#include "addsetids.h" +#include "../rtengine/icons.h" +#include "../rtengine/color.h" +#include "rtimage.h" +#ifdef _OPENMP +#include +#endif + +extern Options options; + +namespace rtengine +{ + +extern const Settings* settings; + +} + +const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free + +ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) + : Gtk::Dialog(M("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) + , primariesPreset(options.ICCPC_primariesPreset) + , redPrimaryX(options.ICCPC_redPrimaryX) + , redPrimaryY(options.ICCPC_redPrimaryY) + , greenPrimaryX(options.ICCPC_greenPrimaryX) + , greenPrimaryY(options.ICCPC_greenPrimaryY) + , bluePrimaryX(options.ICCPC_bluePrimaryX) + , bluePrimaryY(options.ICCPC_bluePrimaryY) + , gammaPreset(options.ICCPC_gammaPreset) + , gamma(options.ICCPC_gamma) + , slope(options.ICCPC_slope) + , appendParamsToDesc(options.ICCPC_appendParamsToDesc) + , profileVersion(options.ICCPC_profileVersion) + , illuminant(options.ICCPC_illuminant) + , description(options.ICCPC_description) + , copyright(options.ICCPC_copyright) + , parent(rtwindow) +{ + + set_default_size(600, -1); + + Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid()); + mainGrid->set_column_spacing(3); + mainGrid->set_row_spacing(3); + + //--------------------------------- primaries + + Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES"))); + setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*prilab, 0, 0, 1, 1); + + primaries = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + primaries->append(M("ICCPROFCREATOR_CUSTOM")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0")); + primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1")); + primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE")); + primaries->append(M("ICCPROFCREATOR_PRIM_PROPH")); + primaries->append(M("ICCPROFCREATOR_PRIM_REC2020")); + primaries->append(M("ICCPROFCREATOR_PRIM_SRGB")); + primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG")); + primaries->append(M("ICCPROFCREATOR_PRIM_BEST")); + primaries->append(M("ICCPROFCREATOR_PRIM_BETA")); + primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE")); + primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP")); + mainGrid->attach(*primaries, 1, 0, 1, 1); + + primariesGrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + primariesGrid->set_column_spacing(5); + + /* + Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png")); + Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png")); + Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png")); + */ + + aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/)); + setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/)); + setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/)); + setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/)); + setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/)); + setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); + setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); + primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1); + + primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1); + primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1); + + primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1); + primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1); + + mainGrid->attach(*primariesGrid, 1, 1, 1, 1); + + //--------------------------------- output gamma + + Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET"))); + setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*galab, 0, 2, 1, 1); + + trcPresets = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + std::vector outputTRCPresets; + outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); + + for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { + outputTRCPresets.push_back(sTRCPreset[i]); + } + + for (size_t i = 0; i < outputTRCPresets.size(); i++) { + trcPresets->append(outputTRCPresets[i]); + } + + mainGrid->attach(*trcPresets, 1, 2, 1, 1); + + //--------------------------------- sliders gampos and slpos + + aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); + setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aGamma->delay < options.adjusterMaxDelay) { + aGamma->delay = options.adjusterMaxDelay; + } + + aGamma->show(); + mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma + + aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310)); + setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + + if (aSlope->delay < options.adjusterMaxDelay) { + aSlope->delay = options.adjusterMaxDelay; + } + + aSlope->show(); + mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope + + //--------------------------------- temperature + + Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL"))); + setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*illlab, 0, 5, 1, 1); //slope + cIlluminant = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_41")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_50")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_55")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_60")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_65")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_80")); + cIlluminant->append(M("ICCPROFCREATOR_ILL_INC")); + cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP")); + mainGrid->attach(*cIlluminant, 1, 5, 1, 1); + + //--------------------------------- V2 or V4 profiles + + Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION"))); + setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*proflab, 0, 6, 1, 1); + iccVersion = Gtk::manage(new MyComboBoxText()); + setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); + iccVersion->append(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->append(M("ICCPROFCREATOR_PROF_V2")); + mainGrid->attach(*iccVersion, 1, 6, 1, 1); + + //--------------------------------- Description + + Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION"))); + setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); + mainGrid->attach(*desclab, 0, 7, 1, 2); + eDescription = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP")); + mainGrid->attach(*eDescription, 1, 7, 1, 1); + cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM"))); + setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1); + + //--------------------------------- Copyright + + Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT"))); + setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + mainGrid->attach(*copylab, 0, 9, 1, 1); + Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid()); + setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); + eCopyright = Gtk::manage(new Gtk::Entry()); + setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + copygrid->attach(*eCopyright, 0, 0, 1, 1); + resetCopyright = Gtk::manage(new Gtk::Button()); + resetCopyright->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); + setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + resetCopyright->set_relief(Gtk::RELIEF_NONE); + resetCopyright->set_tooltip_markup(M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); + resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + resetCopyright->set_can_focus(false); + copygrid->attach(*resetCopyright, 1, 0, 1, 1); + mainGrid->attach(*copygrid, 1, 9, 1, 1); + + //--------------------------------- Adding the mainGrid + + get_content_area()->add(*mainGrid); + + //--------------------------------- Setting default values for Adjusters + + aGamma->setDefault(gamma); + aSlope->setDefault(slope); + aPrimariesRedX->setDefault(redPrimaryX); + aPrimariesRedY->setDefault(redPrimaryY); + aPrimariesGreenX->setDefault(greenPrimaryX); + aPrimariesGreenY->setDefault(greenPrimaryY); + aPrimariesBlueX->setDefault(bluePrimaryX); + aPrimariesBlueY->setDefault(bluePrimaryY); + + //--------------- Updating widgets with actual values (from options) + + if (primariesPreset == "custom") { + primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM")); + } else if (primariesPreset == "ACES-AP0") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0")); + } else if (primariesPreset == "ACES-AP1") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1")); + } else if (primariesPreset == "Adobe") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE")); + } else if (primariesPreset == "ProPhoto") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH")); + } else if (primariesPreset == "Rec2020") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020")); + } else if (primariesPreset == "sRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB")); + } else if (primariesPreset == "Widegamut") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG")); + } else if (primariesPreset == "BestRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST")); + } else if (primariesPreset == "BetaRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA")); + } else if (primariesPreset == "BruceRGB") { + primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE")); + } + + trcPresets->set_active(0); + + if (gammaPreset != "Custom") { + trcPresets->set_active_text(gammaPreset); + } + + aGamma->setValue(gamma); + aSlope->setValue(slope); + aPrimariesRedX->setValue(redPrimaryX); + aPrimariesRedY->setValue(redPrimaryY); + aPrimariesGreenX->setValue(greenPrimaryX); + aPrimariesGreenY->setValue(greenPrimaryY); + aPrimariesBlueX->setValue(bluePrimaryX); + aPrimariesBlueY->setValue(bluePrimaryY); + + eDescription->set_text(description); + eCopyright->set_text(copyright); + cAppendParamsToDesc->set_active(appendParamsToDesc); + + if (illuminant == "DEF") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF")); + } else if (illuminant == "D41") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41")); + } else if (illuminant == "D50") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50")); + } else if (illuminant == "D55") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55")); + } else if (illuminant == "D60") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60")); + } else if (illuminant == "D65") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65")); + } else if (illuminant == "D80") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80")); + } else if (illuminant == "stdA") { + cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC")); + } + + iccVersion->set_active(0); + + if (profileVersion == "v2") { + iccVersion->set_active(1); + } + + trcPresetsChanged(); + illuminantChanged(); + primariesChanged(); + + //--------------- Action area button + + Gtk::Button* save = Gtk::manage(new Gtk::Button(M("GENERAL_SAVE_AS"))); + save->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::savePressed)); + get_action_area()->pack_start(*save); + + Gtk::Button* close = Gtk::manage(new Gtk::Button(M("GENERAL_CLOSE"))); + close->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::closePressed)); + get_action_area()->pack_start(*close); + + //--------------- Show childrens + + show_all_children(); + + //--------------- Connecting the signals + + aPrimariesRedX->setAdjusterListener(this); + aPrimariesRedY->setAdjusterListener(this); + aPrimariesGreenX->setAdjusterListener(this); + aPrimariesGreenY->setAdjusterListener(this); + aPrimariesBlueX->setAdjusterListener(this); + aPrimariesBlueY->setAdjusterListener(this); + aGamma->setAdjusterListener(this); + aSlope->setAdjusterListener(this); + primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged)); + trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged)); + illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged)); + resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright)); +} + +void ICCProfileCreator::closePressed() +{ + storeValues(); + hide(); +} + +void ICCProfileCreator::updateICCVersion() +{ + if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); + iccVersion->set_sensitive(false); + } else { + iccVersion->set_sensitive(true); + } +} + +void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) +{ + if (a == aPrimariesRedX || a == aPrimariesRedY || + a == aPrimariesGreenX || a == aPrimariesGreenY || + a == aPrimariesBlueX || a == aPrimariesBlueY) { + if (primaries->get_active_row_number() > 0) { + ConnectionBlocker blocker(primariesconn); + primaries->set_active(0); + updateICCVersion(); + } + } else if (a == aGamma || a == aSlope) { + if (trcPresets->get_active_row_number() > 0) { + ConnectionBlocker blocker(trcpresetsconn); + trcPresets->set_active(0); + } + } +} + +void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) +{ +} + +void ICCProfileCreator::primariesChanged() +{ + if (primaries->get_active_row_number() > 0) { + float p[6]; + ColorTemp temp; + Glib::ustring activeValue = primaries->get_active_text(); + Glib::ustring primPresetName = getPrimariesPresetName(activeValue); + getPrimaries(primPresetName, p, temp); + aPrimariesRedX->setValue(p[0]); + aPrimariesRedY->setValue(p[1]); + aPrimariesGreenX->setValue(p[2]); + aPrimariesGreenY->setValue(p[3]); + aPrimariesBlueX->setValue(p[4]); + aPrimariesBlueY->setValue(p[5]); + } + + updateICCVersion(); +} + +void ICCProfileCreator::illuminantChanged() +{ + updateICCVersion(); +} + +void ICCProfileCreator::trcPresetsChanged() +{ + aGamma->block(true); + aSlope->block(true); + + double gamma; + double slope; + getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope); + aGamma->setValue(gamma); + aSlope->setValue(slope); + + aGamma->block(false); + aSlope->block(false); +} + +void ICCProfileCreator::storeValues() +{ + if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) { + options.ICCPC_profileVersion = profileVersion = "v4"; + } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) { + options.ICCPC_profileVersion = profileVersion = "v2"; + } + + if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) { + options.ICCPC_illuminant = illuminant = "DEF"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) { + options.ICCPC_illuminant = illuminant = "D41"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) { + options.ICCPC_illuminant = illuminant = "D50"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) { + options.ICCPC_illuminant = illuminant = "D55"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) { + options.ICCPC_illuminant = illuminant = "D60"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) { + options.ICCPC_illuminant = illuminant = "D65"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) { + options.ICCPC_illuminant = illuminant = "D80"; + } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) { + options.ICCPC_illuminant = illuminant = "stdA"; + } + + options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text()); + options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text()); + options.ICCPC_gamma = gamma = aGamma->getValue(); + options.ICCPC_slope = slope = aSlope->getValue(); + options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue(); + options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue(); + options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue(); + options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue(); + options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue(); + options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue(); + options.ICCPC_description = description = eDescription->get_text(); + options.ICCPC_copyright = copyright = eCopyright->get_text(); + options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active(); +} + +Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset) +{ + if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) { + return Glib::ustring("ACES-AP0"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) { + return Glib::ustring("ACES-AP1"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) { + return Glib::ustring("Adobe"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) { + return Glib::ustring("ProPhoto"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) { + return Glib::ustring("Rec2020"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) { + return Glib::ustring("sRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) { + return Glib::ustring("Widegamut"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) { + return Glib::ustring("BestRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) { + return Glib::ustring("BetaRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) { + return Glib::ustring("BruceRGB"); + } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + return Glib::ustring("custom"); + } else { + return Glib::ustring(); + } +} + +void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) +{ + temp = ColorTemp::D50; + + if (preset == "Widegamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + + } else if (preset == "Adobe") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (preset == "BetaRGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (preset == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (preset == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (preset == "ACES-AP0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (preset == "ACES-AP1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (preset == "ProPhoto") { + p[0] = 0.7347; // ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else if (preset == "custom") { + p[0] = redPrimaryX; + p[1] = redPrimaryY; + p[2] = greenPrimaryX; + p[3] = greenPrimaryY; + p[4] = bluePrimaryX; + p[5] = bluePrimaryY; + + } else { + p[0] = 0.7347; //default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } +} + +Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) +{ + Glib::ustring name(trcPresets->get_active_text()); + + if (name == M("ICCPROFCREATOR_CUSTOM")) { + name = "Custom"; + } + + return name; +} + +void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope) +{ + if (preset == "High_g1.3_s3.35") { + presetGamma = 1.3; + presetSlope = 3.35; + } else if (preset == "Low_g2.6_s6.9") { + presetGamma = 2.6; + presetSlope = 6.9; + } else if (preset == "sRGB_g2.4_s12.92") { + presetGamma = 2.4; + presetSlope = 12.92310; + } else if (preset == "BT709_g2.2_s4.5") { + presetGamma = 2.22; + presetSlope = 4.5; + } else if (preset == "linear_g1.0") { + presetGamma = 1.; + presetSlope = 0.; + } else if (preset == "standard_g2.2") { + presetGamma = 2.2; + presetSlope = 0.; + } else if (preset == "standard_g1.8") { + presetGamma = 1.8; + presetSlope = 0.; + } else if (preset == "Lab_g3.0s9.03296") { + presetGamma = 3.0; + presetSlope = 9.03296; + } else if (preset == "Custom") { + presetGamma = gamma; + presetSlope = slope; + } else { + presetGamma = 2.4; + presetSlope = 12.92310; + } +} + +void ICCProfileCreator::onResetCopyright() +{ + eCopyright->set_text(Options::getICCProfileCopyright()); +} + +// Copyright (c) 2018 Jacques DESMIS +// WARNING: the caller must lock lcmsMutex +void ICCProfileCreator::savePressed() +{ + cmsHPROFILE newProfile = nullptr; + cmsHPROFILE profile_v2_except = nullptr; + + Glib::ustring sNewProfile; + Glib::ustring sPrimariesPreset; + Glib::ustring sGammaPreset; + + storeValues(); + + // -------------------------------------------- Compute the default file name + // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- + //instead of calculations made by LCMS..small differences + bool isD65 = (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB"); + bool isD60 = (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0"); + bool isD50 = (primariesPreset == "ProPhoto" || primariesPreset == "Widegamut" || primariesPreset == "BestRGB" || primariesPreset == "BetaRGB"); + // v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); + v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); + + //necessary for V2 profile + + if (!v2except) { + std::string is_RTv4 = ""; + + //used partially for v4, and in case of if we want to back to old manner for v2 + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + sNewProfile = options.rtSettings.ACESp0; + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + sNewProfile = options.rtSettings.ACESp1; + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + sNewProfile = options.rtSettings.adobe; + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { + is_RTv4 = options.rtSettings.prophoto.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.prophoto = "RTv2_Large"; + }; + + sNewProfile = options.rtSettings.prophoto; + + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + sNewProfile = options.rtSettings.rec2020; + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + is_RTv4 = options.rtSettings.widegamut.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Wide"; + }; + + sNewProfile = options.rtSettings.widegamut; + + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + is_RTv4 = options.rtSettings.best.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.best = "RTv2_Best"; + }; + + sNewProfile = options.rtSettings.best; + + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + is_RTv4 = options.rtSettings.beta.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Beta"; + }; + + sPrimariesPreset = "Beta"; + } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + sNewProfile = options.rtSettings.bruce; + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "custom") { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "Custom"; + } else { + // Should not occurs + if (rtengine::settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + } + + return; + } + } else { + //new model for v2 profile different from D50 by entering directly XYZ values and media white point + sNewProfile = "RTv2_Beta";//for copy generate others v2 profile. To change date of new profile, I used "ICC profile inspector" and "save as" + + if (primariesPreset == "ACES-AP0") { + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1") { + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe") { + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "Rec2020") { + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "BruceRGB") { + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "sRGB") { + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "ProPhoto") { + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Widegamut") { + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB") { + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB") { + sPrimariesPreset = "Beta"; + } + } + + //begin adaptation rTRC gTRC bTRC + //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile + if (rtengine::settings->verbose) { + printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); + } + + if (!v2except) { + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + } else { + profile_v2_except = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + + } + + /* + if (newProfile == nullptr ) { + + if (rtengine::settings->verbose) { + printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); + } + + return; + } + */ + //change desc Tag , to "free gamma", or "BT709", etc. + Glib::ustring fName; + Glib::ustring sPrimariesAndIlluminant; + double presetGamma = 2.4; + double presetSlope = 12.92310; + const double eps = 0.000000001; // not divide by zero + getGamma(gammaPreset, presetGamma, presetSlope); + + if (gammaPreset == "High_g1.3_s3.35") { + sGammaPreset = "High_g=1.3_s=3.35"; + ga[0] = 1.3 ; //for high dynamic images + ga[1] = 0.998279; + ga[2] = 0.001721; + ga[3] = 0.298507; + ga[4] = 0.005746; + } else if (gammaPreset == "Low_g2.6_s6.9") { + sGammaPreset = "Low_g=2.6_s=6.9"; + ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images + ga[1] = 0.891161; + ga[2] = 0.108839; + ga[3] = 0.144928; + ga[4] = 0.076332; + } else if (gammaPreset == "sRGB_g2.4_s12.92") { + sGammaPreset = "sRGB_g=2.4_s=12.92310"; + ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom + ga[1] = 0.947858; + ga[2] = 0.052142; + ga[3] = 0.077399; + ga[4] = 0.039293; + } else if (gammaPreset == "BT709_g2.2_s4.5") { + sGammaPreset = "BT709_g=2.2_s=4.5"; + ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin + ga[1] = 0.909995; + ga[2] = 0.090005; + ga[3] = 0.222222; + ga[4] = 0.081071; + } else if (gammaPreset == "linear_g1.0") { + sGammaPreset = "Linear_g=1.0"; + ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g2.2") { + sGammaPreset = "g=2.2"; + ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "standard_g1.8") { + sGammaPreset = "g=1.8"; + ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) + ga[1] = 1.; + ga[2] = 0.; + ga[3] = 1. / eps; + ga[4] = 0.; + } else if (gammaPreset == "Lab_g3.0s9.03296") { + sGammaPreset = "LAB_g3.0_s9.03296"; + ga[0] = 3.0; //Lab gamma =3 slope=9.03296 + ga[1] = 0.8621; + ga[2] = 0.1379; + ga[3] = 0.1107; + ga[4] = 0.08; + } else if (gammaPreset == "Custom") { + rtengine::GammaValues g_a; //gamma parameters + double pwr = 1.0 / gamma; + double ts = slope; + double slope2 = slope == 0 ? eps : slope; + + int mode = 0; + rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + ga[4] = g_a[3] * ts; + //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); + ga[0] = gamma; + ga[1] = 1. / (1.0 + g_a[4]); + ga[2] = g_a[4] / (1.0 + g_a[4]); + ga[3] = 1. / slope2; + //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); + + sGammaPreset = Glib::ustring::compose("g%1_s%2", + Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); + presetGamma = gamma; + presetSlope = slope; + } + + ga[5] = 0.0; + ga[6] = 0.0; + + + sPrimariesAndIlluminant = sPrimariesPreset; + + if (profileVersion == "v4" && illuminant != "DEF") { + sPrimariesPreset += "-" + illuminant; + } + + Glib::ustring profileDesc; + Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd + Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc + Glib::ustring sGamma; + Glib::ustring sSlope; + + if (gammaPreset == "Custom") { + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); + fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); + profileDesc = sPrimariesPreset; + } else { + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); + fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); + profileDesc = sPrimariesPreset + sGammaPreset; + } + + sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); + sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); + + // -------------------------------------------- Asking the file name + + Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE); + bindCurrentFolder(dialog, options.lastICCProfCreatorDir); + dialog.set_current_name(fName); + //dialog.set_current_folder(lastPath); + + dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); + dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); + + Glib::RefPtr filter_icc = Gtk::FileFilter::create(); + filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF")); + filter_icc->add_pattern("*.icc"); + dialog.add_filter(filter_icc); + + /* + Glib::RefPtr filter_any = Gtk::FileFilter::create(); + filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); + filter_any->add_pattern("*"); + dialog.add_filter(filter_any); + */ + + dialog.show_all_children(); + //dialog.set_do_overwrite_confirmation (true); + + Glib::ustring absoluteFName; + + do { + int result = dialog.run(); + + if (result != Gtk::RESPONSE_OK) { + return; + } else { + absoluteFName = dialog.get_filename(); + Glib::ustring ext = getExtension(absoluteFName); + + if (ext != "icc") { + absoluteFName += ".icc"; + } + + if (confirmOverwrite(dialog, absoluteFName)) { + //lastPath = Glib::path_get_dirname(absoluteFName); + break; + } + } + } while (1); + + // --------------- main tags ------------------ + /* + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); + } else { + cmsSetProfileVersion(newProfile, 2.0); + } + */ + +//change + float p[6]; //primaries + ga[6] = 0.0; + + ColorTemp temp; + getPrimaries(primariesPreset, p, temp); + + cmsCIExyY xyD; + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + + if (v2except) { + cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); + cmsSetPCS(profile_v2_except, cmsSigXYZData); + cmsSetHeaderRenderingIntent(profile_v2_except, 0); + } + + + if (profileVersion == "v4" && illuminant != "DEF") { + double tempv4 = 5000.; + + if (illuminant == "D41") { + tempv4 = 4100.; + } else if (illuminant == "D50") { + tempv4 = 5003.; + } else if (illuminant == "D55") { + tempv4 = 5500.; + } else if (illuminant == "D60") { + tempv4 = 6004.; + } else if (illuminant == "D65") { + tempv4 = 6504.; + } else if (illuminant == "D80") { + tempv4 = 8000.; + } else if (illuminant == "stdA") { + tempv4 = 5003.; + } + + cmsWhitePointFromTemp(&xyD, tempv4); + + if (illuminant == "D65") { + xyD = {0.312700492, 0.329000939, 1.0}; + } + + if (illuminant == "D60") { + xyD = {0.32168, 0.33767, 1.0}; + } + + if (illuminant == "D50") { + xyD = {0.3457, 0.3585, 1.0};//white D50 near LCMS values but not perfect...it's a compromise!! + } + + if (illuminant == "stdA") { + xyD = {0.447573, 0.407440, 1.0}; + } + + + } else { + if (v2except) { + + cmsCIEXYZ XYZ; + + { + XYZ = {0.95045471, 1.0, 1.08905029};//white D65 + } + + if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { + XYZ = {0.952646075, 1.0, 1.008825184};//white D60 + } + + if (isD50) { + XYZ = {0.964295676, 1.0, 0.825104603};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! + } + + cmsCIExyY blackpoint; + + { + blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs + } + + cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); + cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); + cmsCIEXYZ rt; + cmsCIEXYZ bt; + cmsCIEXYZ gt; + + if (primariesPreset == "sRGB") { + //calculated with personnal special spreadsheat + { + //Matrix value from spec Adobe but adapted with wp + rt = {0.4360411843, 0.2224843154, 0.0139201582}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1430457992, 0.0606099658, 0.7139121724}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.3851136574, 0.7169049862, 0.0970677661}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + + } + + } + + if (primariesPreset == "Adobe") { + { + //Adobe spec adapted with wp calculated with personnal special spreadsheat + rt = {0.6097408852, 0.3111123176, 0.0194653393}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1491866649, 0.0632119133, 0.7445599707}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.2052730908, 0.6256750365, 0.0608747867}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "Rec2020") { + {//calculated with personnal special spreadsheat + rt = {0.6734800343, 0.2790423273, -0.0019336766}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1250489478, 0.0456126910, 0.7968509159}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1656716588, 0.6753442491, 0.0299828575}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BruceRGB") { + {//calculated with personnal special spreadsheat + rt = {0.4941542253, 0.2521357351, 0.0157753562}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1495175342, 0.0633521060, 0.7462112712}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.3205288814, 0.6845114263, 0.0629134693}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ACES-AP0") { + {//calculated with personnal special spreadsheat + rt = {0.9908835135, 0.3618940325, -0.0027137400}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {-0.0389246557, -0.084405166, 0.8193659780}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.0122417831, 0.7225104015, 0.0082478587}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ACES-AP1") {//done + {//calculated with personnal special spreadsheat + rt = {0.6898756188, 0.2845109670, -0.0060455375}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1245615936, 0.0437959432, 0.8209388333}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1497634285, 0.6716923572, 0.0100068009}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "ProPhoto") { + {//calculated with personnal special spreadsheat + rt = {0.7977198204, 0.2880493171, -0.0000030551}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.0313194091, 0.0000771282, 0.8248890748}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1351614114, 0.7118728221, 0.0000140770}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "Widegamut") { + {//calculated with personnal special spreadsheat + rt = {0.7161680478, 0.2582038074, -0.0000027515}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1471328469, 0.0168600579, 0.7731227232}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1008997462, 0.7249354021, 0.0517801251}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BestRGB") { + {//calculated with personnal special spreadsheat + rt = {0.6327383009, 0.2284760022, -0.0000024233}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1269437333, 0.0341753604, 0.8153773703}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.2045186067, 0.7373479048, 0.0095251497}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + if (primariesPreset == "BetaRGB") { + {//calculated with personnal special spreadsheat + rt = {0.6713200674, 0.3033034560, -0.0000012307}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1183343909, 0.0329265310, 0.7842009909}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.1745461827, 0.6637692805, 0.0407003365}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } + } + + + if (isD65 && illuminant == "DEF") { + xyD = {0.312700492, 0.329000939, 1.0}; + } + + if (isD60 && illuminant == "DEF") { + xyD = {0.32168, 0.33767, 1.0}; + } + + if (isD50 && illuminant == "DEF") { + xyD = {0.3457, 0.3585, 1.0}; + } + +// {0.3457, 0.3585, 1.0}; + // Calculate output profile's rTRC gTRC bTRC + + + cmsToneCurve* GammaTRC[3]; + + if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + } + + if (gammaPreset == "standard_g2.2") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe + } + + if (gammaPreset == "standard_g1.8") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); + } + + if (gammaPreset == "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); + } + + + + if (profileVersion == "v4") { + newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } + + if (profileVersion == "v2") { + if (v2except) { + cmsSetProfileVersion(profile_v2_except, 2.2); + } else { + cmsSetProfileVersion(newProfile, 2.2); + } + } + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + } else { + cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); + } + + // --------------- set dmnd tag ------------------ + + cmsMLU *dmnd; + dmnd = cmsMLUalloc(nullptr, 1); + cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + } else { + cmsWriteTag(profile_v2_except, cmsSigDeviceMfgDescTag, dmnd); + } + + cmsMLUfree(dmnd); + + + +// --------------- set dmdd tag ------------------ + + if (profileVersion == "v2") { + //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + std::wostringstream wGammaSlopeParam; + wGammaSlopeParam << sGammaSlopeParam; + + cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); + + // Language code (2 letters code) : https://www.iso.org/obp/ui/ + // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (sGammaSlopeParam.is_ascii()) { + if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + + } + } + } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } + } else { + printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); + } + + cmsMLUfree(dmdd); + } + +// --------------- set desc tag ------------------ + + Glib::ustring sDescription; + + if (!description.empty()) { + if (cAppendParamsToDesc->get_active()) { + sDescription = description + " / " + sGammaSlopeDesc; + } else { + sDescription = description; + } + } else { + if (cAppendParamsToDesc->get_active()) { + sDescription = profileDesc + " / " + sGammaSlopeDesc; + } else { + sDescription = profileDesc; + } + } + +//write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile + std::wostringstream wDescription; + wDescription << sDescription; + + cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); + +// Language code (2 letters code) : https://www.iso.org/obp/ui/ +// Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + if (sDescription.is_ascii()) { + if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } + + } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } else { + printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); + } + + cmsMLUfree(descMLU); + +// --------------- set cprt tag ------------------ + + std::wostringstream wCopyright; + wCopyright << copyright; + + cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); + + if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + + } + } else { + printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); + } + + cmsMLUfree(copyMLU); + + + /* //to read XYZ values + cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); + */ + if (!v2except) { + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } else { + cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); + + } + + cmsFreeToneCurve(GammaTRC[0]); +} diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index e8de318d3..605cb9dcd 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -1,107 +1,107 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2018 Jacques DESMIS - * Copyright (c) 2018 Jean-Christophe FRISCH - * - * 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 "options.h" -#include -#include "rtwindow.h" - -class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener -{ - -private: - - enum class ColorTemp { - D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 - D60 = 6005, // for ACESc -> D60 - D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - }; - - cmsFloat64Number ga[7]; // 7 parameters for smoother curves - - //------------------------ Params ----------------------- - Glib::ustring primariesPreset; - double redPrimaryX; - double redPrimaryY; - double greenPrimaryX; - double greenPrimaryY; - double bluePrimaryX; - double bluePrimaryY; - Glib::ustring gammaPreset; - double gamma; - double slope; - bool appendParamsToDesc; - bool v2except; - Glib::ustring profileVersion; - Glib::ustring illuminant; - Glib::ustring description; - Glib::ustring copyright; - //------------------------------------------------------- - - RTWindow *parent; - - Adjuster* aGamma; - Adjuster* aSlope; - Adjuster* aPrimariesRedX; - Adjuster* aPrimariesRedY; - Adjuster* aPrimariesGreenX; - Adjuster* aPrimariesGreenY; - Adjuster* aPrimariesBlueX; - Adjuster* aPrimariesBlueY; - - Gtk::Grid* primariesGrid; - MyComboBoxText* iccVersion; - MyComboBoxText* trcPresets; - sigc::connection trcpresetsconn; - MyComboBoxText* primaries; - sigc::connection primariesconn; - MyComboBoxText* cIlluminant; - sigc::connection illconn; - Gtk::Entry* eDescription; - Gtk::Entry* eCopyright; - Gtk::Button* resetCopyright; - Gtk::CheckButton *cAppendParamsToDesc; - - //Glib::ustring lastPath; - - void initWithDefaults (); - void storeDefaults (); - void storeValues(); - - void updateICCVersion(); - void primariesChanged(); - void illuminantChanged(); - void trcPresetsChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - static std::vector getGamma(); - Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); - void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp); - Glib::ustring getGammaPresetName(const Glib::ustring &preset); - void getGamma(const Glib::ustring &preset, double &gamma, double &slope); - void savePressed(); - void closePressed(); - void onResetCopyright(); - -public: - explicit ICCProfileCreator (RTWindow *rtwindow); -}; +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Jacques DESMIS + * Copyright (c) 2018 Jean-Christophe FRISCH + * + * 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 "options.h" +#include +#include "rtwindow.h" + +class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener +{ + +private: + + enum class ColorTemp { + D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50 + D60 = 6005, // for ACESc -> D60 + D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + }; + + cmsFloat64Number ga[7]; // 7 parameters for smoother curves + + //------------------------ Params ----------------------- + Glib::ustring primariesPreset; + double redPrimaryX; + double redPrimaryY; + double greenPrimaryX; + double greenPrimaryY; + double bluePrimaryX; + double bluePrimaryY; + Glib::ustring gammaPreset; + double gamma; + double slope; + bool appendParamsToDesc; + bool v2except; + Glib::ustring profileVersion; + Glib::ustring illuminant; + Glib::ustring description; + Glib::ustring copyright; + //------------------------------------------------------- + + RTWindow *parent; + + Adjuster* aGamma; + Adjuster* aSlope; + Adjuster* aPrimariesRedX; + Adjuster* aPrimariesRedY; + Adjuster* aPrimariesGreenX; + Adjuster* aPrimariesGreenY; + Adjuster* aPrimariesBlueX; + Adjuster* aPrimariesBlueY; + + Gtk::Grid* primariesGrid; + MyComboBoxText* iccVersion; + MyComboBoxText* trcPresets; + sigc::connection trcpresetsconn; + MyComboBoxText* primaries; + sigc::connection primariesconn; + MyComboBoxText* cIlluminant; + sigc::connection illconn; + Gtk::Entry* eDescription; + Gtk::Entry* eCopyright; + Gtk::Button* resetCopyright; + Gtk::CheckButton *cAppendParamsToDesc; + + //Glib::ustring lastPath; + + void initWithDefaults (); + void storeDefaults (); + void storeValues(); + + void updateICCVersion(); + void primariesChanged(); + void illuminantChanged(); + void trcPresetsChanged(); + void adjusterChanged(Adjuster* a, double newval); + void adjusterAutoToggled(Adjuster* a, bool newval); + static std::vector getGamma(); + Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); + void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp); + Glib::ustring getGammaPresetName(const Glib::ustring &preset); + void getGamma(const Glib::ustring &preset, double &gamma, double &slope); + void savePressed(); + void closePressed(); + void onResetCopyright(); + +public: + explicit ICCProfileCreator (RTWindow *rtwindow); +}; From 50936b24476c66c9cb57fd2f620d12417ffe63be Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 17 Nov 2018 01:30:59 +0100 Subject: [PATCH 159/348] Fix two coverity issues --- rtengine/rtthumbnail.cc | 2 +- rtexif/kodakattribs.cc | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index aafdea029..2d911087c 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -2191,7 +2191,7 @@ bool Thumbnail::readEmbProfile (const Glib::ustring& fname) if (!fseek (f, 0, SEEK_SET)) { embProfileData = new unsigned char[embProfileLength]; - fread (embProfileData, 1, embProfileLength, f); + embProfileLength = fread (embProfileData, 1, embProfileLength, f); embProfile = cmsOpenProfileFromMem (embProfileData, embProfileLength); } } diff --git a/rtexif/kodakattribs.cc b/rtexif/kodakattribs.cc index 1b6e522c5..a9c168a70 100644 --- a/rtexif/kodakattribs.cc +++ b/rtexif/kodakattribs.cc @@ -104,12 +104,11 @@ void parseKodakIfdTextualInfo (Tag *textualInfo, Tag* exif_) a = atoi (val.c_str()); b = atoi (&p1[1]); } - t = new Tag (exif, lookupAttrib (exifAttribs, "ExposureTime")); t->initRational (a, b); exif->replaceTag (t); - float ssv = -log2 ((float)a / (float)b); // convert to APEX value + const float ssv = -log2 ((float)a / std::max((float)b, 0.0001f)); // convert to APEX value, avoid division by zero t = new Tag (exif, lookupAttrib (exifAttribs, "ShutterSpeedValue")); t->initRational (1000000 * ssv, 1000000); exif->replaceTag (t); From 7896ffa08f19128d31e02419cea58a79dfcf0f28 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Sat, 17 Nov 2018 14:40:04 +0100 Subject: [PATCH 160/348] Add custom primaries and illuminant choice to ICCv2 - solve some bugs --- rtgui/iccprofilecreator.cc | 346 ++++++++++++++++++++++++------------- rtgui/iccprofilecreator.h | 2 +- 2 files changed, 227 insertions(+), 121 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 7ec89e190..03d46471d 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -362,12 +362,14 @@ void ICCProfileCreator::closePressed() void ICCProfileCreator::updateICCVersion() { - if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { - iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); - iccVersion->set_sensitive(false); - } else { - iccVersion->set_sensitive(true); - } +// if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) { + // iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4")); + // iccVersion->set_sensitive(false); +// } else { + // iccVersion->set_sensitive(true); +// } + + iccVersion->set_sensitive(true); } void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) @@ -395,7 +397,7 @@ void ICCProfileCreator::adjusterAutoToggled(Adjuster* a, bool newval) void ICCProfileCreator::primariesChanged() { if (primaries->get_active_row_number() > 0) { - float p[6]; + double p[6]; ColorTemp temp; Glib::ustring activeValue = primaries->get_active_text(); Glib::ustring primPresetName = getPrimariesPresetName(activeValue); @@ -501,7 +503,7 @@ Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &pre } } -void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) +void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, double *p, ColorTemp &temp) { temp = ColorTemp::D50; @@ -671,7 +673,8 @@ void ICCProfileCreator::savePressed() bool isD60 = (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0"); bool isD50 = (primariesPreset == "ProPhoto" || primariesPreset == "Widegamut" || primariesPreset == "BestRGB" || primariesPreset == "BetaRGB"); // v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); - v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); + // v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); + v2except = (profileVersion == "v2");// && (isD65 || isD60 || isD50)); //necessary for V2 profile @@ -771,6 +774,8 @@ void ICCProfileCreator::savePressed() sPrimariesPreset = "Best"; } else if (primariesPreset == "BetaRGB") { sPrimariesPreset = "Beta"; + } else if (primariesPreset == "custom") { + sPrimariesPreset = "Custom"; } } @@ -812,6 +817,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.001721; ga[3] = 0.298507; ga[4] = 0.005746; + presetGamma = 1.3; + presetSlope = 3.35; + } else if (gammaPreset == "Low_g2.6_s6.9") { sGammaPreset = "Low_g=2.6_s=6.9"; ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images @@ -819,6 +827,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.108839; ga[3] = 0.144928; ga[4] = 0.076332; + presetGamma = 2.6; + presetSlope = 6.9; + } else if (gammaPreset == "sRGB_g2.4_s12.92") { sGammaPreset = "sRGB_g=2.4_s=12.92310"; ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom @@ -826,6 +837,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.052142; ga[3] = 0.077399; ga[4] = 0.039293; + presetGamma = 2.4; + presetSlope = 12.92310; + } else if (gammaPreset == "BT709_g2.2_s4.5") { sGammaPreset = "BT709_g=2.2_s=4.5"; ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin @@ -833,6 +847,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.090005; ga[3] = 0.222222; ga[4] = 0.081071; + presetGamma = 2.2; + presetSlope = 4.5; + } else if (gammaPreset == "linear_g1.0") { sGammaPreset = "Linear_g=1.0"; ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) @@ -840,6 +857,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; + presetGamma = 1.0; + presetSlope = 0.0; + } else if (gammaPreset == "standard_g2.2") { sGammaPreset = "g=2.2"; ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...) @@ -847,6 +867,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; + presetGamma = 2.2; + presetSlope = 0.0; + } else if (gammaPreset == "standard_g1.8") { sGammaPreset = "g=1.8"; ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) @@ -854,6 +877,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; + presetGamma = 1.8; + presetSlope = 0.0; + } else if (gammaPreset == "Lab_g3.0s9.03296") { sGammaPreset = "LAB_g3.0_s9.03296"; ga[0] = 3.0; //Lab gamma =3 slope=9.03296 @@ -861,6 +887,9 @@ void ICCProfileCreator::savePressed() ga[2] = 0.1379; ga[3] = 0.1107; ga[4] = 0.08; + presetGamma = 3.0; + presetSlope = 9.03926; + } else if (gammaPreset == "Custom") { rtengine::GammaValues g_a; //gamma parameters double pwr = 1.0 / gamma; @@ -972,7 +1001,7 @@ void ICCProfileCreator::savePressed() */ //change - float p[6]; //primaries + double p[6]; //primaries ga[6] = 0.0; ColorTemp temp; @@ -985,7 +1014,6 @@ void ICCProfileCreator::savePressed() {p[4], p[5], 1.0} // blue }; - if (v2except) { cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); cmsSetPCS(profile_v2_except, cmsSigXYZData); @@ -1034,23 +1062,60 @@ void ICCProfileCreator::savePressed() if (v2except) { cmsCIEXYZ XYZ; + double Wx = 1.0; + double Wy = 1.0; + double Wz = 1.0; - { - XYZ = {0.95045471, 1.0, 1.08905029};//white D65 - } + if (illuminant == "DEF") { + { + Wx = 0.95045471; + Wz = 1.08905029; + XYZ = {Wx, 1.0, Wz};//white D65 + } - if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { - XYZ = {0.952646075, 1.0, 1.008825184};//white D60 - } + if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { + Wx = 0.952646075; + Wz = 1.008825184; + XYZ = {Wx, 1.0, Wz};//white D60 + } + + if (isD50) { + Wx = 0.964295676; + Wz = 0.825104603; + XYZ = {Wx, 1.0, Wz};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! + } + } else { + if (illuminant == "D65") { + Wx = 0.95045471; + Wz = 1.08905029; + } else if (illuminant == "D50") { + Wx = 0.964295676; + Wz = 0.825104603; + } else if (illuminant == "D55") { + Wx = 0.956565934; + Wz = 0.920253249; + } else if (illuminant == "D60") { + Wx = 0.952646075; + Wz = 1.008825184; + } else if (illuminant == "D41") { + Wx = 0.991488263; + Wz = 0.631604625; + } else if (illuminant == "D80") { + Wx = 0.950095542; + Wz = 1.284213976; + } else if (illuminant == "stdA") { + Wx = 1.098500393; + Wz = 0.355848714; + } + + XYZ = {Wx, 1.0, Wz}; - if (isD50) { - XYZ = {0.964295676, 1.0, 0.825104603};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! } cmsCIExyY blackpoint; { - blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs + blackpoint = {0., 0., 0.}; } cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); @@ -1059,120 +1124,162 @@ void ICCProfileCreator::savePressed() cmsCIEXYZ bt; cmsCIEXYZ gt; - if (primariesPreset == "sRGB") { - //calculated with personnal special spreadsheat - { - //Matrix value from spec Adobe but adapted with wp - rt = {0.4360411843, 0.2224843154, 0.0139201582}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1430457992, 0.0606099658, 0.7139121724}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3851136574, 0.7169049862, 0.0970677661}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + //calculate XYZ matrix for each primaries and each temp (D50, D65...) - } + // reduce coordonate of primaries + //printf("p0=%f p1=%f p2=%f p3=%f p4=%f p5=%f \n", p[0], p[1], p[2], p[3],p[4], p[5]); + double Xr = p[0] / p[1]; + double Yr = 1.0; + double Zr = (1.0 - p[0] - p[1]) / p[1]; + double Xg = p[2] / p[3]; + double Yg = 1.0; + double Zg = (1.0 - p[2] - p[3]) / p[3]; + double Xb = p[4] / p[5]; + double Yb = 1.0; + double Zb = (1.0 - p[4] - p[5]) / p[5]; + using Triple = std::array; + + using Matrix = std::array; + + Matrix input_prim; + Matrix inv_input_prim = {}; + + input_prim[0][0] = Xr; + input_prim[0][1] = Yr; + input_prim[0][2] = Zr; + input_prim[1][0] = Xg; + input_prim[1][1] = Yg; + input_prim[1][2] = Zg; + input_prim[2][0] = Xb; + input_prim[2][1] = Yb; + input_prim[2][2] = Zb; + + //printf("in=%f in01=%f in22=%f\n", input_prim[0][0], input_prim[0][1], input_prim[2][2]); + if (!rtengine::invertMatrix(input_prim, inv_input_prim)) { + std::cout << "Matrix is not invertible, skipping" << std::endl; } - if (primariesPreset == "Adobe") { - { - //Adobe spec adapted with wp calculated with personnal special spreadsheat - rt = {0.6097408852, 0.3111123176, 0.0194653393}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1491866649, 0.0632119133, 0.7445599707}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2052730908, 0.6256750365, 0.0608747867}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + //printf("inv=%f inv01=%f inv22=%f\n", inv_input_prim[0][0], inv_input_prim[0][1], inv_input_prim[2][2]); + + //white point D50 used by LCMS + double Wdx = 0.96420; + double Wdy = 1.0; + double Wdz = 0.82490; + + double Sr = Wx * inv_input_prim [0][0] + Wy * inv_input_prim [1][0] + Wz * inv_input_prim [2][0]; + double Sg = Wx * inv_input_prim [0][1] + Wy * inv_input_prim [1][1] + Wz * inv_input_prim [2][1]; + double Sb = Wx * inv_input_prim [0][2] + Wy * inv_input_prim [1][2] + Wz * inv_input_prim [2][2]; + //printf("sr=%f sg=%f sb=%f\n", Sr, Sg, Sb); + + //XYZ matrix for primaries and temp + Matrix mat_xyz = {}; + mat_xyz[0][0] = Sr * Xr; + mat_xyz[0][1] = Sr * Yr; + mat_xyz[0][2] = Sr * Zr; + mat_xyz[1][0] = Sg * Xg; + mat_xyz[1][1] = Sg * Yg; + mat_xyz[1][2] = Sg * Zg; + mat_xyz[2][0] = Sb * Xb; + mat_xyz[2][1] = Sb * Yb; + mat_xyz[2][2] = Sb * Zb; + //printf("mat0=%f mat22=%f\n", mat_xyz[0][0], mat_xyz[2][2]); + + //chromatic adaptation Bradford + Matrix MaBradford = {}; + MaBradford[0][0] = 0.8951; + MaBradford[0][1] = -0.7502; + MaBradford[0][2] = 0.0389; + MaBradford[1][0] = 0.2664; + MaBradford[1][1] = 1.7135; + MaBradford[1][2] = -0.0685; + MaBradford[2][0] = -0.1614; + MaBradford[2][1] = 0.0367; + MaBradford[2][2] = 1.0296; + + Matrix Ma_oneBradford = {}; + Ma_oneBradford[0][0] = 0.9869929; + Ma_oneBradford[0][1] = 0.4323053; + Ma_oneBradford[0][2] = -0.0085287; + Ma_oneBradford[1][0] = -0.1470543; + Ma_oneBradford[1][1] = 0.5183603; + Ma_oneBradford[1][2] = 0.0400428; + Ma_oneBradford[2][0] = 0.1599627; + Ma_oneBradford[2][1] = 0.0492912; + Ma_oneBradford[2][2] = 0.9684867; + + //R G B source + double Rs = Wx * MaBradford[0][0] + Wy * MaBradford[1][0] + Wz * MaBradford[2][0]; + double Gs = Wx * MaBradford[0][1] + Wy * MaBradford[1][1] + Wz * MaBradford[2][1]; + double Bs = Wx * MaBradford[0][2] + Wy * MaBradford[1][2] + Wz * MaBradford[2][2]; + + // R G B destination + double Rd = Wdx * MaBradford[0][0] + Wdy * MaBradford[1][0] + Wdz * MaBradford[2][0]; + double Gd = Wdx * MaBradford[0][1] + Wdy * MaBradford[1][1] + Wdz * MaBradford[2][1]; + double Bd = Wdx * MaBradford[0][2] + Wdy * MaBradford[1][2] + Wdz * MaBradford[2][2]; + + //cone destination + Matrix cone_dest_sourc = {}; + cone_dest_sourc [0][0] = Rd / Rs; + cone_dest_sourc [0][1] = 0.; + cone_dest_sourc [0][2] = 0.; + cone_dest_sourc [1][0] = 0.; + cone_dest_sourc [1][1] = Gd / Gs; + cone_dest_sourc [1][2] = 0.; + cone_dest_sourc [2][0] = 0.; + cone_dest_sourc [2][1] = 0.; + cone_dest_sourc [2][2] = Bd / Bs; + + Matrix cone_ma_one = {}; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + cone_ma_one[i][j] = 0; + + for (int k = 0; k < 3; ++k) { + cone_ma_one[i][j] += cone_dest_sourc [i][k] * Ma_oneBradford[k][j]; + } } } - if (primariesPreset == "Rec2020") { - {//calculated with personnal special spreadsheat - rt = {0.6734800343, 0.2790423273, -0.0019336766}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1250489478, 0.0456126910, 0.7968509159}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1656716588, 0.6753442491, 0.0299828575}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + //generate adaptation bradford matrix + Matrix adapt_chroma = {}; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + adapt_chroma [i][j] = 0; + + for (int k = 0; k < 3; ++k) { + adapt_chroma[i][j] += MaBradford[i][k] * cone_ma_one[k][j]; + } } } - if (primariesPreset == "BruceRGB") { - {//calculated with personnal special spreadsheat - rt = {0.4941542253, 0.2521357351, 0.0157753562}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1495175342, 0.0633521060, 0.7462112712}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.3205288814, 0.6845114263, 0.0629134693}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + //real matrix XYZ for primaries, temp, Bradford + Matrix mat_xyz_brad = {}; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + mat_xyz_brad[i][j] = 0; + + for (int k = 0; k < 3; ++k) { + mat_xyz_brad[i][j] += mat_xyz[i][k] * adapt_chroma[k][j]; + } } } - if (primariesPreset == "ACES-AP0") { - {//calculated with personnal special spreadsheat - rt = {0.9908835135, 0.3618940325, -0.0027137400}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {-0.0389246557, -0.084405166, 0.8193659780}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.0122417831, 0.7225104015, 0.0082478587}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - if (primariesPreset == "ACES-AP1") {//done - {//calculated with personnal special spreadsheat - rt = {0.6898756188, 0.2845109670, -0.0060455375}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1245615936, 0.0437959432, 0.8209388333}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1497634285, 0.6716923572, 0.0100068009}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } +// printf("adc=%1.10f ad2=%1.10f ad22=%1.10f\n", mat_xyz_brad[0][0], mat_xyz_brad[1][0], mat_xyz_brad[2][2]); + //end generate XYZ matrix - if (primariesPreset == "ProPhoto") { - {//calculated with personnal special spreadsheat - rt = {0.7977198204, 0.2880493171, -0.0000030551}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.0313194091, 0.0000771282, 0.8248890748}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1351614114, 0.7118728221, 0.0000140770}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } + //write tags + rt = {mat_xyz_brad[0][0], mat_xyz_brad[0][1], mat_xyz_brad[0][2]}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + gt = {mat_xyz_brad[1][0], mat_xyz_brad[1][1], mat_xyz_brad[1][2]}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + bt = {mat_xyz_brad[2][0], mat_xyz_brad[2][1], mat_xyz_brad[2][2]}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - if (primariesPreset == "Widegamut") { - {//calculated with personnal special spreadsheat - rt = {0.7161680478, 0.2582038074, -0.0000027515}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1471328469, 0.0168600579, 0.7731227232}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1008997462, 0.7249354021, 0.0517801251}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BestRGB") { - {//calculated with personnal special spreadsheat - rt = {0.6327383009, 0.2284760022, -0.0000024233}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1269437333, 0.0341753604, 0.8153773703}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.2045186067, 0.7373479048, 0.0095251497}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } - - if (primariesPreset == "BetaRGB") { - {//calculated with personnal special spreadsheat - rt = {0.6713200674, 0.3033034560, -0.0000012307}; - cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); - bt = {0.1183343909, 0.0329265310, 0.7842009909}; - cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); - gt = {0.1745461827, 0.6637692805, 0.0407003365}; - cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); - } - } } else { cmsWhitePointFromTemp(&xyD, (double)temp); @@ -1192,7 +1299,6 @@ void ICCProfileCreator::savePressed() xyD = {0.3457, 0.3585, 1.0}; } -// {0.3457, 0.3585, 1.0}; // Calculate output profile's rTRC gTRC bTRC @@ -1264,7 +1370,7 @@ void ICCProfileCreator::savePressed() printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); } } else { - if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { + if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); } diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 605cb9dcd..74fa4bc54 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -95,7 +95,7 @@ private: void adjusterAutoToggled(Adjuster* a, bool newval); static std::vector getGamma(); Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); - void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp); + void getPrimaries(const Glib::ustring &preset, double *p, ColorTemp &temp); Glib::ustring getGammaPresetName(const Glib::ustring &preset); void getGamma(const Glib::ustring &preset, double &gamma, double &slope); void savePressed(); From 3824213e4998305b7f1c1cf6882e3552cb4a91c7 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 17 Nov 2018 19:25:32 +0100 Subject: [PATCH 161/348] Fix two coverity issues --- rtengine/iccstore.cc | 14 +++++++------- rtengine/pdaflinesfilter.cc | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 4d490c0a0..1f24852d0 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -1058,8 +1058,8 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) uint32_t size; } tags[tag_count]; - const uint32_t gamma = 0x239; - int gamma_size = 14; + constexpr uint32_t gamma = 0x239; + constexpr int gamma_size = 14; int data_size = (gamma_size + 3) & ~3; for (uint32_t i = 0; i < tag_count; i++) { @@ -1096,13 +1096,13 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) tags[i].sig == 0x6B545243) { // kTRC if (gamma_offset == 0) { gamma_offset = offset; - uint32_t pcurve[] = { htonl(0x63757276), htonl(0), htonl(gamma_size == 12 ? 0U : 1U) }; + uint32_t pcurve[] = { htonl(0x63757276), htonl(0), htonl(/*gamma_size == 12 ? 0U : */1U) }; memcpy(&nd[offset], pcurve, 12); - if (gamma_size == 14) { - uint16_t gm = htons(gamma); - memcpy(&nd[offset + 12], &gm, 2); - } + //if (gamma_size == 14) { + uint16_t gm = htons(gamma); + memcpy(&nd[offset + 12], &gm, 2); + //} offset += (gamma_size + 3) & ~3; } diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index ee279f3c0..86c6f2d4c 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -171,7 +171,8 @@ private: PDAFLinesFilter::PDAFLinesFilter(RawImage *ri): ri_(ri), W_(ri->get_width()), - H_(ri->get_height()) + H_(ri->get_height()), + offset_(0) { gthresh_ = new PDAFGreenEqulibrateThreshold(W_, H_); From 741bdd97f25c0604e8c91422241e4d8c0608da37 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 17 Nov 2018 20:20:44 +0100 Subject: [PATCH 162/348] Fix another coverity issue --- rtengine/simpleprocess.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index b36f4d6c1..9e23b51a3 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1260,8 +1260,8 @@ private: Imagefloat* readyImg = nullptr; cmsHPROFILE jprof = nullptr; - bool customGamma = false; - bool useLCMS = false; + constexpr bool customGamma = false; + constexpr bool useLCMS = false; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ; ///////////// Custom output gamma has been removed, the user now has to create From 2d5c2b933f8e720ecdc7de2de3b36d8865e6988f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 17 Nov 2018 23:56:57 +0100 Subject: [PATCH 163/348] Fix another coverity issue --- rtgui/filepanel.cc | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index f75983ac0..23b7c3983 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -384,16 +384,6 @@ void FilePanel::optionsChanged () bool FilePanel::handleShortcutKey (GdkEventKey* event) { - bool ctrl = event->state & GDK_CONTROL_MASK; - - if (!ctrl) { - switch(event->keyval) { - } - } else { - switch (event->keyval) { - } - } - if(tpc->getToolBar() && tpc->getToolBar()->handleShortcutKey(event)) { return true; } From bda23b935056cfd96a64d49b9325b2cdbc88dd7f Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Sun, 18 Nov 2018 08:28:27 +0100 Subject: [PATCH 164/348] Change Tag dmdd for RTv2_Medium and code for TRC=custom and slope=0 --- rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 876 -> 856 bytes rtengine/iplab2rgb.cc | 8 ++++++-- rtgui/iccprofilecreator.cc | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc index 065c43bc44ed6cbe53fd332875a727a48fc03eb0..454f40d9086dc16fbed0f7c4b8a55fb2851b53a6 100644 GIT binary patch delta 100 zcmaFEc7u(Dfq^+s<(j3)f)MtVjD#Rhr? lAfO0T00#UF=?q2;dO&QzPz=O+Kn#P5lP5B{Prk-94FFr86bt|W delta 121 zcmcb?_J)mxfq^+^BFlHtIVrh$DGUruHy9Wg8j`XLN`Mj(n*|un8QnzFjr2?mK%m&r zNYB#9*wDa05vU9dL>bZ Date: Sun, 18 Nov 2018 11:02:30 +0100 Subject: [PATCH 165/348] Small changes to increase precision gamma --- rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 856 -> 868 bytes rtengine/iplab2rgb.cc | 1 + rtgui/iccprofilecreator.cc | 13 ++++++------- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc index 454f40d9086dc16fbed0f7c4b8a55fb2851b53a6..ebaf4d133aabc2fdc3a71d6aa7ea1b5152b38b94 100644 GIT binary patch delta 90 zcmcb?_Joavfq^+?BFlHtDJi*mDGUru7Z?~A8j`XLN`Mjpn*|un8TEwIjr0sHEsYE< iiw*P)KtK_w2n>W7(iw~x^cV~oEP>DnL{H9SdJh1^lM;;p delta 78 zcmaFDc7u(Dfq^+s<(j7t3JMtVjD#Rhr? YAfO0T00#UF=?q2;dO&P2xs>TW0OZ*an*aa+ diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 9094f3526..da8e687ed 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -368,6 +368,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i cmsToneCurve* GammaTRC[3]; if(slopetag == 0.) { + //printf("gammatag=%f\n", gammatag); GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, gammatag); } else { diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 97d22ca0b..60b45519a 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -154,7 +154,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) //--------------------------------- sliders gampos and slpos - aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4)); + aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.00001, 2.4)); setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); if (aGamma->delay < options.adjusterMaxDelay) { @@ -867,9 +867,8 @@ void ICCProfileCreator::savePressed() ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; - presetGamma = 2.2; + presetGamma = 2.19921875; presetSlope = 0.0; - } else if (gammaPreset == "standard_g1.8") { sGammaPreset = "g=1.8"; ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto) @@ -877,7 +876,7 @@ void ICCProfileCreator::savePressed() ga[2] = 0.; ga[3] = 1. / eps; ga[4] = 0.; - presetGamma = 1.8; + presetGamma = 1.80078125; presetSlope = 0.0; } else if (gammaPreset == "Lab_g3.0s9.03296") { @@ -907,7 +906,7 @@ void ICCProfileCreator::savePressed() //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); sGammaPreset = Glib::ustring::compose("g%1_s%2", - Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(6), gamma), Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); presetGamma = gamma; presetSlope = slope; @@ -930,12 +929,12 @@ void ICCProfileCreator::savePressed() Glib::ustring sSlope; if (gammaPreset == "Custom") { - sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); + sGamma = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(6), gamma); sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); profileDesc = sPrimariesPreset; } else { - sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sGamma = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(6), presetGamma); sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); profileDesc = sPrimariesPreset + sGammaPreset; From 99c8b6061513742e048bb723e24444d11008521c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 18 Nov 2018 12:15:30 +0100 Subject: [PATCH 166/348] Fix broken non-raw images --- rtengine/imageio.h | 6 +----- rtengine/stdimagesource.cc | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/rtengine/imageio.h b/rtengine/imageio.h index 0de1de1c0..bb9fbc5f4 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -106,11 +106,7 @@ public: return sampleArrangement; } - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first) - { - printf("getStdImage NULL!\n"); - } - + virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) = 0; virtual int getBPS () = 0; virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) {} virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) {} diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 241d5f81d..37d438863 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -194,7 +194,7 @@ void StdImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima // the code will use OpenMP as of now. - img->getStdImage(ctemp, tran, image, pp, true); + img->getStdImage(ctemp, tran, image, pp); // Hombre: we could have rotated the image here too, with just few line of code, but: // 1. it would require other modifications in the engine, so "do not touch that little plonker!" From bfe84655630db4a5816003dab3782b9b79261e8d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 18 Nov 2018 15:43:15 +0100 Subject: [PATCH 167/348] Review of image classes interfaces --- rtengine/iimage.h | 6 +-- rtengine/image16.cc | 4 +- rtengine/image16.h | 44 +++++++++++-------- rtengine/image8.cc | 4 +- rtengine/image8.h | 36 ++++++++++------ rtengine/imagefloat.cc | 4 +- rtengine/imagefloat.h | 20 ++++----- rtengine/imageio.cc | 74 ++++++++++++++++++++++++++----- rtengine/imageio.h | 98 ++++++++++++------------------------------ 9 files changed, 158 insertions(+), 132 deletions(-) diff --git a/rtengine/iimage.h b/rtengine/iimage.h index af2969581..f5f0d075e 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -1751,10 +1751,10 @@ public: /** @brief Returns a mutex that can is useful in many situations. No image operations shuold be performed without locking this mutex. * @return The mutex */ virtual MyMutex& getMutex () = 0; - virtual cmsHPROFILE getProfile () = 0; + virtual cmsHPROFILE getProfile () const = 0; /** @brief Returns the bits per pixel of the image. * @return The bits per pixel of the image */ - virtual int getBitsPerPixel () = 0; + virtual int getBitsPerPixel () const = 0; /** @brief Saves the image to file. It autodetects the format (jpg, tif, png are supported). * @param fname is the name of the file @return the error code, 0 if none */ @@ -1775,7 +1775,7 @@ public: * @param bps can be 8 or 16 depending on the bits per pixels the output file will have * @param isFloat is true for saving float images. Will be ignored by file format not supporting float data @return the error code, 0 if none */ - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) = 0; + virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) = 0; /** @brief Sets the progress listener if you want to follow the progress of the image saving operations (optional). * @param pl is the pointer to the class implementing the ProgressListener interface */ virtual void setSaveProgressListener (ProgressListener* pl) = 0; diff --git a/rtengine/image16.cc b/rtengine/image16.cc index 5ceb4f804..42a2df028 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -60,7 +60,7 @@ Image16::~Image16() { } -void Image16::getScanline(int row, unsigned char* buffer, int bps, bool isFloat) +void Image16::getScanline(int row, unsigned char* buffer, int bps, bool isFloat) const { if (data == nullptr) { @@ -132,7 +132,7 @@ Image16* Image16::copy() return cp; } -void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) +void Image16::getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const { // compute channel multipliers diff --git a/rtengine/image16.h b/rtengine/image16.h index 804f8cc72..8e9f686c9 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -40,62 +40,70 @@ public: Image16(int width, int height); ~Image16(); - Image16* copy(); + Image16* copy(); - Image8* to8(); - Imagefloat* tofloat(); + Image8* to8(); + Imagefloat* tofloat(); - virtual void getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp); + virtual void getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; - virtual const char* getType() const + virtual const char* getType() const { return sImage16; } - virtual int getBPS() + virtual int getBPS() const { return 8 * sizeof(unsigned short); } - virtual void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false); - virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples); + virtual void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false) const; + virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples); // functions inherited from IImage16: - virtual MyMutex& getMutex() + virtual MyMutex& getMutex() { return mutex(); } - virtual cmsHPROFILE getProfile() + + virtual cmsHPROFILE getProfile() const { return getEmbeddedProfile(); } - virtual int getBitsPerPixel() + + virtual int getBitsPerPixel() const { return 8 * sizeof(unsigned short); } - virtual int saveToFile(Glib::ustring fname) + + virtual int saveToFile(Glib::ustring fname) { return save(fname); } - virtual int saveAsPNG(Glib::ustring fname, int bps = -1) + + virtual int saveAsPNG(Glib::ustring fname, int bps = -1) { return savePNG(fname, bps); } - virtual int saveAsJPEG(Glib::ustring fname, int quality = 100, int subSamp = 3) + + virtual int saveAsJPEG(Glib::ustring fname, int quality = 100, int subSamp = 3) { return saveJPEG(fname, quality, subSamp); } - virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) + + virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) { return saveTIFF(fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener(ProgressListener* pl) + + virtual void setSaveProgressListener(ProgressListener* pl) { setProgressListener(pl); } - virtual void free() + + virtual void free() { delete this; } - void ExecCMSTransform(cmsHTRANSFORM hTransform); + void ExecCMSTransform(cmsHTRANSFORM hTransform); /* void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); */ }; diff --git a/rtengine/image8.cc b/rtengine/image8.cc index 15a6d9acc..64fe59ecd 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -37,7 +37,7 @@ Image8::~Image8 () { } -void Image8::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) +void Image8::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const { if (data == nullptr) { @@ -97,7 +97,7 @@ Image8* Image8::copy () return cp; } -void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) +void Image8::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const { // compute channel multipliers float rm = 1.f, gm = 1.f, bm = 1.f; diff --git a/rtengine/image8.h b/rtengine/image8.h index 9bb5d51e3..521605009 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -40,53 +40,61 @@ public: Image8* copy (); - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp); + virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; - virtual const char* getType () const + virtual const char* getType () const { return sImage8; } - virtual int getBPS () + virtual int getBPS () const { return 8 * sizeof(unsigned char); } - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false); - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); + virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const; + virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); // functions inherited from IImage*: - virtual MyMutex& getMutex () + virtual MyMutex& getMutex () { return mutex (); } - virtual cmsHPROFILE getProfile () + + virtual cmsHPROFILE getProfile () const { return getEmbeddedProfile (); } - virtual int getBitsPerPixel () + + virtual int getBitsPerPixel () const { return 8 * sizeof(unsigned char); } - virtual int saveToFile (Glib::ustring fname) + + virtual int saveToFile (Glib::ustring fname) { return save (fname); } - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) + + virtual int saveAsPNG (Glib::ustring fname, int bps = -1) { return savePNG (fname, bps); } - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) + + virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) + + virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) { return saveTIFF (fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + + virtual void setSaveProgressListener (ProgressListener* pl) { setProgressListener (pl); } - virtual void free () + + virtual void free () { delete this; } diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index fd6bc1c75..baf872e44 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -110,7 +110,7 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned namespace rtengine { extern void filmlike_clip(float *r, float *g, float *b); } -void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) +void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const { if (data == nullptr) { @@ -168,7 +168,7 @@ Imagefloat* Imagefloat::copy () } // This is called by the StdImageSource class. We assume that fp images from StdImageSource don't have to deal with gamma -void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) +void Imagefloat::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const { // compute channel multipliers diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index d84e742ce..e163b6d4f 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -49,29 +49,29 @@ public: Image8* to8(); Image16* to16(); - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp); + virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; - virtual const char* getType () const + virtual const char* getType () const { return sImagefloat; } - virtual int getBPS () + virtual int getBPS () const { return 8 * sizeof(float); } - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false); - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); + virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const; + virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); // functions inherited from IImagefloat: - virtual MyMutex& getMutex () + virtual MyMutex& getMutex () { return mutex (); } - virtual cmsHPROFILE getProfile () + virtual cmsHPROFILE getProfile () const { return getEmbeddedProfile (); } - virtual int getBitsPerPixel () + virtual int getBitsPerPixel () const { return 8 * sizeof(float); } @@ -87,7 +87,7 @@ public: { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) + virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) { return saveTIFF (fname, bps, isFloat, uncompressed); } @@ -100,7 +100,7 @@ public: delete this; } - inline uint16_t DNG_FloatToHalf(float f) + inline uint16_t DNG_FloatToHalf(float f) const { union { float f; diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 9ac72be58..76a6417ff 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -201,7 +201,7 @@ void png_read_data(png_struct_def *png_ptr, unsigned char *data, size_t length) void png_write_data(png_struct_def *png_ptr, unsigned char *data, size_t length); void png_flush(png_struct_def *png_ptr); -int ImageIO::getPNGSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) +int ImageIO::getPNGSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) { FILE *file = g_fopen (fname.c_str (), "rb"); @@ -273,7 +273,7 @@ int ImageIO::getPNGSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, } } -int ImageIO::loadPNG (Glib::ustring fname) +int ImageIO::loadPNG (const Glib::ustring &fname) { FILE *file = g_fopen (fname.c_str (), "rb"); @@ -543,7 +543,7 @@ int ImageIO::loadJPEGFromMemory (const char* buffer, int bufsize) return IMIO_SUCCESS; } -int ImageIO::loadJPEG (Glib::ustring fname) +int ImageIO::loadJPEG (const Glib::ustring &fname) { FILE *file = g_fopen(fname.c_str (), "rb"); @@ -629,7 +629,7 @@ int ImageIO::loadJPEG (Glib::ustring fname) } } -int ImageIO::getTIFFSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) +int ImageIO::getTIFFSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) { #ifdef WIN32 wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL); @@ -731,7 +731,7 @@ int ImageIO::getTIFFSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, return IMIO_VARIANTNOTSUPPORTED; } -int ImageIO::loadTIFF (Glib::ustring fname) +int ImageIO::loadTIFF (const Glib::ustring &fname) { static MyMutex thumbMutex; @@ -972,7 +972,7 @@ void PNGwriteRawProfile(png_struct *ping, png_info *ping_info, const char *profi } // namespace -int ImageIO::savePNG (Glib::ustring fname, volatile int bps) +int ImageIO::savePNG (const Glib::ustring &fname, int bps) const { if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; @@ -1111,7 +1111,7 @@ int ImageIO::savePNG (Glib::ustring fname, volatile int bps) // Quality 0..100, subsampling: 1=low quality, 2=medium, 3=high -int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) +int ImageIO::saveJPEG (const Glib::ustring &fname, int quality, int subSamp) const { if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; @@ -1301,7 +1301,7 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) return IMIO_SUCCESS; } -int ImageIO::saveTIFF (Glib::ustring fname, int bps, float isFloat, bool uncompressed) +int ImageIO::saveTIFF (const Glib::ustring &fname, int bps, bool isFloat, bool uncompressed) const { if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; @@ -1595,7 +1595,7 @@ void png_flush(png_structp png_ptr) } } -int ImageIO::load (Glib::ustring fname) +int ImageIO::load (const Glib::ustring &fname) { if (hasPngExtension(fname)) { @@ -1609,7 +1609,7 @@ int ImageIO::load (Glib::ustring fname) } } -int ImageIO::save (Glib::ustring fname) +int ImageIO::save (const Glib::ustring &fname) const { if (hasPngExtension(fname)) { return savePNG (fname); @@ -1621,3 +1621,57 @@ int ImageIO::save (Glib::ustring fname) return IMIO_FILETYPENOTSUPPORTED; } } + +void ImageIO::setProgressListener (ProgressListener* l) +{ + pl = l; +} + +void ImageIO::setSampleFormat(IIOSampleFormat sFormat) +{ + sampleFormat = sFormat; +} + +IIOSampleFormat ImageIO::getSampleFormat() const +{ + return sampleFormat; +} + +void ImageIO::setSampleArrangement(IIOSampleArrangement sArrangement) +{ + sampleArrangement = sArrangement; +} + +IIOSampleArrangement ImageIO::getSampleArrangement() const +{ + return sampleArrangement; +} + +cmsHPROFILE ImageIO::getEmbeddedProfile () const +{ + return embProfile; +} + +void ImageIO::getEmbeddedProfileData (int& length, unsigned char*& pdata) const +{ + length = loadedProfileLength; + pdata = (unsigned char*)loadedProfileData; +} + +MyMutex& ImageIO::mutex () +{ + return imutex; +} + +void ImageIO::deleteLoadedProfileData( ) +{ + if(loadedProfileData) { + if(loadedProfileDataJpg) { + free(loadedProfileData); + } else { + delete[] loadedProfileData; + } + } + + loadedProfileData = nullptr; +} diff --git a/rtengine/imageio.h b/rtengine/imageio.h index bb9fbc5f4..09fcbab81 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -28,11 +28,11 @@ #define IMIO_FILETYPENOTSUPPORTED 6 #define IMIO_CANNOTWRITEFILE 7 +#include +#include #include "rtengine.h" #include "imageformat.h" -#include #include "procparams.h" -#include #include "../rtexif/rtexif.h" #include "imagedimensions.h" #include "iimage.h" @@ -63,18 +63,8 @@ protected: IIOSampleArrangement sampleArrangement; private: - void deleteLoadedProfileData( ) - { - if(loadedProfileData) { - if(loadedProfileDataJpg) { - free(loadedProfileData); - } else { - delete[] loadedProfileData; - } - } + void deleteLoadedProfileData( ); - loadedProfileData = nullptr; - } public: static Glib::ustring errorMsg[6]; @@ -84,75 +74,41 @@ public: virtual ~ImageIO (); - void setProgressListener (ProgressListener* l) - { - pl = l; - } + void setProgressListener (ProgressListener* l); + void setSampleFormat(IIOSampleFormat sFormat); + IIOSampleFormat getSampleFormat() const; + void setSampleArrangement(IIOSampleArrangement sArrangement); + IIOSampleArrangement getSampleArrangement() const; - void setSampleFormat(IIOSampleFormat sFormat) - { - sampleFormat = sFormat; - } - IIOSampleFormat getSampleFormat() - { - return sampleFormat; - } - void setSampleArrangement(IIOSampleArrangement sArrangement) - { - sampleArrangement = sArrangement; - } - IIOSampleArrangement getSampleArrangement() - { - return sampleArrangement; - } + virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const = 0; + virtual int getBPS () const = 0; + virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const = 0; + virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) = 0; - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp) = 0; - virtual int getBPS () = 0; - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) {} - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) {} + int load (const Glib::ustring &fname); + int save (const Glib::ustring &fname) const; - virtual bool readImage (Glib::ustring &fname, FILE *fh) - { - return false; - }; - virtual bool writeImage (Glib::ustring &fname, FILE *fh) - { - return false; - }; - - int load (Glib::ustring fname); - int save (Glib::ustring fname); - - int loadPNG (Glib::ustring fname); - int loadJPEG (Glib::ustring fname); - int loadTIFF (Glib::ustring fname); - static int getPNGSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); - static int getTIFFSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); + int loadPNG (const Glib::ustring &fname); + int loadJPEG (const Glib::ustring &fname); + int loadTIFF (const Glib::ustring &fname); + static int getPNGSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); + static int getTIFFSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); int loadJPEGFromMemory (const char* buffer, int bufsize); int loadPPMFromMemory(const char* buffer, int width, int height, bool swap, int bps); - int savePNG (Glib::ustring fname, volatile int bps = -1); - int saveJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3); - int saveTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false); + int savePNG (const Glib::ustring &fname, int bps = -1) const; + int saveJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const; + int saveTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const; - cmsHPROFILE getEmbeddedProfile () - { - return embProfile; - } - void getEmbeddedProfileData (int& length, unsigned char*& pdata) - { - length = loadedProfileLength; - pdata = (unsigned char*)loadedProfileData; - } + cmsHPROFILE getEmbeddedProfile () const; + void getEmbeddedProfileData (int& length, unsigned char*& pdata) const; void setMetadata (const rtexif::TagDirectory* eroot); void setMetadata (const rtexif::TagDirectory* eroot, const rtengine::procparams::ExifPairs& exif, const rtengine::procparams::IPTCPairs& iptcc); - void setOutputProfile (const char* pdata, int plen); - MyMutex& mutex () - { - return imutex; - } + void setOutputProfile (const char* pdata, int plen); + + MyMutex& mutex (); }; } From 512adf5b62c797b646741777e9eedb1b35563e18 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 18 Nov 2018 18:09:40 +0100 Subject: [PATCH 168/348] Review of image classes interfaces, part 2 --- rtengine/iimage.h | 102 ++++++++++++++++++----------------------- rtengine/image16.cc | 8 ++-- rtengine/image16.h | 14 +++--- rtengine/image8.cc | 2 +- rtengine/image8.h | 10 ++-- rtengine/imagefloat.cc | 6 +-- rtengine/imagefloat.h | 16 +++---- rtengine/imageio.h | 1 + 8 files changed, 72 insertions(+), 87 deletions(-) diff --git a/rtengine/iimage.h b/rtengine/iimage.h index f5f0d075e..2def35e06 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -82,22 +82,18 @@ public: // Read the raw dump of the data void readData (FILE *fh) {} // Write a raw dump of the data - void writeData (FILE *fh) {} + void writeData (FILE *fh) const {} virtual void normalizeInt (int srcMinVal, int srcMaxVal) {}; virtual void normalizeFloat (float srcMinVal, float srcMaxVal) {}; - virtual void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, int compression) {} + virtual void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, int compression) const {} virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) {} - virtual void getAutoWBMultipliers (double &rm, double &gm, double &bm) + int tran) const {} + virtual void getAutoWBMultipliers (double &rm, double &gm, double &bm) const { rm = gm = bm = 1.0; } - virtual const char* getType () const - { - return "unknown"; - } }; @@ -232,7 +228,7 @@ public: } // Send back the row stride. WARNING: unit = byte, not element! - int getRowStride () + int getRowStride () const { return rowstride; } @@ -316,7 +312,7 @@ public: } /** Copy the data to another PlanarWhateverData */ - void copyData(PlanarWhateverData *dest) + void copyData(PlanarWhateverData *dest) const { assert (dest != NULL); // Make sure that the size is the same, reallocate if necessary @@ -389,7 +385,7 @@ public: } template - void resizeImgTo (int nw, int nh, TypeInterpolation interp, PlanarWhateverData *imgPtr) + void resizeImgTo (int nw, int nh, TypeInterpolation interp, PlanarWhateverData *imgPtr) const { //printf("resizeImgTo: resizing %s image data (%d x %d) to %s (%d x %d)\n", getType(), width, height, imgPtr->getType(), imgPtr->width, imgPtr->height); if (width == nw && height == nh) { @@ -499,17 +495,7 @@ public: #endif } - void calcHist(unsigned int *hist16) - { - for (int row = 0; row < height; row++) - for (int col = 0; col < width; col++) { - unsigned short idx; - convertTo(v(row, col), idx); - hist16[idx]++; - } - } - - void transformPixel (int x, int y, int tran, int& tx, int& ty) + void transformPixel (int x, int y, int tran, int& tx, int& ty) const { if (!tran) { @@ -552,7 +538,7 @@ public: } } - void getPipetteData (T &value, int posX, int posY, int squareSize, int tran) + void getPipetteData (T &value, int posX, int posY, int squareSize, int tran) const { int x; int y; @@ -573,14 +559,14 @@ public: value = n ? T(accumulator / float(n)) : T(0); } - void readData (FILE *f) + void readData (FILE *f) { for (int i = 0; i < height; i++) { fread (v(i), sizeof(T), width, f); } } - void writeData (FILE *f) + void writeData (FILE *f) const { for (int i = 0; i < height; i++) { fwrite (v(i), sizeof(T), width, f); @@ -622,12 +608,12 @@ public: } // Send back the row stride. WARNING: unit = byte, not element! - int getRowStride () + int getRowStride () const { return rowstride; } // Send back the plane stride. WARNING: unit = byte, not element! - int getPlaneStride () + int getPlaneStride () const { return planestride; } @@ -732,7 +718,7 @@ public: } /** Copy the data to another PlanarRGBData */ - void copyData(PlanarRGBData *dest) + void copyData(PlanarRGBData *dest) const { assert (dest != nullptr); // Make sure that the size is the same, reallocate if necessary @@ -820,7 +806,7 @@ public: } template - void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) + void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) const { //printf("resizeImgTo: resizing %s image data (%d x %d) to %s (%d x %d)\n", getType(), width, height, imgPtr->getType(), imgPtr->width, imgPtr->height); if (width == nw && height == nh) { @@ -869,9 +855,9 @@ public: // This case should never occur! for (int i = 0; i < nh; i++) { for (int j = 0; j < nw; j++) { - r(i, j) = 0; - g(i, j) = 0; - b(i, j) = 0; + imgPtr->r(i, j) = 0; + imgPtr->g(i, j) = 0; + imgPtr->b(i, j) = 0; } } } @@ -942,7 +928,7 @@ public: #endif } - void calcGrayscaleHist(unsigned int *hist16) + void calcGrayscaleHist(unsigned int *hist16) const { for (int row = 0; row < height; row++) for (int col = 0; col < width; col++) { @@ -956,7 +942,7 @@ public: } } - void computeAutoHistogram (LUTu & histogram, int& histcompr) + void computeAutoHistogram (LUTu & histogram, int& histcompr) const { histcompr = 3; @@ -975,7 +961,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1007,7 +993,7 @@ public: } } - void getAutoWBMultipliers (double &rm, double &gm, double &bm) + void getAutoWBMultipliers (double &rm, double &gm, double &bm) const { double avg_r = 0.; @@ -1038,7 +1024,7 @@ public: bm = avg_b / double(n); } - void transformPixel (int x, int y, int tran, int& tx, int& ty) + void transformPixel (int x, int y, int tran, int& tx, int& ty) const { if (!tran) { @@ -1083,7 +1069,7 @@ public: virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) + int tran) const { int x; int y; @@ -1120,7 +1106,7 @@ public: } } - void getPipetteData (T &valueR, T &valueG, T &valueB, int posX, int posY, int squareSize, int tran) + void getPipetteData (T &valueR, T &valueG, T &valueB, int posX, int posY, int squareSize, int tran) const { int x; int y; @@ -1147,7 +1133,7 @@ public: valueB = n ? T(accumulatorB / float(n)) : T(0); } - void readData (FILE *f) + void readData (FILE *f) { for (int i = 0; i < height; i++) { fread (r(i), sizeof(T), width, f); @@ -1162,7 +1148,7 @@ public: } } - void writeData (FILE *f) + void writeData (FILE *f) const { for (int i = 0; i < height; i++) { fwrite (r(i), sizeof(T), width, f); @@ -1345,7 +1331,7 @@ public: } /** Copy the data to another ChunkyRGBData */ - void copyData(ChunkyRGBData *dest) + void copyData(ChunkyRGBData *dest) const { assert (dest != nullptr); // Make sure that the size is the same, reallocate if necessary @@ -1421,7 +1407,7 @@ public: } template - void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) + void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) const { //printf("resizeImgTo: resizing %s image data (%d x %d) to %s (%d x %d)\n", getType(), width, height, imgPtr->getType(), imgPtr->width, imgPtr->height); if (width == nw && height == nh) { @@ -1485,9 +1471,9 @@ public: // This case should never occur! for (int i = 0; i < nh; i++) { for (int j = 0; j < nw; j++) { - r(i, j) = 0; - g(i, j) = 0; - b(i, j) = 0; + imgPtr->r(i, j) = 0; + imgPtr->g(i, j) = 0; + imgPtr->b(i, j) = 0; } } } @@ -1545,7 +1531,7 @@ public: } } - void calcGrayscaleHist(unsigned int *hist16) + void calcGrayscaleHist(unsigned int *hist16) const { for (int row = 0; row < height; row++) for (int col = 0; col < width; col++) { @@ -1559,7 +1545,7 @@ public: } } - void computeAutoHistogram (LUTu & histogram, int& histcompr) + void computeAutoHistogram (LUTu & histogram, int& histcompr) const { histcompr = 3; @@ -1578,7 +1564,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1610,7 +1596,7 @@ public: } } - void getAutoWBMultipliers (double &rm, double &gm, double &bm) + void getAutoWBMultipliers (double &rm, double &gm, double &bm) const { double avg_r = 0.; @@ -1641,7 +1627,7 @@ public: bm = avg_b / double(n); } - void transformPixel (int x, int y, int tran, int& tx, int& ty) + void transformPixel (int x, int y, int tran, int& tx, int& ty) const { if (!tran) { @@ -1686,7 +1672,7 @@ public: virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) + int tran) const { int x; int y; @@ -1723,14 +1709,14 @@ public: } } - void readData (FILE *f) + void readData (FILE *f) { for (int i = 0; i < height; i++) { fread (r(i), sizeof(T), 3 * width, f); } } - void writeData (FILE *f) + void writeData (FILE *f) const { for (int i = 0; i < height; i++) { fwrite (r(i), sizeof(T), 3 * width, f); @@ -1758,24 +1744,24 @@ public: /** @brief Saves the image to file. It autodetects the format (jpg, tif, png are supported). * @param fname is the name of the file @return the error code, 0 if none */ - virtual int saveToFile (Glib::ustring fname) = 0; + virtual int saveToFile (const Glib::ustring &fname) const = 0; /** @brief Saves the image to file in a png format. * @param fname is the name of the file * @param compression is the amount of compression (0-6), -1 corresponds to the default * @param bps can be 8 or 16 depending on the bits per pixels the output file will have @return the error code, 0 if none */ - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) = 0; + virtual int saveAsPNG (const Glib::ustring &fname, int bps = -1) const = 0; /** @brief Saves the image to file in a jpg format. * @param fname is the name of the file * @param quality is the quality of the jpeg (0...100), set it to -1 to use default @return the error code, 0 if none */ - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3 ) = 0; + virtual int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3 ) const = 0; /** @brief Saves the image to file in a tif format. * @param fname is the name of the file * @param bps can be 8 or 16 depending on the bits per pixels the output file will have * @param isFloat is true for saving float images. Will be ignored by file format not supporting float data @return the error code, 0 if none */ - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) = 0; + virtual int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const = 0; /** @brief Sets the progress listener if you want to follow the progress of the image saving operations (optional). * @param pl is the pointer to the class implementing the ProgressListener interface */ virtual void setSaveProgressListener (ProgressListener* pl) = 0; diff --git a/rtengine/image16.cc b/rtengine/image16.cc index 42a2df028..618d31641 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -124,7 +124,7 @@ void Image16::setScanline(int row, unsigned char* buffer, int bps, unsigned int */ } -Image16* Image16::copy() +Image16* Image16::copy() const { Image16* cp = new Image16(width, height); @@ -295,8 +295,7 @@ void Image16::getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, P #undef GCLIP } -Image8* -Image16::to8() +Image8* Image16::to8() const { Image8* img8 = new Image8(width, height); @@ -311,8 +310,7 @@ Image16::to8() return img8; } -Imagefloat* -Image16::tofloat() +Imagefloat* Image16::tofloat() const { Imagefloat* imgfloat = new Imagefloat(width, height); diff --git a/rtengine/image16.h b/rtengine/image16.h index 8e9f686c9..973b09504 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -40,10 +40,10 @@ public: Image16(int width, int height); ~Image16(); - Image16* copy(); + Image16* copy() const; - Image8* to8(); - Imagefloat* tofloat(); + Image8* to8() const; + Imagefloat* tofloat() const; virtual void getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; @@ -74,22 +74,22 @@ public: return 8 * sizeof(unsigned short); } - virtual int saveToFile(Glib::ustring fname) + virtual int saveToFile(const Glib::ustring &fname) const { return save(fname); } - virtual int saveAsPNG(Glib::ustring fname, int bps = -1) + virtual int saveAsPNG(const Glib::ustring &fname, int bps = -1) const { return savePNG(fname, bps); } - virtual int saveAsJPEG(Glib::ustring fname, int quality = 100, int subSamp = 3) + virtual int saveAsJPEG(const Glib::ustring &fname, int quality = 100, int subSamp = 3) const { return saveJPEG(fname, quality, subSamp); } - virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) + virtual int saveAsTIFF(const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const { return saveTIFF(fname, bps, isFloat, uncompressed); } diff --git a/rtengine/image8.cc b/rtengine/image8.cc index 64fe59ecd..edced2fe5 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -89,7 +89,7 @@ void Image8::setScanline (int row, unsigned char* buffer, int bps, unsigned int } } -Image8* Image8::copy () +Image8* Image8::copy () const { Image8* cp = new Image8 (width, height); diff --git a/rtengine/image8.h b/rtengine/image8.h index 521605009..9460a4fbb 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -38,7 +38,7 @@ public: Image8 (int width, int height); ~Image8 (); - Image8* copy (); + Image8* copy () const; virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; @@ -69,22 +69,22 @@ public: return 8 * sizeof(unsigned char); } - virtual int saveToFile (Glib::ustring fname) + virtual int saveToFile (const Glib::ustring &fname) const { return save (fname); } - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) + virtual int saveAsPNG (const Glib::ustring &fname, int bps = -1) const { return savePNG (fname, bps); } - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) + virtual int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) + virtual int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const { return saveTIFF (fname, bps, isFloat, uncompressed); } diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index baf872e44..63c521040 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -159,7 +159,7 @@ void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFl } } -Imagefloat* Imagefloat::copy () +Imagefloat* Imagefloat::copy () const { Imagefloat* cp = new Imagefloat (width, height); @@ -330,7 +330,7 @@ void Imagefloat::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* imag } Image8* -Imagefloat::to8() +Imagefloat::to8() const { Image8* img8 = new Image8(width, height); #ifdef _OPENMP @@ -349,7 +349,7 @@ Imagefloat::to8() } Image16* -Imagefloat::to16() +Imagefloat::to16() const { Image16* img16 = new Image16(width, height); #ifdef _OPENMP diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index e163b6d4f..49dce8284 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -44,10 +44,10 @@ public: Imagefloat (int width, int height); ~Imagefloat (); - Imagefloat* copy (); + Imagefloat* copy () const; - Image8* to8(); - Image16* to16(); + Image8* to8() const; + Image16* to16() const; virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; @@ -75,23 +75,23 @@ public: { return 8 * sizeof(float); } - virtual int saveToFile (Glib::ustring fname) + virtual int saveToFile (const Glib::ustring &fname) const { return save (fname); } - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) + virtual int saveAsPNG (const Glib::ustring &fname, int bps = -1) const { return savePNG (fname, bps); } - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) + virtual int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool isFloat = false, bool uncompressed = false) + virtual int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const { return saveTIFF (fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + virtual void setSaveProgressListener (ProgressListener* pl) { setProgressListener (pl); } diff --git a/rtengine/imageio.h b/rtengine/imageio.h index 09fcbab81..5970866f0 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -84,6 +84,7 @@ public: virtual int getBPS () const = 0; virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const = 0; virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) = 0; + virtual const char* getType () const = 0; int load (const Glib::ustring &fname); int save (const Glib::ustring &fname) const; From e0b4f85e097c2aaa0a9d47edec8ebb264ffc3f00 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 19 Nov 2018 09:29:21 +0100 Subject: [PATCH 169/348] DNG: protect from ill-formed BaselineExposure values --- rtengine/dcraw.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 6ee426d63..5e89d7614 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6523,7 +6523,12 @@ guess_cfa_pc: FORC3 xyz[c] /= d65_white[c]; break; case 50730: /* BaselineExposure */ - if (dng_version) RT_baseline_exposure = getreal(type); + if (dng_version) { + double be = getreal(type); + if (!std::isnan(be)) { + RT_baseline_exposure = be; + } + } break; case 50740: /* DNGPrivateData */ if (dng_version) break; From 5b3fd8ddba4933791e147237f2bdb5d2d38d57ad Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 19 Nov 2018 14:12:16 +0100 Subject: [PATCH 170/348] Review of image classes interfaces, part 3 --- rtengine/image16.h | 29 +++++++++++++++-------------- rtengine/image8.h | 30 ++++++++++++++++-------------- rtengine/imagefloat.h | 30 ++++++++++++++++-------------- 3 files changed, 47 insertions(+), 42 deletions(-) diff --git a/rtengine/image16.h b/rtengine/image16.h index 973b09504..3431d8afd 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -45,61 +45,62 @@ public: Image8* to8() const; Imagefloat* tofloat() const; - virtual void getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; + void getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; - virtual const char* getType() const + const char* getType() const override { return sImage16; } - virtual int getBPS() const + int getBPS() const override { return 8 * sizeof(unsigned short); } - virtual void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false) const; - virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples); + + void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false) const override; + void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples) override; // functions inherited from IImage16: - virtual MyMutex& getMutex() + MyMutex& getMutex() override { return mutex(); } - virtual cmsHPROFILE getProfile() const + cmsHPROFILE getProfile() const override { return getEmbeddedProfile(); } - virtual int getBitsPerPixel() const + int getBitsPerPixel() const override { return 8 * sizeof(unsigned short); } - virtual int saveToFile(const Glib::ustring &fname) const + int saveToFile(const Glib::ustring &fname) const override { return save(fname); } - virtual int saveAsPNG(const Glib::ustring &fname, int bps = -1) const + saveAsPNG(const Glib::ustring &fname, int bps = -1) const override { return savePNG(fname, bps); } - virtual int saveAsJPEG(const Glib::ustring &fname, int quality = 100, int subSamp = 3) const + int saveAsJPEG(const Glib::ustring &fname, int quality = 100, int subSamp = 3) const override { return saveJPEG(fname, quality, subSamp); } - virtual int saveAsTIFF(const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const + int saveAsTIFF(const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const override { return saveTIFF(fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener(ProgressListener* pl) + void setSaveProgressListener(ProgressListener* pl) override { setProgressListener(pl); } - virtual void free() + void free() override { delete this; } diff --git a/rtengine/image8.h b/rtengine/image8.h index 9460a4fbb..2cc670a4a 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -40,61 +40,63 @@ public: Image8* copy () const; - virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; + void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; - virtual const char* getType () const + const char* getType () const override { return sImage8; } - virtual int getBPS () const + + int getBPS () const override { return 8 * sizeof(unsigned char); } - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const; - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); + + void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const override; + void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples) override; // functions inherited from IImage*: - virtual MyMutex& getMutex () + MyMutex& getMutex () override { return mutex (); } - virtual cmsHPROFILE getProfile () const + cmsHPROFILE getProfile () const override { return getEmbeddedProfile (); } - virtual int getBitsPerPixel () const + int getBitsPerPixel () const override { return 8 * sizeof(unsigned char); } - virtual int saveToFile (const Glib::ustring &fname) const + int saveToFile (const Glib::ustring &fname) const override { return save (fname); } - virtual int saveAsPNG (const Glib::ustring &fname, int bps = -1) const + int saveAsPNG (const Glib::ustring &fname, int bps = -1) const override { return savePNG (fname, bps); } - virtual int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const + int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const override { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const + int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const override { return saveTIFF (fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + void setSaveProgressListener (ProgressListener* pl) override { setProgressListener (pl); } - virtual void free () + void free () override { delete this; } diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 49dce8284..bd7ae2a46 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -49,53 +49,55 @@ public: Image8* to8() const; Image16* to16() const; - virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const; + void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; - virtual const char* getType () const + const char* getType () const override { return sImagefloat; } - virtual int getBPS () const + + int getBPS () const override { return 8 * sizeof(float); } - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const; - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); + + void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const override; + void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples) override; // functions inherited from IImagefloat: - virtual MyMutex& getMutex () + MyMutex& getMutex () override { return mutex (); } - virtual cmsHPROFILE getProfile () const + cmsHPROFILE getProfile () const override { return getEmbeddedProfile (); } - virtual int getBitsPerPixel () const + int getBitsPerPixel () const override { return 8 * sizeof(float); } - virtual int saveToFile (const Glib::ustring &fname) const + int saveToFile (const Glib::ustring &fname) const override { return save (fname); } - virtual int saveAsPNG (const Glib::ustring &fname, int bps = -1) const + int saveAsPNG (const Glib::ustring &fname, int bps = -1) const override { return savePNG (fname, bps); } - virtual int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const + int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const override { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const + int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const override { return saveTIFF (fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + void setSaveProgressListener (ProgressListener* pl) override { setProgressListener (pl); } - virtual void free () + void free () override { delete this; } From 8de054d504a2f0af9f3790e2eb77b7590b145b6b Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 19 Nov 2018 13:46:14 +0100 Subject: [PATCH 171/348] Formatted lensprofile.* --- rtgui/lensprofile.cc | 150 ++++++++++++++++++++++++++++--------------- rtgui/lensprofile.h | 35 ++++++---- 2 files changed, 120 insertions(+), 65 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index a725ae9f8..e67a4e589 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -31,7 +31,7 @@ using namespace rtengine::procparams; LensProfilePanel::LFDbHelper *LensProfilePanel::lf(nullptr); -LensProfilePanel::LensProfilePanel () : +LensProfilePanel::LensProfilePanel() : FoldableToolPanel(this, "lensprof", M("TP_LENSPROFILE_LABEL")), lcModeChanged(false), lcpFileChanged(false), @@ -56,10 +56,10 @@ LensProfilePanel::LensProfilePanel () : corrOff = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); pack_start(*corrOff); - + corrLensfunAuto = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_AUTOMATCH"))); pack_start(*corrLensfunAuto); - + corrLensfunManual = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_MANUAL"))); pack_start(*corrLensfunManual); @@ -78,7 +78,7 @@ LensProfilePanel::LensProfilePanel () : cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; cellRenderer->property_ellipsize_set() = true; lensfunLenses->setPreferredWidth(50, 120); - + Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))), Gtk::PACK_SHRINK, 4); hb->pack_start(*lensfunCameras); @@ -119,23 +119,24 @@ LensProfilePanel::LensProfilePanel () : } else if (!options.lastLensProfileDir.empty()) { fcbLCPFile->set_current_folder(options.lastLensProfileDir); } + bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); hbLCPFile->pack_start(*fcbLCPFile); pack_start(*hbLCPFile, Gtk::PACK_SHRINK, 4); - ckbUseDist = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USEDIST"))); - pack_start (*ckbUseDist, Gtk::PACK_SHRINK, 4); - ckbUseVign = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USEVIGN"))); - pack_start (*ckbUseVign, Gtk::PACK_SHRINK, 4); - ckbUseCA = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USECA"))); - pack_start (*ckbUseCA, Gtk::PACK_SHRINK, 4); + ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEDIST"))); + pack_start(*ckbUseDist, Gtk::PACK_SHRINK, 4); + ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEVIGN"))); + pack_start(*ckbUseVign, Gtk::PACK_SHRINK, 4); + ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USECA"))); + pack_start(*ckbUseCA, Gtk::PACK_SHRINK, 4); - conLCPFile = fcbLCPFile->signal_file_set().connect( sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); - conUseDist = ckbUseDist->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged) ); - ckbUseVign->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged) ); - ckbUseCA->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged) ); + conLCPFile = fcbLCPFile->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); + conUseDist = ckbUseDist->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged)); + ckbUseVign->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged)); + ckbUseCA->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged)); lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged)); lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged)); @@ -145,13 +146,13 @@ LensProfilePanel::LensProfilePanel () : corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile)); corrUnchanged->hide(); - + allowFocusDep = true; } void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); + disableListener(); conUseDist.block(true); if (!batchMode) { @@ -160,16 +161,19 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAuto->set_sensitive(true); - switch(pp->lensProf.lcMode) { + switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP : corrLcpFile->set_active(true); break; + case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : corrLensfunAuto->set_active(true); break; + case procparams::LensProfParams::LcMode::LENSFUNMANUAL : corrLensfunManual->set_active(true); break; + case procparams::LensProfParams::LcMode::NONE : corrOff->set_active(true); } @@ -181,8 +185,9 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); updateDisabled(false); } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { - fcbLCPFile->set_filename (pp->lensProf.lcpFile); - if(corrLcpFile->get_active()) { + fcbLCPFile->set_filename(pp->lensProf.lcpFile); + + if (corrLcpFile->get_active()) { updateDisabled(true); } } else { @@ -192,20 +197,21 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa const LFDatabase *db = LFDatabase::getInstance(); LFCamera c; - + if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { if (metadata) { c = db->findCamera(metadata->getMake(), metadata->getModel()); setLensfunCamera(c.getMake(), c.getModel()); } } + if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { if (metadata) { LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } } - + lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; @@ -213,6 +219,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa if (corrLensfunAuto->get_active()) { corrOff->set_active(true); } + corrLensfunAuto->set_sensitive(false); } @@ -222,11 +229,11 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa updateLensfunWarning(); - ckbUseDist->set_active (pp->lensProf.useDist); - ckbUseVign->set_active (pp->lensProf.useVign && isRaw); + ckbUseDist->set_active(pp->lensProf.useDist); + ckbUseVign->set_active(pp->lensProf.useVign && isRaw); ckbUseCA->set_active(pp->lensProf.useCA && isRaw && ckbUseCA->get_sensitive()); - - enableListener (); + + enableListener(); conUseDist.block(false); } @@ -234,33 +241,43 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa void LensProfilePanel::updateLensfunWarning() { warning->hide(); + if (corrLensfunManual->get_active() || corrLensfunAuto->get_active()) { const LFDatabase *db = LFDatabase::getInstance(); - + auto itc = lensfunCameras->get_active(); + if (!itc) { return; } + LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); auto itl = lensfunLenses->get_active(); + if (!itl) { return; } + LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); float lenscrop = l.getCropFactor(); float camcrop = c.getCropFactor(); + if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { warning->show(); } + ckbUseVign->set_sensitive(l.hasVignettingCorrection()); ckbUseDist->set_sensitive(l.hasDistortionCorrection()); ckbUseCA->set_sensitive(l.hasCACorrection()); + if (!isRaw || !l.hasVignettingCorrection()) { ckbUseVign->set_active(false); } + if (!l.hasDistortionCorrection()) { ckbUseDist->set_active(false); } + if (!l.hasCACorrection()) { ckbUseCA->set_active(false); } @@ -284,15 +301,15 @@ void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMet metadata = pMeta; } -void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) +void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { if (corrLcpFile->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if(corrLensfunManual->get_active()) { + } else if (corrLensfunManual->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if(corrLensfunAuto->get_active()) { + } else if (corrLensfunAuto->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if(corrOff->get_active()) { + } else if (corrOff->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } @@ -307,6 +324,7 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited pp->lensProf.useCA = ckbUseCA->get_active(); auto itc = lensfunCameras->get_active(); + if (itc) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; pp->lensProf.lfCameraModel = (*itc)[lf->lensfunModelCam.model]; @@ -314,7 +332,9 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited pp->lensProf.lfCameraMake = ""; pp->lensProf.lfCameraModel = ""; } + auto itl = lensfunLenses->get_active(); + if (itl) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; } else { @@ -347,7 +367,8 @@ void LensProfilePanel::onLCPFileChanged() corrLcpFile->set_active(true); enableListener(); } - listener->panelChanged (EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); + + listener->panelChanged(EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); } } @@ -356,7 +377,7 @@ void LensProfilePanel::onUseDistChanged() useDistChanged = true; if (listener) { - listener->panelChanged (EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } void LensProfilePanel::onUseVignChanged() @@ -364,7 +385,7 @@ void LensProfilePanel::onUseVignChanged() useVignChanged = true; if (listener) { - listener->panelChanged (EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } void LensProfilePanel::onUseCAChanged() @@ -372,7 +393,7 @@ void LensProfilePanel::onUseCAChanged() useCAChanged = true; if (listener) { - listener->panelChanged (EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } @@ -386,6 +407,7 @@ void LensProfilePanel::updateDisabled(bool enable) void LensProfilePanel::setBatchMode(bool yes) { FoldableToolPanel::setBatchMode(yes); + if (yes) { corrUnchanged->show(); corrUnchanged->set_active(true); @@ -399,25 +421,30 @@ bool LensProfilePanel::setLensfunCamera(const Glib::ustring &make, const Glib::u { if (!make.empty() && !model.empty()) { auto it = lensfunCameras->get_active(); + if (it && (*it)[lf->lensfunModelCam.make] == make && (*it)[lf->lensfunModelCam.model] == model) { return true; } - + // search for the active row for (auto row : lf->lensfunCameraModel->children()) { if (row[lf->lensfunModelCam.make] == make) { auto &c = row.children(); + for (auto it = c.begin(), end = c.end(); it != end; ++it) { auto &childrow = *it; + if (childrow[lf->lensfunModelCam.model] == model) { lensfunCameras->set_active(it); return true; } } + break; } } } + lensfunCameras->set_active(-1); return false; } @@ -427,21 +454,26 @@ bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) { if (!lens.empty()) { auto it = lensfunLenses->get_active(); + if (it && (*it)[lf->lensfunModelLens.lens] == lens) { return true; } bool first_maker_found = false; + for (auto row : lf->lensfunLensModel->children()) { if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { auto &c = row.children(); + for (auto it = c.begin(), end = c.end(); it != end; ++it) { auto &childrow = *it; + if (childrow[lf->lensfunModelLens.lens] == lens) { lensfunLenses->set_active(it); return true; } } + // we do not break immediately here, because there might be multiple makers // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). // therefore, we break below when the lens doesn't match any of them @@ -451,6 +483,7 @@ bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) } } } + lensfunLenses->set_active(-1); return false; } @@ -468,7 +501,7 @@ void LensProfilePanel::onLensfunCameraChanged() disableListener(); corrLensfunManual->set_active(true); enableListener(); - + Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; listener->panelChanged(EvLensCorrLensfunCamera, name); } @@ -489,7 +522,7 @@ void LensProfilePanel::onLensfunLensChanged() disableListener(); corrLensfunManual->set_active(true); enableListener(); - + Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; listener->panelChanged(EvLensCorrLensfunLens, name); } @@ -533,6 +566,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); + if (b) { enableListener(); } @@ -590,6 +624,7 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) if (!metadata) { return false; } + rtengine::procparams::ProcParams lpp; write(&lpp); std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); @@ -604,24 +639,24 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) LensProfilePanel::LFDbHelper::LFDbHelper() { #ifdef _OPENMP -#pragma omp parallel sections if (!options.rtSettings.verbose) + #pragma omp parallel sections if (!options.rtSettings.verbose) #endif -{ + { #ifdef _OPENMP -#pragma omp section + #pragma omp section #endif -{ - lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); - fillLensfunCameras(); -} + { + lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); + fillLensfunCameras(); + } #ifdef _OPENMP -#pragma omp section + #pragma omp section #endif -{ - lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); - fillLensfunLenses(); -} -} + { + lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); + fillLensfunLenses(); + } + } } void LensProfilePanel::LFDbHelper::fillLensfunCameras() @@ -629,19 +664,23 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() if (options.rtSettings.verbose) { std::cout << "LENSFUN, scanning cameras:" << std::endl; } + std::map> camnames; auto camlist = LFDatabase::getInstance()->getCameras(); + for (auto &c : camlist) { camnames[c.getMake()].insert(c.getModel()); if (options.rtSettings.verbose) { std::cout << " found: " << c.getDisplayString().c_str() << std::endl; - } + } } + for (auto &p : camnames) { Gtk::TreeModel::Row row = *(lensfunCameraModel->append()); row[lensfunModelCam.make] = p.first; row[lensfunModelCam.model] = p.first; + for (auto &c : p.second) { Gtk::TreeModel::Row child = *(lensfunCameraModel->append(row.children())); child[lensfunModelCam.make] = p.first; @@ -656,8 +695,10 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() if (options.rtSettings.verbose) { std::cout << "LENSFUN, scanning lenses:" << std::endl; } + std::map> lenses; auto lenslist = LFDatabase::getInstance()->getLenses(); + for (auto &l : lenslist) { auto name = l.getLens(); auto make = l.getMake(); @@ -667,15 +708,18 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() std::cout << " found: " << l.getDisplayString().c_str() << std::endl; } } + for (auto &p : lenses) { Gtk::TreeModel::Row row = *(lensfunLensModel->append()); row[lensfunModelLens.lens] = p.first; row[lensfunModelLens.prettylens] = p.first; + for (auto &c : p.second) { Gtk::TreeModel::Row child = *(lensfunLensModel->append(row.children())); child[lensfunModelLens.lens] = c; - if (c.find(p.first, p.first.size()+1) == p.first.size()+1) { - child[lensfunModelLens.prettylens] = c.substr(p.first.size()+1); + + if (c.find(p.first, p.first.size() + 1) == p.first.size() + 1) { + child[lensfunModelLens.prettylens] = c.substr(p.first.size() + 1); } else { child[lensfunModelLens.prettylens] = c; } diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 8c814e6fc..692005d01 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -50,25 +50,36 @@ protected: MyComboBox *lensfunLenses; Gtk::Image *warning; - class LFDbHelper { + class LFDbHelper + { public: - class LFModelCam: public Gtk::TreeModel::ColumnRecord { + class LFModelCam: public Gtk::TreeModel::ColumnRecord + { public: - LFModelCam() { add(make); add(model); } + LFModelCam() + { + add(make); + add(model); + } Gtk::TreeModelColumn make; Gtk::TreeModelColumn model; }; - class LFModelLens: public Gtk::TreeModel::ColumnRecord { + class LFModelLens: public Gtk::TreeModel::ColumnRecord + { public: - LFModelLens() { add(lens); add(prettylens); } + LFModelLens() + { + add(lens); + add(prettylens); + } Gtk::TreeModelColumn lens; Gtk::TreeModelColumn prettylens; }; LFModelCam lensfunModelCam; LFModelLens lensfunModelLens; - + Glib::RefPtr lensfunCameraModel; Glib::RefPtr lensfunLensModel; @@ -87,16 +98,16 @@ protected: bool setLensfunLens(const Glib::ustring &lens); bool checkLensfunCanCorrect(bool automatch); void updateLensfunWarning(); - + public: - LensProfilePanel (); + LensProfilePanel(); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setRawMeta (bool raw, const rtengine::FramesMetaData* pMeta); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - void onLCPFileChanged (); + void onLCPFileChanged(); void onUseDistChanged(); void onUseVignChanged(); void onUseCAChanged(); From ff6d02fd71591ed60bbac5abb9ee6825572296b1 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 19 Nov 2018 14:12:28 +0100 Subject: [PATCH 172/348] Hide manual lens correction widgets when not needed - The comboboxes and their respective labels for manually specifying a camera and lens are now hidden when not in manual mode to not confuse the user. - All Lens Correction Profile widgets are now aligned. - Labels changed to not mislead users - the tool lets you select a lens profile, but it does not let you manually specify the individual correction parameters as previously implied. Closes #4995, closes #4997 --- rtdata/languages/Catala | 6 - rtdata/languages/Chinese (Simplified) | 6 - rtdata/languages/Chinese (Traditional) | 6 - rtdata/languages/Czech | 6 - rtdata/languages/Dansk | 6 - rtdata/languages/Deutsch | 6 - rtdata/languages/English (UK) | 6 - rtdata/languages/English (US) | 6 - rtdata/languages/Espanol | 6 - rtdata/languages/Euskara | 6 - rtdata/languages/Francais | 6 - rtdata/languages/Greek | 6 - rtdata/languages/Hebrew | 6 - rtdata/languages/Italiano | 6 - rtdata/languages/Japanese | 6 - rtdata/languages/Latvian | 6 - rtdata/languages/Magyar | 6 - rtdata/languages/Nederlands | 6 - rtdata/languages/Norsk BM | 6 - rtdata/languages/Polish | 6 - rtdata/languages/Polish (Latin Characters) | 6 - rtdata/languages/Portugues (Brasil) | 6 - rtdata/languages/Russian | 6 - rtdata/languages/Serbian (Cyrilic Characters) | 6 - rtdata/languages/Serbian (Latin Characters) | 6 - rtdata/languages/Slovak | 6 - rtdata/languages/Suomi | 6 - rtdata/languages/Swedish | 6 - rtdata/languages/Turkish | 6 - rtdata/languages/default | 16 +- rtgui/lensprofile.cc | 261 +++++++++++------- rtgui/lensprofile.h | 21 +- 32 files changed, 189 insertions(+), 283 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index bd9cb8359..8e2cbc611 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -790,9 +790,6 @@ TP_LENSGEOM_AUTOCROP;Auto cropa TP_LENSGEOM_FILL;Auto omple TP_LENSGEOM_LABEL;Lent / Geometria TP_LENSPROFILE_LABEL;Perfil de correcció de lent -TP_LENSPROFILE_USECA;Usa correcció AC -TP_LENSPROFILE_USEDIST;Correcció de distorsió -TP_LENSPROFILE_USEVIGN;Correcció de vores fosques TP_NEUTRAL_TIP;Torna els controls d'exposició a valors neutrals TP_PERSPECTIVE_HORIZONTAL;Horitzontal TP_PERSPECTIVE_LABEL;Perspectiva @@ -1431,9 +1428,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 5478d820a..ef507b9f3 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -878,9 +878,6 @@ TP_LENSGEOM_AUTOCROP;自动剪切 TP_LENSGEOM_FILL;自动填充 TP_LENSGEOM_LABEL;镜头 / 几何 TP_LENSPROFILE_LABEL;镜头矫正档案 -TP_LENSPROFILE_USECA;色散矫正 -TP_LENSPROFILE_USEDIST;畸变矫正 -TP_LENSPROFILE_USEVIGN;暗角矫正 TP_PCVIGNETTE_FEATHER;羽化 TP_PCVIGNETTE_LABEL;暗角滤镜 TP_PCVIGNETTE_ROUNDNESS;圆度 @@ -1507,9 +1504,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 9404a8a6b..5d8cc106a 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1093,9 +1093,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1827,9 +1824,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index caaba31bb..2b2c257ce 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -811,9 +811,6 @@ 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 @@ -1687,9 +1684,6 @@ TP_LENSGEOM_AUTOCROP;Automatický ořez TP_LENSGEOM_FILL;Automatické vyplnění TP_LENSGEOM_LABEL;Objektiv / Geometrie TP_LENSPROFILE_LABEL;Korekční profily objektivů -TP_LENSPROFILE_USECA;Korekce chromatické aberace -TP_LENSPROFILE_USEDIST;Korekce zkreslení -TP_LENSPROFILE_USEVIGN;Korekce vinětace TP_LOCALCONTRAST_AMOUNT;Míra TP_LOCALCONTRAST_DARKNESS;Úroveň tmavé TP_LOCALCONTRAST_LABEL;Místní kontrast diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index aaa58fce2..8dc73105b 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1088,9 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 14debc30f..f354c45e9 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -910,9 +910,6 @@ IPTCPANEL_TITLE;Titel IPTCPANEL_TITLEHINT;Geben Sie einen kurzen lesbaren Namen\nfür das Bild ein, z.B. den Dateinamen. IPTCPANEL_TRANSREFERENCE;Verarbeitungs-ID IPTCPANEL_TRANSREFERENCEHINT;Geben Sie eine Kennung zur Kontrolle oder\nVerfolgung des Arbeitsablaufes ein. -LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) -LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei -LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun) LENSPROFILE_LENS_WARNING;Warnung: Der Cropfaktor des Profils entspricht nicht dem des Objektivs.\nDies kann zu einem fehlerhaften Ergebnis führen. MAIN_BUTTON_FULLSCREEN;Vollbild\nTaste: F11 MAIN_BUTTON_ICCPROFCREATOR;ICC-Profil erstellen. @@ -1816,9 +1813,6 @@ TP_LENSGEOM_AUTOCROP;Auto-Schneiden TP_LENSGEOM_FILL;Auto-Füllen TP_LENSGEOM_LABEL;Objektivkorrekturen 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 diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 791a913ee..c53038f87 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -949,9 +949,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1790,9 +1787,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index fe7565d28..67c025236 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -861,9 +861,6 @@ !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1774,9 +1771,6 @@ !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index b70f2b3a7..84d268726 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1279,9 +1279,6 @@ TP_LENSGEOM_AUTOCROP;Auto recorte TP_LENSGEOM_FILL;Auto relleno TP_LENSGEOM_LABEL;Lente / Geometría TP_LENSPROFILE_LABEL;Perfil de corrección de lente -TP_LENSPROFILE_USECA;Corrección de AC -TP_LENSPROFILE_USEDIST;Corrección de distorsión -TP_LENSPROFILE_USEVIGN;Corrección de viñeteo TP_NEUTRAL_TIP;Restablecer controles de exposición a valores neutros\nAplica a los mismos controles que son afectados por Niveles Automáticos, sin importar si usa o no Niveles Automáticos TP_PCVIGNETTE_FEATHER;Difuminado TP_PCVIGNETTE_FEATHER_TOOLTIP;Difuminación: \n0=Solo Esquinas\n50=Hasta medio camino al centro\n100=Hasta el Centro @@ -1814,9 +1811,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 19ec9ba7d..1cd513ef4 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 34c74ea67..cfbb04dc3 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -860,9 +860,6 @@ IPTCPANEL_TITLE;Titre IPTCPANEL_TITLEHINT;Enterez un nom court et humainement lisible pour l'image, cela peut être le nom du fichier. IPTCPANEL_TRANSREFERENCE;ID du travail IPTCPANEL_TRANSREFERENCEHINT;Enterez un nombre ou identifiant servant au contrôle du flux de travail ou au suivi. -LENSPROFILE_CORRECTION_AUTOMATCH;Paramètres de correction trouvés automatiquement -LENSPROFILE_CORRECTION_LCPFILE;Fichier LCP -LENSPROFILE_CORRECTION_MANUAL;Paramètres de correction manuel LENSPROFILE_LENS_WARNING;Attention: la taille du capteur utilisé pour le profilage de l'objectif est plus grand que celui de l'appareil sélectionné, le résultat peut être faux. MAIN_BUTTON_FULLSCREEN;Plein écran MAIN_BUTTON_ICCPROFCREATOR;Créateur de Profil ICC @@ -1787,9 +1784,6 @@ TP_LENSGEOM_AUTOCROP;Recadrage auto TP_LENSGEOM_FILL;Remplir TP_LENSGEOM_LABEL;Objectif / Géométrie 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 diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 761d0ea77..d2d7335ac 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1088,9 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index d909f15c4..73b2752bf 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 173fb2a23..a3fcd92dc 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1130,9 +1130,6 @@ TP_LENSGEOM_AUTOCROP; Ritaglio automatico TP_LENSGEOM_FILL;Adattamento automatico TP_LENSGEOM_LABEL;Obiettivo/Geometria TP_LENSPROFILE_LABEL;Profilo di Correzione dell'Obiettivo -TP_LENSPROFILE_USECA;Correzione dell'Aberrazione Cromatica (AC) -TP_LENSPROFILE_USEDIST;Correzione della Distorsione -TP_LENSPROFILE_USEVIGN;Correzione della Vignettatura TP_NEUTRAL_TIP;Riporta i controlli dell'esposizione ai valori neutrali.\nVale per gli stessi controlli cui è applicato Livelli Automatici, indipendentemente dal fatto che Livelli Automatici sia abilitato. TP_PCVIGNETTE_FEATHER;Scia TP_PCVIGNETTE_FEATHER_TOOLTIP;Scia:\n0 = solo i bordi,\n50 = a metà strada con il centro,\n100 = al centro. @@ -1689,9 +1686,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index e36e77efb..0ebb061a1 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -892,9 +892,6 @@ IPTCPANEL_TITLE;タイトル IPTCPANEL_TITLEHINT;画像を短く表す言葉や撮影者名、或いは画像のタイトルでもよい IPTCPANEL_TRANSREFERENCE;作業のID IPTCPANEL_TRANSREFERENCEHINT;作業工程の管理やトラッキングのための画像の数字或いは識別 -LENSPROFILE_CORRECTION_AUTOMATCH;自動でパラメータを補正する -LENSPROFILE_CORRECTION_LCPFILE;LCPファイル -LENSPROFILE_CORRECTION_MANUAL;手動でパラメータを補正する LENSPROFILE_LENS_WARNING;注意:レンズプロファイルに関する切り抜きの因数がカメラの因数より大きいと、誤った結果になるかもしれません MAIN_BUTTON_FULLSCREEN;フルスクリーン MAIN_BUTTON_ICCPROFCREATOR;ICCプロファイルクリエーター @@ -1805,9 +1802,6 @@ TP_LENSGEOM_AUTOCROP;自動的に切り抜き選択 TP_LENSGEOM_FILL;オートフィル TP_LENSGEOM_LABEL;レンズ / ジオメトリ TP_LENSPROFILE_LABEL;レンズ補正 プロファイル -TP_LENSPROFILE_USECA;色収差補正 -TP_LENSPROFILE_USEDIST;歪曲収差補正 -TP_LENSPROFILE_USEVIGN;周辺光量補正 TP_LOCALCONTRAST_AMOUNT;量 TP_LOCALCONTRAST_DARKNESS;暗い部分のレベル TP_LOCALCONTRAST_LABEL;ローカルコントラスト diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 22847390d..47006479f 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 600877671..b64b83f16 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1361,9 +1361,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1918,9 +1915,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. !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 diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 315868150..ba0873377 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -1575,9 +1575,6 @@ TP_LENSGEOM_AUTOCROP;Automatisch bijsnijden TP_LENSGEOM_FILL;Automatisch uitvullen TP_LENSGEOM_LABEL;Objectief / Geometrie TP_LENSPROFILE_LABEL;Lenscorrectie Profielen -TP_LENSPROFILE_USECA;CA correctie -TP_LENSPROFILE_USEDIST;Lensvervorming correctie -TP_LENSPROFILE_USEVIGN;Vignettering correctie TP_NEUTRAL;Terugzetten TP_NEUTRAL_TIP;Alle belichtingsinstellingen naar 0 TP_PCVIGNETTE_FEATHER;Straal @@ -2198,9 +2195,6 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 9ec4fc6e2..00c8532f8 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1088,9 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index ec60c307f..67f37623f 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1236,9 +1236,6 @@ TP_LENSGEOM_AUTOCROP;Auto-kadrowanie TP_LENSGEOM_FILL;Auto-wypełnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP -TP_LENSPROFILE_USECA;Korekja aberacji chromatycznej -TP_LENSPROFILE_USEDIST;Korekcja dystorsji -TP_LENSPROFILE_USEVIGN;Korekcja winietowania TP_NEUTRAL_TIP;Zresetuj ustawienia do wartości neutralnych.\nDziała na tych samych suwakach na których funkcja "Wyrównaj poziomy" działa, niezależnie od tego czy funkcja ta była użyta czy nie. TP_PCVIGNETTE_FEATHER;Wtapianie TP_PCVIGNETTE_FEATHER_TOOLTIP;Wtapianie:\n0 = tylko brzegi,\n50 = w pół drogi do środka,\n100 = aż do środka. @@ -1771,9 +1768,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index a75a3c475..3a3c360b4 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1236,9 +1236,6 @@ TP_LENSGEOM_AUTOCROP;Auto-kadrowanie TP_LENSGEOM_FILL;Auto-wypelnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP -TP_LENSPROFILE_USECA;Korekja aberacji chromatycznej -TP_LENSPROFILE_USEDIST;Korekcja dystorsji -TP_LENSPROFILE_USEVIGN;Korekcja winietowania TP_NEUTRAL_TIP;Zresetuj ustawienia do wartosci neutralnych.\nDziala na tych samych suwakach na ktorych funkcja "Wyrownaj poziomy" dziala, niezaleznie od tego czy funkcja ta byla uzyta czy nie. TP_PCVIGNETTE_FEATHER;Wtapianie TP_PCVIGNETTE_FEATHER_TOOLTIP;Wtapianie:\n0 = tylko brzegi,\n50 = w pol drogi do srodka,\n100 = az do srodka. @@ -1771,9 +1768,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index cb2c20e1a..d2c5077f2 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -835,9 +835,6 @@ IPTCPANEL_TITLE;Título IPTCPANEL_TITLEHINT;Digite um nome curto e legível para a imagem, pode ser o nome do arquivo. IPTCPANEL_TRANSREFERENCE;Job ID IPTCPANEL_TRANSREFERENCEHINT;Digite um número ou identificador necessário para controle ou rastreamento do fluxo de trabalho. -LENSPROFILE_CORRECTION_AUTOMATCH;Parâmetros de correção de correspondência automática -LENSPROFILE_CORRECTION_LCPFILE;Arquivo LCP -LENSPROFILE_CORRECTION_MANUAL;Parâmetros de correção manual LENSPROFILE_LENS_WARNING;Aviso: o fator de corte usado para o perfil da lente é maior que o fator de corte da câmera, os resultados podem estar errados. MAIN_BUTTON_FULLSCREEN;Tela cheia MAIN_BUTTON_ICCPROFCREATOR;Criador de Perfil ICC @@ -1729,9 +1726,6 @@ TP_LENSGEOM_AUTOCROP;Corte automático TP_LENSGEOM_FILL;Preenchimento automático TP_LENSGEOM_LABEL;Lente / Geometria TP_LENSPROFILE_LABEL;Correção de lente perfilada -TP_LENSPROFILE_USECA;Correção da aberração cromática -TP_LENSPROFILE_USEDIST;Correção de distorção -TP_LENSPROFILE_USEVIGN;Correção de vinheta TP_LOCALCONTRAST_AMOUNT;Montante TP_LOCALCONTRAST_DARKNESS;Nível de escuridão TP_LOCALCONTRAST_LABEL;Contraste Local diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 6769dd724..a0d3d1e85 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -538,9 +538,6 @@ IPTCPANEL_RESET;Сбросить IPTCPANEL_RESETHINT;Сбросить профиль на значения по умолчанию IPTCPANEL_SOURCE;Источник IPTCPANEL_TITLE;Название -LENSPROFILE_CORRECTION_AUTOMATCH;Автоподбор параметров коррекции -LENSPROFILE_CORRECTION_LCPFILE;Файл LCP -LENSPROFILE_CORRECTION_MANUAL;Ручные параметры коррекции LENSPROFILE_LENS_WARNING;Внимание: кроп-фактор используемый для анализа объектива больше чем кроп-фактор камеры, результаты могут быть не верны. MAIN_BUTTON_FULLSCREEN;Полный экран MAIN_BUTTON_NAVNEXT_TOOLTIP;Перейти к следующему изображению относительно открытого в редакторе\nГорячая клавиша: Shift+F4\n\nПерейти к следущему изображению относительно выбранного в файловом браузере\nгорячая клавиша F4 @@ -1222,9 +1219,6 @@ TP_LENSGEOM_AUTOCROP;Автокадрирование TP_LENSGEOM_FILL;Автозаполнение TP_LENSGEOM_LABEL;Геометрия TP_LENSPROFILE_LABEL;Профиль коррекции объектива -TP_LENSPROFILE_USECA;Корректировать ХА -TP_LENSPROFILE_USEDIST;Корректировать дисторсию -TP_LENSPROFILE_USEVIGN;Корректировать виньетирование TP_LOCALCONTRAST_AMOUNT;Величина TP_LOCALCONTRAST_DARKNESS;Тёмные тона TP_LOCALCONTRAST_LABEL;Локальный контраст diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 080824fed..2f5de7b52 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1086,9 +1086,6 @@ TP_LENSGEOM_AUTOCROP;Сам исеци TP_LENSGEOM_FILL;Сам попуни TP_LENSGEOM_LABEL;Објектив и геометрија TP_LENSPROFILE_LABEL;Профили за исправљање изобличења објектива -TP_LENSPROFILE_USECA;Исправљање хром. аберација -TP_LENSPROFILE_USEDIST;Исправљање изобличења -TP_LENSPROFILE_USEVIGN;Исправљање вињетарења TP_NEUTRAL;Неутрално TP_NEUTRAL_TIP;Враћа клизаче експозиције на неутралне вредности.\nПримењује се на исте контроле као у Ауто нивои, без обзира на то да ли сте користили Ауто нивое или не. TP_PCVIGNETTE_FEATHER;Умекшавање @@ -1665,9 +1662,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index b0d929858..061b90fba 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1086,9 +1086,6 @@ TP_LENSGEOM_AUTOCROP;Sam iseci TP_LENSGEOM_FILL;Sam popuni TP_LENSGEOM_LABEL;Objektiv i geometrija TP_LENSPROFILE_LABEL;Profili za ispravljanje izobličenja objektiva -TP_LENSPROFILE_USECA;Ispravljanje hrom. aberacija -TP_LENSPROFILE_USEDIST;Ispravljanje izobličenja -TP_LENSPROFILE_USEVIGN;Ispravljanje vinjetarenja TP_NEUTRAL;Neutralno TP_NEUTRAL_TIP;Vraća klizače ekspozicije na neutralne vrednosti.\nPrimenjuje se na iste kontrole kao u Auto nivoi, bez obzira na to da li ste koristili Auto nivoe ili ne. TP_PCVIGNETTE_FEATHER;Umekšavanje @@ -1665,9 +1662,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 3f8854ae8..fdad901a6 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1151,9 +1151,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1845,9 +1842,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. !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 diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index e304366b7..2875e4a0b 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1090,9 +1090,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1825,9 +1822,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 3c56bbcd1..ee2af3156 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1440,9 +1440,6 @@ TP_LENSGEOM_AUTOCROP;Autobeskärning TP_LENSGEOM_FILL;Fyll automatiskt TP_LENSGEOM_LABEL;Geometrisk- och distorsionskorrigering TP_LENSPROFILE_LABEL;Objektivkorrigeringsprofil -TP_LENSPROFILE_USECA;Korrigera för kromatiska abberationer -TP_LENSPROFILE_USEDIST;Korrigera distorsion -TP_LENSPROFILE_USEVIGN;Korrigera vinjettering TP_NEUTRAL;Återställ TP_NEUTRAL_TIP;Återställ exponeringsreglagen till neutrala värden.\nGäller för samma reglage som autonivåer, oavsett om du använder autonivåer eller ej TP_PCVIGNETTE_FEATHER;Fjäder @@ -2026,9 +2023,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 812f70f4b..d63d13825 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1089,9 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Isı !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator @@ -1824,9 +1821,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry !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 diff --git a/rtdata/languages/default b/rtdata/languages/default index 02ded5378..7fadbaa72 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -860,10 +860,6 @@ IPTCPANEL_TITLE;Title IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. IPTCPANEL_TRANSREFERENCE;Job ID IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -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_BUTTON_FULLSCREEN;Fullscreen MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1772,10 +1768,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. TP_LENSGEOM_AUTOCROP;Auto-Crop TP_LENSGEOM_FILL;Auto-fill TP_LENSGEOM_LABEL;Lens / Geometry +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +TP_LENSPROFILE_CORRECTION_MANUAL;Manually TP_LENSPROFILE_LABEL;Profiled Lens Correction -TP_LENSPROFILE_USECA;Chromatic aberration correction -TP_LENSPROFILE_USEDIST;Distortion correction -TP_LENSPROFILE_USEVIGN;Vignetting correction +TP_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. +TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +TP_LENSPROFILE_USE_CA;Chromatic aberration +TP_LENSPROFILE_USE_GEOMETRIC;Geometric +TP_LENSPROFILE_USE_VIGNETTING;Vignetting TP_LOCALCONTRAST_AMOUNT;Amount TP_LOCALCONTRAST_DARKNESS;Darkness level TP_LOCALCONTRAST_LABEL;Local Contrast diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index e67a4e589..1158928e5 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -49,103 +49,157 @@ LensProfilePanel::LensProfilePanel() : lf = new LFDbHelper(); } - corrUnchanged = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); - pack_start(*corrUnchanged); - corrGroup = corrUnchanged->get_group(); - corrOff = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); - pack_start(*corrOff); + // Main containers: - corrLensfunAuto = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_AUTOMATCH"))); - pack_start(*corrLensfunAuto); + modesGrid = Gtk::manage(new Gtk::Grid()); + modesGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - corrLensfunManual = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_MANUAL"))); - pack_start(*corrLensfunManual); + distGrid = Gtk::manage(new Gtk::Grid()); + distGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + + + // Mode choice widgets: + + Gtk::Label *corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); + setExpandAlignProperties(corrHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + + corrUnchangedRB = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); + corrUnchangedRB->hide(); + corrGroup = corrUnchangedRB->get_group(); + + corrOffRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); + + corrLensfunAutoRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))); + + corrLensfunManualRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))); + + corrLcpFileRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))); + corrLcpFileChooser = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); + setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + + + // Manually-selected profile widgets: + + lensfunCamerasLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))); + setExpandAlignProperties(lensfunCamerasLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); lensfunCameras = Gtk::manage(new MyComboBox()); lensfunCameras->set_model(lf->lensfunCameraModel); lensfunCameras->pack_start(lf->lensfunModelCam.model); + lensfunCameras->setPreferredWidth(50, 120); + setExpandAlignProperties(lensfunCameras, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + Gtk::CellRendererText* cellRenderer = dynamic_cast(lensfunCameras->get_first_cell()); cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; cellRenderer->property_ellipsize_set() = true; - lensfunCameras->setPreferredWidth(50, 120); + + lensfunLensesLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))); + setExpandAlignProperties(lensfunLensesLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); lensfunLenses = Gtk::manage(new MyComboBox()); lensfunLenses->set_model(lf->lensfunLensModel); lensfunLenses->pack_start(lf->lensfunModelLens.prettylens); + lensfunLenses->setPreferredWidth(50, 120); + setExpandAlignProperties(lensfunLenses, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + cellRenderer = dynamic_cast(lensfunLenses->get_first_cell()); cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; cellRenderer->property_ellipsize_set() = true; - lensfunLenses->setPreferredWidth(50, 120); - Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))), Gtk::PACK_SHRINK, 4); - hb->pack_start(*lensfunCameras); - pack_start(*hb); - - hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))), Gtk::PACK_SHRINK, 4); - hb->pack_start(*lensfunLenses); warning = Gtk::manage(new Gtk::Image()); warning->set_from_icon_name("dialog-warning", Gtk::ICON_SIZE_LARGE_TOOLBAR); - warning->set_tooltip_text(M("LENSPROFILE_LENS_WARNING")); + warning->set_tooltip_text(M("TP_LENSPROFILE_LENS_WARNING")); warning->hide(); - hb->pack_start(*warning, Gtk::PACK_SHRINK, 4); - pack_start(*hb); - corrLcpFile = Gtk::manage(new Gtk::RadioButton(corrGroup)); - hbLCPFile = Gtk::manage(new Gtk::HBox()); - hbLCPFile->pack_start(*corrLcpFile, Gtk::PACK_SHRINK); - lLCPFileHead = Gtk::manage(new Gtk::Label(M("LENSPROFILE_CORRECTION_LCPFILE"))); - hbLCPFile->pack_start(*lLCPFileHead, Gtk::PACK_SHRINK, 4); - fcbLCPFile = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); + // LCP file filter config: Glib::RefPtr filterLCP = Gtk::FileFilter::create(); filterLCP->set_name(M("FILECHOOSER_FILTER_LCP")); filterLCP->add_pattern("*.lcp"); filterLCP->add_pattern("*.LCP"); - fcbLCPFile->add_filter(filterLCP); + corrLcpFileChooser->add_filter(filterLCP); Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); if (!defDir.empty()) { #ifdef WIN32 - fcbLCPFile->set_show_hidden(true); // ProgramData is hidden on Windows + corrLcpFileChooser->set_show_hidden(true); // ProgramData is hidden on Windows #endif - fcbLCPFile->set_current_folder(defDir); + corrLcpFileChooser->set_current_folder(defDir); } else if (!options.lastLensProfileDir.empty()) { - fcbLCPFile->set_current_folder(options.lastLensProfileDir); + corrLcpFileChooser->set_current_folder(options.lastLensProfileDir); } - bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); + bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); - hbLCPFile->pack_start(*fcbLCPFile); - pack_start(*hbLCPFile, Gtk::PACK_SHRINK, 4); - ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEDIST"))); - pack_start(*ckbUseDist, Gtk::PACK_SHRINK, 4); - ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USEVIGN"))); - pack_start(*ckbUseVign, Gtk::PACK_SHRINK, 4); - ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USECA"))); - pack_start(*ckbUseCA, Gtk::PACK_SHRINK, 4); + // Choice of properties to correct, applicable to all modes: - conLCPFile = fcbLCPFile->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); + Gtk::Label *useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); + setExpandAlignProperties(useHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + + ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))); + ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))); + ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))); + + + + // Populate modes grid: + + modesGrid->attach(*corrHeaderLbl, 0, 0, 2, 1); + modesGrid->attach(*corrOffRB, 0, 1, 2, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 2, 2, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 3, 2, 1); + + modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); + modesGrid->attach(*warning, 2, 5, 1, 1); + + modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 6, 1, 1); + + + + // Populate distortions grid: + + distGrid->attach(*useHeaderLbl, 0, 0, 1, 1); + distGrid->attach(*ckbUseDist, 0, 1, 1, 1); + distGrid->attach(*ckbUseVign, 0, 2, 1, 1); + distGrid->attach(*ckbUseCA, 0, 3, 1, 1); + + + + // Attach grids: + + pack_start(*modesGrid); + pack_start(*distGrid); + + + + // Signals: + + conLCPFile = corrLcpFileChooser->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); conUseDist = ckbUseDist->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged)); ckbUseVign->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged)); ckbUseCA->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged)); lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged)); lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged)); - corrOff->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOff)); - corrLensfunAuto->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAuto)); - corrLensfunManual->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManual)); - corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile)); - - corrUnchanged->hide(); + corrOffRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOffRB)); + corrLensfunAutoRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAutoRB)); + corrLensfunManualRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManualRB)); + corrLcpFileRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFileRB)); allowFocusDep = true; } @@ -156,42 +210,42 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa conUseDist.block(true); if (!batchMode) { - corrUnchanged->hide(); + corrUnchangedRB->hide(); } - corrLensfunAuto->set_sensitive(true); + corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP : - corrLcpFile->set_active(true); + corrLcpFileRB->set_active(true); break; case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : - corrLensfunAuto->set_active(true); + corrLensfunAutoRB->set_active(true); break; case procparams::LensProfParams::LcMode::LENSFUNMANUAL : - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); break; case procparams::LensProfParams::LcMode::NONE : - corrOff->set_active(true); + corrOffRB->set_active(true); } if (pp->lensProf.lcpFile.empty()) { - Glib::ustring lastFolder = fcbLCPFile->get_current_folder(); - fcbLCPFile->set_current_folder(lastFolder); - fcbLCPFile->unselect_all(); - bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); + Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); + corrLcpFileChooser->set_current_folder(lastFolder); + corrLcpFileChooser->unselect_all(); + bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); updateDisabled(false); } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { - fcbLCPFile->set_filename(pp->lensProf.lcpFile); + corrLcpFileChooser->set_filename(pp->lensProf.lcpFile); - if (corrLcpFile->get_active()) { + if (corrLcpFileRB->get_active()) { updateDisabled(true); } } else { - fcbLCPFile->unselect_filename(fcbLCPFile->get_filename()); + corrLcpFileChooser->unselect_filename(corrLcpFileChooser->get_filename()); updateDisabled(false); } @@ -216,15 +270,15 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; if (!batchMode && !checkLensfunCanCorrect(true)) { - if (corrLensfunAuto->get_active()) { - corrOff->set_active(true); + if (corrLensfunAutoRB->get_active()) { + corrOffRB->set_active(true); } - corrLensfunAuto->set_sensitive(false); + corrLensfunAutoRB->set_sensitive(false); } - if (corrLensfunManual->get_active() && !checkLensfunCanCorrect(false)) { - corrOff->set_active(true); + if (corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { + corrOffRB->set_active(true); } updateLensfunWarning(); @@ -237,12 +291,28 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa conUseDist.block(false); } +void LensProfilePanel::setManualParamsVisibility(bool setVisible) +{ + if (setVisible) { + lensfunCamerasLbl->show(); + lensfunCameras->show(); + lensfunLensesLbl->show(); + lensfunLenses->show(); + updateLensfunWarning(); + } else { + lensfunCamerasLbl->hide(); + lensfunCameras->hide(); + lensfunLensesLbl->hide(); + lensfunLenses->hide(); + warning->hide(); + } +} void LensProfilePanel::updateLensfunWarning() { warning->hide(); - if (corrLensfunManual->get_active() || corrLensfunAuto->get_active()) { + if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { const LFDatabase *db = LFDatabase::getInstance(); auto itc = lensfunCameras->get_active(); @@ -303,18 +373,18 @@ void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMet void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { - if (corrLcpFile->get_active()) { + if (corrLcpFileRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if (corrLensfunManual->get_active()) { + } else if (corrLensfunManualRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if (corrLensfunAuto->get_active()) { + } else if (corrLensfunAutoRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if (corrOff->get_active()) { + } else if (corrOffRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } - if (LCPStore::getInstance()->isValidLCPFileName(fcbLCPFile->get_filename())) { - pp->lensProf.lcpFile = fcbLCPFile->get_filename(); + if (LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename())) { + pp->lensProf.lcpFile = corrLcpFileChooser->get_filename(); } else { pp->lensProf.lcpFile = ""; } @@ -358,17 +428,17 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* void LensProfilePanel::onLCPFileChanged() { lcpFileChanged = true; - bool valid = LCPStore::getInstance()->isValidLCPFileName(fcbLCPFile->get_filename()); + bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); updateDisabled(valid); if (listener) { if (valid) { disableListener(); - corrLcpFile->set_active(true); + corrLcpFileRB->set_active(true); enableListener(); } - listener->panelChanged(EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); + listener->panelChanged(EvLCPFile, Glib::path_get_basename(corrLcpFileChooser->get_filename())); } } @@ -409,10 +479,10 @@ void LensProfilePanel::setBatchMode(bool yes) FoldableToolPanel::setBatchMode(yes); if (yes) { - corrUnchanged->show(); - corrUnchanged->set_active(true); + corrUnchangedRB->show(); + corrUnchangedRB->set_active(true); } else { - corrUnchanged->hide(); + corrUnchangedRB->hide(); } } @@ -499,7 +569,7 @@ void LensProfilePanel::onLensfunCameraChanged() if (listener) { disableListener(); - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); enableListener(); Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; @@ -520,7 +590,7 @@ void LensProfilePanel::onLensfunLensChanged() if (listener) { disableListener(); - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); enableListener(); Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; @@ -531,14 +601,13 @@ void LensProfilePanel::onLensfunLensChanged() updateLensfunWarning(); } - void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) { if (rbChanged->get_active()) { // because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one Glib::ustring mode; - if (rbChanged == corrOff) { + if (rbChanged == corrOffRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -548,7 +617,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) ckbUseCA->set_sensitive(false); mode = M("GENERAL_NONE"); - } else if (rbChanged == corrLensfunAuto) { + } else if (rbChanged == corrLensfunAutoRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -572,8 +641,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) } } - mode = M("LENSPROFILE_CORRECTION_AUTOMATCH"); - } else if (rbChanged == corrLensfunManual) { + mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); + } else if (rbChanged == corrLensfunManualRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -584,8 +653,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) ckbUseVign->set_sensitive(true); ckbUseCA->set_sensitive(false); - mode = M("LENSPROFILE_CORRECTION_MANUAL"); - } else if (rbChanged == corrLcpFile) { + mode = M("TP_LENSPROFILE_CORRECTION_MANUAL"); + } else if (rbChanged == corrLcpFileRB) { useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; @@ -594,8 +663,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) updateDisabled(true); - mode = M("LENSPROFILE_CORRECTION_LCPFILE"); - } else if (rbChanged == corrUnchanged) { + mode = M("TP_LENSPROFILE_CORRECTION_LCPFILE"); + } else if (rbChanged == corrUnchangedRB) { useLensfunChanged = false; lensfunAutoChanged = false; lcpFileChanged = false; @@ -612,6 +681,12 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) lcModeChanged = true; updateLensfunWarning(); + if (rbChanged == corrLensfunManualRB) { + setManualParamsVisibility(true); + } else { + setManualParamsVisibility(false); + } + if (listener) { listener->panelChanged(EvLensCorrMode, mode); } @@ -639,18 +714,18 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) LensProfilePanel::LFDbHelper::LFDbHelper() { #ifdef _OPENMP - #pragma omp parallel sections if (!options.rtSettings.verbose) +#pragma omp parallel sections if (!options.rtSettings.verbose) #endif { #ifdef _OPENMP - #pragma omp section +#pragma omp section #endif { lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); fillLensfunCameras(); } #ifdef _OPENMP - #pragma omp section +#pragma omp section #endif { lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 692005d01..9b68ad26b 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -29,10 +29,6 @@ class LensProfilePanel : public ToolParamBlock, public FoldableToolPanel protected: - MyFileChooserButton *fcbLCPFile; - Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; - Gtk::HBox *hbLCPFile; - Gtk::Label *lLCPFileHead; bool lcModeChanged, lcpFileChanged, useDistChanged, useVignChanged, useCAChanged; sigc::connection conLCPFile, conUseDist, conUseVign, conUseCA; void updateDisabled(bool enable); @@ -40,14 +36,20 @@ protected: bool isRaw; const rtengine::FramesMetaData* metadata; + Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; Gtk::RadioButton::Group corrGroup; - Gtk::RadioButton *corrOff; - Gtk::RadioButton *corrLensfunAuto; - Gtk::RadioButton *corrLensfunManual; - Gtk::RadioButton *corrLcpFile; - Gtk::RadioButton *corrUnchanged; + Gtk::RadioButton *corrOffRB; + Gtk::RadioButton *corrLensfunAutoRB; + Gtk::RadioButton *corrLensfunManualRB; + Gtk::RadioButton *corrLcpFileRB; + Gtk::RadioButton *corrUnchangedRB; + Gtk::Grid *modesGrid; + Gtk::Grid *distGrid; + Gtk::Label *lensfunCamerasLbl; + Gtk::Label *lensfunLensesLbl; MyComboBox *lensfunCameras; MyComboBox *lensfunLenses; + MyFileChooserButton *corrLcpFileChooser; Gtk::Image *warning; class LFDbHelper @@ -97,6 +99,7 @@ protected: bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model); bool setLensfunLens(const Glib::ustring &lens); bool checkLensfunCanCorrect(bool automatch); + void setManualParamsVisibility(bool setVisible); void updateLensfunWarning(); public: From 452dec763ca71e50c226dc660cb9c8836c75fef2 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 19 Nov 2018 21:38:43 +0100 Subject: [PATCH 173/348] Show PLC widgets for auto+manual modes #4999 The Profile Lens Correction comboboxes for choosing the camera + lens are now visible in both manual and automatic modes as requested. --- rtgui/lensprofile.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 1158928e5..8f4253db3 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -681,7 +681,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) lcModeChanged = true; updateLensfunWarning(); - if (rbChanged == corrLensfunManualRB) { + if (rbChanged == corrLensfunManualRB || rbChanged == corrLensfunAutoRB) { setManualParamsVisibility(true); } else { setManualParamsVisibility(false); From c9044485a6c2c0776b15018728041eca94102af9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 19 Nov 2018 21:49:51 +0100 Subject: [PATCH 174/348] Fix some coverity issues --- rtengine/lcp.cc | 7 ++++++- rtengine/rawimage.cc | 10 +++++----- rtengine/rawimage.h | 2 +- rtexif/rtexif.cc | 23 +++++++++++++---------- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index a1484cdf6..94be05ac2 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -931,7 +931,12 @@ std::shared_ptr rtengine::LCPStore::getProfile(const Glib: std::shared_ptr res; if (!cache.get(filename, res)) { - res.reset(new LCPProfile(filename)); + try { + res.reset(new LCPProfile(filename)); + } catch (...) { + return nullptr; + } + cache.set(filename, res); } diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 6ef110a03..47ca7085f 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -479,13 +479,13 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro iwidth = width; if (filters || colors == 1) { - raw_image = (ushort *) calloc ((raw_height + 7) * raw_width, 2); + raw_image = (ushort *) calloc ((static_cast(raw_height) + 7u) * static_cast(raw_width), 2); merror (raw_image, "main()"); } // dcraw needs this global variable to hold pixel data - image = (dcrawImage_t)calloc (height * width * sizeof * image + meta_length, 1); - meta_data = (char *) (image + height * width); + image = (dcrawImage_t)calloc (static_cast(height) * static_cast(width) * sizeof * image + meta_length, 1); + meta_data = (char *) (image + static_cast(height) * static_cast(width)); if(!image) { return 200; @@ -673,7 +673,7 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro return 0; } -float** RawImage::compress_image(int frameNum, bool freeImage) +float** RawImage::compress_image(unsigned int frameNum, bool freeImage) { if( !image ) { return nullptr; @@ -682,7 +682,7 @@ float** RawImage::compress_image(int frameNum, bool freeImage) if (isBayer() || isXtrans()) { if (!allocation) { // shift the beginning of all frames but the first by 32 floats to avoid cache miss conflicts on CPUs which have <= 4-way associative L1-Cache - allocation = new float[height * width + frameNum * 32]; + allocation = new float[static_cast(height) * static_cast(width) + frameNum * 32u]; data = new float*[height]; for (int i = 0; i < height; i++) { diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index 7595ad196..7017f4c1b 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -121,7 +121,7 @@ public: { return image; } - float** compress_image(int frameNum, bool freeImage = true); // revert to compressed pixels format and release image data + float** compress_image(unsigned int frameNum, bool freeImage = true); // revert to compressed pixels format and release image data float** data; // holds pixel values, data[i][j] corresponds to the ith row and jth column unsigned prefilters; // original filters saved ( used for 4 color processing ) unsigned int getFrameCount() const { return is_raw; } diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index c35ba7e0b..947795c20 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -976,16 +976,19 @@ Tag::Tag (TagDirectory* p, FILE* f, int base) if (tag == 0x002e) { // location of the embedded preview image in raw files of Panasonic cameras ExifManager eManager(f, nullptr, true); - eManager.parseJPEG(ftell(f)); // try to parse the exif data from the preview image + const auto fpos = ftell(f); + if (fpos >= 0) { + eManager.parseJPEG(fpos); // try to parse the exif data from the preview image - if (eManager.roots.size()) { - const TagDirectory* const previewdir = eManager.roots.at(0); - if (previewdir->getTag ("Exif")) { - if (previewdir->getTag ("Make")) { - if (previewdir->getTag ("Make")->valueToString() == "Panasonic") { // "make" is not yet available here, so get it from the preview tags to assure we're doing the right thing - Tag* t = new Tag (parent->getRoot(), lookupAttrib (ifdAttribs, "Exif")); // replace raw exif with preview exif assuming there are the same - t->initSubDir (previewdir->getTag ("Exif")->getDirectory()); - parent->getRoot()->addTag (t); + if (eManager.roots.size()) { + const TagDirectory* const previewdir = eManager.roots.at(0); + if (previewdir->getTag ("Exif")) { + if (previewdir->getTag ("Make")) { + if (previewdir->getTag ("Make")->valueToString() == "Panasonic") { // "make" is not yet available here, so get it from the preview tags to assure we're doing the right thing + Tag* t = new Tag (parent->getRoot(), lookupAttrib (ifdAttribs, "Exif")); // replace raw exif with preview exif assuming there are the same + t->initSubDir (previewdir->getTag ("Exif")->getDirectory()); + parent->getRoot()->addTag (t); + } } } } @@ -2474,7 +2477,7 @@ parse_leafdata (TagDirectory* root, ByteOrder order) char *val = (char *)&value[pos]; if (strncmp (&hdr[8], "CameraObj_ISO_speed", 19) == 0) { - iso_speed = 25 * (1 << (atoi (val) - 1)); + iso_speed = 25 * (1 << std::max((atoi (val) - 1), 0)); found_count++; } else if (strncmp (&hdr[8], "ImgProf_rotation_angle", 22) == 0) { rotation_angle = atoi (val); From f8fc658d718a9d9caa70e2703d78d16a0b8190a2 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 19 Nov 2018 22:02:03 +0100 Subject: [PATCH 175/348] Fixes for Nikon Z raw decoding Fix to curve decoding ported from rawspeed See #4998 --- rtengine/dcraw.cc | 14 ++++++++++---- rtengine/dcraw.h | 6 ++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index f61cd94c2..0d5870b6a 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1303,10 +1303,10 @@ void CLASS nikon_load_raw() if (ver0 == 0x46) tree = 2; if (tiff_bps == 14) tree += 3; read_shorts (vpred[0], 4); - max = 1 << tiff_bps & 0x7fff; + max = 1 << (tiff_bps - (ver0 == 0x44 && ver1 == 0x40 ? 2 : 0)) & 0x7fff; if ((csize = get2()) > 1) step = max / (csize-1); - if (ver0 == 0x44 && ver1 == 0x20 && step > 0) { + if (ver0 == 0x44 && (ver1 == 0x20 || ver1 == 0x40) && step > 0) { for (int i=0; i < csize; i++) curve[i*step] = get2(); for (int i=0; i < max; i++) @@ -2562,6 +2562,7 @@ void CLASS packed_load_raw() bwide = raw_width * tiff_bps / 8; bwide += bwide & load_flags >> 9; + bwide += row_padding; rbits = bwide * 8 - raw_width * tiff_bps; if (load_flags & 1) bwide = bwide * 16 / 15; bite = 8 + (load_flags & 56); @@ -6759,8 +6760,13 @@ void CLASS apply_tiff() load_raw = &CLASS packed_load_raw; } else if ((raw_width * 2 * tiff_bps / 16 + 8) * raw_height == tiff_ifd[raw].bytes) { // 14 bit uncompressed from Nikon Z7, still wrong - // each line has 8 padding byte. To inform 'packed_load_raw' about his padding, we have to set load_flags = padding << 9 - load_flags = 8 << 9; + // each line has 8 padding byte. + row_padding = 8; + load_raw = &CLASS packed_load_raw; + } else if ((raw_width * 2 * tiff_bps / 16 + 12) * raw_height == tiff_ifd[raw].bytes) { + // 14 bit uncompressed from Nikon Z6, still wrong + // each line has 12 padding byte. + row_padding = 12; load_raw = &CLASS packed_load_raw; } else load_raw = &CLASS nikon_load_raw; break; diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index f9591b640..dd4831625 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -47,7 +47,9 @@ public: ,order(0x4949) ,ifname(nullptr) ,meta_data(nullptr) - ,shot_select(0),multi_out(0) + ,shot_select(0) + ,multi_out(0) + ,row_padding(0) ,float_raw_image(nullptr) ,image(nullptr) ,bright(1.) @@ -88,7 +90,7 @@ protected: unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress; unsigned black, cblack[4102], maximum, mix_green, raw_color, zero_is_bad; unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error; - unsigned tile_width, tile_length, gpsdata[32], load_flags; + unsigned tile_width, tile_length, gpsdata[32], load_flags, row_padding; bool xtransCompressed = false; struct fuji_compressed_params { From 772fea2a6a5aa044278f5d9a13e82e9cf4005350 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 19 Nov 2018 22:06:54 +0100 Subject: [PATCH 176/348] added basic camconst entry for Nikon Z 6 --- rtengine/camconst.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index eb4174577..894429426 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1589,6 +1589,11 @@ Camera constants: "pdaf_pattern" : [0, 12], "pdaf_offset" : 29 }, + + { // Quality C, only colour matrix and PDAF lines info + "make_model" : "Nikon Z 6", + "dcraw_matrix" : [8210, -2534, -683, -5355, 13338, 2212, -1143, 1929, 6464] // Adobe DNG Converter 11.1 Beta ColorMatrix2 + }, { // Quality B, 16Mp and 64Mp raw frames "make_model": "OLYMPUS E-M5MarkII", From 093fd9a26a90bd484ad6e294a1f5c1cfbbef7c36 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 19 Nov 2018 22:11:09 +0100 Subject: [PATCH 177/348] Fix broken build --- rtengine/image16.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/image16.h b/rtengine/image16.h index 3431d8afd..940416254 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -80,7 +80,7 @@ public: return save(fname); } - saveAsPNG(const Glib::ustring &fname, int bps = -1) const override + int saveAsPNG(const Glib::ustring &fname, int bps = -1) const override { return savePNG(fname, bps); } From ab2593cf93178c446b2548c63fbf9c3e77a749a3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 20 Nov 2018 00:10:38 +0100 Subject: [PATCH 178/348] Fix 2 coverity issues --- rtengine/eahd_demosaic.cc | 2 +- rtgui/filebrowser.cc | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/rtengine/eahd_demosaic.cc b/rtengine/eahd_demosaic.cc index aef016386..4ebeb2d66 100644 --- a/rtengine/eahd_demosaic.cc +++ b/rtengine/eahd_demosaic.cc @@ -206,7 +206,7 @@ inline void RawImageSource::interpolate_row_rb (float* ar, float* ab, float* pg, n++; } - nonGreen2[j] = cg[j] + nonGreen / n; + nonGreen2[j] = cg[j] + nonGreen / std::max(n, 1); } } diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index f83e39146..8a508c747 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -127,9 +127,7 @@ void findOriginalEntries (const std::vector& entries) FileBrowser::FileBrowser () : menuLabel(nullptr), -#ifdef WIN32 miOpenDefaultViewer(nullptr), -#endif selectDF(nullptr), thisIsDF(nullptr), autoDF(nullptr), From 61d8a4f2544bbfb8ea4991af8ff311079d1266ca Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 20 Nov 2018 00:12:21 +0100 Subject: [PATCH 179/348] Add classes to curves for css styling (#4986) --- rtgui/coordinateadjuster.cc | 1 - rtgui/diagonalcurveeditorsubgroup.cc | 120 ++++++++++++++++++--------- rtgui/flatcurveeditorsubgroup.cc | 37 ++++++--- 3 files changed, 106 insertions(+), 52 deletions(-) diff --git a/rtgui/coordinateadjuster.cc b/rtgui/coordinateadjuster.cc index 209ef0902..2525a07e5 100644 --- a/rtgui/coordinateadjuster.cc +++ b/rtgui/coordinateadjuster.cc @@ -127,7 +127,6 @@ void CoordinateAdjuster::createWidgets(const std::vector &axis) Gtk::Grid *box = Gtk::manage (new Gtk::Grid()); box->set_orientation(Gtk::ORIENTATION_HORIZONTAL); - box->set_column_spacing(3); setExpandAlignProperties(currAdjuster->label, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); setExpandAlignProperties(currAdjuster->spinButton, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index c23b25f9a..4cbde55cc 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -52,20 +52,34 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // custom curve customCurveGrid = new Gtk::Grid (); customCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); - customCurveGrid->set_row_spacing(2); - customCurveGrid->set_column_spacing(2); + customCurveGrid->get_style_context()->add_class("curve-mainbox"); customCurve = Gtk::manage (new MyDiagonalCurve ()); customCurve->setType (DCT_Spline); + + Gtk::Grid* customCurveBox= Gtk::manage (new Gtk::Grid ()); + customCurveBox->get_style_context()->add_class("curve-curvebox"); + customCurveBox->add(*customCurve); Gtk::Grid* custombbox = Gtk::manage (new Gtk::Grid ()); // curvebboxpos 0=above, 1=right, 2=below, 3=left + custombbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { custombbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(custombbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + customCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + custombbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(custombbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + customCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { custombbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(custombbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + customCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + custombbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(custombbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + customCurveGrid->get_style_context()->add_class("left"); } editPointCustom = Gtk::manage (new Gtk::ToggleButton ()); @@ -90,22 +104,23 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, custombbox->attach_next_to(*saveCustom, sideEnd, 1, 1); customCoordAdjuster = Gtk::manage (new CoordinateAdjuster(customCurve, this)); + customCoordAdjuster->get_style_context()->add_class("curve-spinbuttonbox"); // Button box position: 0=above, 1=right, 2=below, 3=left - customCurveGrid->add(*customCurve); + customCurveGrid->add(*customCurveBox); customCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - customCurveGrid->attach_next_to(*custombbox, *customCurve, Gtk::POS_TOP, 1, 1); - customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurve, Gtk::POS_BOTTOM, 1, 1); + customCurveGrid->attach_next_to(*custombbox, *customCurveBox, Gtk::POS_TOP, 1, 1); + customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - customCurveGrid->attach_next_to(*custombbox, *customCurve, Gtk::POS_RIGHT, 1, 1); - customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurve, Gtk::POS_BOTTOM, 2, 1); + customCurveGrid->attach_next_to(*custombbox, *customCurveBox, Gtk::POS_RIGHT, 1, 1); + customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurve, Gtk::POS_BOTTOM, 1, 1); + customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurveBox, Gtk::POS_BOTTOM, 1, 1); customCurveGrid->attach_next_to(*custombbox, *customCoordAdjuster, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - customCurveGrid->attach_next_to(*custombbox, *customCurve, Gtk::POS_LEFT, 1, 1); + customCurveGrid->attach_next_to(*custombbox, *customCurveBox, Gtk::POS_LEFT, 1, 1); customCurveGrid->attach_next_to(*customCoordAdjuster, *custombbox, Gtk::POS_BOTTOM, 2, 1); } @@ -128,21 +143,35 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // NURBS curve NURBSCurveGrid = new Gtk::Grid (); - NURBSCurveGrid->set_row_spacing(4); - NURBSCurveGrid->set_column_spacing(4); NURBSCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); + NURBSCurveGrid->get_style_context()->add_class("curve-mainbox"); NURBSCurve = Gtk::manage (new MyDiagonalCurve ()); NURBSCurve->setType (DCT_NURBS); + + Gtk::Grid* NURBSCurveBox= Gtk::manage (new Gtk::Grid ()); + NURBSCurveBox->get_style_context()->add_class("curve-curvebox"); + NURBSCurveBox->add(*NURBSCurve); Gtk::Grid* NURBSbbox = Gtk::manage (new Gtk::Grid ()); + NURBSbbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { NURBSbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(NURBSbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + NURBSCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + NURBSbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(NURBSbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + NURBSCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { NURBSbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(NURBSbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + NURBSCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + NURBSbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(NURBSbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + NURBSCurveGrid->get_style_context()->add_class("left"); } editPointNURBS = Gtk::manage (new Gtk::ToggleButton ()); @@ -167,22 +196,23 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, NURBSbbox->attach_next_to(*saveNURBS, sideEnd, 1, 1); NURBSCoordAdjuster = Gtk::manage (new CoordinateAdjuster(NURBSCurve, this)); + NURBSCoordAdjuster->get_style_context()->add_class("curve-spinbuttonbox"); // Button box position: 0=above, 1=right, 2=below, 3=left - NURBSCurveGrid->add(*NURBSCurve); + NURBSCurveGrid->add(*NURBSCurveBox); NURBSCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurve, Gtk::POS_TOP, 1, 1); - NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurve, Gtk::POS_BOTTOM, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurveBox, Gtk::POS_TOP, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurve, Gtk::POS_RIGHT, 1, 1); - NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurve, Gtk::POS_BOTTOM, 2, 1); + NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurveBox, Gtk::POS_RIGHT, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurve, Gtk::POS_BOTTOM, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurveBox, Gtk::POS_BOTTOM, 1, 1); NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCoordAdjuster, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurve, Gtk::POS_LEFT, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurveBox, Gtk::POS_LEFT, 1, 1); NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSbbox, Gtk::POS_BOTTOM, 2, 1); } @@ -205,25 +235,40 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // parametric curve paramCurveGrid = new Gtk::Grid (); - paramCurveGrid->set_row_spacing(4); - paramCurveGrid->set_column_spacing(4); paramCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); + paramCurveGrid->get_style_context()->add_class("curve-mainbox"); paramCurve = Gtk::manage (new MyDiagonalCurve ()); paramCurve->setType (DCT_Parametric); + + Gtk::Grid* paramCurveBox= Gtk::manage (new Gtk::Grid ()); + paramCurveBox->get_style_context()->add_class("curve-curvebox"); + paramCurveBox->add(*paramCurve); Gtk::Grid* parambbox = Gtk::manage (new Gtk::Grid ()); + parambbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { parambbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(parambbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + paramCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + parambbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(parambbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + paramCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { parambbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(parambbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + paramCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + parambbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(parambbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + paramCurveGrid->get_style_context()->add_class("left"); } shcSelector = Gtk::manage (new SHCSelector ()); - shcSelector->set_name("CurveSHCSelector"); // To handle the 4px gap between the SHCSelector and the curve through CSS + shcSelector->set_name("CurveSHCSelector"); + paramCurveBox->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); editParam = Gtk::manage (new Gtk::ToggleButton()); initButton(*editParam, Glib::ustring("crosshair-node-curve.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP"); @@ -272,8 +317,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // paramCurveSliderBox needed to set vspacing(4) between curve+shc and sliders without vspacing between each slider Gtk::Grid* paramCurveSliderBox = Gtk::manage (new Gtk::Grid()); paramCurveSliderBox->set_orientation(Gtk::ORIENTATION_VERTICAL); - paramCurveSliderBox->set_column_spacing(2); - paramCurveSliderBox->set_row_spacing(2); + paramCurveSliderBox->get_style_context()->add_class("curve-sliderbox"); paramCurveSliderBox->attach_next_to(*evhighlights, Gtk::POS_TOP, 1, 1); paramCurveSliderBox->attach_next_to(*evlights, Gtk::POS_TOP, 1, 1); @@ -283,24 +327,20 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, paramCurveGrid->show_all (); // Button box position: 0=above, 1=right, 2=below, 3=left - paramCurveGrid->add(*paramCurve); + paramCurveGrid->add(*paramCurveBox); paramCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - paramCurveGrid->attach_next_to(*parambbox, *paramCurve, Gtk::POS_TOP, 1, 1); - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*paramCurveSliderBox, *shcSelector, Gtk::POS_BOTTOM, 1, 1); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_TOP, 1, 1); + paramCurveGrid->attach_next_to(*paramCurveSliderBox, *paramCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*parambbox, *paramCurve, Gtk::POS_RIGHT, 1, 2); - paramCurveGrid->attach_next_to(*paramCurveSliderBox, *shcSelector, Gtk::POS_BOTTOM, 2, 1); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_RIGHT, 1, 1); + paramCurveGrid->attach_next_to(*paramCurveSliderBox, *paramCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*parambbox, *shcSelector, Gtk::POS_BOTTOM, 1, 1); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_BOTTOM, 1, 1); paramCurveGrid->attach_next_to(*paramCurveSliderBox, *parambbox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*parambbox, *paramCurve, Gtk::POS_LEFT, 1, 2); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_LEFT, 1, 1); paramCurveGrid->attach_next_to(*paramCurveSliderBox, *parambbox, Gtk::POS_BOTTOM, 2, 1); } diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 27b7ac940..376bb55c2 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -47,21 +47,35 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u // ControlPoints curve CPointsCurveGrid = new Gtk::Grid (); - CPointsCurveGrid->set_row_spacing(2); - CPointsCurveGrid->set_column_spacing(2); CPointsCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); + CPointsCurveGrid->get_style_context()->add_class("curve-mainbox"); CPointsCurve = Gtk::manage (new MyFlatCurve ()); CPointsCurve->setType (FCT_MinMaxCPoints); + + Gtk::Grid* CPointsCurveBox = Gtk::manage (new Gtk::Grid ()); + CPointsCurveBox->get_style_context()->add_class("curve-curvebox"); + CPointsCurveBox->add(*CPointsCurve); Gtk::Grid* CPointsbbox = Gtk::manage (new Gtk::Grid ()); // curvebboxpos 0=above, 1=right, 2=below, 3=left + CPointsbbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { CPointsbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(CPointsbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + CPointsCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + CPointsbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(CPointsbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + CPointsCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { CPointsbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(CPointsbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + CPointsCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + CPointsbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(CPointsbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + CPointsCurveGrid->get_style_context()->add_class("left"); } editCPoints = Gtk::manage (new Gtk::ToggleButton()); @@ -92,23 +106,24 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u axis.at(2).setValues(M("CURVEEDITOR_AXIS_LEFT_TAN"), 5, 0.01, 0.1, 0., 1.); axis.at(3).setValues(M("CURVEEDITOR_AXIS_RIGHT_TAN"), 5, 0.01, 0.1, 0., 1.); CPointsCoordAdjuster = Gtk::manage (new CoordinateAdjuster(CPointsCurve, this, axis)); + CPointsCoordAdjuster->get_style_context()->add_class("curve-spinbuttonbox"); } // Button box position: 0=above, 1=right, 2=below, 3=left - CPointsCurveGrid->add(*CPointsCurve); + CPointsCurveGrid->add(*CPointsCurveBox); CPointsCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurve, Gtk::POS_TOP, 1, 1); - CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurve, Gtk::POS_BOTTOM, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurveBox, Gtk::POS_TOP, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurve, Gtk::POS_RIGHT, 1, 1); - CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurve, Gtk::POS_BOTTOM, 2, 1); + CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurveBox, Gtk::POS_RIGHT, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurve, Gtk::POS_BOTTOM, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurveBox, Gtk::POS_BOTTOM, 1, 1); CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCoordAdjuster, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurve, Gtk::POS_LEFT, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurveBox, Gtk::POS_LEFT, 1, 1); CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsbbox, Gtk::POS_BOTTOM, 2, 1); } From 7e70412090a63b63661cfdcb3cd147113217c54e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 20 Nov 2018 12:47:25 +0100 Subject: [PATCH 180/348] Constified and shuffled by Floessie #4999 I added the missing "(Unchanged)" mode for Batch Edit, which is currently broken #5002. --- rtengine/rt_math.h | 14 ++ rtgui/lensprofile.cc | 534 +++++++++++++++++++++---------------------- rtgui/lensprofile.h | 118 +++++----- 3 files changed, 336 insertions(+), 330 deletions(-) diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index 9342f5430..b21d26564 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -56,6 +56,13 @@ constexpr const T& min(const T& a, const T& b) return b < a ? b : a; } +template<> +constexpr const float& min(const float& a, const float& b) +{ + // For consistency reasons we return b instead of a if a == b or a == NaN + return a < b ? a : b; +} + template constexpr const T& min(const T& a, const T& b, const ARGS&... args) { @@ -74,6 +81,13 @@ constexpr const T& max(const T& a, const T& b) return a < b ? b : a; } +template<> +constexpr const float& max(const float& a, const float& b) +{ + // For consistency reasons we return b instead of a if a == b or a == NaN + return b < a ? a : b; +} + template constexpr const T& max(const T& a, const T& b, const ARGS&... args) { diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 8f4253db3..0d5d9a0c3 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -29,8 +29,6 @@ using namespace rtengine; using namespace rtengine::procparams; -LensProfilePanel::LFDbHelper *LensProfilePanel::lf(nullptr); - LensProfilePanel::LensProfilePanel() : FoldableToolPanel(this, "lensprof", M("TP_LENSPROFILE_LABEL")), lcModeChanged(false), @@ -38,96 +36,89 @@ LensProfilePanel::LensProfilePanel() : useDistChanged(false), useVignChanged(false), useCAChanged(false), - isRaw(true), - metadata(nullptr), useLensfunChanged(false), lensfunAutoChanged(false), lensfunCameraChanged(false), - lensfunLensChanged(false) + lensfunLensChanged(false), + allowFocusDep(true), + isRaw(true), + metadata(nullptr), + modesGrid(Gtk::manage(new Gtk::Grid())), + distGrid(Gtk::manage((new Gtk::Grid()))), + corrUnchangedRB(Gtk::manage((new Gtk::RadioButton(M("GENERAL_UNCHANGED"))))), + corrOffRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))))), + corrLensfunAutoRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))))), + corrLensfunManualRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))))), + corrLcpFileRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))))), + corrLcpFileChooser(Gtk::manage((new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)))), + lensfunCamerasLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_CAMERA"))))), + lensfunCameras(Gtk::manage((new MyComboBox()))), + lensfunLensesLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_LENS"))))), + lensfunLenses(Gtk::manage((new MyComboBox()))), + warning(Gtk::manage((new Gtk::Image()))), + ckbUseDist(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))))), + ckbUseVign(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))))), + ckbUseCA(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))))) { if (!lf) { lf = new LFDbHelper(); } - - // Main containers: - modesGrid = Gtk::manage(new Gtk::Grid()); modesGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - distGrid = Gtk::manage(new Gtk::Grid()); distGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - // Mode choice widgets: - Gtk::Label *corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); + Gtk::Label* const corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); setExpandAlignProperties(corrHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - corrUnchangedRB = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); corrUnchangedRB->hide(); corrGroup = corrUnchangedRB->get_group(); - corrOffRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); - - corrLensfunAutoRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))); - - corrLensfunManualRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))); - - corrLcpFileRB = Gtk::manage(new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))); - corrLcpFileChooser = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - // Manually-selected profile widgets: - lensfunCamerasLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))); setExpandAlignProperties(lensfunCamerasLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); - lensfunCameras = Gtk::manage(new MyComboBox()); lensfunCameras->set_model(lf->lensfunCameraModel); lensfunCameras->pack_start(lf->lensfunModelCam.model); lensfunCameras->setPreferredWidth(50, 120); setExpandAlignProperties(lensfunCameras, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - Gtk::CellRendererText* cellRenderer = dynamic_cast(lensfunCameras->get_first_cell()); - cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; - cellRenderer->property_ellipsize_set() = true; + Gtk::CellRendererText* const camerasCellRenderer = static_cast(lensfunCameras->get_first_cell()); + camerasCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + camerasCellRenderer->property_ellipsize_set() = true; - lensfunLensesLbl = Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))); setExpandAlignProperties(lensfunLensesLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); - lensfunLenses = Gtk::manage(new MyComboBox()); lensfunLenses->set_model(lf->lensfunLensModel); lensfunLenses->pack_start(lf->lensfunModelLens.prettylens); lensfunLenses->setPreferredWidth(50, 120); setExpandAlignProperties(lensfunLenses, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - cellRenderer = dynamic_cast(lensfunLenses->get_first_cell()); - cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; - cellRenderer->property_ellipsize_set() = true; + Gtk::CellRendererText* const lensesCellRenderer = static_cast(lensfunLenses->get_first_cell()); + lensesCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + lensesCellRenderer->property_ellipsize_set() = true; - warning = Gtk::manage(new Gtk::Image()); warning->set_from_icon_name("dialog-warning", Gtk::ICON_SIZE_LARGE_TOOLBAR); warning->set_tooltip_text(M("TP_LENSPROFILE_LENS_WARNING")); warning->hide(); - - // LCP file filter config: - Glib::RefPtr filterLCP = Gtk::FileFilter::create(); + const Glib::RefPtr filterLCP = Gtk::FileFilter::create(); filterLCP->set_name(M("FILECHOOSER_FILTER_LCP")); filterLCP->add_pattern("*.lcp"); filterLCP->add_pattern("*.LCP"); corrLcpFileChooser->add_filter(filterLCP); - Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); + const Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); if (!defDir.empty()) { #ifdef WIN32 @@ -140,36 +131,27 @@ LensProfilePanel::LensProfilePanel() : bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); - - // Choice of properties to correct, applicable to all modes: - Gtk::Label *useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); + Gtk::Label* const useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); setExpandAlignProperties(useHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ckbUseDist = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))); - ckbUseVign = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))); - ckbUseCA = Gtk::manage(new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))); - - - // Populate modes grid: modesGrid->attach(*corrHeaderLbl, 0, 0, 2, 1); - modesGrid->attach(*corrOffRB, 0, 1, 2, 1); - modesGrid->attach(*corrLensfunAutoRB, 0, 2, 2, 1); - modesGrid->attach(*corrLensfunManualRB, 0, 3, 2, 1); - - modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); - modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); - modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); - modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); - modesGrid->attach(*warning, 2, 5, 1, 1); - - modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); - modesGrid->attach(*corrLcpFileChooser, 1, 6, 1, 1); + modesGrid->attach(*corrUnchangedRB, 0, 1, 2, 1); + modesGrid->attach(*corrOffRB, 0, 2, 2, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 3, 2, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 4, 2, 1); + modesGrid->attach(*lensfunCamerasLbl, 0, 5, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 5, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 6, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 6, 1, 1); + modesGrid->attach(*warning, 2, 6, 1, 1); + modesGrid->attach(*corrLcpFileRB, 0, 7, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 7, 1, 1); // Populate distortions grid: @@ -178,15 +160,11 @@ LensProfilePanel::LensProfilePanel() : distGrid->attach(*ckbUseVign, 0, 2, 1, 1); distGrid->attach(*ckbUseCA, 0, 3, 1, 1); - - // Attach grids: pack_start(*modesGrid); pack_start(*distGrid); - - // Signals: conLCPFile = corrLcpFileChooser->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); @@ -200,8 +178,6 @@ LensProfilePanel::LensProfilePanel() : corrLensfunAutoRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAutoRB)); corrLensfunManualRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManualRB)); corrLcpFileRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFileRB)); - - allowFocusDep = true; } void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) @@ -216,40 +192,47 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { - case procparams::LensProfParams::LcMode::LCP : + case procparams::LensProfParams::LcMode::LCP: { corrLcpFileRB->set_active(true); break; + } - case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : + case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH: { corrLensfunAutoRB->set_active(true); break; + } - case procparams::LensProfParams::LcMode::LENSFUNMANUAL : + case procparams::LensProfParams::LcMode::LENSFUNMANUAL: { corrLensfunManualRB->set_active(true); break; + } - case procparams::LensProfParams::LcMode::NONE : + case procparams::LensProfParams::LcMode::NONE: { corrOffRB->set_active(true); + break; + } } if (pp->lensProf.lcpFile.empty()) { - Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); + const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); corrLcpFileChooser->set_current_folder(lastFolder); corrLcpFileChooser->unselect_all(); bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); updateDisabled(false); - } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { + } + else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { corrLcpFileChooser->set_filename(pp->lensProf.lcpFile); if (corrLcpFileRB->get_active()) { updateDisabled(true); } - } else { + } + else { corrLcpFileChooser->unselect_filename(corrLcpFileChooser->get_filename()); updateDisabled(false); } - const LFDatabase *db = LFDatabase::getInstance(); + const LFDatabase* const db = LFDatabase::getInstance(); LFCamera c; if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { @@ -261,7 +244,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { if (metadata) { - LFLens l = db->findLens(c, metadata->getLens()); + const LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } } @@ -291,95 +274,18 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa conUseDist.block(false); } -void LensProfilePanel::setManualParamsVisibility(bool setVisible) -{ - if (setVisible) { - lensfunCamerasLbl->show(); - lensfunCameras->show(); - lensfunLensesLbl->show(); - lensfunLenses->show(); - updateLensfunWarning(); - } else { - lensfunCamerasLbl->hide(); - lensfunCameras->hide(); - lensfunLensesLbl->hide(); - lensfunLenses->hide(); - warning->hide(); - } -} - -void LensProfilePanel::updateLensfunWarning() -{ - warning->hide(); - - if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { - const LFDatabase *db = LFDatabase::getInstance(); - - auto itc = lensfunCameras->get_active(); - - if (!itc) { - return; - } - - LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); - auto itl = lensfunLenses->get_active(); - - if (!itl) { - return; - } - - LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); - float lenscrop = l.getCropFactor(); - float camcrop = c.getCropFactor(); - - if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { - warning->show(); - } - - ckbUseVign->set_sensitive(l.hasVignettingCorrection()); - ckbUseDist->set_sensitive(l.hasDistortionCorrection()); - ckbUseCA->set_sensitive(l.hasCACorrection()); - - if (!isRaw || !l.hasVignettingCorrection()) { - ckbUseVign->set_active(false); - } - - if (!l.hasDistortionCorrection()) { - ckbUseDist->set_active(false); - } - - if (!l.hasCACorrection()) { - ckbUseCA->set_active(false); - } - } -} - -void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) -{ - if (!raw || pMeta->getFocusDist() <= 0) { - disableListener(); - - // CA is very focus layer dependent, otherwise it might even worsen things - allowFocusDep = false; - ckbUseCA->set_active(false); - ckbUseCA->set_sensitive(false); - - enableListener(); - } - - isRaw = raw; - metadata = pMeta; -} - void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { if (corrLcpFileRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if (corrLensfunManualRB->get_active()) { + } + else if (corrLensfunManualRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if (corrLensfunAutoRB->get_active()) { + } + else if (corrLensfunAutoRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if (corrOffRB->get_active()) { + } + else if (corrOffRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } @@ -393,7 +299,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pp->lensProf.useVign = ckbUseVign->get_active(); pp->lensProf.useCA = ckbUseCA->get_active(); - auto itc = lensfunCameras->get_active(); + const auto itc = lensfunCameras->get_active(); if (itc) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; @@ -403,7 +309,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pp->lensProf.lfCameraModel = ""; } - auto itl = lensfunLenses->get_active(); + const auto itl = lensfunLenses->get_active(); if (itl) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; @@ -425,10 +331,27 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* } } +void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) +{ + if (!raw || pMeta->getFocusDist() <= 0) { + disableListener(); + + // CA is very focus layer dependent, otherwise it might even worsen things + allowFocusDep = false; + ckbUseCA->set_active(false); + ckbUseCA->set_sensitive(false); + + enableListener(); + } + + isRaw = raw; + metadata = pMeta; +} + void LensProfilePanel::onLCPFileChanged() { lcpFileChanged = true; - bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); + const bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); updateDisabled(valid); if (listener) { @@ -450,6 +373,7 @@ void LensProfilePanel::onUseDistChanged() listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } + void LensProfilePanel::onUseVignChanged() { useVignChanged = true; @@ -458,6 +382,7 @@ void LensProfilePanel::onUseVignChanged() listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } + void LensProfilePanel::onUseCAChanged() { useCAChanged = true; @@ -467,13 +392,6 @@ void LensProfilePanel::onUseCAChanged() } } -void LensProfilePanel::updateDisabled(bool enable) -{ - ckbUseDist->set_sensitive(enable); - ckbUseVign->set_sensitive(enable && isRaw); - ckbUseCA->set_sensitive(enable && allowFocusDep); -} - void LensProfilePanel::setBatchMode(bool yes) { FoldableToolPanel::setBatchMode(yes); @@ -486,83 +404,9 @@ void LensProfilePanel::setBatchMode(bool yes) } } - -bool LensProfilePanel::setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model) -{ - if (!make.empty() && !model.empty()) { - auto it = lensfunCameras->get_active(); - - if (it && (*it)[lf->lensfunModelCam.make] == make && (*it)[lf->lensfunModelCam.model] == model) { - return true; - } - - // search for the active row - for (auto row : lf->lensfunCameraModel->children()) { - if (row[lf->lensfunModelCam.make] == make) { - auto &c = row.children(); - - for (auto it = c.begin(), end = c.end(); it != end; ++it) { - auto &childrow = *it; - - if (childrow[lf->lensfunModelCam.model] == model) { - lensfunCameras->set_active(it); - return true; - } - } - - break; - } - } - } - - lensfunCameras->set_active(-1); - return false; -} - - -bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) -{ - if (!lens.empty()) { - auto it = lensfunLenses->get_active(); - - if (it && (*it)[lf->lensfunModelLens.lens] == lens) { - return true; - } - - bool first_maker_found = false; - - for (auto row : lf->lensfunLensModel->children()) { - if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { - auto &c = row.children(); - - for (auto it = c.begin(), end = c.end(); it != end; ++it) { - auto &childrow = *it; - - if (childrow[lf->lensfunModelLens.lens] == lens) { - lensfunLenses->set_active(it); - return true; - } - } - - // we do not break immediately here, because there might be multiple makers - // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). - // therefore, we break below when the lens doesn't match any of them - first_maker_found = true; - } else if (first_maker_found) { - break; - } - } - } - - lensfunLenses->set_active(-1); - return false; -} - - - void LensProfilePanel::onLensfunCameraChanged() { - auto iter = lensfunCameras->get_active(); + const auto iter = lensfunCameras->get_active(); if (iter) { lensfunCameraChanged = true; @@ -572,7 +416,7 @@ void LensProfilePanel::onLensfunCameraChanged() corrLensfunManualRB->set_active(true); enableListener(); - Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; + const Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; listener->panelChanged(EvLensCorrLensfunCamera, name); } } @@ -580,10 +424,9 @@ void LensProfilePanel::onLensfunCameraChanged() updateLensfunWarning(); } - void LensProfilePanel::onLensfunLensChanged() { - auto iter = lensfunLenses->get_active(); + const auto iter = lensfunLenses->get_active(); if (iter) { lensfunLensChanged = true; @@ -593,7 +436,7 @@ void LensProfilePanel::onLensfunLensChanged() corrLensfunManualRB->set_active(true); enableListener(); - Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; + const Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; listener->panelChanged(EvLensCorrLensfunLens, name); } } @@ -601,7 +444,7 @@ void LensProfilePanel::onLensfunLensChanged() updateLensfunWarning(); } -void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) +void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) { if (rbChanged->get_active()) { // because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one @@ -629,14 +472,14 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) ckbUseCA->set_sensitive(false); if (metadata) { - bool b = disableListener(); - const LFDatabase *db = LFDatabase::getInstance(); - LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); - LFLens l = db->findLens(c, metadata->getLens()); + const bool disabled = disableListener(); + const LFDatabase* const db = LFDatabase::getInstance(); + const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); + const LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); - if (b) { + if (disabled) { enableListener(); } } @@ -693,20 +536,6 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) } } - -bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) -{ - if (!metadata) { - return false; - } - - rtengine::procparams::ProcParams lpp; - write(&lpp); - std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); - return mod.get() != nullptr; -} - - //----------------------------------------------------------------------------- // LFDbHelper //----------------------------------------------------------------------------- @@ -741,9 +570,9 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } std::map> camnames; - auto camlist = LFDatabase::getInstance()->getCameras(); + const auto camlist = LFDatabase::getInstance()->getCameras(); - for (auto &c : camlist) { + for (const auto& c : camlist) { camnames[c.getMake()].insert(c.getModel()); if (options.rtSettings.verbose) { @@ -751,12 +580,12 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } } - for (auto &p : camnames) { + for (const auto& p : camnames) { Gtk::TreeModel::Row row = *(lensfunCameraModel->append()); row[lensfunModelCam.make] = p.first; row[lensfunModelCam.model] = p.first; - for (auto &c : p.second) { + for (const auto& c : p.second) { Gtk::TreeModel::Row child = *(lensfunCameraModel->append(row.children())); child[lensfunModelCam.make] = p.first; child[lensfunModelCam.model] = c; @@ -764,7 +593,6 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } } - void LensProfilePanel::LFDbHelper::fillLensfunLenses() { if (options.rtSettings.verbose) { @@ -772,11 +600,11 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() } std::map> lenses; - auto lenslist = LFDatabase::getInstance()->getLenses(); + const auto lenslist = LFDatabase::getInstance()->getLenses(); - for (auto &l : lenslist) { - auto name = l.getLens(); - auto make = l.getMake(); + for (const auto& l : lenslist) { + const auto& name = l.getLens(); + const auto& make = l.getMake(); lenses[make].insert(name); if (options.rtSettings.verbose) { @@ -784,7 +612,7 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() } } - for (auto &p : lenses) { + for (const auto& p : lenses) { Gtk::TreeModel::Row row = *(lensfunLensModel->append()); row[lensfunModelLens.lens] = p.first; row[lensfunModelLens.prettylens] = p.first; @@ -801,3 +629,157 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() } } } + +void LensProfilePanel::updateDisabled(bool enable) +{ + ckbUseDist->set_sensitive(enable); + ckbUseVign->set_sensitive(enable && isRaw); + ckbUseCA->set_sensitive(enable && allowFocusDep); +} + +bool LensProfilePanel::setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model) +{ + if (!make.empty() && !model.empty()) { + const auto camera_it = lensfunCameras->get_active(); + + if (camera_it && (*camera_it)[lf->lensfunModelCam.make] == make && (*camera_it)[lf->lensfunModelCam.model] == model) { + return true; + } + + // search for the active row + for (const auto& row : lf->lensfunCameraModel->children()) { + if (row[lf->lensfunModelCam.make] == make) { + const auto& c = row.children(); + + for (auto model_it = c.begin(), end = c.end(); model_it != end; ++model_it) { + const auto& childrow = *model_it; + + if (childrow[lf->lensfunModelCam.model] == model) { + lensfunCameras->set_active(model_it); + return true; + } + } + + break; + } + } + } + + lensfunCameras->set_active(-1); + return false; +} + +bool LensProfilePanel::setLensfunLens(const Glib::ustring& lens) +{ + if (!lens.empty()) { + const auto lens_it = lensfunLenses->get_active(); + + if (lens_it && (*lens_it)[lf->lensfunModelLens.lens] == lens) { + return true; + } + + bool first_maker_found = false; + + for (const auto& row : lf->lensfunLensModel->children()) { + if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { + const auto& c = row.children(); + + for (auto model_it = c.begin(), end = c.end(); model_it != end; ++model_it) { + const auto& childrow = *model_it; + + if (childrow[lf->lensfunModelLens.lens] == lens) { + lensfunLenses->set_active(model_it); + return true; + } + } + + // we do not break immediately here, because there might be multiple makers + // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). + // therefore, we break below when the lens doesn't match any of them + first_maker_found = true; + } else if (first_maker_found) { + break; + } + } + } + + lensfunLenses->set_active(-1); + return false; +} + +bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) +{ + if (!metadata) { + return false; + } + + rtengine::procparams::ProcParams lpp; + write(&lpp); + const std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); + return static_cast(mod); +} + +void LensProfilePanel::setManualParamsVisibility(bool setVisible) +{ + if (setVisible) { + lensfunCamerasLbl->show(); + lensfunCameras->show(); + lensfunLensesLbl->show(); + lensfunLenses->show(); + updateLensfunWarning(); + } else { + lensfunCamerasLbl->hide(); + lensfunCameras->hide(); + lensfunLensesLbl->hide(); + lensfunLenses->hide(); + warning->hide(); + } +} + +void LensProfilePanel::updateLensfunWarning() +{ + warning->hide(); + + if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { + const LFDatabase* const db = LFDatabase::getInstance(); + + const auto itc = lensfunCameras->get_active(); + + if (!itc) { + return; + } + + const LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); + const auto itl = lensfunLenses->get_active(); + + if (!itl) { + return; + } + + const LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); + const float lenscrop = l.getCropFactor(); + const float camcrop = c.getCropFactor(); + + if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { + warning->show(); + } + + ckbUseVign->set_sensitive(l.hasVignettingCorrection()); + ckbUseDist->set_sensitive(l.hasDistortionCorrection()); + ckbUseCA->set_sensitive(l.hasCACorrection()); + + if (!isRaw || !l.hasVignettingCorrection()) { + ckbUseVign->set_active(false); + } + + if (!l.hasDistortionCorrection()) { + ckbUseDist->set_active(false); + } + + if (!l.hasCACorrection()) { + ckbUseCA->set_active(false); + } + } +} + +LensProfilePanel::LFDbHelper* LensProfilePanel::lf(nullptr); diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 9b68ad26b..42b60a414 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -16,46 +16,42 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LENSPROFILE_H_ -#define _LENSPROFILE_H_ +#pragma once #include -#include "toolpanel.h" + #include "guiutils.h" #include "lensgeom.h" +#include "toolpanel.h" -class LensProfilePanel : public ToolParamBlock, public FoldableToolPanel +class LensProfilePanel final : + public ToolParamBlock, + public FoldableToolPanel { +public: + LensProfilePanel(); -protected: + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - bool lcModeChanged, lcpFileChanged, useDistChanged, useVignChanged, useCAChanged; - sigc::connection conLCPFile, conUseDist, conUseVign, conUseCA; - void updateDisabled(bool enable); - bool allowFocusDep; - bool isRaw; - const rtengine::FramesMetaData* metadata; + void onLCPFileChanged(); + void onUseDistChanged(); + void onUseVignChanged(); + void onUseCAChanged(); - Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; - Gtk::RadioButton::Group corrGroup; - Gtk::RadioButton *corrOffRB; - Gtk::RadioButton *corrLensfunAutoRB; - Gtk::RadioButton *corrLensfunManualRB; - Gtk::RadioButton *corrLcpFileRB; - Gtk::RadioButton *corrUnchangedRB; - Gtk::Grid *modesGrid; - Gtk::Grid *distGrid; - Gtk::Label *lensfunCamerasLbl; - Gtk::Label *lensfunLensesLbl; - MyComboBox *lensfunCameras; - MyComboBox *lensfunLenses; - MyFileChooserButton *corrLcpFileChooser; - Gtk::Image *warning; + void setBatchMode(bool yes); - class LFDbHelper + void onLensfunCameraChanged(); + void onLensfunLensChanged(); + void onCorrModeChanged(const Gtk::RadioButton* rbChanged); + +private: + class LFDbHelper final { public: - class LFModelCam: public Gtk::TreeModel::ColumnRecord + class LFModelCam final : + public Gtk::TreeModel::ColumnRecord { public: LFModelCam() @@ -67,7 +63,8 @@ protected: Gtk::TreeModelColumn model; }; - class LFModelLens: public Gtk::TreeModel::ColumnRecord + class LFModelLens final : + public Gtk::TreeModel::ColumnRecord { public: LFModelLens() @@ -86,40 +83,53 @@ protected: Glib::RefPtr lensfunLensModel; LFDbHelper(); + void fillLensfunCameras(); void fillLensfunLenses(); }; - static LFDbHelper *lf; - bool useLensfunChanged; - bool lensfunAutoChanged; - bool lensfunCameraChanged; - bool lensfunLensChanged; + void updateDisabled(bool enable); - bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model); - bool setLensfunLens(const Glib::ustring &lens); + bool setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model); + bool setLensfunLens(const Glib::ustring& lens); bool checkLensfunCanCorrect(bool automatch); void setManualParamsVisibility(bool setVisible); void updateLensfunWarning(); -public: + bool lcModeChanged; + bool lcpFileChanged; + bool useDistChanged; + bool useVignChanged; + bool useCAChanged; + bool useLensfunChanged; + bool lensfunAutoChanged; + bool lensfunCameraChanged; + bool lensfunLensChanged; + sigc::connection conLCPFile; + sigc::connection conUseDist; + sigc::connection conUseVign; + sigc::connection conUseCA; + bool allowFocusDep; + bool isRaw; + const rtengine::FramesMetaData* metadata; - LensProfilePanel(); + Gtk::Grid* const modesGrid; + Gtk::Grid* const distGrid; + Gtk::RadioButton* const corrUnchangedRB; + Gtk::RadioButton::Group corrGroup; + Gtk::RadioButton* const corrOffRB; + Gtk::RadioButton* const corrLensfunAutoRB; + Gtk::RadioButton* const corrLensfunManualRB; + Gtk::RadioButton* const corrLcpFileRB; + MyFileChooserButton* const corrLcpFileChooser; + Gtk::Label* const lensfunCamerasLbl; + MyComboBox* const lensfunCameras; + Gtk::Label* const lensfunLensesLbl; + MyComboBox* const lensfunLenses; + Gtk::Image* const warning; + Gtk::CheckButton* const ckbUseDist; + Gtk::CheckButton* const ckbUseVign; + Gtk::CheckButton* const ckbUseCA; - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - - void onLCPFileChanged(); - void onUseDistChanged(); - void onUseVignChanged(); - void onUseCAChanged(); - - void setBatchMode(bool yes); - - void onLensfunCameraChanged(); - void onLensfunLensChanged(); - void onCorrModeChanged(const Gtk::RadioButton *rbChanged); + static LFDbHelper* lf; }; - -#endif From ab80e01451ccd065d9ca9da08f36d74044534122 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 20 Nov 2018 13:06:53 +0100 Subject: [PATCH 181/348] Revert unintentional changes to rt_math.h This reverts a part of commit 7e70412090a63b63661cfdcb3cd147113217c54e. --- rtengine/rt_math.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index b21d26564..9342f5430 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -56,13 +56,6 @@ constexpr const T& min(const T& a, const T& b) return b < a ? b : a; } -template<> -constexpr const float& min(const float& a, const float& b) -{ - // For consistency reasons we return b instead of a if a == b or a == NaN - return a < b ? a : b; -} - template constexpr const T& min(const T& a, const T& b, const ARGS&... args) { @@ -81,13 +74,6 @@ constexpr const T& max(const T& a, const T& b) return a < b ? b : a; } -template<> -constexpr const float& max(const float& a, const float& b) -{ - // For consistency reasons we return b instead of a if a == b or a == NaN - return b < a ? a : b; -} - template constexpr const T& max(const T& a, const T& b, const ARGS&... args) { From ac21918094f1534b6bf7de510f2b50acd7feffea Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 20 Nov 2018 13:37:23 +0100 Subject: [PATCH 182/348] DNG: apply the BaselineExposure tag only for float DNGs --- rtengine/rawimage.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 2fd4d7dc8..ec2f0b78e 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -503,6 +503,10 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro fseek (ifp, data_offset, SEEK_SET); (this->*load_raw)(); + if (!float_raw_image) { // apply baseline exposure only for float DNGs + RT_baseline_exposure = 0; + } + if (plistener) { plistener->setProgress(0.9 * progressRange); } From 1cdd814e1bba2e4c95032972de37f13532bcc5e9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 20 Nov 2018 14:42:39 +0100 Subject: [PATCH 183/348] Fix coverity issues --- rtengine/lcp.cc | 7 ++++--- rtengine/lcp.h | 4 ++-- rtengine/lj92.c | 4 +++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index 94be05ac2..34ad7a545 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -760,12 +760,13 @@ void XMLCALL rtengine::LCPProfile::XmlStartHandler(void* pLCPProfile, const char ++src; } - strcpy(pProf->lastTag, src); - + strncpy(pProf->lastTag, src, sizeof(pProf->lastTag) - 1); + pProf->lastTag[sizeof(pProf->lastTag) - 1] = 0; const std::string src_str = src; if (src_str == "VignetteModelPiecewiseParam") { - strcpy(pProf->inInvalidTag, src); + strncpy(pProf->inInvalidTag, src, sizeof(pProf->inInvalidTag) - 1); + pProf->inInvalidTag[sizeof(pProf->inInvalidTag) - 1] = 0; } if (src_str == "CameraProfiles") { diff --git a/rtengine/lcp.h b/rtengine/lcp.h index b50fd335e..d588ac381 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -131,8 +131,8 @@ private: bool inPerspect; bool inAlternateLensID; bool inAlternateLensNames; - char lastTag[256]; - char inInvalidTag[256]; + char lastTag[257]; + char inInvalidTag[257]; LCPPersModel* pCurPersModel; LCPModelCommon* pCurCommon; diff --git a/rtengine/lj92.c b/rtengine/lj92.c index cfdae6bf9..c4f1cc15c 100644 --- a/rtengine/lj92.c +++ b/rtengine/lj92.c @@ -89,7 +89,7 @@ static int parseHuff(ljp* self) { u8* huffhead = &self->data[self->ix]; // xstruct.unpack('>HB16B',self.data[self.ix:self.ix+19]) u8* bits = &huffhead[2]; bits[0] = 0; // Because table starts from 1 - int hufflen = BEH(huffhead[0]); + unsigned int hufflen = BEH(huffhead[0]); if ((self->ix + hufflen) >= self->datalen) return ret; #ifdef SLOW_HUFF u8* huffval = calloc(hufflen - 19,sizeof(u8)); @@ -546,8 +546,10 @@ static int parseScan(ljp* self) { Px = left + lastrow[col] - lastrow[col-1];break; case 5: Px = left + ((lastrow[col] - lastrow[col-1])>>1);break; + /* case 6 has a shortcut above case 6: Px = lastrow[col] + ((left - lastrow[col-1])>>1);break; + */ case 7: Px = (left + lastrow[col])>>1;break; } From 087e438cdf8f272604a71c61517ae7fc099e7e8e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 20 Nov 2018 15:45:13 +0100 Subject: [PATCH 184/348] Fix coverity issues --- rtengine/iimage.h | 16 +++++++--- rtengine/rtthumbnail.cc | 68 ++++++++++++++++++++++++----------------- 2 files changed, 52 insertions(+), 32 deletions(-) diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 2def35e06..5598f4f5a 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -1136,15 +1136,21 @@ public: void readData (FILE *f) { for (int i = 0; i < height; i++) { - fread (r(i), sizeof(T), width, f); + if (fread(r(i), sizeof(T), width, f) < width * sizeof(T)) { + break; + } } for (int i = 0; i < height; i++) { - fread (g(i), sizeof(T), width, f); + if (fread(g(i), sizeof(T), width, f) < width * sizeof(T)) { + break; + } } for (int i = 0; i < height; i++) { - fread (b(i), sizeof(T), width, f); + if (fread(b(i), sizeof(T), width, f) < width * sizeof(T)) { + break; + } } } @@ -1712,7 +1718,9 @@ public: void readData (FILE *f) { for (int i = 0; i < height; i++) { - fread (r(i), sizeof(T), 3 * width, f); + if (fread(r(i), sizeof(T), 3 * width, f) < 3 * width * sizeof(T)) { + break; + } } } diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 2d911087c..fe5fb9b86 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1934,46 +1934,53 @@ bool Thumbnail::readImage (const Glib::ustring& fname) Glib::ustring fullFName = fname + ".rtti"; - if (!Glib::file_test (fullFName, Glib::FILE_TEST_EXISTS)) { + if (!Glib::file_test(fullFName, Glib::FILE_TEST_EXISTS)) { return false; } - FILE* f = g_fopen (fullFName.c_str (), "rb"); + FILE* f = g_fopen(fullFName.c_str (), "rb"); if (!f) { return false; } char imgType[31]; // 30 -> arbitrary size, but should be enough for all image type's name - fgets (imgType, 30, f); - imgType[strlen (imgType) - 1] = '\0'; // imgType has a \n trailing character, so we overwrite it by the \0 char + fgets(imgType, 30, f); + imgType[strlen(imgType) - 1] = '\0'; // imgType has a \n trailing character, so we overwrite it by the \0 char guint32 width, height; - fread (&width, 1, sizeof (guint32), f); - fread (&height, 1, sizeof (guint32), f); + + if (fread(&width, 1, sizeof(guint32), f) < sizeof(guint32)) { + width = 0; + } + + if (fread(&height, 1, sizeof(guint32), f) < sizeof(guint32)) { + height = 0; + } bool success = false; - if (!strcmp (imgType, sImage8)) { - Image8 *image = new Image8 (width, height); - image->readData (f); - thumbImg = image; - success = true; - } else if (!strcmp (imgType, sImage16)) { - Image16 *image = new Image16 (width, height); - image->readData (f); - thumbImg = image; - success = true; - } else if (!strcmp (imgType, sImagefloat)) { - Imagefloat *image = new Imagefloat (width, height); - image->readData (f); - thumbImg = image; - success = true; - } else { - printf ("readImage: Unsupported image type \"%s\"!\n", imgType); + if (std::min(width , height) > 0) { + if (!strcmp(imgType, sImage8)) { + Image8 *image = new Image8(width, height); + image->readData(f); + thumbImg = image; + success = true; + } else if (!strcmp(imgType, sImage16)) { + Image16 *image = new Image16(width, height); + image->readData(f); + thumbImg = image; + success = true; + } else if (!strcmp(imgType, sImagefloat)) { + Imagefloat *image = new Imagefloat(width, height); + image->readData(f); + thumbImg = image; + success = true; + } else { + printf ("readImage: Unsupported image type \"%s\"!\n", imgType); + } } - - fclose (f); + fclose(f); return success; } @@ -2223,14 +2230,19 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname) bool Thumbnail::readAEHistogram (const Glib::ustring& fname) { - FILE* f = g_fopen (fname.c_str (), "rb"); + FILE* f = g_fopen(fname.c_str(), "rb"); if (!f) { aeHistogram.reset(); } else { - aeHistogram (65536 >> aeHistCompression); - fread (&aeHistogram[0], 1, (65536 >> aeHistCompression)*sizeof (aeHistogram[0]), f); + aeHistogram(65536 >> aeHistCompression); + const size_t histoBytes = (65536 >> aeHistCompression) * sizeof(aeHistogram[0]); + const int bytesRead = fread(&aeHistogram[0], 1, histoBytes, f); fclose (f); + if (bytesRead != histoBytes) { + aeHistogram.reset(); + return false; + } return true; } From 26f8cde2f5e61bdc65e71bfe4e9a2fe816b94f97 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 20 Nov 2018 16:45:58 +0100 Subject: [PATCH 185/348] camconst: added PDAF lines info for the Nikon Z 6 --- rtengine/camconst.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 894429426..2113c5532 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1592,7 +1592,9 @@ Camera constants: { // Quality C, only colour matrix and PDAF lines info "make_model" : "Nikon Z 6", - "dcraw_matrix" : [8210, -2534, -683, -5355, 13338, 2212, -1143, 1929, 6464] // Adobe DNG Converter 11.1 Beta ColorMatrix2 + "dcraw_matrix" : [8210, -2534, -683, -5355, 13338, 2212, -1143, 1929, 6464], // Adobe DNG Converter 11.1 Beta ColorMatrix2 + "pdaf_pattern" : [0, 12], + "pdaf_offset" : 32 }, { // Quality B, 16Mp and 64Mp raw frames From aa286a32f9f610396f79426a51bf399bddd11f61 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 20 Nov 2018 17:16:02 +0100 Subject: [PATCH 186/348] Fix bug I introduced with last commit --- rtengine/iimage.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 5598f4f5a..c25425b7d 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -1136,19 +1136,19 @@ public: void readData (FILE *f) { for (int i = 0; i < height; i++) { - if (fread(r(i), sizeof(T), width, f) < width * sizeof(T)) { + if (fread(r(i), sizeof(T), width, f) < width) { break; } } for (int i = 0; i < height; i++) { - if (fread(g(i), sizeof(T), width, f) < width * sizeof(T)) { + if (fread(g(i), sizeof(T), width, f) < width) { break; } } for (int i = 0; i < height; i++) { - if (fread(b(i), sizeof(T), width, f) < width * sizeof(T)) { + if (fread(b(i), sizeof(T), width, f) < width) { break; } } @@ -1718,7 +1718,7 @@ public: void readData (FILE *f) { for (int i = 0; i < height; i++) { - if (fread(r(i), sizeof(T), 3 * width, f) < 3 * width * sizeof(T)) { + if (fread(r(i), sizeof(T), 3 * width, f) < 3 * width) { break; } } From a19f3484ddcbc48c31f80d975b155717e478d8eb Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 20 Nov 2018 20:32:36 +0100 Subject: [PATCH 187/348] Fix some warnings --- rtengine/iimage.h | 8 ++++---- rtengine/rtthumbnail.cc | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rtengine/iimage.h b/rtengine/iimage.h index c25425b7d..5738b4655 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -1136,19 +1136,19 @@ public: void readData (FILE *f) { for (int i = 0; i < height; i++) { - if (fread(r(i), sizeof(T), width, f) < width) { + if (fread(r(i), sizeof(T), width, f) < static_cast(width)) { break; } } for (int i = 0; i < height; i++) { - if (fread(g(i), sizeof(T), width, f) < width) { + if (fread(g(i), sizeof(T), width, f) < static_cast(width)) { break; } } for (int i = 0; i < height; i++) { - if (fread(b(i), sizeof(T), width, f) < width) { + if (fread(b(i), sizeof(T), width, f) < static_cast(width)) { break; } } @@ -1718,7 +1718,7 @@ public: void readData (FILE *f) { for (int i = 0; i < height; i++) { - if (fread(r(i), sizeof(T), 3 * width, f) < 3 * width) { + if (fread(r(i), sizeof(T), 3 * width, f) < 3 * static_cast(width)) { break; } } diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index fe5fb9b86..0ca2c24ec 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -2237,7 +2237,7 @@ bool Thumbnail::readAEHistogram (const Glib::ustring& fname) } else { aeHistogram(65536 >> aeHistCompression); const size_t histoBytes = (65536 >> aeHistCompression) * sizeof(aeHistogram[0]); - const int bytesRead = fread(&aeHistogram[0], 1, histoBytes, f); + const size_t bytesRead = fread(&aeHistogram[0], 1, histoBytes, f); fclose (f); if (bytesRead != histoBytes) { aeHistogram.reset(); From e7a04bb77eb8fe8a397f0016c2d02595ed69f073 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 20 Nov 2018 21:23:37 +0100 Subject: [PATCH 188/348] Fix coverity issues --- rtgui/thumbbrowserbase.cc | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index 1518428b7..fdb551f45 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -166,33 +166,37 @@ void ThumbBrowserBase::selectSingle (ThumbBrowserEntryBase* clicked) void ThumbBrowserBase::selectRange (ThumbBrowserEntryBase* clicked, bool additional) { - if (selected.empty ()) { - addToSelection (clicked, selected); + if (selected.empty()) { + addToSelection(clicked, selected); return; } if (!additional || !lastClicked) { // Extend the current range w.r.t to first selected entry. - ThumbIterator front = std::find (fd.begin (), fd.end (), selected.front ()); - ThumbIterator current = std::find (fd.begin (), fd.end (), clicked); + ThumbIterator front = std::find(fd.begin(), fd.end(), selected.front()); + ThumbIterator current = std::find(fd.begin(), fd.end(), clicked); - if (front > current) - std::swap (front, current); + if (front > current) { + std::swap(front, current); + } - clearSelection (selected); + clearSelection(selected); - for (; front <= current; ++front) - addToSelection (*front, selected); + for (; front <= current && front != fd.end(); ++front) { + addToSelection(*front, selected); + } } else { // Add an additional range w.r.t. the last clicked entry. - ThumbIterator last = std::find (fd.begin (), fd.end (), lastClicked); - ThumbIterator current = std::find (fd.begin (), fd.end (), clicked); + ThumbIterator last = std::find(fd.begin(), fd.end(), lastClicked); + ThumbIterator current = std::find (fd.begin(), fd.end(), clicked); - if (last > current) - std::swap (last, current); + if (last > current) { + std::swap(last, current); + } - for (; last <= current; ++last) - addToSelection (*last, selected); + for (; last <= current && last != fd.end(); ++last) { + addToSelection(*last, selected); + } } } @@ -337,7 +341,7 @@ void ThumbBrowserBase::selectNext (int distance, bool enlarge) std::swap(front, back); } - for (; front <= back; ++front) { + for (; front <= back && front != fd.end(); ++front) { if (!(*front)->filtered) { (*front)->selected = true; redrawNeeded (*front); From 24a80c60eef86e66366ede383a0a2cb2b803c85e Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 20 Nov 2018 22:14:04 +0100 Subject: [PATCH 189/348] Make WB-Picker button look like other toolbuttons (#4967) --- rtdata/languages/default | 1 + rtdata/themes/TooWaBlue-GTK3-20_.css | 397 ++++++++++++++++----------- rtgui/whitebalance.cc | 59 ++-- 3 files changed, 276 insertions(+), 181 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 7fadbaa72..5b11c5c1d 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -2273,6 +2273,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Method +TP_WBALANCE_PICKER;WB-Picker TP_WBALANCE_SHADE;Shade TP_WBALANCE_SIZE;Size: TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index 3bc6e0bdc..b7b5175a7 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-2018 TooWaBoo - Version 2.86 + Version 2.96 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -96,7 +96,7 @@ } #ToolPanelNotebook { - min-width: 24em; + min-width: 25em; } #HistoryPanel { min-width: 17.5em; @@ -164,7 +164,7 @@ undershoot { } label { - margin: 0 0.166666666666666666em; + margin: 0 0.19em; } /*** Frames ************************************************************************************/ @@ -179,11 +179,6 @@ frame { border-radius: 0; } -#BatchQueueButtonsMainContainer frame, -#MyExpander frame, -dialog frame { - margin: 0.166666666666666666em 0.5em; -} /* affects selection list*/ entry > window > frame { margin: 0; @@ -193,24 +188,36 @@ entry > window > frame { margin: -5px 0 0; } -frame > border { - padding: 0; - border-radius: 0; - border: none; - background-color: transparent; +#RightNotebook > stack > scrolledwindow frame, +#BatchQueueButtonsMainContainer frame, +#MyExpander frame, +dialog frame { margin: 0; - min-height: 0; - min-width: 0; + padding: 0.19em 0.75em; } - +#RightNotebook > stack > scrolledwindow frame > border, #BatchQueueButtonsMainContainer > frame > border, #MyExpander frame > border, dialog frame > border { - padding: 0.416666666666666666em; + padding: 0 0.333333333333333333em 0.333333333333333333em; border-radius: 0; border: 0.083333333333333333em solid @border-color; background-color: transparent; - margin: 0 -0.5em; + margin: 0 -0.583333333333333333em; +} +frame > label { + margin: 0; + padding: 0.416666666666666666em 0; + color: @headline-frame; +} +frame > checkbutton label{ + color: @headline-frame; +} +#RightNotebook > stack > scrolledwindow frame > label:not(.dummy), +#BatchQueueButtonsMainContainer frame > label:not(.dummy), +#ToolPanelNotebook frame > label:not(.dummy), +dialog frame > label:not(.dummy) { + padding: 0.25em 0.5em; } #PrefNotebook box > frame > border { @@ -221,12 +228,6 @@ dialog frame > border { border: 0.083333333333333333em solid @bg-dark-grey; } -#BatchQueueButtonsMainContainer frame > label, -#ToolPanelNotebook frame > label, -dialog frame > label { - margin: 0; - padding: 0.166666666666666666em 0.5em; -} #BatchQueueButtonsMainContainer frame > border { margin-bottom: 0.833333333333333333em; } @@ -234,14 +235,6 @@ dialog frame > label { padding-left: 0.916666666666666666em; } -frame > label { - margin: 0; - padding: 0.416666666666666666em 0; - color: @headline-frame; -} -frame > checkbutton label{ - color: @headline-frame; -} /*** end ***************************************************************************************/ /*** Lists & Views *****************************************************************************/ @@ -397,7 +390,7 @@ filechooser placessidebar list row { min-height: calc(1.416666666666666666em + 8px); } filechooser placessidebar list row label{ - margin: 0 0 0 0.58333333333333333em; + margin: 0 0 0 0.583333333333333333em; } filechooser list row:hover { background-color: @bg-list-hover; @@ -473,7 +466,7 @@ separator, background-color: transparent; } grid separator.horizontal, box separator.horizontal { - margin: 0.333333333333333333em 0.166666666666666666em; + margin: 0.25em 0.19em; padding: 0; } grid separator.vertical, box separator.vertical { @@ -546,20 +539,25 @@ menu separator { } .scrollableToolbar separator.vertical { - background-color: shade(@bg-light-grey,.75); - margin: 0.166666666666666666em; + background-color: shade(@bg-light-grey, .72); + margin: 0.19em; } #MyExpander separator.horizontal { background-color: @view-grid-border; - margin: 0.333333333333333333em 0.166666666666666666em; + margin: 0.25em 0.19em; } #MyFileChooserButton separator { background-color: transparent; } #PlacesPaned .view.separator { - color: @border-color; + color: @view-grid-border; +} + +#MetaPanelNotebook separator { + background-color: @border-color; + margin: 0.19em 0; } /*** end****************************************************************************************/ @@ -697,7 +695,7 @@ scrollbar:not(.overlay-indicator):hover { /*** Scale**************************************************************************************/ scale { padding: 0; - min-height: 1.833333333333333333em; + min-height: 1.833333333333333333em; margin: 0 -0.333333333333333333em; } @@ -746,6 +744,7 @@ scale.fine-tune trough highlight { padding: 0.5em 0.5em 0 0; border-radius: 0.5em; } + scale:disabled slider, scale:disabled trough highlight { background-color: shade(@bg-grey,.83); @@ -820,6 +819,7 @@ progressbar.vertical trough.empty { progressbar trough.empty progress { border-color: transparent; background-image: none; + box-shadow: none; } /*** end ***************************************************************************************/ @@ -920,15 +920,26 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-height: 5em; } +#ToolPanelNotebook { + background-color: @bg-dark-grey; +} +#ToolPanelNotebook > header { + border-bottom: 0.083333333333333333em solid @view-grid-border; + margin-left: 0.083333333333333333em; + margin-right: 0.083333333333333333em; +} #ToolPanelNotebook > header tabs { margin-bottom: 0.333333333333333333em; } #ToolPanelNotebook > header tab > box > image{ min-height: 2em; min-width: 2em; - padding-top: 0.25em; - padding-bottom: 0.333333333333333333em; - margin: 0; + margin: 0.25em 0 0.333333333333333333em; + padding: 0; +} +#ToolPanelNotebook > stack { + background-color: @bg-dark-grey; + padding: 0.5em 0; } #RightNotebook > header { @@ -984,7 +995,11 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { padding-left: 0.333333333333333333em; } #MetaPanelNotebook > header tab label{ - margin: 0.083333333333333333em 0.083333333333333333em 0.166666666666666666em; + margin: 0.083333333333333333em 0.083333333333333333em 0.19em; +} +#MetaPanelNotebook > stack { + background-color: @bg-dark-grey; + padding: 0 0 0.5em 0; } #MetaPanelNotebook > stack > box { @@ -993,7 +1008,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border-radius: 0; border-top-style: none; padding: 0 0.333333333333333333em 0.25em; - margin: 0 0.5em -0.5em; + margin:0 0.5em -0.5em; } #MetaPanelNotebook > stack > box:nth-child(1) > scrolledwindow { margin: 0 0 0.333333333333333333em; @@ -1004,10 +1019,6 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { padding: 0 0 0 1.083333333333333333em; } -#MetaPanelNotebook separator { - background-color: @border-color; - margin: 0.166666666666666666em 0; -} #MetaPanelNotebook entry { padding: 0 0.333333333333333333em; background-color: @bg-dark-grey; @@ -1048,7 +1059,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #ToolBarPanelFileBrowser { - margin: 0.416666666666666666em 0; + margin: 0 0 0.416666666666666666em 0; + min-height: 0; + min-width: 0; + padding: 0; +} +#FileBrowserQueryToolbar { + margin: 0 0 0.416666666666666666em 0; min-height: 0; min-width: 0; padding: 0; @@ -1100,15 +1117,10 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /*** end ***************************************************************************************/ /*** Toolbox ***********************************************************************************/ -#ToolPanelNotebook stack { - background-color: @bg-dark-grey; - padding: 0 0 0.5em 0; -} - #MyExpander image { min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; - margin: 0 0.166666666666666666em; + min-height: 0; + margin: -1px 0.19em; } /*Curve spinbutton background */ @@ -1135,8 +1147,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { margin: 0.083333333333333333em 0 0.166666666666666666em 0; } -#ToolPanelNotebook scrolledwindow viewport.frame { +#ToolPanelNotebook > stack > scrolledwindow > viewport.frame { padding: 0 0.5em; + margin-top: -0.5em; } #MyExpander { @@ -1148,7 +1161,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border: none; border-radius: 0; margin: 0; - padding: 0.416666666666666666em; + padding: 0.5em 0.333333333333333333em; } /* Sub-tool (MyExpander) */ @@ -1156,8 +1169,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: transparent; border: 0.083333333333333333em solid @border-color; border-radius: 0; - margin: 0; - padding: 0.416666666666666666em; + margin: 0 0.19em; + padding: 0.333333333333333333em; } #MyExpanderTitle > box { @@ -1168,7 +1181,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #MyExpanderTitle label { color: @headline-big; padding: 0; - margin: 0.083333333333333333em 0.25em 0 0.5em; + margin: 0.083333333333333333em 0.25em 0 0.166666666666666666em; } #MyExpanderTitle:hover label { @@ -1210,7 +1223,7 @@ menuitem { menu arrow { min-width: 1.333333333333333333em; - margin: 0 -0.166666666666666666em; + margin: 0 -0.19em; padding: 0; margin: 0 -0.25em 0 0; } @@ -1225,9 +1238,9 @@ menuitem:hover > * { menu image:not(.dummy), #MyExpander menu image:not(.dummy) { min-height: 2em; - min-width: 1.333333333333333333em; + min-width: 1.5em; padding: 0; - margin: 0 0 0 -1.583333333333333333em; + margin: 0 0 0 -1.333333333333333333em; } /*** Selection popup list (used in filechooser) ***/ @@ -1281,11 +1294,10 @@ popover.background modelbutton:hover { switch { min-height: 2.333333333333333333em; min-width: 11em; - margin: 0 0.166666666666666666em; + margin: 0 0.19em; padding: 0; border-radius: 0.2em; background-image: none; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; margin-bottom: 0.5em; @@ -1329,8 +1341,8 @@ switch:disabled:not(:checked) { button, #BeforeAfterContainer button { min-height: 1.666666666666666666em; - min-width: 1.666666666666666666em; - margin: 0.166666666666666666em; + min-width: 1.666666666666666666em;/*x*/ + margin: 0.19em; border-radius: 0.2em; border: 0.083333333333333333em solid @bg-button-border; background-color: transparent; @@ -1346,32 +1358,83 @@ button.flat { button.flat:hover, button:hover, -#BeforeAfterContainer button:hover { +#BeforeAfterContainer button:hover, +#FileBrowserQueryToolbar entry + button.flat:hover, +#FileBrowserIconToolbar entry + button.flat:hover { border-color: @bg-button-border; box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-hover; } +.curve-mainbox .curve-buttonbox button.flat:hover, +#ToolPanelNotebook > stack > box > box button:hover, #MainNotebook > header tab #CloseButton:hover, #MainNotebook > header > grid > button:hover { background-color: alpha(@bg-grey, 0.6); border-color: shade(@bg-dark-grey, 0.6); + box-shadow: inset 0 0.1em rgba(242, 242, 242, 0.12); } button.flat:active, button.flat:checked, button:active, button:checked, -#BeforeAfterContainer button:checked { +#BeforeAfterContainer button:checked, +#FileBrowserQueryToolbar entry + button.flat:active, +#FileBrowserIconToolbar entry + button.flat:active { border-color: @bg-button-border; - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.08); + box-shadow: inset 0 0.1em rgba(242, 242, 242, 0.08); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-active; } +.curve-mainbox .curve-buttonbox button.flat:active, +.curve-mainbox .curve-buttonbox button.flat:checked, +#ToolPanelNotebook > stack > box > box button:active, #MainNotebook > header tab #CloseButton:active, #MainNotebook > header > grid > button:active { background-color: alpha(@bg-light-grey, 0.8); border-color: shade(@bg-dark-grey, 0.6); + box-shadow: inset 0 0.1em rgba(242, 242, 242, 0.15); +} + +/* Combobox */ +button.combo { + padding: 0 0 0 0.25em; +} +combobox entry.combo + button.combo { + min-width: 1em; + margin-left: 0; + padding: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-left: none; +} +#WB-Size-Helper button.combo { + min-width: 0; + margin: 0; +} +#WB-Size-Helper { + min-width: 3.5em; + margin: 0.19em; +} + +combobox arrow { + margin-right: 0.083333333333333333em; +} + +combobox entry.combo + button.combo arrow { + margin-right: 0; +} + +#PlacesPaned button.combo { + margin: 0; +} +#PlacesPaned combobox { + margin-bottom: calc(0.416666666666666666em - 8px); +} + +#ProfilePanel combobox { + margin-right: -2px; } /* Misc */ @@ -1385,18 +1448,12 @@ button image:not(.dummy), #MyFileChooserButton label { margin: 0 0 0 0.416666666666666666em; } -#MyFileChooserButton image { - padding: 0 0.416666666666666666em 0 0; +#MyFileChooserButton image:not(.dummy):last-child { + margin: 0 0.416666666666666666em 0 0; + min-width: 1.333333333333333333em; opacity: 0.85; } -button.combo { - padding: 0 0 0 0.25em; -} -combobox arrow { - margin-right: 0.083333333333333333em; -} -#MetaPanelNotebook button + button:last-child, -#MetaPanelNotebook scrolledwindow ~ combobox entry + button:not(.dummy) { +#MetaPanelNotebook button + button:last-child { margin-right: 0; } #MetaPanelNotebook scrolledwindow + grid > button:first-child, @@ -1407,23 +1464,9 @@ combobox arrow { #MetaPanelNotebook scrolledwindow + grid + grid > button:last-child { margin-right: 0; } -combobox entry + button:not(.dummy) arrow { - margin-right: 0; -} -combobox entry + button:not(.dummy) { - min-width: 1em; - margin-left: 0; - padding: 0 ; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left: none; -} -#PlacesPaned button.combo { - margin: 0; -} -#PlacesPaned combobox { - margin-bottom: calc(0.416666666666666666em - 8px); +#ProfilePanel > grid { + margin-bottom: calc(0.416666666666666666em -2px); } /* Reset button */ @@ -1431,6 +1474,8 @@ scale + button.flat, spinbutton + button.flat, scale + image + image + button.flat { min-height: 1.333333333333333333em; + margin-top:0.095em; + margin-bottom: 0.095em; } /*Color chooser & buttons */ @@ -1471,16 +1516,15 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { #IopsPanel button, #ProfilePanel button, #MainNotebook > header > grid > button, -#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter big button */, -#MyExpander button.independent.image-button,/* Picker button */ -#MyExpander .drawingarea + grid > button.flat,/* Curve buttons */ +#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child, /* Graduated filter big button */ +.curve-mainbox .curve-buttonbox button.flat, #BatchQueueButtonsMainContainer + grid + box button, -#RightNotebook > stack > scrolledwindow:last-child button.image-button,/* Fast Export */ +#RightNotebook > stack > scrolledwindow:last-child button.image-button, /* Fast Export */ #MetaPanelNotebook scrolledwindow + grid > button, #MetaPanelNotebook scrolledwindow + grid + grid > button { min-height: 2.5em; min-width: 2.5em; - margin: 0 0.166666666666666666em; + margin: 0 0.19em; } #ToolBarPanelFileBrowser > button:first-child, #EditorTopPanel > button:first-child, @@ -1497,25 +1541,12 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { #BatchQueueButtonsMainContainer + grid + box button { margin-right: 0; } -#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child/* Graduated filter button */, -#MyExpander button.independent.image-button,/* Picker button */ -#MyExpander .drawingarea + grid > button.flat,/* Curve buttons */ +#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child, /* Graduated filter button */ #MetaPanelNotebook scrolledwindow + grid > button, #MetaPanelNotebook scrolledwindow + grid + grid > button { - margin: 0.166666666666666666em; + margin: 0.19em; } -#MyExpander button.independent.image-button + label + combobox button { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -#ProfilePanel combobox { - margin-right: -2px; -} -#ProfilePanel > grid { - margin-bottom: calc(0.416666666666666666em -2px); -} #EditorTopPanel button.narrowbutton { min-width: 0.833333333333333333em; padding: 0 0.166666666666666666em; @@ -1524,7 +1555,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { /* Image close button */ #MainNotebook > header tab #CloseButton { padding: 0; - margin: 0.333333333333333333em 0 0.416666666666666666em 0.166666666666666666em; + margin: 0.333333333333333333em 0 0.416666666666666666em 0.19em; min-width: 1.5em; min-height: 0; } @@ -1543,7 +1574,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { margin: 0.083333333333333333em 0 -0.166666666666666666em; } #ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image { - margin: -0.166666666666666666em; + margin: -0.19em; min-width: 1.333333333333333333em; min-height: 1.333333333333333333em; } @@ -1595,11 +1626,11 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { /* Search & Query buttons */ #FileBrowserQueryToolbar entry + button.flat, #FileBrowserIconToolbar entry + button.flat { - min-height: 1.666666666666666666em; - min-width: 1.666666666666666666em; + min-height: 1.666666666666666666em;/*x*/ + min-width: 1.666666666666666666em;/*x*/ margin: 0; border-radius: 0 0.2em 0.2em 0; - box-shadow: inset 0 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09); border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; padding: 0; @@ -1609,14 +1640,10 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { border-left: none; padding-left: 0.083333333333333333em; } -#FileBrowserQueryToolbar entry, -#FileBrowserIconToolbar entry { - min-height: 1.666666666666666666em; - min-width: 0; - margin: 0; - padding: 0 0.333333333333333333em; - border-right: none; - border-radius: 0.2em 0 0 0.2em; +#FileBrowserIconToolbar box > entry + button.flat { + margin-top: 0.416666666666666666em; + margin-bottom: 0.416666666666666666em; + min-height: 0; } /* Small Lock Button */ @@ -1648,7 +1675,7 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { border: 0.083333333333333333em solid @bg-dark-grey; border-radius: 0; box-shadow: none; - min-height: 1.833333333333333333em; + min-height: 1.666666666666666666em;/*x*/ } #Snapshots button:hover, @@ -1669,7 +1696,7 @@ background-color: shade(@bg-list-hover, 1.15); box-shadow: none; min-height: 2em; min-width: 1.333333333333333333em; - padding: 0 0.166666666666666666em; + padding: 0 0.19em; margin: 0; } #pathbarbox button { @@ -1686,7 +1713,7 @@ window treeview > header image { } window .view button { border: none; - border-bottom: 0.083333333333333333em solid @border-color; + border-bottom: 0.083333333333333333em solid @view-grid-border; } dialog .view button { border: 0.083333333333333333em solid @border-color; @@ -1767,13 +1794,13 @@ popover button.text-button:active { /*** Checkbox & Radio **************************************************************************/ checkbutton { padding: 0; - margin: 0.083333333333333333em 0.166666666666666666em; - min-height: 1.666666666666666666em; + margin: 0.083333333333333333em 0.19em; + min-height: 1.666666666666666666em;/*x*/ } radiobutton { padding: 0.083333333333333333em 0; - margin: 0.166666666666666666em; - min-height: 1.666666666666666666em; + margin: 0.19em; + min-height: 1.666666666666666666em;/*x*/ } check, @@ -1803,7 +1830,7 @@ radio:disabled { radiobutton label, checkbutton label { - margin: 0 0.416666666666666666em; + margin: 0 0.583333333333333333em 0 0.416666666666666666em; padding: 0; } @@ -1828,30 +1855,43 @@ frame > checkbutton check{ /*** Entry & Spinbutton ************************************************************************/ #MyExpander entry, -entry { - margin: 0.166666666666666666em; +entry, +spinbutton { + margin: 0.19em; padding: 0 0.333333333333333333em; - min-height: 1.666666666666666666em; + min-height: 1.666666666666666666em;/*x*/ min-width: 0; border-radius: 0.2em; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09); border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; } - -spinbutton { - margin: 0.166666666666666666em; - padding: 0; - min-height: 1.666666666666666666em; +#FileBrowserQueryToolbar entry, +#FileBrowserIconToolbar entry { + min-height: 1.666666666666666666em;/*x*/ min-width: 0; - border-radius: 0.2em; - background-color: @bg-scale-entry; - border: 0.083333333333333333em solid @bg-entry-border; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + margin: 0; + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset 0 -0.1em rgba(230, 230, 230, 0.09); +} + +#FileBrowserIconToolbar box > entry { + margin-top: 0.416666666666666666em; + margin-bottom: 0.416666666666666666em; + margin-left: 0.19em; + min-height: 0; +} +#FileBrowserQueryToolbar box + box > label + entry { + margin-left: 0.19em; +} +spinbutton { + padding: 0; } #MyExpander spinbutton { - margin: 0.16666666666666666666em; + margin: 0.19em; padding: 0; min-height: 1.333333333333333333em; min-width: 0; @@ -1860,21 +1900,25 @@ spinbutton { background-color: @bg-tb-spinbutton; border: 0.083333333333333333em solid @bg-button-border; color: @text-tbEntry; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, .12), 0 0.083333333333333333em rgba(255, 255, 255, 0.12); + box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, .1), inset -0.1em -0.1em rgba(250, 250, 250, .08); } /* Needed for Reset & and Auto button height*/ -#MyExpander checkbutton + label + spinbutton, #MyExpander button + label + spinbutton { margin-top: 0.333333333333333333em; margin-bottom: 0.333333333333333333em; } +#MyExpander checkbutton + label + spinbutton { + margin-top: 0.333333333333333333em; + margin-bottom: 0.333333333333333333em; +} +/**/ #MyExpander spinbutton button, spinbutton button { padding: 0; margin: 0; min-height: 1.333333333333333333em; - min-width: 1.5em; + min-width: 1.666666666666666666em; background-image: none; background-color: transparent; border: none; @@ -1950,6 +1994,49 @@ entry:focus > selection { /*** end ***************************************************************************************/ +/* Curves **************************************************************************************/ +.curve-mainbox { + margin: 0.19em; + border: 0.083333333333333333em solid @border-color; +} +.curve-mainbox .curve-curvebox { + margin: 0; + padding: 0.416666666666666666em; + background-color: @bg-dark-grey; +} +.curve-mainbox .curve-spinbuttonbox { + margin: 0; + padding: 0.25em; + border-top: 0.083333333333333333em solid @border-color; + background-color: @bg-dark-grey; +} +.curve-mainbox .curve-sliderbox { + margin: 0; + padding: 0.25em; + background-color: @bg-grey; + border-top: 0.083333333333333333em solid @border-color; +} +.curve-mainbox .curve-buttonbox { + padding: 0.25em; + background-color: @bg-dark-grey; +} +.curve-mainbox.left .curve-buttonbox { + border-right: 0.083333333333333333em solid @border-color; +} +.curve-mainbox.right .curve-buttonbox { + border-left: 0.083333333333333333em solid @border-color; +} +.curve-mainbox.top .curve-buttonbox { + border-bottom: 0.083333333333333333em solid @border-color; +} +.curve-mainbox.bottom .curve-buttonbox { + border-top: 0.083333333333333333em solid @border-color; +} +.curve-mainbox .curve-buttonbox button.flat { + margin: 0.095em; +} +/*** end ***************************************************************************************/ + /*** Window Layout *****************************************************************************/ :not(.popup):not(tooltip) > decoration { background-color: @winHeaderbar; diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 1257a9c58..50cfdbc29 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -149,17 +149,19 @@ static double wbTemp2Slider(double temp) WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WBALANCE_LABEL"), false, true), wbp(nullptr), wblistener(nullptr) { - - Gtk::HBox* hbox = Gtk::manage (new Gtk::HBox ()); - hbox->set_spacing(4); - hbox->show (); - Gtk::Label* lab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_METHOD"))); - lab->show (); + + Gtk::Grid* methodgrid = Gtk::manage(new Gtk::Grid()); + methodgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(methodgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Label* lab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_METHOD") + ":")); + setExpandAlignProperties(lab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); // Create the Tree model refTreeModel = Gtk::TreeStore::create(methodColumns); // Create the Combobox method = Gtk::manage (new MyComboBox ()); + setExpandAlignProperties(method, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); // Assign the model to the Combobox method->set_model(refTreeModel); @@ -244,31 +246,30 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; method->set_active (0); // Camera - method->show (); - hbox->pack_start (*lab, Gtk::PACK_SHRINK, 0); - hbox->pack_start (*method); - pack_start (*hbox, Gtk::PACK_SHRINK, 0); + methodgrid->attach (*lab, 0, 0, 1, 1); + methodgrid->attach (*method, 1, 0, 1, 1); + pack_start (*methodgrid, Gtk::PACK_SHRINK, 0 ); opt = 0; - Gtk::HBox* spotbox = Gtk::manage (new Gtk::HBox ()); - spotbox->set_spacing(4); - spotbox->show (); + Gtk::Grid* spotgrid = Gtk::manage(new Gtk::Grid()); + spotgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(spotgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - spotbutton = Gtk::manage (new Gtk::Button ()); + spotbutton = Gtk::manage (new Gtk::Button (M("TP_WBALANCE_PICKER"))); + setExpandAlignProperties(spotbutton, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); spotbutton->get_style_context()->add_class("independent"); spotbutton->set_tooltip_text(M("TP_WBALANCE_SPOTWB")); - Gtk::Image* spotimg = Gtk::manage (new RTImage ("color-picker.png")); - spotimg->show (); - spotbutton->set_image (*spotimg); - spotbutton->show (); - - spotbox->pack_start (*spotbutton); + spotbutton->set_image (*Gtk::manage (new RTImage ("color-picker-small.png"))); Gtk::Label* slab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_SIZE"))); - slab->show (); + setExpandAlignProperties(slab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + + Gtk::Grid* wbsizehelper = Gtk::manage(new Gtk::Grid()); + wbsizehelper->set_name("WB-Size-Helper"); + setExpandAlignProperties(wbsizehelper, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); spotsize = Gtk::manage (new MyComboBoxText ()); - spotsize->show (); + setExpandAlignProperties(spotsize, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); spotsize->append ("2"); if (options.whiteBalanceSpotSize == 2) { @@ -298,11 +299,17 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB if (options.whiteBalanceSpotSize == 32) { spotsize->set_active(4); } + + wbsizehelper->attach (*spotsize, 0, 0, 1, 1); - spotbox->pack_end (*spotsize, Gtk::PACK_EXPAND_WIDGET, 0); - spotbox->pack_end (*slab, Gtk::PACK_SHRINK, 0); - - pack_start (*spotbox, Gtk::PACK_SHRINK, 0); + spotgrid->attach (*spotbutton, 0, 0, 1, 1); + spotgrid->attach (*slab, 1, 0, 1, 1); + spotgrid->attach (*wbsizehelper, 2, 0, 1, 1); + pack_start (*spotgrid, Gtk::PACK_SHRINK, 0 ); + + Gtk::HSeparator *separator = Gtk::manage (new Gtk::HSeparator()); + separator->get_style_context()->add_class("grid-row-separator"); + pack_start (*separator, Gtk::PACK_SHRINK, 0); Gtk::Image* itempL = Gtk::manage (new RTImage ("circle-blue-small.png")); Gtk::Image* itempR = Gtk::manage (new RTImage ("circle-yellow-small.png")); From 0e8069c1d8edca845a24250ceee608777ea3da54 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 21 Nov 2018 00:37:55 +0100 Subject: [PATCH 190/348] Fix another coverity issue --- rtexif/rtexif.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 947795c20..893d0fe22 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -2197,11 +2197,13 @@ void ExifManager::parseCIFF (int length, TagDirectory* root) t = new Tag (root, lookupAttrib (ifdAttribs, "Make")); t->initString (buffer); root->addTag (t); - fseek (f, strlen (buffer) - 63, SEEK_CUR); - fread (buffer, 64, 1, f); - t = new Tag (root, lookupAttrib (ifdAttribs, "Model")); - t->initString (buffer); - root->addTag (t); + if (!fseek (f, strlen (buffer) - 63, SEEK_CUR)) { + if (fread (buffer, 64, 1, f) == 1) { + t = new Tag (root, lookupAttrib (ifdAttribs, "Model")); + t->initString (buffer); + root->addTag (t); + } + } } if (type == 0x1818) { From bba0f72ddcc62f42159ad88213d75a813e2a636d Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 21 Nov 2018 01:12:54 +0100 Subject: [PATCH 191/348] Revision of interface strings Changes for consistency, grammar, clarity, and making optimal use of screen space. --- rtdata/languages/Catala | 39 +++-------- rtdata/languages/Chinese (Simplified) | 40 +++--------- rtdata/languages/Chinese (Traditional) | 41 +++--------- rtdata/languages/Czech | 34 ++-------- rtdata/languages/Dansk | 41 +++--------- rtdata/languages/Deutsch | 24 +------ rtdata/languages/English (UK) | 43 +++---------- rtdata/languages/English (US) | 43 +++---------- rtdata/languages/Espanol | 39 +++-------- rtdata/languages/Euskara | 41 +++--------- rtdata/languages/Francais | 26 +------- rtdata/languages/Greek | 41 +++--------- rtdata/languages/Hebrew | 41 +++--------- rtdata/languages/Italiano | 39 +++-------- rtdata/languages/Japanese | 24 +------ rtdata/languages/Latvian | 41 +++--------- rtdata/languages/Magyar | 39 +++-------- rtdata/languages/Nederlands | 38 +++-------- rtdata/languages/Norsk BM | 41 +++--------- rtdata/languages/Polish | 39 +++-------- rtdata/languages/Polish (Latin Characters) | 39 +++-------- rtdata/languages/Portugues (Brasil) | 32 ++-------- rtdata/languages/Russian | 39 +++-------- rtdata/languages/Serbian (Cyrilic Characters) | 39 +++-------- rtdata/languages/Serbian (Latin Characters) | 39 +++-------- rtdata/languages/Slovak | 39 +++-------- rtdata/languages/Suomi | 41 +++--------- rtdata/languages/Swedish | 36 +++-------- rtdata/languages/Turkish | 41 +++--------- rtdata/languages/default | 64 ++++++++----------- rtgui/colorappearance.cc | 26 ++++---- rtgui/preferences.cc | 12 ++-- 32 files changed, 273 insertions(+), 928 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 8e2cbc611..3a4b18fc3 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -498,7 +498,6 @@ PREFERENCES_CLIPPINGIND;Indicador de pèrdues PREFERENCES_CUSTPROFBUILD;Constructor de perfils de procés particulars PREFERENCES_CUSTPROFBUILDHINT;Nom del fitxer executable (o script) per a usar un nou perfil de procés en una imatge.\nRep paràmetres en línia d'ordres per a la generació de perfils basats en regles:\n[raw/JPG path] [path per omissió del perfil de procés] [número f] [expos. en segons] [long. focal en mm] [ISO] [objectiu] [càmera] PREFERENCES_CUSTPROFBUILDPATH;Executable path -PREFERENCES_CUTOVERLAYBRUSH;Cropa màscara color/transparència PREFERENCES_DARKFRAMEFOUND;Trobat PREFERENCES_DARKFRAMESHOTS;trets PREFERENCES_DARKFRAMETEMPLATES;plantilles @@ -513,7 +512,6 @@ PREFERENCES_DIRSOFTWARE;Instal·lació al directori PREFERENCES_EDITORLAYOUT;Sortida d'editor PREFERENCES_EXTERNALEDITOR;Editor extern PREFERENCES_FBROWSEROPTS;Opcions de navegador i minifotos -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de gestor de fitxers d'una línia (inapropiat en monitors de baixa resolució) PREFERENCES_FILEFORMAT;Format de fitxer PREFERENCES_FLATFIELDFOUND;Trobat PREFERENCES_FLATFIELDSDIR;Carpeta de camps plans @@ -561,9 +559,7 @@ PREFERENCES_PROFILESAVECACHE;Desa els paràmetres de procés a la memòria cau PREFERENCES_PROFILESAVEINPUT;Desa els paràm. de procés juntament amb la imatge PREFERENCES_PROPERTY;Propietat PREFERENCES_PSPATH;Directori d'instal. d'Adobe Photoshop -PREFERENCES_SELECTFONT;Selec. font PREFERENCES_SELECTLANG;Seleccionar idioma -PREFERENCES_SELECTTHEME;Seleccionar tema PREFERENCES_SET;Fixa PREFERENCES_SHOWBASICEXIF;Mostra principals dades Exif PREFERENCES_SHOWDATETIME;Indica data i hora @@ -1483,7 +1479,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BEHADDALL;All to 'Add' !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_BEHSETALL;All to 'Set' @@ -1498,8 +1493,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1548,7 +1543,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1567,15 +1562,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1669,11 +1661,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1703,8 +1691,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1722,8 +1708,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1745,9 +1729,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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" 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 @@ -1980,7 +1961,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2032,10 +2013,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2073,7 +2051,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index ef507b9f3..8442cdcd5 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -514,7 +514,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;可执行文件路径 -PREFERENCES_CUTOVERLAYBRUSH;裁切遮罩色彩和透明度 PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -534,7 +533,6 @@ PREFERENCES_DIRSOFTWARE;软件安装路径 PREFERENCES_EDITORLAYOUT;编辑器布局 PREFERENCES_EXTERNALEDITOR;外部编辑器 PREFERENCES_FBROWSEROPTS;文件浏览选项 -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) PREFERENCES_FILEFORMAT;文件格式 PREFERENCES_FLATFIELDFOUND;找到 PREFERENCES_FLATFIELDSDIR;平场图像路径 @@ -591,7 +589,7 @@ PREFERENCES_MONPROFILE;默认色彩配置文件 PREFERENCES_MONPROFILE_WARNOSX;受MacOS限制, 仅支持sRGB PREFERENCES_MULTITAB;多编辑器标签模式 PREFERENCES_MULTITABDUALMON;多编辑器标签独立模式 -PREFERENCES_NAVGUIDEBRUSH;导航器引导颜色 +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;导航器引导颜色 PREFERENCES_NAVIGATIONFRAME;导航器 PREFERENCES_OUTDIR;输出路径 PREFERENCES_OUTDIRFOLDER;保存至文件夹 @@ -628,13 +626,10 @@ PREFERENCES_PRTPROFILE;色彩配置文件 PREFERENCES_PSPATH;Adobe Photoshop安装路径 PREFERENCES_REMEMBERZOOMPAN;记忆缩放和位置 PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -PREFERENCES_SELECTFONT;设置主要字体 -PREFERENCES_SELECTFONT_COLPICKER;设置色彩选择器字体 PREFERENCES_SELECTLANG;选择语言 -PREFERENCES_SELECTTHEME;选择主题 -PREFERENCES_SERIALIZE_TIFF_READ;Tiff 读取设定 -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;连续载入tiff文件 -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;开启后可以提高在无压缩tiff图片文件夹中的缩略图生成速度 +PREFERENCES_SERIALIZE_TIFF_READ;TIFF 读取设定 +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;连续载入TIFF文件 +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;开启后可以提高在无压缩TIFF图片文件夹中的缩略图生成速度 PREFERENCES_SET;设置 PREFERENCES_SHOWBASICEXIF;显示基本Exif信息 PREFERENCES_SHOWDATETIME;显示时间日期 @@ -654,7 +649,6 @@ PREFERENCES_TAB_DYNAMICPROFILE;动态预设规则 PREFERENCES_TAB_GENERAL;一般 PREFERENCES_TAB_IMPROC;图片处理 PREFERENCES_TAB_SOUND;音效 -PREFERENCES_THEME;主题 PREFERENCES_TP_LABEL;工具栏 PREFERENCES_TP_VSCROLLBAR;隐藏垂直滚动栏 PREFERENCES_TUNNELMETADATA;无损复制 Exif/IPTC/XMP 到输出文件 @@ -1539,7 +1533,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!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_CACHECLEAR;Clear @@ -1547,8 +1540,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1558,7 +1551,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show @@ -1630,11 +1623,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1664,8 +1653,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1680,8 +1667,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_EXDARK;Extremly Dark (Cutsheet) !TP_COLORAPP_SURROUND_TOOLTIP;Changes tones and colors to take into account the viewing conditions of the output device.\n\nAverage: Average light environment (standard). The image will not change.\n\nDim: Dim environment (TV). The image will become slighty dark.\n\nDark: Dark environment (projector). The image will become more dark.\n\nExtremly Dark: Extremly dark environment (cutsheet). The image will become very dark. @@ -1697,9 +1682,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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" 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 @@ -1955,7 +1937,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -2010,10 +1992,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2051,7 +2030,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 5d8cc106a..bc63c9f8b 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -280,7 +280,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;選擇語言 -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;顯示基本Exif資訊 PREFERENCES_SHOWDATETIME;顯示時間日期 PREFERENCES_SHTHRESHOLD;暗部不足闕值 @@ -1218,7 +1217,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1235,8 +1233,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1252,7 +1250,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1264,8 +1261,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1311,7 +1307,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1334,12 +1330,9 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1352,7 +1345,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1472,11 +1464,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1506,8 +1494,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1525,8 +1511,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1548,9 +1532,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !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" 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 @@ -1899,7 +1880,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -1958,10 +1939,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RESIZE_FITBOX;Bounding Box !TP_RESIZE_FULLIMAGE;Full Image !TP_RESIZE_LANCZOS;Lanczos -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1999,7 +1977,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 2b2c257ce..c7b64c745 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -978,7 +978,6 @@ PARTIALPASTE_WHITEBALANCE;Nastavení bílé PREFERENCES_ADD;Přidat PREFERENCES_APPLNEXTSTARTUP;vyžaduje restart aplikace 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_BATCH_PROCESSING;Dávkové zpracování PREFERENCES_BEHADDALL;Vše do 'Přidat' PREFERENCES_BEHADDALLHINT;Nastaví všechny parametry do módu Přidat.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako rozdíl k uloženým hodnotám. @@ -1011,7 +1010,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formát klíče PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Jméno PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Cesta k programu -PREFERENCES_CUTOVERLAYBRUSH;Barva masky ořezu/průhlednosti PREFERENCES_D50;Nastavení v hlavní nabídce PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1033,7 +1031,6 @@ PREFERENCES_EDITORCMDLINE;Vlastní příkazová řádka PREFERENCES_EDITORLAYOUT;Rozvržení editoru PREFERENCES_EXTERNALEDITOR;Externí editor PREFERENCES_FBROWSEROPTS;Volby prohlížeče souborů / náhledů -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Jednořádková lišta nástrojů v prohlížeči souborů\n(vypněte na nízkých rozlišeních) PREFERENCES_FILEFORMAT;Formát souboru PREFERENCES_FLATFIELDFOUND;Nalezeno PREFERENCES_FLATFIELDSDIR;Složka Flat Field souborů @@ -1090,7 +1087,7 @@ PREFERENCES_MONPROFILE;Výchozí barevný profil PREFERENCES_MONPROFILE_WARNOSX;Na MacOS je podporováno pouze sRGB. PREFERENCES_MULTITAB;Mód více karet editoru PREFERENCES_MULTITABDUALMON;Mód více karet editoru ve vlastním okně -PREFERENCES_NAVGUIDEBRUSH;Barva vodítek navigátoru +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Barva vodítek navigátoru PREFERENCES_NAVIGATIONFRAME;Navigátor PREFERENCES_OUTDIR;Výstupní složka PREFERENCES_OUTDIRFOLDER;Ulož do souboru @@ -1128,13 +1125,10 @@ PREFERENCES_PSPATH;Instalační složka Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Zapamatovat si procento přiblížení a posun obrázku 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_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 -PREFERENCES_SELECTTHEME;Zvolit vzhled -PREFERENCES_SERIALIZE_TIFF_READ;Nastavení čtení Tiff -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializovat čtení tiff souborů -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Povolení této volby může zvýšit výkon generování náhledů ve složkách obsahujících mnoho nezkomprimovaných tiff souborů. +PREFERENCES_SERIALIZE_TIFF_READ;Nastavení čtení TIFF +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializovat čtení TIFF souborů +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Povolení této volby může zvýšit výkon generování náhledů ve složkách obsahujících mnoho nezkomprimovaných TIFF souborů. PREFERENCES_SET;Nastavit PREFERENCES_SHOWBASICEXIF;Zobrazovat základní Exif informace PREFERENCES_SHOWDATETIME;Zobrazovat datum a čas @@ -1154,7 +1148,6 @@ PREFERENCES_TAB_DYNAMICPROFILE;Pravidla dynamických profilů PREFERENCES_TAB_GENERAL;Obecné PREFERENCES_TAB_IMPROC;Zpracování obrázku PREFERENCES_TAB_SOUND;Zvuky -PREFERENCES_THEME;Vzhled PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Vložený JPEG náhled PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek k zobrazení PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení raw @@ -1312,11 +1305,7 @@ 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;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), 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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16cd/m²). TP_COLORAPP_ALGO;Algoritmus TP_COLORAPP_ALGO_ALL;Vše TP_COLORAPP_ALGO_JC;Světlost + Barevnost (JC) @@ -1346,8 +1335,6 @@ TP_COLORAPP_CURVEEDITOR3;Barevná křivka TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Upravte barevnost, nasycení nebo pestrobarevnost.\n\nZobrazí histogram barevnosti (L*a*b*) před CIECAM02.\nPokud je volba "Zobrazit CIECAM02 histogramy výstupu v křivkách" povolena, zobrazí histogram C, S nebo M po CIECAM02 .\n\nC, S a M histogramy nejsou na hlavním panelu zobrazeny.\nHistogram konečného výsledku je zobrazen na hlavním panelu. 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. @@ -1365,8 +1352,6 @@ 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-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--nepoužito-- TP_COLORAPP_SURROUND;Okolí TP_COLORAPP_SURROUND_AVER;Průměrné TP_COLORAPP_SURROUND_DARK;Tmavé @@ -1388,9 +1373,6 @@ 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é @@ -1550,7 +1532,7 @@ TP_EXPOSURE_CURVEEDITOR2;Tónová křivka 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Podívejte se prosím na článek "Exposure > Tone Curves" na RawPedii, kde se můžete naučit. jak pomocí dvou tónových křivek dosáhnout ten nejlepší výsledek. TP_EXPOSURE_EXPCOMP;Kompenzace expozice TP_EXPOSURE_HISTMATCHING;Automaticky přizpůsobená Tónová křivka -TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatické nastavení posuvníků a křivek (kromě kompenzace expozice) tak, aby bylo dosaženo co největší shody s vloženým Jpeg náhledem. +TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatické nastavení posuvníků a křivek (kromě kompenzace expozice) tak, aby bylo dosaženo co největší shody s vloženým JPEG náhledem. TP_EXPOSURE_LABEL;Expozice TP_EXPOSURE_SATURATION;Nasycení TP_EXPOSURE_TCMODE_FILMLIKE;Jako film @@ -1817,7 +1799,6 @@ TP_RESIZE_WIDTH;Šířka TP_RETINEX_CONTEDIT_HSL;HSV korekce histogramu TP_RETINEX_CONTEDIT_LAB;Histogram korekce L*a*b* TP_RETINEX_CONTEDIT_LH;Korekce odstínu -TP_RETINEX_CONTEDIT_MAP;Korekce masky TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Jas dle jasu L=f(L).\nUpraví raw data pro snížení výskytu halo efektu a vzniku artefaktů. TP_RETINEX_CURVEEDITOR_LH;Síla=f(O) @@ -1854,7 +1835,6 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Maska TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Slabé -TP_RETINEX_MAP;Metoda masky TP_RETINEX_MAP_GAUS;Gaussova maska TP_RETINEX_MAP_MAPP;Ostrá maska (částečná vlnka) TP_RETINEX_MAP_MAPT;Ostrá maska (kompletní vlnka) @@ -2321,7 +2301,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_RCDVNG4;RCD+VNG4 diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 8dc73105b..495b050f8 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Gem bearbejdningsparametre i cache PREFERENCES_PROFILESAVEINPUT;Gem bearbejdningsparametre sammen med input-filen PREFERENCES_PSPATH;Installationsmappe til Adobe Photoshop PREFERENCES_SELECTLANG;Vælg sprog -PREFERENCES_SELECTTHEME;Vælg tema PREFERENCES_SHOWBASICEXIF;Vis grundlæggende exif-data PREFERENCES_SHOWDATETIME;Vis dato og tid PREFERENCES_SHTHRESHOLD;Tærskel for udbrændte skygger @@ -1215,7 +1214,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1232,8 +1230,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1249,7 +1247,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1261,8 +1258,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1308,7 +1304,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,12 +1327,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1349,7 +1342,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1469,11 +1461,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1503,8 +1491,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1522,8 +1508,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1545,9 +1529,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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" 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 @@ -1895,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1956,10 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1997,7 +1975,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index f354c45e9..e73f1c6d9 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1087,7 +1087,6 @@ PARTIALPASTE_WHITEBALANCE;Weißabgleich PREFERENCES_ADD;HINZU PREFERENCES_APPLNEXTSTARTUP;erfordert Neustart PREFERENCES_AUTOMONPROFILE;Automatisch das für den aktuellen Monitor festgelegte Profil verwenden -PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern PREFERENCES_BATCH_PROCESSING;Stapelverarbeitung PREFERENCES_BEHADDALL;Alle hinzufügen PREFERENCES_BEHADDALLHINT;Setzt alle Parameter auf Hinzufügen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Deltas zu den gespeicherten Werten interpretiert. @@ -1124,7 +1123,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;Tag-ID PREFERENCES_CUSTPROFBUILDPATH;Anwendungspfad -PREFERENCES_CUTOVERLAYBRUSH;Farbe/Transparenz für Schnittmaske PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1146,7 +1144,6 @@ PREFERENCES_EDITORCMDLINE;Benutzerdefinierte Befehlszeile PREFERENCES_EDITORLAYOUT;Editor-Layout PREFERENCES_EXTERNALEDITOR;Externer Editor PREFERENCES_FBROWSEROPTS;Bildinformationen und Miniaturbilder -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar\n(Bei geringer Bildschirmauflösung deaktivieren) PREFERENCES_FILEFORMAT;Dateiformat PREFERENCES_FLATFIELDFOUND;Gefunden PREFERENCES_FLATFIELDSDIR;Weißbild-Verzeichnis @@ -1203,7 +1200,7 @@ PREFERENCES_MONPROFILE;Standardfarbprofil PREFERENCES_MONPROFILE_WARNOSX;Aufgrund einer macOS-Limitierung wird nur sRGB unterstützt. PREFERENCES_MULTITAB;Multi-Reitermodus PREFERENCES_MULTITABDUALMON;Multi-Reitermodus (auf zweitem Monitor, wenn verfügbar) -PREFERENCES_NAVGUIDEBRUSH;Farbe der Navigationshilfe +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Farbe der Navigationshilfe PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Ausgabeverzeichnis PREFERENCES_OUTDIRFOLDER;In dieses Verzeichnis speichern @@ -1243,10 +1240,7 @@ PREFERENCES_PSPATH;Adobe Photoshop Installationsverzeichnis 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_SAVE_TP_OPEN_NOW;Werkzeugstatus jetzt speichern -PREFERENCES_SELECTFONT;Schriftart: -PREFERENCES_SELECTFONT_COLPICKER;Schriftart Farbwähler PREFERENCES_SELECTLANG;Sprache -PREFERENCES_SELECTTHEME;Oberflächendesign PREFERENCES_SERIALIZE_TIFF_READ;TIFF-Bilder PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialisiertes Lesen von TIFF-Bildern verwenden PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Beim Arbeiten mit Ordnern voll unkomprimierter TIFF-Bilder, kann diese Einstellung das Generieren von Miniaturbildern deutlich beschleunigen. @@ -1270,7 +1264,6 @@ PREFERENCES_TAB_GENERAL;Allgemein PREFERENCES_TAB_IMPROC;Bildbearbeitung PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Klänge -PREFERENCES_THEME;Oberflächendesign (erfordert Neustart) PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Eingebundenes JPEG PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Bildanzeige PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrales RAW-Bild @@ -1434,11 +1427,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontal spiegeln. TP_COARSETRAF_TOOLTIP_ROTLEFT;Nach links drehen.\nTaste: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Nach rechts drehen.\nTaste: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vertikal spiegeln. -TP_COLORAPP_ADAPTSCENE;Luminanz (cd/m²) -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute Luminanz der Szenenleuchstärket\n(normalerweise 2000cd/m²). -TP_COLORAPP_ADAPTVIEWING;Luminanz (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute Luminanz der Betrachtungsumgebung\n(normalerweise 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Wenn aktiviert (empfohlen), werden die optimalen\nWerte aus den Exif-Daten automatisch berechnet. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute Luminanz der Betrachtungsumgebung\n(normalerweise 16cd/m²). TP_COLORAPP_ALGO;Algorithmus TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Helligkeit + Buntheit (JH) @@ -1468,8 +1457,6 @@ TP_COLORAPP_CURVEEDITOR3;Farbkurve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Korrigiert Buntheit, Sättigung oder Farbigkeit.\n\nZeigt das Histogramm der Chromatizität (L*a*b* ) VOR den CIECAM02-Änderungen an.\nWenn "CIECAM02-Ausgabe-Histogramm in Kurven anzeigen" aktiviert ist, wird das Histogramm von C, S oder M NACH den CIECAM02-Änderungen angezeigt.\n\nC, S und M werden nicht im Haupt-Histogramm angezeigt.\nFür die endgültige Ausgabe verwenden Sie das Haupt-Histogramm. TP_COLORAPP_DATACIE;CIECAM02-Ausgabe-Histogramm in\nKurven anzeigen TP_COLORAPP_DATACIE_TOOLTIP;Wenn aktiviert, zeigen die Histogramme\nder CIECAM02-Kurven die angenäherten\nWerte/Bereiche für J oder Q und C, S oder M\nNACH den CIECAM02-Anpassungen an. Das\nbetrifft nicht das Haupt-Histogramm.\n\nWenn deaktiviert, zeigen die Histogramme\nder CIECAM02-Kurven die L*a*b*-Werte\nVOR den CIECAM02-Anpassungen an. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Wenn aktiviert (empfohlen), wird ein optimaler\nWert berechnet, der von CAT02 und CIECAM02\nverwendet wird.\nUm den Wert manuell zu setzen, muss die Option\ndeaktiviert sein (Werte über 64 sind empfohlen). -TP_COLORAPP_DEGREE_TOOLTIP;Umfang der “CIE Chromatic Adaptation Transform 2002“. TP_COLORAPP_FREE;Farbtemperatur + Tönung + CAT02 + [Ausgabe] TP_COLORAPP_GAMUT;Gamutkontrolle (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Gamutkontrolle im L*a*b*-Modus erlauben. @@ -1487,8 +1474,6 @@ TP_COLORAPP_NEUTRAL;Zurücksetzen TP_COLORAPP_NEUTRAL_TIP;Setzt alle CIECAM02-Parameter auf Vorgabewerte zurück. TP_COLORAPP_RSTPRO;Hautfarbtöne schützen TP_COLORAPP_RSTPRO_TOOLTIP;Hautfarbtöne schützen\nWirkt sich auf Regler und Kurven aus. -TP_COLORAPP_SHARPCIE;--unused-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- TP_COLORAPP_SURROUND;Umgebung TP_COLORAPP_SURROUND_AVER;Durchschnitt TP_COLORAPP_SURROUND_DARK;Dunkel @@ -1510,9 +1495,6 @@ TP_COLORAPP_TONECIE;Tonwertkorrektur mittels\nCIECAM02-Helligkeit (Q) TP_COLORAPP_TONECIE_TOOLTIP;Wenn diese Option ausgeschaltet ist, wird die Tonwertkorrektur im L*a*b*-Farbraum durchgeführt.\nWenn die Option eingeschaltet ist, wird CIECAM02 für die Tonwertkorrektur verwendet. Das Werkzeug Tonwertkorrektur muss aktiviert sein, damit diese Option berücksichtigt wird. TP_COLORAPP_WBCAM;[RT+CAT02] + [Ausgabe] TP_COLORAPP_WBRT;[RT] + [Ausgabe] -TP_COLORAPP_YB;Yb% (Ø Luminanz) -TP_COLORAPP_YBSCENE;Yb% (Ø Luminanz) -TP_COLORAPP_YBSCENE_TOOLTIP;Wenn aktiviert, wird der Durchschnittswert der Luminanz berechnet. TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automatisch TP_COLORTONING_BALANCE;Farbausgleich @@ -2391,5 +2373,5 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map !TP_DEHAZE_STRENGTH;Strength !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index c53038f87..2e251a8a9 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -41,15 +41,13 @@ PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid colour shift PARTIALPASTE_RAW_FALSECOLOR;False colour suppression PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor colour profile PREFERENCES_BEHAVIOR;Behaviour -PREFERENCES_CUTOVERLAYBRUSH;Crop mask colour/transparency PREFERENCES_ICCDIR;Directory containing colour profiles PREFERENCES_INTENT_ABSOLUTE;Absolute Colourimetric PREFERENCES_INTENT_RELATIVE;Relative Colourimetric PREFERENCES_MENUGROUPLABEL;Group "Colour label" PREFERENCES_MONPROFILE;Default colour profile -PREFERENCES_NAVGUIDEBRUSH;Navigator guide colour +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide colour PREFERENCES_PRTPROFILE;Colour profile -PREFERENCES_SELECTFONT_COLPICKER;Select Colour Picker's font PREFERENCES_TAB_COLORMGR;Colour Management SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colours with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Colour Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. @@ -1113,7 +1111,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_WHITEBALANCE;White balance !PREFERENCES_ADD;Add !PREFERENCES_APPLNEXTSTARTUP;restart required -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1133,8 +1130,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1168,10 +1165,9 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... !PREFERENCES_DIRSOFTWARE;Installation directory !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1260,13 +1256,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_PSPATH;Adobe Photoshop installation directory !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SELECTLANG;Select language -!PREFERENCES_SELECTTHEME;Select theme -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time @@ -1286,7 +1279,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_TAB_IMPROC;Image Processing !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1368,7 +1360,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag +!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift-mouse drag !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w !TP_BWMIX_ALGO;Algorithm OYCPM @@ -1439,11 +1431,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1467,8 +1455,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_CURVEEDITOR2_TOOLTIP;Same usage as with the second exposure tone curve. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1485,8 +1471,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1506,9 +1490,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !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" 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 @@ -1859,7 +1840,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1925,10 +1906,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_W;Width: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1966,7 +1944,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 67c025236..84c03e687 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1036,7 +1036,6 @@ !PREFERENCES_ADD;Add !PREFERENCES_APPLNEXTSTARTUP;restart required !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1057,8 +1056,8 @@ !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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1074,7 +1073,6 @@ !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1093,10 +1091,9 @@ !PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... !PREFERENCES_DIRSOFTWARE;Installation directory !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1153,7 +1150,7 @@ !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OUTDIR;Output Directory !PREFERENCES_OUTDIRFOLDER;Save to folder @@ -1192,14 +1189,10 @@ !PREFERENCES_PSPATH;Adobe Photoshop installation directory !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SELECTLANG;Select language -!PREFERENCES_SELECTTHEME;Select theme -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time @@ -1220,7 +1213,6 @@ !PREFERENCES_TAB_IMPROC;Image Processing !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1305,7 +1297,7 @@ !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right !TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag +!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift-mouse drag !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. !TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w @@ -1383,11 +1375,7 @@ !TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1417,8 +1405,6 @@ !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1436,8 +1422,6 @@ !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1459,9 +1443,6 @@ !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" 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 @@ -1846,7 +1827,7 @@ !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -1914,10 +1895,7 @@ !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_W;Width: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1955,7 +1933,6 @@ !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 84d268726..ceaff3887 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -735,7 +735,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Clave de formato PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nombre PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID Etiqueta PREFERENCES_CUSTPROFBUILDPATH;Ruta al programa ejecutable -PREFERENCES_CUTOVERLAYBRUSH;Recortar máscara de color/transparencia PREFERENCES_D50;5000ºK PREFERENCES_D55;5500ºK PREFERENCES_D60;6000ºK @@ -754,7 +753,6 @@ PREFERENCES_DIRSOFTWARE;Carpeta de instalación PREFERENCES_EDITORLAYOUT;Disposición del editor PREFERENCES_EXTERNALEDITOR;Editor externo PREFERENCES_FBROWSEROPTS;Opciones del explorador de archivos/Miniaturas -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de herramientas del explorador en una sola fila (deseleccionar para pantallas de baja resolución) PREFERENCES_FILEFORMAT;Formato de archivo PREFERENCES_FLATFIELDFOUND;Encontrado PREFERENCES_FLATFIELDSDIR;Carpeta de archivos de campo plano @@ -795,7 +793,7 @@ PREFERENCES_MENUOPTIONS;Opciones de menú de contexto PREFERENCES_METADATA;Metadatos PREFERENCES_MULTITAB;Modo Editor de varias pestañas PREFERENCES_MULTITABDUALMON;Modo Editor de varias pestañas, si está disponible en segundo monitor -PREFERENCES_NAVGUIDEBRUSH;Color de la guía del navegador +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Color de la guía del navegador PREFERENCES_OUTDIR;Carpeta de salida PREFERENCES_OUTDIRFOLDER;Guardar en carpeta PREFERENCES_OUTDIRFOLDERHINT;Guardar las imágenes creadas en una carpeta elegida @@ -816,9 +814,7 @@ PREFERENCES_PROFILESAVECACHE;Guardar perfiles de procesamiento en memoria interm PREFERENCES_PROFILESAVEINPUT;Guardar perfiles de procesamiento junto con imagen de entrada PREFERENCES_PROPERTY;Propiedad PREFERENCES_PSPATH;Carpeta de instalación de Adobe Photoshop -PREFERENCES_SELECTFONT;Seleccionar fuente PREFERENCES_SELECTLANG;Seleccionar idioma -PREFERENCES_SELECTTHEME;Seleccionar tema PREFERENCES_SET;Establecer PREFERENCES_SHOWBASICEXIF;Mostrar datos Exif básicos PREFERENCES_SHOWDATETIME;Mostrar fecha y hora @@ -971,11 +967,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nAtajo: '[' TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nAtajo: ']' TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotar a la derecha TP_COARSETRAF_TOOLTIP_VFLIP;Voltear verticalmente -TP_COLORAPP_ADAPTSCENE;Adaptación a la luminosidad de la escena -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminancia absoluta del entorno de la escena (cd/m²).\n1) Calculado en base a datos Exif: \nTiempo de Exposición - Velocidad ISO - Número F de apertura - Corrección de exposición\n2) Calculado a partir del Punto Blanco raw y Compensación de Exposición RT. -TP_COLORAPP_ADAPTVIEWING;Luminosidad de visualización (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminancia absoluta del entorno de visualización\n(usualmente 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Si la casilla está seleccionada (como se recomienda) RT calcula el valor óptimo a partir de los datos Exif.\nPara establecer el valor manualmente, primero desmarque la casilla +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminancia absoluta del entorno de visualización\n(usualmente 16cd/m²) TP_COLORAPP_ALGO;Algoritmo TP_COLORAPP_ALGO_ALL;Todo TP_COLORAPP_ALGO_JC;Claridad + Crominancia (JC) @@ -1005,8 +997,6 @@ TP_COLORAPP_CURVEEDITOR3;Curva de color TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ajusta Crominancia, Saturación o Colorido.\n\nMuestra el histograma de Cromaticidad (Lab) antes de los ajustes CIECAM02.\nSi la casilla "Muestra en las curvas histogramas de salida CIECAM02" está seleccionada, muestra el histograma de C, s o M después de CIECAM02.\n\nC, s y M no se muestran en el histograma del panel principal.\n\nVea el histograma de salida final en el panel principal TP_COLORAPP_DATACIE;Curvas con histogramas de salida CIECAM02 TP_COLORAPP_DATACIE_TOOLTIP;Si está seleccionada, los histogramas en las curvas CIECAM02 muestran aproximadamente valores/rangos de J o Q, y C, s o M después de los ajustes CIECAM02.\nEsta selección no influye en el histograma del panel principal.\n\nCuando no está seleccionada, los histogramas en las curvas CIECAM02 muestran valores Lab antes de los ajustes CIECAM02 -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Si la casilla está seleccionada (como se recomienda), RT calcula el valor óptimo, que es usado por CAT02, y también por todo CIECAM02.\nPara establecer manualmente el valor, primero desmarque la casilla (se recomienda usar valores mayores a 65) -TP_COLORAPP_DEGREE_TOOLTIP;Cantidad de transformación de adaptación cromática CIE 2002 TP_COLORAPP_GAMUT;Control de Gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Permite control de gamut en modo Lab TP_COLORAPP_HUE;Matiz (h) @@ -1021,8 +1011,6 @@ TP_COLORAPP_MODEL;Modelo de Punto Blanco TP_COLORAPP_MODEL_TOOLTIP;Modelo de Punto Blanco\n\nWB [RT] + [salida]:\nEl Balance de Blancos de RT es usado para la escena, CIECAM02 es establecido a D50, y el Balance de Blancos del dispositivo de salida es el establecido en Preferencias > Gestión de Color\n\nWB [RT+CAT02] + [salida]:\nEl Balance de Blancos de RT es usado por CAT02 y el del dispositivo de salida es el establecido en preferencias TP_COLORAPP_RSTPRO; Protección de tonos rojos y color piel TP_COLORAPP_RSTPRO_TOOLTIP;Intensidad de protección de tonos rojos y color piel (en curvas y en controles deslizantes) -TP_COLORAPP_SHARPCIE;Enfoque, Contraste por niveles de detalle, Micro-contraste & Eliminación de AC con Q/C -TP_COLORAPP_SHARPCIE_TOOLTIP;Si se selecciona, Enfoque, Contraste por niveles de detalle, Micro-contraste & Eliminación de AC usarán CIECAM02 TP_COLORAPP_SURROUND;Entorno TP_COLORAPP_SURROUND_AVER;Promedio TP_COLORAPP_SURROUND_DARK;Oscuro @@ -1848,7 +1836,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1857,8 +1844,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1905,15 +1892,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1946,9 +1930,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !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" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions @@ -2060,7 +2041,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2107,10 +2088,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2148,7 +2126,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 1cd513ef4..5b8004105 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;Hizkuntza hautatu -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;Oinarrizko EXIF datuak bistaratu PREFERENCES_SHOWDATETIME;Data eta ordua bistratu PREFERENCES_SHTHRESHOLD;Moztutako itzalen muga @@ -1216,7 +1215,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1233,8 +1231,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1250,7 +1248,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1262,8 +1259,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1309,7 +1305,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1332,12 +1328,9 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1350,7 +1343,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1470,11 +1462,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1504,8 +1492,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1523,8 +1509,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1546,9 +1530,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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" 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 @@ -1896,7 +1877,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1957,10 +1938,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1998,7 +1976,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index cfbb04dc3..e6c9d83d7 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1038,7 +1038,6 @@ PARTIALPASTE_WHITEBALANCE;Balance des blancs PREFERENCES_ADD;Ajoute PREFERENCES_APPLNEXTSTARTUP;appliqué au prochain lancement PREFERENCES_AUTOMONPROFILE;Utiliser automatiquement le profil de l'écran principal -PREFERENCES_AUTOSAVE_TP_OPEN;Sauver automatiquement l'état ouvert/fermé\n des outils avant de fermer PREFERENCES_BATCH_PROCESSING;Traitement par lot PREFERENCES_BEHADDALL;Tout à 'Ajoute' PREFERENCES_BEHADDALLHINT;Règle tous les paramètres sur le mode Ajoute.\nLa modification des paramètres dans le panneau d'édition en par lot sera des deltas par-rapport aux valeurs existantes @@ -1064,7 +1063,7 @@ 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;Zoomer automatiquement sur la zone recadrée lorsque vous double-cliquez sur l'image de prévisualisation +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 @@ -1080,7 +1079,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Format des clés PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nom PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Chemin de l'exécutable -PREFERENCES_CUTOVERLAYBRUSH;Masque de recadrage PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1102,7 +1100,6 @@ PREFERENCES_EDITORCMDLINE;Ligne de commande personnelle PREFERENCES_EDITORLAYOUT;Disposition de l'éditeur PREFERENCES_EXTERNALEDITOR;Éditeur externe PREFERENCES_FBROWSEROPTS;Options du navigateur de fichiers et de vignettes -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barre de menu de l'explorateur de fichiers uni-ligne\n(à désactiver pour les écrans de faible résolution) PREFERENCES_FILEFORMAT;Format du fichier PREFERENCES_FLATFIELDFOUND;Trouvé PREFERENCES_FLATFIELDSDIR;Dossier des images de Champ Uniforme @@ -1159,7 +1156,7 @@ PREFERENCES_MONPROFILE;Profil couleur par défaut PREFERENCES_MONPROFILE_WARNOSX;Due à des limitations de macOS, seul sRGB est supporté. PREFERENCES_MULTITAB;Éditeurs multiple PREFERENCES_MULTITABDUALMON;Éditeurs multiple, si possible sur un second moniteur -PREFERENCES_NAVGUIDEBRUSH;Couleur du cadre dans le Navigateur +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Couleur du cadre dans le Navigateur PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Dossier de sortie PREFERENCES_OUTDIRFOLDER;Dossier de sauvegarde @@ -1199,10 +1196,7 @@ PREFERENCES_PSPATH;Dossier d'installation d'Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Se souvenir de niveau de zoom et de la position de l'image PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Retient le niveau de zoom et la position de l'image courante lors de l'ouverture d'une nouvelle image.\n\nCette option ne fonctionne que dans le mode "Éditeur unique" et quand "Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%" is set to "Idem PP3". PREFERENCES_SAVE_TP_OPEN_NOW;Sauver l'état ouvert/fermé maintenant -PREFERENCES_SELECTFONT;Police principale -PREFERENCES_SELECTFONT_COLPICKER;Police des pipette à couleur PREFERENCES_SELECTLANG;Choix de la langue -PREFERENCES_SELECTTHEME;Choisissez un thème PREFERENCES_SERIALIZE_TIFF_READ;Réglage de lecture des images TIFF PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Sérialiser la lecture des fichiers TIFF PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Lorsque d'un travail avec des dossiers plein de fichier TIFF non compressé, activer cette option peut augmenter les performance de la génération des vignettes. @@ -1226,7 +1220,6 @@ PREFERENCES_TAB_GENERAL;Général PREFERENCES_TAB_IMPROC;Traitement de l'image PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Sons -PREFERENCES_THEME;Thème PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Prévisualisation JPEG incluse PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image à montrer PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Rendu Neutre des données Raw @@ -1390,11 +1383,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Symétriser / axe vertical TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotation vers la gauche\nRaccourci: [\n\nRaccourci en mode Éditeur unique: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotation vers la droite\nRaccourci: ]\n\nRaccourci en mode Éditeur unique: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;Symétriser / axe horizontal -TP_COLORAPP_ADAPTSCENE;Luminosité de la scène -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminance absolue de l'environnement de la scène (cd/m²).\n1) Calculé à partir des données Exif:\nVitesse d'obturation - val. ISO - ouverture F - correction d'expos. du boitier.\n2) Calculé à partir du Point Blanc Raw et de la Compensation d'Exposition de RawTherapee -TP_COLORAPP_ADAPTVIEWING;Luminosité du visionnage (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Si la case est cochée (recommandé), une valeur optimum est calculée à partir des données Exif.\nPour régler la valeur manuellement, décochez d'abord la case +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²) TP_COLORAPP_ALGO;Algorithme TP_COLORAPP_ALGO_ALL;Tout TP_COLORAPP_ALGO_JC;Luminosité + Chroma (JC) @@ -1424,8 +1413,6 @@ TP_COLORAPP_CURVEEDITOR3;Courbes chroma TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Vous pouvez choisir entre chroma -saturation- niveau couleurs.\n Histogramme affiche la chromaticité Lab avant CIECAM.\n On peut voir le résultat final dans la fenêtre histogramme.\n Histogramme de C,s,M avant/après si la cas à cocher "Données CIECAM" est activée.\n (C,s,M) ne sont pas affichés dans le panneau histogramme TP_COLORAPP_DATACIE;Histogrammes post CIECAM dans les courbes TP_COLORAPP_DATACIE_TOOLTIP;Quand activé, les histogrammes de fond des courbes CIECAM02 montrent des valeurs/amplitudes approximatives de J/Q, ou de C:s/M après les ajustements CIECAM.\nCette sélection n'a pas d'incidence sur l'histogramme général.\n\nQuand désactivé, les histogrammes de fond des courbes CIECAM affichent les valeurs Lab avant les ajustements CIECAM -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Si la case est cochée (recommandé), RT calcule une valeur optimale, qui est utilisée par CAT02, mais aussi pour l'ensemble de CIECAM02.\nVous pouvez décocher la case et changer la valeur du curseur; (les valeurs supérieures à 65 sont recommandées) -TP_COLORAPP_DEGREE_TOOLTIP;Niveau d'adaptation chromatique CIE CAT 2002 TP_COLORAPP_FREE;Temp libre+vert + CAT02 + [sortie] TP_COLORAPP_GAMUT;Contrôle du gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Permet le controle du gamut en mode Lab @@ -1443,8 +1430,6 @@ TP_COLORAPP_NEUTRAL;Résinitialiser TP_COLORAPP_NEUTRAL_TIP;Réinitialiser tous les curseurs, cases à cocher et courbes à leurs valeur par défaut TP_COLORAPP_RSTPRO;Protection des tons chairs et rouges TP_COLORAPP_RSTPRO_TOOLTIP;Protection des tons chairs et rouges (curseurs et courbes) -TP_COLORAPP_SHARPCIE;Netteté, Contraste par niveau de détails, Microcontraste & Aberration chromatique avec Q/C -TP_COLORAPP_SHARPCIE_TOOLTIP;Netteté, Contraste par niveau de détails, Microcontraste & Aberration chromatique utiliseront CIECAM02 si activé. TP_COLORAPP_SURROUND;Entourage TP_COLORAPP_SURROUND_AVER;Moyen TP_COLORAPP_SURROUND_DARK;Sombre @@ -1466,9 +1451,6 @@ TP_COLORAPP_TONECIE;Compression Tonale utilisant CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Si cette option est désactivée, la compression tonale est faite dans l'espace Lab.\nSi cette options est activée, la compression tonale est faite en utilisant CIECAM02.\nL'outil Compression Tonale doit être activé pour que ce réglage prenne effet TP_COLORAPP_WBCAM;BB [RT+CAT02] + [sortie] TP_COLORAPP_WBRT;BB [RT] + [sortie] -TP_COLORAPP_YB;Yb% (luminance moyenne) -TP_COLORAPP_YBSCENE;Yb% (luminance moyenne) -TP_COLORAPP_YBSCENE_TOOLTIP;si auto activé, Yb est calculé suivant la valeur de luminance moyenne de l'image actuelle TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automatique TP_COLORTONING_BALANCE;Balance @@ -1949,7 +1931,6 @@ TP_RESIZE_WIDTH;Largeur TP_RETINEX_CONTEDIT_HSL;Égaliseur d'histogramme TSV TP_RETINEX_CONTEDIT_LAB;Égaliseur d'histogramme L*a*b* TP_RETINEX_CONTEDIT_LH;Égaliseur de teinte -TP_RETINEX_CONTEDIT_MAP;Égaliseur de masque TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance en fonction de la luminance L=f(L)\nCorrige les données raw pour réduire halos et artéfacts. TP_RETINEX_CURVEEDITOR_LH;Force=f(T) @@ -1987,7 +1968,6 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Masque TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Bas -TP_RETINEX_MAP;Méthode de masquage TP_RETINEX_MAP_GAUS;Masque gaussien TP_RETINEX_MAP_MAPP;Masque pointu (ondelettes partielles) TP_RETINEX_MAP_MAPT;Masque pointu (ondelettes totales) diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index d2d7335ac..bf8f6a01f 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;Επιλογή γλώσσας -PREFERENCES_SELECTTHEME;Επιλογή θέματος PREFERENCES_SHOWBASICEXIF;Προβολή βασικών στοιχείων Exif PREFERENCES_SHOWDATETIME;Προβολή ημερομηνίας και ώρας PREFERENCES_SHTHRESHOLD;Κατώφλι ψαλιδίσματος σκιών @@ -1215,7 +1214,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1232,8 +1230,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1249,7 +1247,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1261,8 +1258,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1308,7 +1304,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,12 +1327,9 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1349,7 +1342,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1469,11 +1461,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1503,8 +1491,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1522,8 +1508,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1545,9 +1529,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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" 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 @@ -1895,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1956,10 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1997,7 +1975,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 73b2752bf..b33799a85 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;בחר שפה -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;Exif הראה מידע PREFERENCES_SHOWDATETIME;הראה תאריך ושעה PREFERENCES_SHTHRESHOLD;סף קיצוץ תחתון @@ -1216,7 +1215,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1233,8 +1231,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1250,7 +1248,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1262,8 +1259,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1309,7 +1305,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1332,12 +1328,9 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1350,7 +1343,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1470,11 +1462,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1504,8 +1492,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1523,8 +1509,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1546,9 +1530,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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" 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 @@ -1896,7 +1877,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1957,10 +1938,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1998,7 +1976,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index a3fcd92dc..bc63bc3aa 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -640,7 +640,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formato tasti PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nome PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Percorso dell'eseguibile -PREFERENCES_CUTOVERLAYBRUSH;Colore/Trasparenza della maschera di ritaglio PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -659,7 +658,6 @@ PREFERENCES_DIRSOFTWARE;Cartella d'installazione PREFERENCES_EDITORLAYOUT;Disposizione PREFERENCES_EXTERNALEDITOR;Programma di ritocco esterni PREFERENCES_FBROWSEROPTS;Opzioni del Navigatore e delle miniature -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra di navigazione a singola riga (deseleziona nel caso di schermo a bassa risoluzione) PREFERENCES_FILEFORMAT;Formato file PREFERENCES_FLATFIELDFOUND;Trovati PREFERENCES_FLATFIELDSDIR;Cartella dei fotogrammi di campo (Flat Field) @@ -700,7 +698,7 @@ PREFERENCES_MENUOPTIONS;Opzioni del menù a discesa PREFERENCES_METADATA;Metadati PREFERENCES_MULTITAB;Modalità a Schede Multiple PREFERENCES_MULTITABDUALMON;Modalità a Schede Multiple (se disponibile sul secondo schermo) -PREFERENCES_NAVGUIDEBRUSH;Colore delle guide del Navigatore +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Colore delle guide del Navigatore PREFERENCES_OUTDIR;Cartella di destinazione PREFERENCES_OUTDIRFOLDER;Salva nella cartella PREFERENCES_OUTDIRFOLDERHINT;Salva le immagini nella cartella scelta @@ -721,9 +719,7 @@ PREFERENCES_PROFILESAVECACHE;Salva il profilo di sviluppo nella memoria PREFERENCES_PROFILESAVEINPUT;Salva il profilo di sviluppo a fianco del file originario PREFERENCES_PROPERTY;Proprietà PREFERENCES_PSPATH;Cartella d'installazione di Adobe Photoshop -PREFERENCES_SELECTFONT;Seleziona il carattere PREFERENCES_SELECTLANG;Seleziona la lingua -PREFERENCES_SELECTTHEME;Seleziona il tema PREFERENCES_SET;Imposta PREFERENCES_SHOWBASICEXIF;Mostra dati Exif di base PREFERENCES_SHOWDATETIME;Mostra data e ora @@ -876,11 +872,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Rifletti orizzontalmente. TP_COARSETRAF_TOOLTIP_ROTLEFT;Ruota a sinistra.\nScorciatoie:\n[ - Modalità a Scheda Multipla,\nAlt-[ - Modalità a Scheda Singola. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Ruota a destra.\nScorciatoie:\n] - Modalità a Scheda Multipla,\nAlt-] - Modalità a Scheda Singola. TP_COARSETRAF_TOOLTIP_VFLIP;Rifletti verticalmente -TP_COLORAPP_ADAPTSCENE;Luminanza della scena -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminanza assoluta dell'ambiente della scena (cd/m²)\n1) Calcolata dai dati Exif:\nTempo - ISO - Diaframma - Compensazione dell'Esposizione.\n2) Calcolata dal punto di bianco del raw e dal cursore di Compensazione dell'Esposizione. -TP_COLORAPP_ADAPTVIEWING;Luminanza di visualizzazione (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminanza assoluta dell'ambiente di visualizzazione\n(normalmente 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Se questa casella è selezionata (raccomandato) RT calcola un valore ottimale dai dati Exif.\nPer impostare un valore manualmente, deseleziona la casella. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminanza assoluta dell'ambiente di visualizzazione\n(normalmente 16cd/m²). TP_COLORAPP_ALGO;Algoritmo TP_COLORAPP_ALGO_ALL;Tutto TP_COLORAPP_ALGO_JC;Chiarezza + Croma (JC) @@ -910,8 +902,6 @@ TP_COLORAPP_CURVEEDITOR3;Curva Colore TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Regola Croma, Saturazione o Pienezza.\nL'Istogramma mostra la Cromaticità (Lab) prima di CIECAM02.\nSe "Mostra gli istogrammi di uscita CIECAM02 nelle curve" è abilitato, l'Istogramma mostra C, s e M dopo CIECAM02.\nC, s e M non sono mostrati direttamente nel pannello Istogramma.\nPer l'output finale fare riferimento al pannello Istogramma TP_COLORAPP_DATACIE;Mostra gli istogrammi di uscita CIECAM02 nelle curve TP_COLORAPP_DATACIE_TOOLTIP;Quando abilitato, gli istogrammi nelle curve CIECAM02 mostrano valori e intervalli approssimati di J o Q, e C, s o M dopo le regolazioni CIECAM02.\nQuesta selezione non ha effetto nel pannello Istogramma principale.\n\nQuando disabilitato, gli istogrammi nelle curve CIECAM02 mostrano i valori Lab, come sono prima delle regolazioni CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Se abilitato (raccomandato), RT calcola un valore ottimale, che sarà utilizzato da CAT02, e anche per l'intero CIECAM02.\nDisabilitare per impostare il valore manualmente (sono raccomandati valori superiori a 65). -TP_COLORAPP_DEGREE_TOOLTIP;Quantità di Trasformazione di Adattamento Cromatico CIE 2002 TP_COLORAPP_GAMUT;Controllo Gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Consenti il controllo gamut nella modalità Lab TP_COLORAPP_HUE;Tinta (h) @@ -926,8 +916,6 @@ TP_COLORAPP_MODEL;Modello del Punto di Bianco TP_COLORAPP_MODEL_TOOLTIP;Modello del Punto di bianco.\n\nWB [RT] + [output]: Per la scena viene usato il Bilanciamento del Bianco di RT, CIECAM02 è impostato a D50, il bianco del dispositivo di uscita utilizza il valore impostato in Preferenze > Gestione Colore.\n\nWB [RT+CAT02] + [output]: Le impostazioni di Bilanciamento del Bianco di RT sono utilizzate da CAT02 e il bianco del dispositivo di uscita utilizza il valore impostato in Preferenze > Gestione Colore. TP_COLORAPP_RSTPRO;Protezione rossi e incarnato TP_COLORAPP_RSTPRO_TOOLTIP;Protezione dei toni rossi e dell'incarnato (cursori e curve) -TP_COLORAPP_SHARPCIE;--inutilizzato-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--inutilizzato-- TP_COLORAPP_SURROUND;Ambiente TP_COLORAPP_SURROUND_AVER;Medio TP_COLORAPP_SURROUND_DARK;Scuro @@ -1719,7 +1707,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1729,8 +1716,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1777,15 +1764,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1818,9 +1802,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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" 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 @@ -1998,7 +1979,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2048,10 +2029,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2089,7 +2067,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 0ebb061a1..c80a64425 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1067,7 +1067,6 @@ PARTIALPASTE_WHITEBALANCE;ホワイトバランス PREFERENCES_ADD;追加 PREFERENCES_APPLNEXTSTARTUP;要再起動 PREFERENCES_AUTOMONPROFILE;OSのメインモニター・プロファイルを使用 -PREFERENCES_AUTOSAVE_TP_OPEN;プログラム終了の前に、機能パネルの開閉状態を自動的に保存する PREFERENCES_BATCH_PROCESSING;バッチ処理 PREFERENCES_BEHADDALL;すべて '追加' PREFERENCES_BEHADDALLHINT;すべてのパラメータを 追加モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に加算されます @@ -1105,7 +1104,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;キーフォーマット PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;名前 PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;タグID PREFERENCES_CUSTPROFBUILDPATH;実行ファイルのパス -PREFERENCES_CUTOVERLAYBRUSH;切り抜きマスクカラー 不透明度 PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000k PREFERENCES_D55;5500K @@ -1127,7 +1125,6 @@ PREFERENCES_EDITORCMDLINE;カスタムコマンドライン PREFERENCES_EDITORLAYOUT;編集 レイアウト PREFERENCES_EXTERNALEDITOR;外部エディタ PREFERENCES_FBROWSEROPTS;ファイルブラウザ/サムネイルのオプション -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;ファイルブラウザでの一行のツールバー (低解像度表示用に選択解除) PREFERENCES_FILEFORMAT;ファイル形式 PREFERENCES_FLATFIELDFOUND;検出 PREFERENCES_FLATFIELDSDIR;フラットフィールド・ディレクトリ @@ -1184,7 +1181,7 @@ PREFERENCES_MONPROFILE;デフォルトのモニタープロファイル PREFERENCES_MONPROFILE_WARNOSX;MacのOSの制約により、サポート出来るのはsRGBだけです PREFERENCES_MULTITAB;マルチ編集タブモード PREFERENCES_MULTITABDUALMON;独自のウィンドウモードによるマルチ編集タブ -PREFERENCES_NAVGUIDEBRUSH;ナビゲーターのガイドカラー +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;ナビゲーターのガイドカラー PREFERENCES_NAVIGATIONFRAME;ナビゲーション PREFERENCES_OUTDIR;出力ディレクトリ PREFERENCES_OUTDIRFOLDER;フォルダに保存 @@ -1224,10 +1221,7 @@ PREFERENCES_PSPATH;Adobe Photoshop のインストール・ディレクトリ PREFERENCES_REMEMBERZOOMPAN;ズームレベルとパン速度を記憶する PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;現在の画像のズームレベルとパン速度を記憶し、新しく開く画像に適用\n\nこのオプションが使えるのは、編集画面のモードが“シングル編集”で、“プレビューのズームレベルが100%以下の場合に使うデモザイク”が“pp3に従う”と設定されている場合だけです。 PREFERENCES_SAVE_TP_OPEN_NOW;機能パネルの今の開閉状態を保存する -PREFERENCES_SELECTFONT;フォント選択 -PREFERENCES_SELECTFONT_COLPICKER;カラーピッカーのフォントを選択 PREFERENCES_SELECTLANG;言語選択 -PREFERENCES_SELECTTHEME;テーマの選択 PREFERENCES_SERIALIZE_TIFF_READ;TIFFファイルの読み込み設定 PREFERENCES_SERIALIZE_TIFF_READ_LABEL;TIFFファイルのシリアル化 PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;画像フォルダーが多数の非圧縮のTIFFファイルで閉められている場合、このオプションを有効にすることで、サムネイル画像生成の効率が上がります @@ -1251,7 +1245,6 @@ PREFERENCES_TAB_GENERAL;一般 PREFERENCES_TAB_IMPROC;画像処理 PREFERENCES_TAB_PERFORMANCE;パフォーマンス PREFERENCES_TAB_SOUND;サウンド -PREFERENCES_THEME;テーマ PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;埋め込まれているJPEGのプレビュー PREFERENCES_THUMBNAIL_INSPECTOR_MODE;表示する画像 PREFERENCES_THUMBNAIL_INSPECTOR_RAW;ニュートラルなrawレンダリング @@ -1414,11 +1407,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;左右反転 TP_COARSETRAF_TOOLTIP_ROTLEFT;90度左回転\nショートカット: [\n\nシングル・エディタ・タブのショートカット: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;90度右回転\nショートカット: ]\n\nシングル・エディタ・タブのショートカット: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;上下反転 -TP_COLORAPP_ADAPTSCENE;撮影輝度への適応 -TP_COLORAPP_ADAPTSCENE_TOOLTIP;撮影環境の絶対輝度(cd/m2)\n1)Exif情報から算出:\nシャッター速度、ISO、絞り、カメラの露出補正\n2)rawのホワイトポイントとRTの露光補正スライダー値から算出 -TP_COLORAPP_ADAPTVIEWING;観視輝度への適応 (cd/m2) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;観視環境の絶対輝度\n(通常 16cd/m2) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;チェックボックッスが有効の場合(推奨)はRTがExif情報に基づいて最適値を計算します\n手動で行う場合はチェックボックスを無効にします +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;観視環境の絶対輝度\n(通常 16cd/m2) TP_COLORAPP_ALGO;アルゴリズム TP_COLORAPP_ALGO_ALL;すべて TP_COLORAPP_ALGO_JC;明度 + 色度 (JC) @@ -1448,8 +1437,6 @@ TP_COLORAPP_CURVEEDITOR3;カラーカーブ TP_COLORAPP_CURVEEDITOR3_TOOLTIP;色度、彩度、鮮やかさのいずれかを調整します\n\nCIECAM02調整前の色度(L*a*b*)のヒストグラムを表示します\nチェックボックスの"カーブにCIECAM02出力のヒストグラムを表示" が有効の場合、CIECAM02調整後のC,sまたはMのヒストグラムを表示します\n\nC, sとMは、メインのヒストグラム・パネルには表示されません\n最終出力は、メインのヒストグラム・パネルを参照してください TP_COLORAPP_DATACIE;カーブにCIECAM02出力のヒストグラムを表示 TP_COLORAPP_DATACIE_TOOLTIP;有効の場合、CIECAM02カーブのヒストグラムは、JかQ、CIECAM02調整後のCかs、またはMの値/範囲の近似値を表示します\nこの選択はメイン・ヒストグラムパネルには影響を与えません\n\n無効の場合、CIECAM02カーブのヒストグラムは、CIECAM調整前のL*a*b*値を表示します -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;チェックボックスが有効の場合 (推奨)\nRTは、CAT02で使用され、更にCIECAM02全体で使用する最適値を算出します\n手動で値を設定するには、チェックボックスを無効にします (65以上の値を推奨) -TP_COLORAPP_DEGREE_TOOLTIP;CIE色順応変換2002(CAT02)の量 TP_COLORAPP_FREE;任意の色温度+グリーン + CAT02 + [出力] TP_COLORAPP_GAMUT;色域制御 (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;L*a*b*モードの色域制御を許可 @@ -1467,8 +1454,6 @@ TP_COLORAPP_NEUTRAL;リセット TP_COLORAPP_NEUTRAL_TIP;全てのスライダーチェックボックスとカーブをデフォルトにリセットします TP_COLORAPP_RSTPRO;レッドと肌色トーンを保護 TP_COLORAPP_RSTPRO_TOOLTIP;レッドと肌色トーンを保護はスライダーとカーブの両方に影響します -TP_COLORAPP_SHARPCIE;Q/C で、シャープ化、ディテールレベルのコントラストとフリンジ低減 -TP_COLORAPP_SHARPCIE_TOOLTIP;有効にした場合、シャープ化、ディテールレベルのコントラストとフリンジ低減は、CIECAM02を使用します TP_COLORAPP_SURROUND;周囲環境 TP_COLORAPP_SURROUND_AVER;普通 TP_COLORAPP_SURROUND_DARK;暗い @@ -1490,9 +1475,6 @@ TP_COLORAPP_TONECIE;CIECAM02 明るさ(Q)を使用してトーンマッピング TP_COLORAPP_TONECIE_TOOLTIP;このオプションが無効になっている場合、トーンマッピングはL*a*b*空間を使用します\nこのオプションが有効になっている場合、トーンマッピングは、CIECAM02を使用します\nトーンマッピング(L*a*b*/CIECAM02)ツールを有効にするには、この設定を有効にする必要があります TP_COLORAPP_WBCAM;WB [RT+CAT02] + [出力] TP_COLORAPP_WBRT;WB [RT] + [出力] -TP_COLORAPP_YB;Yb% (平均輝度) -TP_COLORAPP_YBSCENE;Yb% (平均輝度) -TP_COLORAPP_YBSCENE_TOOLTIP;自動が有効になると、Ybは画像の輝度の中間値から計算されます TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;自動彩度 TP_COLORTONING_BALANCE;バランス @@ -1948,7 +1930,6 @@ TP_RESIZE_WIDTH;幅 TP_RETINEX_CONTEDIT_HSL;ヒストグラムイコライザ HSL TP_RETINEX_CONTEDIT_LAB;ヒストグラムイコライザ L*a*b* TP_RETINEX_CONTEDIT_LH;色相イコライザ -TP_RETINEX_CONTEDIT_MAP;マスクイコライザ TP_RETINEX_CURVEEDITOR_CD;輝度=f(輝度) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;輝度に応じた輝度の関数 L=f(L)\nハロとアーティファクトを減らすためにrawデータを補正します TP_RETINEX_CURVEEDITOR_LH;強さ=f(色相) @@ -1986,7 +1967,6 @@ TP_RETINEX_LABEL;レティネックス TP_RETINEX_LABEL_MASK;マスク TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;低 -TP_RETINEX_MAP;マスクの方法 TP_RETINEX_MAP_GAUS;ガウシアンマスク TP_RETINEX_MAP_MAPP;シャープマスク (一部ウェーブレット) TP_RETINEX_MAP_MAPT;シャープマスク (全てウェーブレット) diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 47006479f..73ca345ba 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Saglabāt apstrādes profilu kešā PREFERENCES_PROFILESAVEINPUT;Saglabāt apstrādes profilu pie ievades faila PREFERENCES_PSPATH;Adobe Photoshop instalācijas direktorijs PREFERENCES_SELECTLANG;Izvēlies valodu -PREFERENCES_SELECTTHEME;Izvēlieties tēmu PREFERENCES_SHOWBASICEXIF;Rādīt Exif pamatdatus PREFERENCES_SHOWDATETIME;Rādīt datumu un laiku PREFERENCES_SHTHRESHOLD;Cirpto ēnu slieksnis @@ -1216,7 +1215,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1233,8 +1231,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1250,7 +1248,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1262,8 +1259,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1309,7 +1305,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1332,12 +1328,9 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1350,7 +1343,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1470,11 +1462,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1504,8 +1492,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1523,8 +1509,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1546,9 +1530,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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" 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 @@ -1896,7 +1877,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1957,10 +1938,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1998,7 +1976,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index b64b83f16..08c5b6277 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -482,7 +482,6 @@ PREFERENCES_CLIPPINGIND;Kiégett és bebukott részek jelzése PREFERENCES_CUSTPROFBUILD;Egyedi profil készítő PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial profile should be generated for an image.\nReceives command line params to allow a rules based .pp3 generation:\n[Path raw/JPG] [Path default profile] [f-no] [exposure in secs] [focal length in mm] [ISO] [Lens] [Camera] PREFERENCES_CUSTPROFBUILDPATH;Indítóállomány útvonala -PREFERENCES_CUTOVERLAYBRUSH;Vágás maszkjának színe/áttetszősége PREFERENCES_DARKFRAMEFOUND;Találat PREFERENCES_DARKFRAMESHOTS;kép PREFERENCES_DARKFRAMETEMPLATES;sablonok @@ -497,7 +496,6 @@ PREFERENCES_DIRSOFTWARE;Telepítés helye PREFERENCES_EDITORLAYOUT;Szerkesztési mód PREFERENCES_EXTERNALEDITOR;Külső képszerkesztő program PREFERENCES_FBROWSEROPTS;Állományböngésző beállításai -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Egysoros állományböngésző eszköztár (alacsony felbontás esetén hagyd üresen) PREFERENCES_FILEFORMAT;Állományformátum PREFERENCES_FLATFIELDFOUND;Találat PREFERENCES_FLATFIELDSDIR;Flat Fields könyvtár @@ -544,9 +542,7 @@ PREFERENCES_PROFILESAVECACHE;Feldolgozási paraméterek mentése a gyorsítótá PREFERENCES_PROFILESAVEINPUT;Feldolgozási paraméterek mentése a kép mellé PREFERENCES_PROPERTY;Property PREFERENCES_PSPATH;Adobe Photoshop telepítési könyvtára -PREFERENCES_SELECTFONT;Betűtípus kiválasztása PREFERENCES_SELECTLANG;Nyelv kiválasztása -PREFERENCES_SELECTTHEME;Kinézet kiválasztása PREFERENCES_SET;Beállítás PREFERENCES_SHOWBASICEXIF;Fontosabb EXIF információk megjelenítése PREFERENCES_SHOWDATETIME;Felvétel dátumának és idejének megjelenítése @@ -1421,7 +1417,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BEHADDALL;All to 'Add' !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_BEHSETALL;All to 'Set' @@ -1436,8 +1431,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1487,7 +1482,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1506,15 +1501,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1622,11 +1614,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1656,8 +1644,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1675,8 +1661,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1698,9 +1682,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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" 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 @@ -1972,7 +1953,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2024,10 +2005,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2065,7 +2043,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index ba0873377..b6ee0d50b 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -935,7 +935,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys formaat PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Naam PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Pad naar programma of script -PREFERENCES_CUTOVERLAYBRUSH;Kleur uitsnedemasker PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -954,7 +953,6 @@ PREFERENCES_DIRSOFTWARE;Installatiemap PREFERENCES_EDITORLAYOUT;Bewerkingsvenster PREFERENCES_EXTERNALEDITOR;Externe editor PREFERENCES_FBROWSEROPTS;Opties bestandsnavigator -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Enkele rij navigator werkbalk (de-activeer voor lage resolutie) PREFERENCES_FILEFORMAT;Bestandstype PREFERENCES_FLATFIELDFOUND;Gevonden PREFERENCES_FLATFIELDSDIR;Vlakveldmap @@ -1009,7 +1007,7 @@ PREFERENCES_MONPROFILE;Standaard kleurprofiel PREFERENCES_MONPROFILE_WARNOSX;Als gevolg van MacOS beperkingen wordt alleen sRGB ondersteund. PREFERENCES_MULTITAB;Multi-tab: elke foto opent in nieuw tabvenster PREFERENCES_MULTITABDUALMON;Multi-tab, indien beschikbaar op tweede monitor -PREFERENCES_NAVGUIDEBRUSH;Navigator randkleur +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator randkleur PREFERENCES_NAVIGATIONFRAME;Navigatie PREFERENCES_OUTDIR;Uitvoermap PREFERENCES_OUTDIRFOLDER;Sla op in map @@ -1044,13 +1042,10 @@ PREFERENCES_PRTPROFILE;Kleurprofiel PREFERENCES_PSPATH;Installatiemap Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Onthoud zoom % en pan startpunt PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Onthoud het zoom % en pan startpunt van de huidige afbeelding als er een nieuwe afbeelding wordt geopend.\n\nDeze optie werkt alleen in "Single Editor Tab Mode" en wanneer "Demozaïekmethode van het voorbeeld <100% zoom" hetzelfde is als "Gelijk aan PP3". -PREFERENCES_SELECTFONT;Kies lettertype -PREFERENCES_SELECTFONT_COLPICKER;Font van de Kleurkiezer PREFERENCES_SELECTLANG;Selecteer taal -PREFERENCES_SELECTTHEME;Kies thema -PREFERENCES_SERIALIZE_TIFF_READ;Tiff Lees Instellingen -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serieel lezen van tiff bestanden -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Als een map veel ongecomprimeerde tiff bestanden bevat dan versnelt deze optie het genereren van de miniaturen. +PREFERENCES_SERIALIZE_TIFF_READ;TIFF Lees Instellingen +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serieel lezen van TIFF bestanden +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Als een map veel ongecomprimeerde TIFF bestanden bevat dan versnelt deze optie het genereren van de miniaturen. PREFERENCES_SET;Activeer PREFERENCES_SHOWBASICEXIF;Toon standaard Exif-info PREFERENCES_SHOWDATETIME;Toon datum en tijd @@ -1214,11 +1209,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontaal spiegelen TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nSneltoets:\n[ - Multi-tab Mode,\nAlt-[ - Enkel-tab Mode. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nSneltoets:\n] - Multi-tab Mode,\nAlt-] - Enkel-tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Verticaal spiegelen -TP_COLORAPP_ADAPTSCENE;Opnameomgeving luminositeit -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminantie van de opnameomgeving (cd/m²).\n1) Berekend op basis van de Exif data:\nSluitertijd - ISO-waarde - Diafragma - Camera belichtingscompensatie.\n2) Berekend op basis van het raw witpunt en RT's Belichtingscompensatie -TP_COLORAPP_ADAPTVIEWING;Weergaveomgeving luminositeit (cd/m2) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminantie van de weergaveomgeving \n(gebruikelijk 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Als het keuzevakje is aangezet (aanbevolen), dan berekent RT de optimale waarde op basis van de Exif data.\nOm de waarde handmatig in te stellen moet het keuzevakje worden uitgezet +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminantie van de weergaveomgeving \n(gebruikelijk 16cd/m²) TP_COLORAPP_ALGO;Algoritme TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Lichtheid + Chroma (JC) @@ -1248,8 +1239,6 @@ TP_COLORAPP_CURVEEDITOR3;Chroma curve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Wijzigt ofwel chroma, verzadiging of kleurrijkheid.\n Het Histogram toont chromaticiteit (Lab) voor CIECAM wijzigingen.\nHet Histogram toont C,s,M na toepassing van CIECAM indien het selectievakje 'Toon CIECAM uitvoer' is aangezet.\n(C,s,M) worden niet getoond in het Hoofd histogram paneel. \nRaadpleeg het Histogram paneel voor de definitieve uitvoer TP_COLORAPP_DATACIE;CIECAM02 uitvoer histogram in de curven TP_COLORAPP_DATACIE_TOOLTIP;Indien aangezet, tonen de histogrammen van de CIECAM02 curven bij benadering de waarden/reeksen voor J of Q, en C, s of M na de CIECAM02 aanpassingen.\nDit beïnvloed niet het hoofd histogram paneel.\n\nIndien uitgezet tonen de histogrammen van de CIECAM02 curven de Lab waarden zoals deze waren voor de CIECAM02 aanpassingen -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Als het keuzevakje is aangezet (aanbevolen), dan berekent RT een optimale waarde. Deze wordt gebruikt door CAT02 en door CIECAM02.\nOm de waarden handmatig in te stellen moet het keuzevakje worden uitgezet (waarden groter dan 65 worden aanbevolen) -TP_COLORAPP_DEGREE_TOOLTIP;Hoeveelheid van CIE Chromatic Adaptation Transform 2002 TP_COLORAPP_GAMUT;Gamut controle (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Sta gamut controle toe in Lab mode TP_COLORAPP_HUE;Tint (h) @@ -1264,8 +1253,6 @@ TP_COLORAPP_MODEL;Witpunt Model TP_COLORAPP_MODEL_TOOLTIP;WB [RT] + [uitvoer]:\nRT's WB wordt gebruikt voor de opname, CIECAM02 wordt gezet op D50. Het uitvoerapparaat's wit gebruikt de instelling van Voorkeuren > Kleurbeheer\n\nWB [RT+CAT02] + [output]:\nRT's WB instellingen worden gebruikt door CAT02 en het uitvoerapparaat's wit gebruikt de waarde van de Voorkeuren. TP_COLORAPP_RSTPRO;Rode en Huidtinten bescherming TP_COLORAPP_RSTPRO_TOOLTIP;Rode en Huidtinten bescherming (schuifbalk en curven) -TP_COLORAPP_SHARPCIE;Verscherpen, Detailcontrast, Microcontrast & Randen met Q/C -TP_COLORAPP_SHARPCIE_TOOLTIP;Verscherpen, Detailcontrast, Microcontrast & Randen zullen CIECAM02 gebruiken wanneer dit is aangezet. TP_COLORAPP_SURROUND;Omgeving TP_COLORAPP_SURROUND_AVER;Gemmiddeld TP_COLORAPP_SURROUND_DARK;Donker @@ -1702,7 +1689,6 @@ TP_RESIZE_WIDTH;Breedte TP_RETINEX_CONTEDIT_HSL;Histogram balans HSL TP_RETINEX_CONTEDIT_LAB;Histogram balans L*a*b* TP_RETINEX_CONTEDIT_LH;Tint balans -TP_RETINEX_CONTEDIT_MAP;Masker mixer TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminantie volgens luminantie L=f(L)\nCorrigeert ruwe data om halo's and artefacte te verminderen. TP_RETINEX_CURVEEDITOR_LH;Sterkte=f(H) @@ -1737,7 +1723,6 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Masker TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Laag -TP_RETINEX_MAP;Masker methode TP_RETINEX_MAP_GAUS;Gaussiaans masker TP_RETINEX_MAP_MAPP;Verscherp masker (wavelet gedeeltelijk) TP_RETINEX_MAP_MAPT;Verscherp masker (wavelet totaal) @@ -2214,14 +2199,13 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -2235,9 +2219,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file !PREFERENCES_PROFILESAVELOCATION;Processing profile saving location -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -2262,9 +2245,6 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !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" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions @@ -2316,7 +2296,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !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_PIXELSHIFTDMETHOD;Demosaic method for motion diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 00c8532f8..83affd841 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Lagre prosesseringsparametre til cachen PREFERENCES_PROFILESAVEINPUT;Lagre prosesseringsparametre i innfilen PREFERENCES_PSPATH;Adobe Photoshop installasjonsfolder PREFERENCES_SELECTLANG;Velg språk -PREFERENCES_SELECTTHEME;Velg tema PREFERENCES_SHOWBASICEXIF;Vis utvidet Exif-informasjon PREFERENCES_SHOWDATETIME;Vis dato og tid PREFERENCES_SHTHRESHOLD;Terskelverdi for markerte skygger @@ -1215,7 +1214,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1232,8 +1230,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1249,7 +1247,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1261,8 +1258,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1308,7 +1304,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,12 +1327,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1349,7 +1342,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1469,11 +1461,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1503,8 +1491,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1522,8 +1508,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1545,9 +1529,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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" 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 @@ -1895,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1956,10 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1997,7 +1975,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 67f37623f..b5f1ad546 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -690,7 +690,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Rodzaj kluczy PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nazwa PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Ścieżka pliku wykonywalnego -PREFERENCES_CUTOVERLAYBRUSH;Kolor/przezroczystość maski kadrowania PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -709,7 +708,6 @@ PREFERENCES_DIRSOFTWARE;Katalog instalacyjny PREFERENCES_EDITORLAYOUT;Układ edytora PREFERENCES_EXTERNALEDITOR;Zewnętrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przeglądarki plików -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Pojedynczy wiersz paska narzędzi (odznaczyć dla niskich rozdzielczości) PREFERENCES_FILEFORMAT;Format pliku PREFERENCES_FLATFIELDFOUND;Znaleziono PREFERENCES_FLATFIELDSDIR;Katalog z pustymi polami @@ -750,7 +748,7 @@ PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_METADATA;Metadane PREFERENCES_MULTITAB;Tryb wielu zakładek PREFERENCES_MULTITABDUALMON;Tryb wielu zakładek (na drugim monitorze jeśli dostępny) -PREFERENCES_NAVGUIDEBRUSH;Kolor ramki Nawigatora +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_OUTDIR;Katalog wyjściowy PREFERENCES_OUTDIRFOLDER;Zapisz do katalogu PREFERENCES_OUTDIRFOLDERHINT;Umieszcza zapisywane zdjęcia w wybranym katalogu @@ -771,9 +769,7 @@ PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamięci podręczn PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejściowego PREFERENCES_PROPERTY;Własność PREFERENCES_PSPATH;Katalog w którym zainstalowany jest Adobe Photoshop -PREFERENCES_SELECTFONT;Wybierz czcionkę PREFERENCES_SELECTLANG;Wybierz język -PREFERENCES_SELECTTHEME;Wybierz temat PREFERENCES_SET;Ustaw PREFERENCES_SHOWBASICEXIF;Pokaż podstawowe dane Exif PREFERENCES_SHOWDATETIME;Pokaż datę i czas @@ -926,11 +922,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Odbij w poziomie TP_COARSETRAF_TOOLTIP_ROTLEFT;Obróć w lewo.\n\nSkróty:\n[ - Tryb wielu zakładek,\nAlt-[ - Tryb jednej zakładki. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Obróć w prawo.\n\nSkróty:\n] - Tryb wielu zakładek,\nAlt-] - Tryb jednej zakładki. TP_COARSETRAF_TOOLTIP_VFLIP;Odbij w pionie -TP_COLORAPP_ADAPTSCENE;Luminancji sceny -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Bezwzględna luminancja sceny (cd/m²).\n1)Obliczona za pomocą Exif:\nCzas naświetlania - ISO - Przysłona - Korekcja ekspozycji EV w aparacie.\n2)Obliczona również na podstawie punktu bieli raw oraz korekty ekspozycji w RawTherapee -TP_COLORAPP_ADAPTVIEWING;Luminancji widowni (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Bezwzględna luminancja widowni\n(zazwyczaj 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Jesli zaznaczone (polecamy), RawTherapee obliczy optymalną wartość na podstawie Exif.\nAby ustawic wartość ręcznie, należy wpierw odznaczyc pudło. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzględna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_ALGO;Algorytm TP_COLORAPP_ALGO_ALL;Wszystkie TP_COLORAPP_ALGO_JC;Światłość + Chroma (JC) @@ -960,8 +952,6 @@ TP_COLORAPP_CURVEEDITOR3;Krzywa koloru TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ustawienie chromy, nasycenia bądź barwistości.\n\nPokazuje histogram chromatyczności (L*a*b*) przed CIECAM02.\nJeśli opcja "Pokaż histogramy wyjściowe CIECAM02 za krzywymi" jest włączona, pokazuje histogram C, s bądź M po CIECAM02.\n\nC, s oraz M nie są pokazywane w głównym histogramie.\nEfekt końcowy jest przedstawiony w głównym histogramie. TP_COLORAPP_DATACIE;Pokaż histogramy wyjściowe CIECAM02 za krzywymi TP_COLORAPP_DATACIE_TOOLTIP;Kiedy opcja jest włączona, histogramy za krzywymi CIECAM02 pokazują przybliżone wartości/zakresy J lub Q, oraz C, s lub M po korekcjach CIECAM02.\nTen wybór nie ma wpływu na główny histogram.\n\nKiedy opcja jest wyłączona, histogramy za krzywymi CIECAM02 pokazują wartości L*a*b* przed korekcjami CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Jeśli opcja jest zaznaczona (zalecane), RawTherapee kalkuluje wartość optymalną, która jest potem użyta przez CAT02 oraz przez całość CIECAM02.\nAby ustawić wartość ręcznie, odznacz wpierw opcję (wartości powyżej 65 zalecane). -TP_COLORAPP_DEGREE_TOOLTIP;Siła CIE Chromatic Adaptation Transform 2002 TP_COLORAPP_GAMUT;Kontrola gamma (L*a*b*). TP_COLORAPP_GAMUT_TOOLTIP;Włącz kontrolę gamma w trybie L*a*b*. TP_COLORAPP_HUE;Odcień (hue, h) @@ -976,8 +966,6 @@ TP_COLORAPP_MODEL;Model PB TP_COLORAPP_MODEL_TOOLTIP;Model punktu bieli.\n\nBB [RT] + [wyjściowy]:\nBalans bieli RawTherapee jest użyty dla sceny, CIECAM02 jest ustawione na D50, i balans bieli urządzenia wyjściowego ustawiony jest w Ustawieniach > Zarządzanie Kolorami\n\nBB [RT+CAT02] + [wyjściowe]:\nUstawienia balansu bieli RawTherapee są używane przez CAT02, i balans bieli urządzenia wyjściowego jest ustawione w Ustawieniach > Zarządzanie Kolorami. TP_COLORAPP_RSTPRO;Ochrona odcieni skóry i czerwieni TP_COLORAPP_RSTPRO_TOOLTIP;Ochrona odcieni skóry i czerwieni (suwaki i krzywe) -TP_COLORAPP_SHARPCIE;- -TP_COLORAPP_SHARPCIE_TOOLTIP;- TP_COLORAPP_SURROUND;Otoczenie TP_COLORAPP_SURROUND_AVER;Średnie TP_COLORAPP_SURROUND_DARK;Ciemne @@ -1796,7 +1784,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1805,8 +1792,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1853,15 +1840,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1894,9 +1878,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !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" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions @@ -2007,7 +1988,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2054,10 +2035,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2095,7 +2073,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 3a3c360b4..aa8fb9ee7 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -690,7 +690,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Rodzaj kluczy PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nazwa PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Sciezka pliku wykonywalnego -PREFERENCES_CUTOVERLAYBRUSH;Kolor/przezroczystosc maski kadrowania PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -709,7 +708,6 @@ PREFERENCES_DIRSOFTWARE;Katalog instalacyjny PREFERENCES_EDITORLAYOUT;Uklad edytora PREFERENCES_EXTERNALEDITOR;Zewnetrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przegladarki plikow -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Pojedynczy wiersz paska narzedzi (odznaczyc dla niskich rozdzielczosci) PREFERENCES_FILEFORMAT;Format pliku PREFERENCES_FLATFIELDFOUND;Znaleziono PREFERENCES_FLATFIELDSDIR;Katalog z pustymi polami @@ -750,7 +748,7 @@ PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_METADATA;Metadane PREFERENCES_MULTITAB;Tryb wielu zakladek PREFERENCES_MULTITABDUALMON;Tryb wielu zakladek (na drugim monitorze jesli dostepny) -PREFERENCES_NAVGUIDEBRUSH;Kolor ramki Nawigatora +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_OUTDIR;Katalog wyjsciowy PREFERENCES_OUTDIRFOLDER;Zapisz do katalogu PREFERENCES_OUTDIRFOLDERHINT;Umieszcza zapisywane zdjecia w wybranym katalogu @@ -771,9 +769,7 @@ PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamieci podrecznej PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejsciowego PREFERENCES_PROPERTY;Wlasnosc PREFERENCES_PSPATH;Katalog w ktorym zainstalowany jest Adobe Photoshop -PREFERENCES_SELECTFONT;Wybierz czcionke PREFERENCES_SELECTLANG;Wybierz jezyk -PREFERENCES_SELECTTHEME;Wybierz temat PREFERENCES_SET;Ustaw PREFERENCES_SHOWBASICEXIF;Pokaz podstawowe dane Exif PREFERENCES_SHOWDATETIME;Pokaz date i czas @@ -926,11 +922,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Odbij w poziomie TP_COARSETRAF_TOOLTIP_ROTLEFT;Obroc w lewo.\n\nSkroty:\n[ - Tryb wielu zakladek,\nAlt-[ - Tryb jednej zakladki. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Obroc w prawo.\n\nSkroty:\n] - Tryb wielu zakladek,\nAlt-] - Tryb jednej zakladki. TP_COARSETRAF_TOOLTIP_VFLIP;Odbij w pionie -TP_COLORAPP_ADAPTSCENE;Luminancji sceny -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Bezwzgledna luminancja sceny (cd/m²).\n1)Obliczona za pomoca Exif:\nCzas naswietlania - ISO - Przyslona - Korekcja ekspozycji EV w aparacie.\n2)Obliczona rowniez na podstawie punktu bieli raw oraz korekty ekspozycji w RawTherapee -TP_COLORAPP_ADAPTVIEWING;Luminancji widowni (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Bezwzgledna luminancja widowni\n(zazwyczaj 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Jesli zaznaczone (polecamy), RawTherapee obliczy optymalna wartosc na podstawie Exif.\nAby ustawic wartosc recznie, nalezy wpierw odznaczyc pudlo. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzgledna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_ALGO;Algorytm TP_COLORAPP_ALGO_ALL;Wszystkie TP_COLORAPP_ALGO_JC;Swiatlosc + Chroma (JC) @@ -960,8 +952,6 @@ TP_COLORAPP_CURVEEDITOR3;Krzywa koloru TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ustawienie chromy, nasycenia badz barwistosci.\n\nPokazuje histogram chromatycznosci (L*a*b*) przed CIECAM02.\nJesli opcja "Pokaz histogramy wyjsciowe CIECAM02 za krzywymi" jest wlaczona, pokazuje histogram C, s badz M po CIECAM02.\n\nC, s oraz M nie sa pokazywane w glownym histogramie.\nEfekt koncowy jest przedstawiony w glownym histogramie. TP_COLORAPP_DATACIE;Pokaz histogramy wyjsciowe CIECAM02 za krzywymi TP_COLORAPP_DATACIE_TOOLTIP;Kiedy opcja jest wlaczona, histogramy za krzywymi CIECAM02 pokazuja przyblizone wartosci/zakresy J lub Q, oraz C, s lub M po korekcjach CIECAM02.\nTen wybor nie ma wplywu na glowny histogram.\n\nKiedy opcja jest wylaczona, histogramy za krzywymi CIECAM02 pokazuja wartosci L*a*b* przed korekcjami CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Jesli opcja jest zaznaczona (zalecane), RawTherapee kalkuluje wartosc optymalna, ktora jest potem uzyta przez CAT02 oraz przez calosc CIECAM02.\nAby ustawic wartosc recznie, odznacz wpierw opcje (wartosci powyzej 65 zalecane). -TP_COLORAPP_DEGREE_TOOLTIP;Sila CIE Chromatic Adaptation Transform 2002 TP_COLORAPP_GAMUT;Kontrola gamma (L*a*b*). TP_COLORAPP_GAMUT_TOOLTIP;Wlacz kontrole gamma w trybie L*a*b*. TP_COLORAPP_HUE;Odcien (hue, h) @@ -976,8 +966,6 @@ TP_COLORAPP_MODEL;Model PB TP_COLORAPP_MODEL_TOOLTIP;Model punktu bieli.\n\nBB [RT] + [wyjsciowy]:\nBalans bieli RawTherapee jest uzyty dla sceny, CIECAM02 jest ustawione na D50, i balans bieli urzadzenia wyjsciowego ustawiony jest w Ustawieniach > Zarzadzanie Kolorami\n\nBB [RT+CAT02] + [wyjsciowe]:\nUstawienia balansu bieli RawTherapee sa uzywane przez CAT02, i balans bieli urzadzenia wyjsciowego jest ustawione w Ustawieniach > Zarzadzanie Kolorami. TP_COLORAPP_RSTPRO;Ochrona odcieni skory i czerwieni TP_COLORAPP_RSTPRO_TOOLTIP;Ochrona odcieni skory i czerwieni (suwaki i krzywe) -TP_COLORAPP_SHARPCIE;- -TP_COLORAPP_SHARPCIE_TOOLTIP;- TP_COLORAPP_SURROUND;Otoczenie TP_COLORAPP_SURROUND_AVER;Srednie TP_COLORAPP_SURROUND_DARK;Ciemne @@ -1796,7 +1784,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1805,8 +1792,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1853,15 +1840,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1894,9 +1878,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !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" is enabled, Yb is calculated from the mean value of the actual image's luminance !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_LABREGIONS;L*a*b* correction regions @@ -2007,7 +1988,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2054,10 +2035,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2095,7 +2073,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index d2c5077f2..a627f868e 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1008,7 +1008,6 @@ PARTIALPASTE_WHITEBALANCE;Balanço de branco PREFERENCES_ADD;Adicionar PREFERENCES_APPLNEXTSTARTUP;é necessário reiniciar PREFERENCES_AUTOMONPROFILE;Usar o perfil de cores do monitor principal do sistema operacional -PREFERENCES_AUTOSAVE_TP_OPEN;Salvar automaticamente ferramentas recolhidas/expandidas\nestado antes de sair PREFERENCES_BATCH_PROCESSING;Processamento em Lote PREFERENCES_BEHADDALL;Tudo para 'Adicionar' PREFERENCES_BEHADDALLHINT;Definir todos os parâmetros para o Adicionar modo.\nAjustes de parâmetros no painel de ferramentas de lote serão deltas para os valores armazenados. @@ -1041,7 +1040,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formato de chaves PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nome PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID da Tag PREFERENCES_CUSTPROFBUILDPATH;Caminho executável -PREFERENCES_CUTOVERLAYBRUSH;Cor da máscara de corte/transparência PREFERENCES_D50;Configurações no menu principal PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1063,7 +1061,6 @@ PREFERENCES_EDITORCMDLINE;Linha de comando personalizada PREFERENCES_EDITORLAYOUT;Layout do Editor PREFERENCES_EXTERNALEDITOR;Editor Externo PREFERENCES_FBROWSEROPTS;Navegador de Arquivos / Opções de Miniaturas -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de ferramentas do navegador de arquivos de linha única\n(desmarque para exibição de baixa resolução) PREFERENCES_FILEFORMAT;Formato de arquivo PREFERENCES_FLATFIELDFOUND;Encontrado PREFERENCES_FLATFIELDSDIR;Diretório de campos planos @@ -1120,7 +1117,7 @@ PREFERENCES_MONPROFILE;Perfil de cor padrão PREFERENCES_MONPROFILE_WARNOSX;Devido às limitações do MacOS, apenas o sRGB é suportado. PREFERENCES_MULTITAB;Modo de Mútiplas Abas do Editor PREFERENCES_MULTITABDUALMON;Múltiplas Abas do Editor no Modo de Janela Própria -PREFERENCES_NAVGUIDEBRUSH;Cor do guia do navegador +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Cor do guia do navegador PREFERENCES_NAVIGATIONFRAME;Navegação PREFERENCES_OUTDIR;Diretório de Saída PREFERENCES_OUTDIRFOLDER;Salvar na pasta @@ -1158,13 +1155,10 @@ PREFERENCES_PSPATH;Diretório de instalação do Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Lembre-se de zoom % e compensar pan PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Lembre-se do zoom % e de compensar o pan da imagem atual ao abrir uma nova imagem.\n\nEsta opção só funciona em "Modo da Aba do Editor Único" e quando "o método Demosaicing utilizado para a pré-visualização em <100% zoom" está definido como "Como no PP3". PREFERENCES_SAVE_TP_OPEN_NOW;Salvar ferramentas no estado recolhidas/expandididas agora -PREFERENCES_SELECTFONT;Selecione a fonte principal -PREFERENCES_SELECTFONT_COLPICKER;Selecione a fonte do Seletor de Cor PREFERENCES_SELECTLANG;Selecione linguagem -PREFERENCES_SELECTTHEME;Selecione tema -PREFERENCES_SERIALIZE_TIFF_READ;Configurações de leitura tiff -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize a leitura de arquivos tiff -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Ao trabalhar com pastas cheias de arquivos tiff não compactados, ativar essa opção pode aumentar o desempenho da geração de miniaturas. +PREFERENCES_SERIALIZE_TIFF_READ;Configurações de leitura TIFF +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize a leitura de arquivos TIFF +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Ao trabalhar com pastas cheias de arquivos TIFF não compactados, ativar essa opção pode aumentar o desempenho da geração de miniaturas. PREFERENCES_SET;Configuração PREFERENCES_SHOWBASICEXIF;Mostrar informações Exif básicas PREFERENCES_SHOWDATETIME;Mostrar data e hora @@ -1184,7 +1178,6 @@ PREFERENCES_TAB_DYNAMICPROFILE;Regras de Perfil Dinâmico PREFERENCES_TAB_GENERAL;Geral PREFERENCES_TAB_IMPROC;Processamento de Imagem PREFERENCES_TAB_SOUND;Sons -PREFERENCES_THEME;Tema PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Visualização JPEG incorporada PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagem para mostrar PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Renderização raw neutra @@ -1348,11 +1341,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Girar horizontalmente. TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotacione à esquerda.\n\nAtalhos:\n[ - Modo de Guias do Editor Múltiplo,\nAlt-[ - Modo de Guia do Editor Único. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotacione à direita.\n\nAtalhos:\n] - Modo de Guias do Editor Múltiplo,\nAlt-] - Modo de Guia do Editor Único. TP_COARSETRAF_TOOLTIP_VFLIP;Girar verticalmente. -TP_COLORAPP_ADAPTSCENE;Luminância absoluta da cena -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminância absoluta do ambiente da cena (cd/m²).\n1) Calculada a partir dos dados Exif:\nVelocidade do obturador - velocidade ISO - número F - correção de exposição da câmera.\n2) Calculado a partir do ponto branco raw e do controle deslizante de Compensação de Exposição do RT. -TP_COLORAPP_ADAPTVIEWING;Visualizando luminância absoluta (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Se a caixa de seleção estiver marcada (recommendado) RawTherapee calcula um valor ótimo a partir dos dados Exif.\nPara definir o valor manualmente, desmarque a caixa de seleção primeiro. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²). TP_COLORAPP_ALGO;Algorimo TP_COLORAPP_ALGO_ALL;Tudo TP_COLORAPP_ALGO_JC;Claridade + Croma (JC) @@ -1382,8 +1371,6 @@ TP_COLORAPP_CURVEEDITOR3;Curva de cor TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ajustar croma, saturação ou colorido.\n\nMostra o histograma da cromaticidade (L*a*b*) antes de CIECAM02.\nSe a caixa de seleção "Mostrar histogramas de saída do CIECAM02 em curvas" estiver ativada, mostra o histograma de C, s ou M depois de CIECAM02.\n\nC, s e M não são mostrados no painel principal do histograma.\nPara a saída final, consulte o painel principal do histograma. TP_COLORAPP_DATACIE;Histogramas de saída em curvas do CIECAM02 TP_COLORAPP_DATACIE_TOOLTIP;Quando ativado, os histogramas em curvas do CIECAM02 mostram valores/intervalos aproximados para J ou Q, e C, s ou M após os ajustes do CIECAM02.\nEsta seleção não afeta o painel principal do histograma.\n\nQuando desativado, os histogramas em curvas do CIECAM02 mostram L*a*b* valores antes dos ajustes do CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Se a caixa de seleção estiver marcada (recomendado), RawTherapee calcula um valor ótimo, que será usado pelo CAT02, e também para todo o CIECAM02.\nPara definir o valor manualmente, primeiro desmarque a caixa de seleção (valores acima de 65 são recomendados). -TP_COLORAPP_DEGREE_TOOLTIP;Quantidade de Adaptação Cromática CIE Transformar 2002. TP_COLORAPP_FREE;Temp+verde livre + CAT02 + [saída] TP_COLORAPP_GAMUT;Controle Gamut (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Permitir controle gamut no modo L*a*b*. @@ -1401,8 +1388,6 @@ TP_COLORAPP_NEUTRAL;Restaurar TP_COLORAPP_NEUTRAL_TIP;Restaurar todas as caixas de seleção e curvas dos controles deslizantes para seus valores padrão TP_COLORAPP_RSTPRO;Proteção vermelho e de tons de pele TP_COLORAPP_RSTPRO_TOOLTIP;Vermelho & proteção de tons de pele afeta os controles deslizantes e as curvas. -TP_COLORAPP_SHARPCIE;--sem uso-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--sem uso-- TP_COLORAPP_SURROUND;Borda TP_COLORAPP_SURROUND_AVER;Média TP_COLORAPP_SURROUND_DARK;Escuro @@ -1424,9 +1409,6 @@ TP_COLORAPP_TONECIE;Mapeamento de tom usando CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Se esta opção estiver desativada, o mapeamento de tom é feito no espaço L*a*b*.\nSe esta opção estiver habilitada, o mapeamento de tom é feito usando CIECAM02.\nA ferramenta de Mapeamento de Tom deve estar ativada para que esta configuração tenha efeito. TP_COLORAPP_WBCAM;WB [RT+CAT02] + [saída] TP_COLORAPP_WBRT;WB [RT] + [saída] -TP_COLORAPP_YB;Yb% (média luminância) -TP_COLORAPP_YBSCENE;Yb% (média luminância) -TP_COLORAPP_YBSCENE_TOOLTIP;Se "auto" estiver ativado, Yb é calculado a partir do valor médio da luminância real da imagem TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automático TP_COLORTONING_BALANCE;Balanço @@ -1868,7 +1850,6 @@ TP_RESIZE_WIDTH;Largura TP_RETINEX_CONTEDIT_HSL;Equalizador de histograma HSL TP_RETINEX_CONTEDIT_LAB;Equalizador de histograma L*a*b* TP_RETINEX_CONTEDIT_LH;Equalizador de matiz -TP_RETINEX_CONTEDIT_MAP;Equalizador de máscara TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminância de acordo com a luminância L=f(L)\nCorrija dados raw para reduzir halos e artefatos. TP_RETINEX_CURVEEDITOR_LH;Intensidade=f(M) @@ -1905,7 +1886,6 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Máscara TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Baixo -TP_RETINEX_MAP;Método de máscara TP_RETINEX_MAP_GAUS;Máscara gaussiana TP_RETINEX_MAP_MAPP;Máscara de nitidez (wavelet parcial) TP_RETINEX_MAP_MAPT;Máscara de nitidez (wavelet total) @@ -2294,6 +2274,6 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. !TP_TM_FATTAL_THRESHOLD;Detail diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index a0d3d1e85..93dd6cdb5 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -720,7 +720,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Формат ключей PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Имя PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Путь к исполняемому файлу -PREFERENCES_CUTOVERLAYBRUSH; Цвет/прозрачность маски обрезки PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -740,7 +739,6 @@ PREFERENCES_DIRSOFTWARE;Каталог установки PREFERENCES_EDITORLAYOUT;Тип редактора PREFERENCES_EXTERNALEDITOR;Внешний редактор PREFERENCES_FBROWSEROPTS;Настройки -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Однорядная панель обозревателя файлов\n(отключите для экранов с низким разрешением) PREFERENCES_FILEFORMAT;Формат файлов PREFERENCES_FLATFIELDFOUND;Найдено PREFERENCES_FLATFIELDSDIR;Папка с файлами плоских полей @@ -805,9 +803,7 @@ PREFERENCES_PROFILESAVECACHE;Сохранять профиль обработк PREFERENCES_PROFILESAVEINPUT;Сохранять профиль обработки в одном каталоге с исходным файлом PREFERENCES_PROPERTY;Свойство PREFERENCES_PSPATH;Каталог установки Adobe Photoshop -PREFERENCES_SELECTFONT;Выбрать шрифт PREFERENCES_SELECTLANG;Выбрать язык -PREFERENCES_SELECTTHEME;Выбрать тему PREFERENCES_SET;Установить PREFERENCES_SHOWBASICEXIF;Показывать основные данные Exif PREFERENCES_SHOWDATETIME;Показывать дату и время @@ -826,7 +822,6 @@ PREFERENCES_TAB_DYNAMICPROFILE;Динамические профили PREFERENCES_TAB_GENERAL;Основное PREFERENCES_TAB_IMPROC;Обработка изображения PREFERENCES_TAB_SOUND;Звуки -PREFERENCES_THEME;Тема PREFERENCES_TP_LABEL;Панель инструментов: PREFERENCES_TP_VSCROLLBAR;Спрятать вертикальную полосу прокрутки PREFERENCES_USEBUNDLEDPROFILES;Использовать предустановленный профиль @@ -965,11 +960,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Горизонтальное зеркальное о TP_COARSETRAF_TOOLTIP_ROTLEFT;Повернуть влево\n\nГорячие клавиши:\n[ - режим множественных редакторов,\nAlt-[ - режим одного редактора TP_COARSETRAF_TOOLTIP_ROTRIGHT;Повернуть вправо\n\nГорячие клавиши:\n] - режим множественных редакторов,\nAlt-] - режим одного редактора TP_COARSETRAF_TOOLTIP_VFLIP;Вертикальное зеркальное отражение -TP_COLORAPP_ADAPTSCENE;Яркость обстановки -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Абсолютная освещённость места и объекта съёмки (кд/м²).\n1) Высчитывается из данных Exif:\nВыдержка − Значение ISO − Значение F − Внутрикамерная коррекция выдержки.\n2) Высчитывается из точки белого в raw и значения компенсации экспозиции RT. -TP_COLORAPP_ADAPTVIEWING;Яркость при просмотре (кд/м²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Если галка отмечена (рекомендуется) RT расчитывает оптимальное значение из данных Exif.\nДля ручного редактирования необходимо предварительно снять галку. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²) TP_COLORAPP_ALGO;Алгоритм TP_COLORAPP_ALGO_ALL;Все TP_COLORAPP_ALGO_JC;Светимость + Цвет (JC) @@ -1002,8 +993,6 @@ TP_COLORAPP_GAMUT;Контроль гаммы (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Позволяет контролировать гамму в режиме L*a*b*. TP_COLORAPP_HUE;Цвет (h) TP_COLORAPP_MODEL;Модель точки белого -TP_COLORAPP_SHARPCIE;--неиспользуемый-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--неиспользуемый-- TP_CROP_FIXRATIO;Пропорция: TP_CROP_GTDIAGONALS;Правило диагоналей TP_CROP_GTEPASSPORT;Биометрический паспорт @@ -1793,7 +1782,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1803,8 +1791,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1827,7 +1815,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_MONINTENT;Default rendering intent !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1842,11 +1830,9 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview @@ -1875,8 +1861,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. !TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 @@ -1911,9 +1895,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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" 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 @@ -2032,7 +2013,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_IMAGENUM;Sub-image !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. @@ -2067,10 +2048,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !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.\n+fast gives less artifacts in flat areas !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_EQUAL;Equalizer @@ -2104,7 +2082,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 2f5de7b52..c831dbddb 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -610,7 +610,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Кључни формати PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Назив PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;БрОзнаке PREFERENCES_CUSTPROFBUILDPATH;Извршна путања -PREFERENCES_CUTOVERLAYBRUSH;Маска исецања боје/провидног PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -629,7 +628,6 @@ PREFERENCES_DIRSOFTWARE;Директоријум са инсталацијом PREFERENCES_EDITORLAYOUT;Размештај програма PREFERENCES_EXTERNALEDITOR;Спољни уређивач PREFERENCES_FBROWSEROPTS;Опције разгледача датотеке -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Прикажи алатке у једном реду PREFERENCES_FILEFORMAT;Формат датотеке PREFERENCES_FLATFIELDFOUND;Нађено PREFERENCES_FLATFIELDSDIR;Директоријум за равна поља @@ -688,9 +686,7 @@ PREFERENCES_PROFILESAVECACHE;Сачувај параметре обраде у PREFERENCES_PROFILESAVEINPUT;Сачувај парамтре обраде поред улазне датотеке PREFERENCES_PROPERTY;Особина PREFERENCES_PSPATH;Директоријум са инсталираним Адобе Фотошопом -PREFERENCES_SELECTFONT;Изаберите фонт PREFERENCES_SELECTLANG;Језик -PREFERENCES_SELECTTHEME;Тема PREFERENCES_SET;Постави PREFERENCES_SHOWBASICEXIF;Прикажи основне Exif податке PREFERENCES_SHOWDATETIME;Прикажи датум и време @@ -841,11 +837,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Изврће слику хоризонтално TP_COARSETRAF_TOOLTIP_ROTLEFT;Окреће слику улево TP_COARSETRAF_TOOLTIP_ROTRIGHT;Окреће слику удесно TP_COARSETRAF_TOOLTIP_VFLIP;Изврће слику вертикално -TP_COLORAPP_ADAPTSCENE;Луминозност сцене -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Апосолутна луминозност окружења сцене (cd/m²).\n1) Рачуна се из Exif података:\nБрзина затварача - ИСО вредност - отвор бленде - корекција експозиције камере.\n2) Рачуна се из беле тачке сирове слике унутар дела програма за компензацију експозиције. -TP_COLORAPP_ADAPTVIEWING;Луминозност за преглед (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Апсолутна луминозност окружења за преглед\n(обично 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Уколико је штиклирано (препоручено), програм рачуна оптималне вредности на основу Exif података.\nЗа ручно постављање ових вредности, одштиклирајте ово поље. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Апсолутна луминозност окружења за преглед\n(обично 16cd/m²). TP_COLORAPP_ALGO;Алгоритам TP_COLORAPP_ALGO_ALL;Све TP_COLORAPP_ALGO_JC;Светлина + Боја (JC) @@ -875,8 +867,6 @@ TP_COLORAPP_CURVEEDITOR3;Крива боја TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Подешава било хрому, засићеност или живост боја.\n\nПриказује хистограм хроматисе (Лаб) пре CIECAM02.\nУколико је омогућено „CIECAM02 излазни хистограм у кривуљама“, приказује хистограм за C, s или M након CIECAM02.\n\nC, s и M се не приказују у главној површи за хистограм.\nЗа конаачни изла погледајте главну површ хистограма. TP_COLORAPP_DATACIE;CIECAM02 излазни хистограм у кривуљама TP_COLORAPP_DATACIE_TOOLTIP;Када је омогућено, хистограми у CIECAM02 кривим приказују приближне вредности/опсеге за J или Q, и C, s или M након CIECAM02 подешавања.\nОвај избор не утиче на приказ у главној површи за хистограм.\n\nКада је искључено, хистограми у CIECAM02 кривим приказују Лаб вредности пре CIECAM02 подешавања. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Уколико је штиклирано (препоручено), програм рачина оптималне вредности, које се затим користе за CAT02, а такође за читав CIECAM02.\nДа би поставили вредности ручне, одштиклирајте ово поље (препоручене су вредности изнад 65). -TP_COLORAPP_DEGREE_TOOLTIP;Количина преображаја CIE хроматске адаптације2002. TP_COLORAPP_GAMUT;Контрола гамута (Лаб) TP_COLORAPP_GAMUT_TOOLTIP;Омогућава контролу гамута у Лаб режиму. TP_COLORAPP_HUE;Нијанса (h) @@ -891,8 +881,6 @@ TP_COLORAPP_MODEL;WP модел TP_COLORAPP_MODEL_TOOLTIP;Модел беле-тачке.\n\nБаланс беле [RT] + [излаз]: баланс беле из програма се користи за кадар, CIECAM02 се поставља на D50, а баланс беле излазног уређаја се одређује из Подешавања > Управљање бојама.\n\nБаланс беле [RT+CAT02] + [излаз]: подешавања баланса беле из програма се користе од стране CAT02, а баланс беле излазног уређаја се одређује из Подешавања - Управљање бојама. TP_COLORAPP_RSTPRO;Заштита црвене и боје коже TP_COLORAPP_RSTPRO_TOOLTIP;Заштита црвене боје и боје коже (клизачи и криве). -TP_COLORAPP_SHARPCIE;--не користи се-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--не користи се-- TP_COLORAPP_SURROUND;Окружено TP_COLORAPP_SURROUND_AVER;Просечно TP_COLORAPP_SURROUND_DARK;Тамно @@ -1705,7 +1693,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1715,8 +1702,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1747,7 +1734,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1766,15 +1753,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1810,9 +1794,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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" 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 @@ -1999,7 +1980,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2049,10 +2030,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2090,7 +2068,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 061b90fba..190f52e91 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -610,7 +610,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Ključni formati PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Naziv PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;BrOznake PREFERENCES_CUSTPROFBUILDPATH;Izvršna putanja -PREFERENCES_CUTOVERLAYBRUSH;Maska isecanja boje/providnog PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -629,7 +628,6 @@ PREFERENCES_DIRSOFTWARE;Direktorijum sa instalacijom PREFERENCES_EDITORLAYOUT;Razmeštaj programa PREFERENCES_EXTERNALEDITOR;Spoljni uređivač PREFERENCES_FBROWSEROPTS;Opcije razgledača datoteke -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Prikaži alatke u jednom redu PREFERENCES_FILEFORMAT;Format datoteke PREFERENCES_FLATFIELDFOUND;Nađeno PREFERENCES_FLATFIELDSDIR;Direktorijum za ravna polja @@ -688,9 +686,7 @@ PREFERENCES_PROFILESAVECACHE;Sačuvaj parametre obrade u ostavu PREFERENCES_PROFILESAVEINPUT;Sačuvaj paramtre obrade pored ulazne datoteke PREFERENCES_PROPERTY;Osobina PREFERENCES_PSPATH;Direktorijum sa instaliranim Adobe Fotošopom -PREFERENCES_SELECTFONT;Izaberite font PREFERENCES_SELECTLANG;Jezik -PREFERENCES_SELECTTHEME;Tema PREFERENCES_SET;Postavi PREFERENCES_SHOWBASICEXIF;Prikaži osnovne Exif podatke PREFERENCES_SHOWDATETIME;Prikaži datum i vreme @@ -841,11 +837,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Izvrće sliku horizontalno TP_COARSETRAF_TOOLTIP_ROTLEFT;Okreće sliku ulevo TP_COARSETRAF_TOOLTIP_ROTRIGHT;Okreće sliku udesno TP_COARSETRAF_TOOLTIP_VFLIP;Izvrće sliku vertikalno -TP_COLORAPP_ADAPTSCENE;Luminoznost scene -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Aposolutna luminoznost okruženja scene (cd/m²).\n1) Računa se iz Exif podataka:\nBrzina zatvarača - ISO vrednost - otvor blende - korekcija ekspozicije kamere.\n2) Računa se iz bele tačke sirove slike unutar dela programa za kompenzaciju ekspozicije. -TP_COLORAPP_ADAPTVIEWING;Luminoznost za pregled (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Apsolutna luminoznost okruženja za pregled\n(obično 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Ukoliko je štiklirano (preporučeno), program računa optimalne vrednosti na osnovu Exif podataka.\nZa ručno postavljanje ovih vrednosti, odštiklirajte ovo polje. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Apsolutna luminoznost okruženja za pregled\n(obično 16cd/m²). TP_COLORAPP_ALGO;Algoritam TP_COLORAPP_ALGO_ALL;Sve TP_COLORAPP_ALGO_JC;Svetlina + Boja (JC) @@ -875,8 +867,6 @@ TP_COLORAPP_CURVEEDITOR3;Kriva boja TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Podešava bilo hromu, zasićenost ili živost boja.\n\nPrikazuje histogram hromatise (Lab) pre CIECAM02.\nUkoliko je omogućeno „CIECAM02 izlazni histogram u krivuljama“, prikazuje histogram za C, s ili M nakon CIECAM02.\n\nC, s i M se ne prikazuju u glavnoj površi za histogram.\nZa konaačni izla pogledajte glavnu površ histograma. TP_COLORAPP_DATACIE;CIECAM02 izlazni histogram u krivuljama TP_COLORAPP_DATACIE_TOOLTIP;Kada je omogućeno, histogrami u CIECAM02 krivim prikazuju približne vrednosti/opsege za J ili Q, i C, s ili M nakon CIECAM02 podešavanja.\nOvaj izbor ne utiče na prikaz u glavnoj površi za histogram.\n\nKada je isključeno, histogrami u CIECAM02 krivim prikazuju Lab vrednosti pre CIECAM02 podešavanja. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Ukoliko je štiklirano (preporučeno), program račina optimalne vrednosti, koje se zatim koriste za CAT02, a takođe za čitav CIECAM02.\nDa bi postavili vrednosti ručne, odštiklirajte ovo polje (preporučene su vrednosti iznad 65). -TP_COLORAPP_DEGREE_TOOLTIP;Količina preobražaja CIE hromatske adaptacije2002. TP_COLORAPP_GAMUT;Kontrola gamuta (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Omogućava kontrolu gamuta u Lab režimu. TP_COLORAPP_HUE;Nijansa (h) @@ -891,8 +881,6 @@ TP_COLORAPP_MODEL;WP model TP_COLORAPP_MODEL_TOOLTIP;Model bele-tačke.\n\nBalans bele [RT] + [izlaz]: balans bele iz programa se koristi za kadar, CIECAM02 se postavlja na D50, a balans bele izlaznog uređaja se određuje iz Podešavanja > Upravljanje bojama.\n\nBalans bele [RT+CAT02] + [izlaz]: podešavanja balansa bele iz programa se koriste od strane CAT02, a balans bele izlaznog uređaja se određuje iz Podešavanja - Upravljanje bojama. TP_COLORAPP_RSTPRO;Zaštita crvene i boje kože TP_COLORAPP_RSTPRO_TOOLTIP;Zaštita crvene boje i boje kože (klizači i krive). -TP_COLORAPP_SHARPCIE;--ne koristi se-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--ne koristi se-- TP_COLORAPP_SURROUND;Okruženo TP_COLORAPP_SURROUND_AVER;Prosečno TP_COLORAPP_SURROUND_DARK;Tamno @@ -1705,7 +1693,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1715,8 +1702,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1747,7 +1734,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1766,15 +1753,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1810,9 +1794,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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" 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 @@ -1999,7 +1980,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2049,10 +2030,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2090,7 +2068,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index fdad901a6..812e087fb 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -318,9 +318,7 @@ PREFERENCES_PROFILESAVECACHE;Uložiť parametre spracovania do cache PREFERENCES_PROFILESAVEINPUT;Uložiť parametre spracovania k vstupnému súboru PREFERENCES_PROPERTY;Vlastnosť PREFERENCES_PSPATH;Inštalačný adresár Adobe Photoshop -PREFERENCES_SELECTFONT;Vybrať písmo PREFERENCES_SELECTLANG;Vybrať si jazyk -PREFERENCES_SELECTTHEME;Vybrať vzhľad PREFERENCES_SET;Nastaviť PREFERENCES_SHOWBASICEXIF;Zobrazovať základné EXIF informácie PREFERENCES_SHOWDATETIME;Ukázovať dátum a čas @@ -1268,7 +1266,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BEHADDALL;All to 'Add' !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_BEHSETALL;All to 'Set' @@ -1283,8 +1280,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1300,7 +1297,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1312,7 +1308,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1357,7 +1352,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files @@ -1378,11 +1373,9 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs @@ -1393,7 +1386,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1509,11 +1501,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1543,8 +1531,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1562,8 +1548,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1585,9 +1569,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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" 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 @@ -1908,7 +1889,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1966,10 +1947,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RESIZE_FITBOX;Bounding Box !TP_RESIZE_FULLIMAGE;Full Image !TP_RESIZE_LANCZOS;Lanczos -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2007,7 +1985,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 2875e4a0b..2fdae6ab5 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Tallenna käsittelyparametrit välimuistiin PREFERENCES_PROFILESAVEINPUT;Tallenna käsittelyparametrit oheistiedostoon PREFERENCES_PSPATH;Adobe Photoshop:n asennushakemisto PREFERENCES_SELECTLANG;Valitse kieli -PREFERENCES_SELECTTHEME;Valitse teema PREFERENCES_SHOWBASICEXIF;Perus EXIF-tiedot PREFERENCES_SHOWDATETIME;Päivämäärä ja aika PREFERENCES_SHTHRESHOLD;Kynnysarvo tummille alueille @@ -1217,7 +1216,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1234,8 +1232,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1251,7 +1249,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1263,8 +1260,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1310,7 +1306,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1333,12 +1329,9 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1351,7 +1344,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1470,11 +1462,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1504,8 +1492,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1523,8 +1509,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1546,9 +1530,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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" 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 @@ -1896,7 +1877,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1957,10 +1938,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1998,7 +1976,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index ee2af3156..fd2690401 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -839,7 +839,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Format för nycklar PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Namn PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Exekverbar sökväg -PREFERENCES_CUTOVERLAYBRUSH;Bakgrundsfärg vid beskärning PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -858,7 +857,6 @@ PREFERENCES_DIRSOFTWARE;Installationskatalog PREFERENCES_EDITORLAYOUT;Layout för redigeringsvyn PREFERENCES_EXTERNALEDITOR;Externt bildredigeringsprogram PREFERENCES_FBROWSEROPTS;Inställningar för filvyn/miniatyrbilderna -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Filvyns verktygsrad som en rad (avmarkera för lågupplösta skärmar) PREFERENCES_FILEFORMAT;Filformat PREFERENCES_FLATFIELDFOUND;Hittade PREFERENCES_FLATFIELDSDIR;Plattfältskatalog @@ -908,7 +906,7 @@ PREFERENCES_MENUOPTIONS;Menyval för högerklick PREFERENCES_METADATA;Metadata PREFERENCES_MULTITAB;Öppna bilderna i olika flikar PREFERENCES_MULTITABDUALMON;Visa bild på andra skärmen, om möjligt, i flerfliksläge -PREFERENCES_NAVGUIDEBRUSH;Översiktsvyns guidefärg +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Översiktsvyns guidefärg PREFERENCES_NAVIGATIONFRAME;Navigering PREFERENCES_OUTDIR;Utmatningskatalog PREFERENCES_OUTDIRFOLDER;Spara till katalog @@ -940,11 +938,8 @@ PREFERENCES_PROPERTY;Egenskaper PREFERENCES_PSPATH;Adobe Photoshops installationskatalog PREFERENCES_REMEMBERZOOMPAN;Kom ihåg förstoringsprocent och panorering PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Kom ihåg förstoringsgraden i % och panoreringen för den aktuella bilden när du öppnar en ny bild.\n\nDet här valet fungerar bara i Enkelfliksläget och när "Demosaicing-metod som ska användas för förstoringsgrader <100 %" är satt til "Som i PP3". -PREFERENCES_SELECTFONT;Välj typsnitt -PREFERENCES_SELECTFONT_COLPICKER;Välj typsnitt för färgpipetten PREFERENCES_SELECTLANG;Välj språk -PREFERENCES_SELECTTHEME;Välj tema -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Seriell läsning av tiff-filer +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Seriell läsning av TIFF-filer PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;När man arbetar med bilder i en katalog full med okomprimerade till-filer, så kan prestanda för att generera miniatyrbilder ökas genom att aktivera detta val. PREFERENCES_SET;Ange PREFERENCES_SHOWBASICEXIF;Visa grundlig Exif-information @@ -1105,11 +1100,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Vänd horisontellt TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotera åt vänster.\nKortkommando: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotera åt höger.\nKortkommando: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vänd vertikalt -TP_COLORAPP_ADAPTSCENE;Luminans hos vyn -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolut luminans hos vyn (cd/m²).\n1) Beräknas från exif-informationen:\nSlutartid - ISO-tal - Bländartal - exponeringskompensation gjord av kameran.\n2) Beräknas från vitpunkten hos råbilden och RT:s reglage för exponeringskompensation -TP_COLORAPP_ADAPTVIEWING;Betrakningsluminans (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolut luminans hos betrakningsomgivningen\n(vanligtvis 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Om checkboxen är aktiverad (rekommenderas) beräknar RT ett optimalt värde från exif-informationen.\nFör att sätta ett värde manuellt, avaktivera funktionen först +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolut luminans hos betrakningsomgivningen\n(vanligtvis 16cd/m²) TP_COLORAPP_ALGO;Algoritm TP_COLORAPP_ALGO_ALL;Alla TP_COLORAPP_ALGO_JC;Ljushet + kroma (JC) @@ -1139,8 +1130,6 @@ TP_COLORAPP_CURVEEDITOR3;Färgkurva TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Justera antingen kroma, mättnad eller colorfulness.\n\nVisar histogrammet hos kromaciteten (Lab) före CIECAM02.\nOm checkboxen "Show CIECAM02 output histograms in curves" är aktiverad, visas histogrammet för C, s eller M efter CIECAM02.\n\nC, s och M visas ej i histogrammet i huvudpanelen.\n\nFör slutligt resultat, se huvudpanelens histogram TP_COLORAPP_DATACIE;Resultat av CIECAM02-histogram i kurvor TP_COLORAPP_DATACIE_TOOLTIP;När detta är aktiverat, visar CIECAM02-histogram ungefärliga värden/intervall för J eller Q, och C, s eller M efter justeringar i CIECAM02.\nDet här valet påverkar inte huvudhistogrammet.\n\nNär detta är avaktiverat, visar histogrammet för CIECAM02-kurvor Lab-värden innan justeringar av CIECAM02 -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Om den här checkboxen är aktiverad (rekommenderas), beräknar RT ett optimalt värde som sedan dels används av CAT02 och dels för hela CIECAM02.\nFör att ange ett värde manuellt, avaktivera checkboxen först (värden över 65 rekommenderas) -TP_COLORAPP_DEGREE_TOOLTIP;Mängd CIE kromatisk anpassning 2002 TP_COLORAPP_GAMUT;Kontroll av tonomfång (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Tillåt kontroll av tonomfång i Lab-läge TP_COLORAPP_HUE;Nyans(h) @@ -1155,8 +1144,6 @@ TP_COLORAPP_MODEL;Vitpunktsmodell TP_COLORAPP_MODEL_TOOLTIP;Vitpunktsmodell\n\nWB [RT] + [output]:\nRT:s vitbalans används för bilden, CIECAM02 sätts till D50, utmatningsenhetens vitbalans sätts i Inställningar > Färghantering\n\nWB [RT+CAT02] + [output]:\nRT:s vitbalansinställningar används av CAT02 och utmatningsenhetens vitbalans sätts i Inställningar TP_COLORAPP_RSTPRO;Bevara röda färger och hudtoner TP_COLORAPP_RSTPRO_TOOLTIP;Bevara röda färger och hudtoner (reglage och kurvor) -TP_COLORAPP_SHARPCIE;Skärpa, Kontrast genom detaljnivåer, Mikrokontrast och Fyll ut överstrålning med kvalitetskontroll -TP_COLORAPP_SHARPCIE_TOOLTIP;Skärpa, Kontrast genom detaljnivåer, Mikrokontrast och Fyll ut överstrålning kommer att använda CIECAM02 om den är aktiverad TP_COLORAPP_SURROUND;Omgivning TP_COLORAPP_SURROUND_AVER;Medel TP_COLORAPP_SURROUND_DARK;Mörk @@ -2047,15 +2034,14 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -2077,11 +2063,10 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PREFERENCES_PROFILESAVELOCATION;Processing profile saving location !PREFERENCES_PRTINTENT;Rendering intent !PREFERENCES_PRTPROFILE;Color profile -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -2108,9 +2093,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !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" 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_LABGRID;L*a*b* color correction grid @@ -2191,7 +2173,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2236,7 +2218,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!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. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. @@ -2244,7 +2225,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). !TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool. !TP_RETINEX_LABEL_MASK;Mask -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index d63d13825..723658e4a 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -271,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;Dil seç -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;Temel exif bilgisini göster PREFERENCES_SHOWDATETIME;Tarih ve saati göster PREFERENCES_SHTHRESHOLD;Kırpılmış karaltılar için eşik @@ -1216,7 +1215,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1233,8 +1231,8 @@ 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;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1250,7 +1248,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1262,8 +1259,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1309,7 +1305,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1332,12 +1328,9 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1350,7 +1343,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1469,11 +1461,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1503,8 +1491,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1522,8 +1508,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1545,9 +1529,6 @@ TP_WBALANCE_TEMPERATURE;Isı !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" 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 @@ -1895,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Isı !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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1956,10 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* !TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1997,7 +1975,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) diff --git a/rtdata/languages/default b/rtdata/languages/default index 5b11c5c1d..4360ce491 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1032,9 +1032,15 @@ PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_ADD;Add +PREFERENCES_APPEARANCE;Appearance +PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +PREFERENCES_APPEARANCE_MAINFONT;Main font +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +PREFERENCES_APPEARANCE_THEME;Theme PREFERENCES_APPLNEXTSTARTUP;restart required PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit PREFERENCES_BATCH_PROCESSING;Batch Processing PREFERENCES_BEHADDALL;All to 'Add' PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1055,8 +1061,8 @@ 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 when double clicking in the preview image +PREFERENCES_CROP;Crop Editing +PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop PREFERENCES_CROP_GUIDES_FRAME;Frame PREFERENCES_CROP_GUIDES_FULL;Original @@ -1072,7 +1078,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Executable path -PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency PREFERENCES_D50;Settings in main menu PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1091,10 +1096,10 @@ PREFERENCES_DIROTHER;Other PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... PREFERENCES_DIRSOFTWARE;Installation directory PREFERENCES_EDITORCMDLINE;Custom command line -PREFERENCES_EDITORLAYOUT;Editor Layout +PREFERENCES_EDITORLAYOUT;Editor layout PREFERENCES_EXTERNALEDITOR;External Editor PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser PREFERENCES_FILEFORMAT;File format PREFERENCES_FLATFIELDFOUND;Found PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1151,7 +1156,6 @@ PREFERENCES_MONPROFILE;Default color profile PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. PREFERENCES_MULTITAB;Multiple Editor Tabs Mode PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -PREFERENCES_NAVGUIDEBRUSH;Navigator guide color PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Output Directory PREFERENCES_OUTDIRFOLDER;Save to folder @@ -1190,14 +1194,11 @@ PREFERENCES_PRTPROFILE;Color profile PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -PREFERENCES_SELECTFONT;Select main font -PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font +PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now PREFERENCES_SELECTLANG;Select language -PREFERENCES_SELECTTHEME;Select theme -PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. PREFERENCES_SET;Set PREFERENCES_SHOWBASICEXIF;Show basic Exif info PREFERENCES_SHOWDATETIME;Show date and time @@ -1218,7 +1219,6 @@ PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_IMPROC;Image Processing PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Sounds -PREFERENCES_THEME;Theme PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1303,7 +1303,7 @@ THRESHOLDSELECTOR_T;Top THRESHOLDSELECTOR_TL;Top-left THRESHOLDSELECTOR_TR;Top-right TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. -TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift+mouse drag. +TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w @@ -1381,11 +1381,8 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally. TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1396,6 +1393,7 @@ TP_COLORAPP_BADPIXSL;Hot/bad pixel filter TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. TP_COLORAPP_BRIGHT;Brightness (Q) TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. TP_COLORAPP_CHROMA;Chroma (C) TP_COLORAPP_CHROMA_M;Colorfulness (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1415,8 +1413,6 @@ TP_COLORAPP_CURVEEDITOR3;Color curve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1434,8 +1430,6 @@ TP_COLORAPP_NEUTRAL;Reset TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values TP_COLORAPP_RSTPRO;Red & skin-tones protection TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -TP_COLORAPP_SHARPCIE;--unused-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- TP_COLORAPP_SURROUND;Surround TP_COLORAPP_SURROUND_AVER;Average TP_COLORAPP_SURROUND_DARK;Dark @@ -1455,11 +1449,9 @@ 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_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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). 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" 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 @@ -1820,7 +1812,7 @@ 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. TP_RAWCACORR_AUTO;Auto-correction TP_RAWCACORR_AUTOIT;Iterations -TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, means it often does not correct all Chromatic Aberration.\nTo correct the remaining Chromatic Aberration, you can use up to 5 iterations of automatic Chromatic Aberration correction.\nEach iteration will reduce the remaining Chromatic Aberration from the last iteration at the cost of additional processing time. +TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift TP_RAWCACORR_CABLUE;Blue TP_RAWCACORR_CARED;Red @@ -1854,7 +1846,7 @@ 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/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;False color suppression steps @@ -1922,10 +1914,10 @@ TP_RESIZE_SCALE;Scale TP_RESIZE_SPECIFY;Specify: TP_RESIZE_W;Width: TP_RESIZE_WIDTH;Width -TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -TP_RETINEX_CONTEDIT_LH;Hue equalizer -TP_RETINEX_CONTEDIT_MAP;Mask equalizer +TP_RETINEX_CONTEDIT_MAP;Equalizer +TP_RETINEX_CONTEDIT_HSL;HSL histogram +TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +TP_RETINEX_CONTEDIT_LH;Hue TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1963,7 +1955,7 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Mask TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Low -TP_RETINEX_MAP;Mask method +TP_RETINEX_MAP;Method TP_RETINEX_MAP_GAUS;Gaussian mask TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2273,7 +2265,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Method -TP_WBALANCE_PICKER;WB-Picker +TP_WBALANCE_PICKER;Pick TP_WBALANCE_SHADE;Shade TP_WBALANCE_SIZE;Size: TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 094c6fc5d..07af3d0a4 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -230,8 +230,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" } degree->throwOnButtonRelease(); - degree->addAutoButton (M ("TP_COLORAPP_DEGREE_AUTO_TOOLTIP")); - degree->set_tooltip_markup (M ("TP_COLORAPP_DEGREE_TOOLTIP")); + degree->addAutoButton (M ("TP_COLORAPP_CAT02ADAPTATION_TOOLTIP")); p1VBox->pack_start (*degree); // surrsource = Gtk::manage (new Gtk::CheckButton (M ("TP_COLORAPP_SURSOURCE"))); @@ -284,27 +283,25 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" p1VBox->pack_start (*greensc); -// adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTSCENE"), 0.01, 16384., 0.001, 2000.)); // EV -7 ==> EV 17 - adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTSCENE"), MINLA0, MAXLA0, 0.01, 1997.4, NULL, NULL, &wbSlider2la, &wbla2Slider)); +// adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), 0.01, 16384., 0.001, 2000.)); // EV -7 ==> EV 17 + adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), MINLA0, MAXLA0, 0.01, 1997.4, NULL, NULL, &wbSlider2la, &wbla2Slider)); if (adapscen->delay < options.adjusterMaxDelay) { adapscen->delay = options.adjusterMaxDelay; } adapscen->throwOnButtonRelease(); - adapscen->addAutoButton (M ("TP_COLORAPP_ADAP_AUTO_TOOLTIP")); - adapscen->set_tooltip_markup (M ("TP_COLORAPP_ADAPTSCENE_TOOLTIP")); + adapscen->addAutoButton(); p1VBox->pack_start (*adapscen); - ybscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_YBSCENE"), 1, 90, 1, 18)); + ybscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_MEANLUMINANCE"), 1, 90, 1, 18)); if (ybscen->delay < options.adjusterMaxDelay) { ybscen->delay = options.adjusterMaxDelay; } ybscen->throwOnButtonRelease(); - ybscen->addAutoButton (M ("TP_COLORAPP_ADAP_AUTO_TOOLTIP")); - ybscen->set_tooltip_markup (M ("TP_COLORAPP_YBSCENE_TOOLTIP")); + ybscen->addAutoButton(); p1VBox->pack_start (*ybscen); p1Frame->add (*p1VBox); @@ -579,15 +576,15 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" Gtk::Image* itempR1 = Gtk::manage (new RTImage ("circle-yellow-small.png")); Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("circle-magenta-small.png")); Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("circle-green-small.png")); -// adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTVIEWING"), 0.1, 16384., 0.1, 16.)); - adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTVIEWING"), MINLA0, MAXLA0, 0.01, 16, NULL, NULL, &wbSlider2la, &wbla2Slider)); +// adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), 0.1, 16384., 0.1, 16.)); + adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), MINLA0, MAXLA0, 0.01, 16, NULL, NULL, &wbSlider2la, &wbla2Slider)); if (adaplum->delay < options.adjusterMaxDelay) { adaplum->delay = options.adjusterMaxDelay; } adaplum->throwOnButtonRelease(); - adaplum->set_tooltip_markup (M ("TP_COLORAPP_ADAPTVIEWING_TOOLTIP")); + adaplum->set_tooltip_markup (M ("TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP")); p3VBox->pack_start (*adaplum); // Gtk::Image* iblueredL = Gtk::manage (new RTImage ("circle-blue-small.png")); @@ -600,8 +597,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" } degreeout->throwOnButtonRelease(); - degreeout->addAutoButton (M ("TP_COLORAPP_DEGREE_AUTO_TOOLTIP")); - degreeout->set_tooltip_markup (M ("TP_COLORAPP_DEGREE_TOOLTIP")); + degreeout->addAutoButton (M ("TP_COLORAPP_CAT02ADAPTATION_TOOLTIP")); p3VBox->pack_start (*degreeout); /* Gtk::Image* itempL1 = Gtk::manage (new RTImage ("circle-blue-small.png")); @@ -611,7 +607,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" */ tempout = Gtk::manage (new Adjuster (M ("TP_WBALANCE_TEMPERATURE"), MINTEMP0, MAXTEMP0, 5, CENTERTEMP0, itempR1, itempL1, &wbSlider2Temp, &wbTemp2Slider)); greenout = Gtk::manage (new Adjuster (M ("TP_WBALANCE_GREEN"), MINGREEN0, MAXGREEN0, 0.001, 1.0, igreenR1, igreenL1)); - ybout = Gtk::manage (new Adjuster (M ("TP_COLORAPP_YB"), 5, 90, 1, 18)); + ybout = Gtk::manage (new Adjuster (M ("TP_COLORAPP_MEANLUMINANCE"), 5, 90, 1, 18)); tempout->set_tooltip_markup (M ("TP_COLORAPP_TEMP_TOOLTIP")); tempout->show(); diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 96f49d73a..b287c6f7b 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -996,14 +996,14 @@ Gtk::Widget* Preferences::getGeneralPanel () // --------------------------------------------- - Gtk::Frame* ftheme = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_THEME")) ); + Gtk::Frame* ftheme = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_APPEARANCE")) ); setExpandAlignProperties (ftheme, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); Gtk::Grid* themeGrid = Gtk::manage ( new Gtk::Grid() ); themeGrid->set_column_spacing (4); themeGrid->set_row_spacing (4); setExpandAlignProperties (themeGrid, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL); - Gtk::Label* themelab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_SELECTTHEME") + ":") ); + Gtk::Label* themelab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_THEME") + ":") ); setExpandAlignProperties (themelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); theme = Gtk::manage ( new Gtk::ComboBoxText () ); setExpandAlignProperties (theme, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); @@ -1018,7 +1018,7 @@ Gtk::Widget* Preferences::getGeneralPanel () themeGrid->attach_next_to (*themelab, Gtk::POS_LEFT, 1, 1); themeGrid->attach_next_to (*theme, *themelab, Gtk::POS_RIGHT, 1, 1); - Gtk::Label* fontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_SELECTFONT")) ); + Gtk::Label* fontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_MAINFONT")) ); setExpandAlignProperties (fontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); fontButton = Gtk::manage ( new Gtk::FontButton ()); setExpandAlignProperties (fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); @@ -1033,7 +1033,7 @@ Gtk::Widget* Preferences::getGeneralPanel () themeGrid->attach_next_to (*fontlab, *theme, Gtk::POS_RIGHT, 1, 1); themeGrid->attach_next_to (*fontButton, *fontlab, Gtk::POS_RIGHT, 1, 1); - Gtk::Label* cpfontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_SELECTFONT_COLPICKER") + ":") ); + Gtk::Label* cpfontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_COLORPICKERFONT") + ":") ); setExpandAlignProperties (cpfontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); colorPickerFontButton = Gtk::manage ( new Gtk::FontButton ()); setExpandAlignProperties (fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); @@ -1048,7 +1048,7 @@ Gtk::Widget* Preferences::getGeneralPanel () themeGrid->attach_next_to (*cpfontlab, *fontButton, Gtk::POS_RIGHT, 1, 1); themeGrid->attach_next_to (*colorPickerFontButton, *cpfontlab, Gtk::POS_RIGHT, 1, 1); - Gtk::Label* cutOverlayLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_CUTOVERLAYBRUSH") + ":") ); + Gtk::Label* cutOverlayLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_CROPMASKCOLOR") + ":") ); setExpandAlignProperties (cutOverlayLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); butCropCol = Gtk::manage ( new Gtk::ColorButton() ); setExpandAlignProperties (butCropCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); @@ -1056,7 +1056,7 @@ Gtk::Widget* Preferences::getGeneralPanel () themeGrid->attach_next_to (*cutOverlayLabel, *themelab, Gtk::POS_BOTTOM, 1, 1); themeGrid->attach_next_to (*butCropCol, *cutOverlayLabel, Gtk::POS_RIGHT, 1, 1); - Gtk::Label* navGuideLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_NAVGUIDEBRUSH") + ":") ); + Gtk::Label* navGuideLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_NAVGUIDECOLOR") + ":") ); setExpandAlignProperties (navGuideLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); butNavGuideCol = Gtk::manage ( new Gtk::ColorButton() ); setExpandAlignProperties (butNavGuideCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); From 8b4027d75d6a812e5b301f73eabb3668d706ffb4 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 21 Nov 2018 01:50:44 +0100 Subject: [PATCH 192/348] Crop Editing layout fixed Preferences > Image Processing > Crop Edit was vertically centered with large empty gaps above and below the frame. Now it starts as soon as the frame above ends. --- rtgui/preferences.cc | 44 +++++++++++++++++++++----------------------- rtgui/preferences.h | 4 ++-- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index b287c6f7b..bdec7ea68 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -599,27 +599,25 @@ Gtk::Widget* Preferences::getImageProcessingPanel () vbImageProcessing->pack_start (*cdf, 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); - Gtk::Label *cropAutoFitLabel = Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_AUTO_FIT"))); - cropAutoFitLabel->set_line_wrap(true); - setExpandAlignProperties(cropAutoFitLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); - cropAutoFit = Gtk::manage(new Gtk::CheckButton()); - setExpandAlignProperties(cropAutoFit, false, true, Gtk::ALIGN_START, Gtk::ALIGN_START); - cropAutoFit->add(*cropAutoFitLabel); - cropvb->pack_start(*cropAutoFit); - cropframe->add(*cropvb); - vbImageProcessing->pack_start(*cropframe, Gtk::PACK_SHRINK, 4); + Gtk::Frame *cropFrame = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CROP"))); + Gtk::Grid *cropGrid = Gtk::manage(new Gtk::Grid()); + Gtk::Label *cropGuidesLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_GUIDES") + ": ")); + cropGuidesCombo = Gtk::manage(new Gtk::ComboBoxText()); + cropGuidesCombo->append(M("PREFERENCES_CROP_GUIDES_NONE")); + cropGuidesCombo->append(M("PREFERENCES_CROP_GUIDES_FRAME")); + cropGuidesCombo->append(M("PREFERENCES_CROP_GUIDES_FULL")); + cropAutoFitCB = Gtk::manage(new Gtk::CheckButton()); + Gtk::Label *cropAutoFitLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_AUTO_FIT"))); + cropAutoFitLbl->set_line_wrap(true); + cropAutoFitCB->add(*cropAutoFitLbl); + cropGrid->attach(*cropGuidesLbl, 0, 0, 1, 1); + cropGrid->attach(*cropGuidesCombo, 1, 0, 1, 1); + cropGrid->attach(*cropAutoFitCB, 0, 1, 2, 1); + cropFrame->add(*cropGrid); + vbImageProcessing->pack_start(*cropFrame, Gtk::PACK_SHRINK, 4); swImageProcessing->add(*vbImageProcessing); + return swImageProcessing; } @@ -1798,8 +1796,8 @@ void Preferences::storePreferences () moptions.sndLngEditProcDoneSecs = spbSndLngEditProcDoneSecs->get_value (); #endif - moptions.cropGuides = Options::CropGuidesMode(cropGuides->get_active_row_number()); - moptions.cropAutoFit = cropAutoFit->get_active(); + moptions.cropGuides = Options::CropGuidesMode(cropGuidesCombo->get_active_row_number()); + moptions.cropAutoFit = cropAutoFitCB->get_active(); } void Preferences::fillPreferences () @@ -2015,8 +2013,8 @@ void Preferences::fillPreferences () } } - cropGuides->set_active(moptions.cropGuides); - cropAutoFit->set_active(moptions.cropAutoFit); + cropGuidesCombo->set_active(moptions.cropGuides); + cropAutoFitCB->set_active(moptions.cropAutoFit); addc.block (false); setc.block (false); diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 6019604e5..0f4291a1c 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -200,8 +200,8 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener DynamicProfilePanel *dynProfilePanel; - Gtk::ComboBoxText *cropGuides; - Gtk::CheckButton *cropAutoFit; + Gtk::ComboBoxText *cropGuidesCombo; + Gtk::CheckButton *cropAutoFitCB; Glib::ustring storedValueRaw; Glib::ustring storedValueImg; From ead059ee8c1683f62e8647f2b2dac96139ee269a Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 21 Nov 2018 02:48:46 +0100 Subject: [PATCH 193/348] Better layout of Preferences > Appearance The Appearance frame no longer causes the minimum Preferences window width to be large. --- rtdata/themes/RawTherapee-GTK3-20_.css | 6 +- rtgui/preferences.cc | 148 ++++++++++++------------- rtgui/preferences.h | 10 +- 3 files changed, 82 insertions(+), 82 deletions(-) diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css index 84ea1c3a3..20478367f 100644 --- a/rtdata/themes/RawTherapee-GTK3-20_.css +++ b/rtdata/themes/RawTherapee-GTK3-20_.css @@ -1037,4 +1037,8 @@ progressbar.vertical trough, progressbar.vertical progress { min-width: 10px; } -/* */ +/* Add padding to grid cells */ + +.grid-spacing > * { + margin: 2px; +} diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index bdec7ea68..eefffbb3a 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -992,78 +992,74 @@ Gtk::Widget* Preferences::getGeneralPanel () flang->add (*langGrid); vbGeneral->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1); - // --------------------------------------------- + // Appearance --------------------------------------------- - Gtk::Frame* ftheme = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_APPEARANCE")) ); - setExpandAlignProperties (ftheme, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); - Gtk::Grid* themeGrid = Gtk::manage ( new Gtk::Grid() ); - themeGrid->set_column_spacing (4); - themeGrid->set_row_spacing (4); - setExpandAlignProperties (themeGrid, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL); + Gtk::Frame* appearanceFrame = Gtk::manage(new Gtk::Frame(M("PREFERENCES_APPEARANCE"))); - Gtk::Label* themelab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_THEME") + ":") ); - setExpandAlignProperties (themelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - theme = Gtk::manage ( new Gtk::ComboBoxText () ); - setExpandAlignProperties (theme, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + Gtk::Grid* appearanceGrid = Gtk::manage(new Gtk::Grid()); + appearanceGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(appearanceGrid, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - theme->set_active (0); - parseThemeDir (Glib::build_filename (argv0, "themes")); + Gtk::Label* themeLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_THEME") + ":")); + setExpandAlignProperties(themeLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + themeCBT = Gtk::manage(new Gtk::ComboBoxText()); + themeCBT->set_active(0); + parseThemeDir(Glib::build_filename(argv0, "themes")); for (size_t i = 0; i < themeFNames.size(); i++) { - theme->append (themeFNames.at (i).shortFName); + themeCBT->append(themeFNames.at(i).shortFName); } - themeGrid->attach_next_to (*themelab, Gtk::POS_LEFT, 1, 1); - themeGrid->attach_next_to (*theme, *themelab, Gtk::POS_RIGHT, 1, 1); - - Gtk::Label* fontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_MAINFONT")) ); - setExpandAlignProperties (fontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - fontButton = Gtk::manage ( new Gtk::FontButton ()); - setExpandAlignProperties (fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - fontButton->set_use_size (true); + Gtk::Label* mainFontLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_MAINFONT"))); + setExpandAlignProperties(mainFontLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + mainFontFB = Gtk::manage(new Gtk::FontButton()); + mainFontFB->set_use_size(true); if (options.fontFamily == "default") { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + mainFontFB->set_font_name(Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); } else { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.fontFamily, options.fontSize)); + mainFontFB->set_font_name(Glib::ustring::compose("%1 %2", options.fontFamily, options.fontSize)); } - themeGrid->attach_next_to (*fontlab, *theme, Gtk::POS_RIGHT, 1, 1); - themeGrid->attach_next_to (*fontButton, *fontlab, Gtk::POS_RIGHT, 1, 1); - - Gtk::Label* cpfontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_COLORPICKERFONT") + ":") ); - setExpandAlignProperties (cpfontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - colorPickerFontButton = Gtk::manage ( new Gtk::FontButton ()); - setExpandAlignProperties (fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - colorPickerFontButton->set_use_size (true); + Gtk::Label* colorPickerFontLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_COLORPICKERFONT") + ":")); + setExpandAlignProperties(colorPickerFontLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + colorPickerFontFB = Gtk::manage(new Gtk::FontButton()); + colorPickerFontFB->set_use_size(true); if (options.fontFamily == "default") { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + colorPickerFontFB->set_font_name(Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); } else { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.CPFontFamily, options.CPFontSize)); + colorPickerFontFB->set_font_name(Glib::ustring::compose("%1 %2", options.CPFontFamily, options.CPFontSize)); } - themeGrid->attach_next_to (*cpfontlab, *fontButton, Gtk::POS_RIGHT, 1, 1); - themeGrid->attach_next_to (*colorPickerFontButton, *cpfontlab, Gtk::POS_RIGHT, 1, 1); + Gtk::Label* cropMaskColorLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_CROPMASKCOLOR") + ":")); + setExpandAlignProperties(cropMaskColorLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - Gtk::Label* cutOverlayLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_CROPMASKCOLOR") + ":") ); - setExpandAlignProperties (cutOverlayLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - butCropCol = Gtk::manage ( new Gtk::ColorButton() ); - setExpandAlignProperties (butCropCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - butCropCol->set_use_alpha (true); - themeGrid->attach_next_to (*cutOverlayLabel, *themelab, Gtk::POS_BOTTOM, 1, 1); - themeGrid->attach_next_to (*butCropCol, *cutOverlayLabel, Gtk::POS_RIGHT, 1, 1); + cropMaskColorCB = Gtk::manage(new Gtk::ColorButton()); + cropMaskColorCB->set_use_alpha(true); - Gtk::Label* navGuideLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_APPEARANCE_NAVGUIDECOLOR") + ":") ); - setExpandAlignProperties (navGuideLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - butNavGuideCol = Gtk::manage ( new Gtk::ColorButton() ); - setExpandAlignProperties (butNavGuideCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - butNavGuideCol->set_use_alpha (true); - themeGrid->attach_next_to (*navGuideLabel, *butCropCol, Gtk::POS_RIGHT, 2, 1); - themeGrid->attach_next_to (*butNavGuideCol, *navGuideLabel, Gtk::POS_RIGHT, 1, 1); + Gtk::Label* navGuideColorLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_NAVGUIDECOLOR") + ":")); + setExpandAlignProperties(navGuideColorLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ftheme->add (*themeGrid); - vbGeneral->attach_next_to (*ftheme, *flang, Gtk::POS_BOTTOM, 2, 1); + navGuideColorCB = Gtk::manage(new Gtk::ColorButton()); + navGuideColorCB->set_use_alpha(true); + + Gtk::VSeparator *vSep = Gtk::manage(new Gtk::VSeparator()); + + appearanceGrid->attach(*themeLbl, 0, 0, 1, 1); + appearanceGrid->attach(*themeCBT, 1, 0, 1, 1); + appearanceGrid->attach(*vSep, 2, 0, 1, 3); + appearanceGrid->attach(*mainFontLbl, 0, 1, 1, 1); + appearanceGrid->attach(*mainFontFB, 1, 1, 1, 1); + appearanceGrid->attach(*colorPickerFontLbl, 3, 1, 1, 1); + appearanceGrid->attach(*colorPickerFontFB, 4, 1, 1, 1); + appearanceGrid->attach(*cropMaskColorLbl, 0, 2, 1, 1); + appearanceGrid->attach(*cropMaskColorCB, 1, 2, 1, 1); + appearanceGrid->attach(*navGuideColorLbl, 3, 2, 1, 1); + appearanceGrid->attach(*navGuideColorCB, 4, 2, 1, 1); + + appearanceFrame->add(*appearanceGrid); + vbGeneral->attach_next_to(*appearanceFrame, *flang, Gtk::POS_BOTTOM, 2, 1); // --------------------------------------------- @@ -1096,7 +1092,7 @@ Gtk::Widget* Preferences::getGeneralPanel () clipGrid->attach_next_to (*shThresh, *shl, Gtk::POS_RIGHT, 1, 1); fclip->add (*clipGrid); - vbGeneral->attach_next_to (*fclip, *ftheme, Gtk::POS_BOTTOM, 1, 1); + vbGeneral->attach_next_to (*fclip, *appearanceFrame, Gtk::POS_BOTTOM, 1, 1); // --------------------------------------------- @@ -1190,9 +1186,9 @@ Gtk::Widget* Preferences::getGeneralPanel () vbGeneral->attach_next_to (*fdg, *fclip, Gtk::POS_BOTTOM, 2, 1); langAutoDetectConn = ckbLangAutoDetect->signal_toggled().connect (sigc::mem_fun (*this, &Preferences::langAutoDetectToggled)); - tconn = theme->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::themeChanged) ); - fconn = fontButton->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::fontChanged) ); - cpfconn = colorPickerFontButton->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::cpFontChanged) ); + tconn = themeCBT->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::themeChanged) ); + fconn = mainFontFB->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::fontChanged) ); + cpfconn = colorPickerFontFB->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::cpFontChanged) ); swGeneral->add(*vbGeneral); return swGeneral; @@ -1610,28 +1606,28 @@ void Preferences::storePreferences () moptions.shadowThreshold = (int)shThresh->get_value (); moptions.language = languages->get_active_text (); moptions.languageAutoDetect = ckbLangAutoDetect->get_active (); - moptions.theme = themeFNames.at (theme->get_active_row_number ()).longFName; + moptions.theme = themeFNames.at (themeCBT->get_active_row_number ()).longFName; - Gdk::RGBA cropCol = butCropCol->get_rgba(); + Gdk::RGBA cropCol = cropMaskColorCB->get_rgba(); moptions.cutOverlayBrush[0] = cropCol.get_red(); moptions.cutOverlayBrush[1] = cropCol.get_green(); moptions.cutOverlayBrush[2] = cropCol.get_blue(); - moptions.cutOverlayBrush[3] = butCropCol->get_alpha() / 65535.0; + moptions.cutOverlayBrush[3] = cropMaskColorCB->get_alpha() / 65535.0; - Gdk::RGBA NavGuideCol = butNavGuideCol->get_rgba(); + Gdk::RGBA NavGuideCol = navGuideColorCB->get_rgba(); moptions.navGuideBrush[0] = NavGuideCol.get_red(); moptions.navGuideBrush[1] = NavGuideCol.get_green(); moptions.navGuideBrush[2] = NavGuideCol.get_blue(); - moptions.navGuideBrush[3] = butNavGuideCol->get_alpha() / 65535.0; + moptions.navGuideBrush[3] = navGuideColorCB->get_alpha() / 65535.0; - Pango::FontDescription fd (fontButton->get_font_name()); + Pango::FontDescription fd (mainFontFB->get_font_name()); if (newFont) { moptions.fontFamily = fd.get_family(); moptions.fontSize = fd.get_size() / Pango::SCALE; } - Pango::FontDescription cpfd (colorPickerFontButton->get_font_name()); + Pango::FontDescription cpfd (colorPickerFontFB->get_font_name()); if (newCPFont) { moptions.CPFontFamily = cpfd.get_family(); @@ -1872,28 +1868,28 @@ void Preferences::fillPreferences () languages->set_active_text (moptions.language); ckbLangAutoDetect->set_active (moptions.languageAutoDetect); int themeNbr = getThemeRowNumber (moptions.theme); - theme->set_active (themeNbr == -1 ? 0 : themeNbr); + themeCBT->set_active (themeNbr == -1 ? 0 : themeNbr); Gdk::RGBA cropCol; cropCol.set_rgba (moptions.cutOverlayBrush[0], moptions.cutOverlayBrush[1], moptions.cutOverlayBrush[2]); - butCropCol->set_rgba (cropCol); - butCropCol->set_alpha ( (unsigned short) (moptions.cutOverlayBrush[3] * 65535.0)); + cropMaskColorCB->set_rgba (cropCol); + cropMaskColorCB->set_alpha ( (unsigned short) (moptions.cutOverlayBrush[3] * 65535.0)); Gdk::RGBA NavGuideCol; NavGuideCol.set_rgba (moptions.navGuideBrush[0], moptions.navGuideBrush[1], moptions.navGuideBrush[2]); - butNavGuideCol->set_rgba (NavGuideCol); - butNavGuideCol->set_alpha ( (unsigned short) (moptions.navGuideBrush[3] * 65535.0)); + navGuideColorCB->set_rgba (NavGuideCol); + navGuideColorCB->set_alpha ( (unsigned short) (moptions.navGuideBrush[3] * 65535.0)); if (options.fontFamily == "default") { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + mainFontFB->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); } else { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.fontFamily, options.fontSize)); + mainFontFB->set_font_name (Glib::ustring::compose ("%1 %2", options.fontFamily, options.fontSize)); } if (options.CPFontFamily == "default") { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + colorPickerFontFB->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); } else { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.CPFontFamily, options.CPFontSize)); + colorPickerFontFB->set_font_name (Glib::ustring::compose ("%1 %2", options.CPFontFamily, options.CPFontSize)); } showDateTime->set_active (moptions.fbShowDateTime); @@ -2099,14 +2095,14 @@ void Preferences::okPressed () void Preferences::cancelPressed () { // set the initial theme back - if (themeFNames.at (theme->get_active_row_number ()).longFName != options.theme) { + if (themeFNames.at (themeCBT->get_active_row_number ()).longFName != options.theme) { rtengine::setPaths(); RTImage::updateImages(); switchThemeTo (options.theme); } // set the initial font back - Pango::FontDescription fd (fontButton->get_font_name()); + Pango::FontDescription fd (mainFontFB->get_font_name()); if (fd.get_family() != options.fontFamily && (fd.get_size() / Pango::SCALE) != options.fontSize) { if (options.fontFamily == "default") { @@ -2157,7 +2153,7 @@ void Preferences::aboutPressed () void Preferences::themeChanged () { - moptions.theme = themeFNames.at (theme->get_active_row_number ()).longFName; + moptions.theme = themeFNames.at (themeCBT->get_active_row_number ()).longFName; rtengine::setPaths(); RTImage::updateImages(); switchThemeTo (moptions.theme); @@ -2313,7 +2309,7 @@ void Preferences::fontChanged () { newFont = true; - Pango::FontDescription fd (fontButton->get_font_name()); + Pango::FontDescription fd (mainFontFB->get_font_name()); switchFontTo (fd.get_family(), fd.get_size() / Pango::SCALE); } diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 0f4291a1c..a77e3ea82 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -140,11 +140,11 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Gtk::CheckButton* ctiffserialize; Gtk::ComboBoxText* curveBBoxPosC; - Gtk::ComboBoxText* theme; - Gtk::FontButton* fontButton; - Gtk::FontButton* colorPickerFontButton; - Gtk::ColorButton* butCropCol; - Gtk::ColorButton* butNavGuideCol; + Gtk::ComboBoxText* themeCBT; + Gtk::FontButton* mainFontFB; + Gtk::FontButton* colorPickerFontFB; + Gtk::ColorButton* cropMaskColorCB; + Gtk::ColorButton* navGuideColorCB; Gtk::SpinButton* maxRecentFolders; Gtk::SpinButton* maxThumbHeightSB; From 179a1db5e3642653b53eadd621db4cc90e858dcd Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 21 Nov 2018 12:51:23 +0100 Subject: [PATCH 194/348] generateTranslationDiffs --- rtdata/languages/Catala | 39 ++++++++++--- rtdata/languages/Chinese (Simplified) | 52 ++++++++++++----- rtdata/languages/Chinese (Traditional) | 55 +++++++++++++----- rtdata/languages/Czech | 29 +++++++++- rtdata/languages/Dansk | 55 +++++++++++++----- rtdata/languages/Deutsch | 25 +++++++- rtdata/languages/English (UK) | 57 +++++++++++++------ rtdata/languages/English (US) | 57 +++++++++++++------ rtdata/languages/Espanol | 39 ++++++++++--- rtdata/languages/Euskara | 55 +++++++++++++----- rtdata/languages/Francais | 31 +++++++++- rtdata/languages/Greek | 55 +++++++++++++----- rtdata/languages/Hebrew | 55 +++++++++++++----- rtdata/languages/Italiano | 39 ++++++++++--- rtdata/languages/Japanese | 27 ++++++++- rtdata/languages/Latvian | 55 +++++++++++++----- rtdata/languages/Magyar | 45 +++++++++++---- rtdata/languages/Nederlands | 32 +++++++++-- rtdata/languages/Norsk BM | 55 +++++++++++++----- rtdata/languages/Polish | 39 ++++++++++--- rtdata/languages/Polish (Latin Characters) | 39 ++++++++++--- rtdata/languages/Portugues (Brasil) | 27 ++++++++- rtdata/languages/Russian | 38 +++++++++++-- rtdata/languages/Serbian (Cyrilic Characters) | 39 ++++++++++--- rtdata/languages/Serbian (Latin Characters) | 39 ++++++++++--- rtdata/languages/Slovak | 55 +++++++++++++----- rtdata/languages/Suomi | 55 +++++++++++++----- rtdata/languages/Swedish | 32 +++++++++-- rtdata/languages/Turkish | 55 +++++++++++++----- rtdata/languages/default | 6 +- 30 files changed, 996 insertions(+), 285 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 3a4b18fc3..c9b6b4408 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1424,7 +1424,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 @@ -1438,8 +1437,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1479,6 +1478,13 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BEHADDALL;All to 'Add' !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_BEHSETALL;All to 'Set' @@ -1514,6 +1520,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_D65;6500K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 @@ -1543,7 +1550,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1565,6 +1571,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1598,7 +1605,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1661,7 +1668,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1672,6 +1679,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1702,6 +1710,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1727,6 +1736,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1904,6 +1914,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_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1937,6 +1956,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -2013,7 +2033,10 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2051,6 +2074,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2266,6 +2290,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_WAVELET_TON;Toning !TP_WBALANCE_EQBLUERED;Blue/Red equalizer !TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable. +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_WATER1;UnderWater 1 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 8442cdcd5..850d028b2 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -485,6 +485,7 @@ PARTIALPASTE_VIGNETTING;暗角修正 PARTIALPASTE_WAVELETGROUP;小波变换等级 PARTIALPASTE_WHITEBALANCE;白平衡 PREFERENCES_ADD;添加 +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;导航器引导颜色 PREFERENCES_APPLNEXTSTARTUP;下次启动生效 PREFERENCES_AUTOMONPROFILE;使用操作系统主显示器的色彩档案 PREFERENCES_BATCH_PROCESSING;批处理 @@ -589,7 +590,6 @@ PREFERENCES_MONPROFILE;默认色彩配置文件 PREFERENCES_MONPROFILE_WARNOSX;受MacOS限制, 仅支持sRGB PREFERENCES_MULTITAB;多编辑器标签模式 PREFERENCES_MULTITABDUALMON;多编辑器标签独立模式 -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;导航器引导颜色 PREFERENCES_NAVIGATIONFRAME;导航器 PREFERENCES_OUTDIR;输出路径 PREFERENCES_OUTDIRFOLDER;保存至文件夹 @@ -1498,7 +1498,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 @@ -1510,16 +1509,16 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1533,6 +1532,12 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !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_CACHECLEAR;Clear @@ -1549,6 +1554,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now @@ -1591,7 +1597,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly. !TP_BWMIX_CC_ENABLED;Adjust complementary color @@ -1623,7 +1629,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1634,6 +1640,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1661,6 +1668,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 !TP_COLORAPP_LABEL_SCENE;Scene Conditions !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1680,6 +1688,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1876,6 +1885,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_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1906,6 +1924,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACKS;Black Levels @@ -1992,7 +2011,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RESIZE_APPLIESTO;Applies to: -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2030,6 +2052,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2281,6 +2304,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_WBALANCE_LAMP_HEADER;Lamp !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) !TP_WBALANCE_TEMPBIAS;AWB temperature bias diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index bc63c9f8b..84f99ba81 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1092,7 +1092,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1125,17 +1124,17 @@ TP_WBALANCE_TEMPERATURE;色溫 !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1216,7 +1215,14 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1262,6 +1268,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1307,7 +1314,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1333,6 +1339,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1400,7 +1407,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1464,7 +1471,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1475,6 +1482,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1505,6 +1513,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1530,6 +1539,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1804,7 +1814,16 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1847,6 +1866,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1939,7 +1959,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RESIZE_FITBOX;Bounding Box !TP_RESIZE_FULLIMAGE;Full Image !TP_RESIZE_LANCZOS;Lanczos -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1977,6 +2000,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2252,6 +2276,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index c7b64c745..16c68ec5d 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -976,6 +976,7 @@ PARTIALPASTE_VIBRANCE;Živost PARTIALPASTE_VIGNETTING;Korekce vinětace PARTIALPASTE_WHITEBALANCE;Nastavení bílé PREFERENCES_ADD;Přidat +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Barva vodítek navigátoru PREFERENCES_APPLNEXTSTARTUP;vyžaduje restart aplikace PREFERENCES_AUTOMONPROFILE;Použít barevný profil hlavního monitoru z operačního systému PREFERENCES_BATCH_PROCESSING;Dávkové zpracování @@ -1087,7 +1088,6 @@ PREFERENCES_MONPROFILE;Výchozí barevný profil PREFERENCES_MONPROFILE_WARNOSX;Na MacOS je podporováno pouze sRGB. PREFERENCES_MULTITAB;Mód více karet editoru PREFERENCES_MULTITABDUALMON;Mód více karet editoru ve vlastním okně -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Barva vodítek navigátoru PREFERENCES_NAVIGATIONFRAME;Navigátor PREFERENCES_OUTDIR;Výstupní složka PREFERENCES_OUTDIRFOLDER;Ulož do souboru @@ -1305,7 +1305,6 @@ 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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16cd/m²). TP_COLORAPP_ALGO;Algoritmus TP_COLORAPP_ALGO_ALL;Vše TP_COLORAPP_ALGO_JC;Světlost + Barevnost (JC) @@ -1371,6 +1370,7 @@ 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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [výstup] TP_COLORAPP_WBRT;WB [RT] + [výstup] TP_COLORTONING_AB;o C/L @@ -2253,18 +2253,25 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance @@ -2273,6 +2280,9 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !SAVEDLG_FILEFORMAT_FLOAT; floating-point !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORTONING_LABREGIONS;L*a*b* correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C @@ -2293,7 +2303,17 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_2PASS;1-pass+fast !TP_RAW_4PASS;3-pass+fast @@ -2306,7 +2326,9 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. +!TP_RETINEX_MAP;Method !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_SOFTLIGHT_LABEL;Soft Light @@ -2315,3 +2337,4 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression !TP_TM_FATTAL_THRESHOLD;Detail +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 495b050f8..1e83b4951 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1087,7 +1087,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1121,17 +1120,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1213,7 +1212,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1259,6 +1265,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1304,7 +1311,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1330,6 +1336,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1397,7 +1404,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1461,7 +1468,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1472,6 +1479,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1502,6 +1510,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1527,6 +1536,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1801,7 +1811,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1844,6 +1863,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1937,7 +1957,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1975,6 +1998,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2250,6 +2274,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index e73f1c6d9..6baf1640c 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1085,6 +1085,7 @@ PARTIALPASTE_VIGNETTING;Vignettierungskorrektur PARTIALPASTE_WAVELETGROUP;Wavelet PARTIALPASTE_WHITEBALANCE;Weißabgleich PREFERENCES_ADD;HINZU +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Farbe der Navigationshilfe PREFERENCES_APPLNEXTSTARTUP;erfordert Neustart PREFERENCES_AUTOMONPROFILE;Automatisch das für den aktuellen Monitor festgelegte Profil verwenden PREFERENCES_BATCH_PROCESSING;Stapelverarbeitung @@ -1200,7 +1201,6 @@ PREFERENCES_MONPROFILE;Standardfarbprofil PREFERENCES_MONPROFILE_WARNOSX;Aufgrund einer macOS-Limitierung wird nur sRGB unterstützt. PREFERENCES_MULTITAB;Multi-Reitermodus PREFERENCES_MULTITABDUALMON;Multi-Reitermodus (auf zweitem Monitor, wenn verfügbar) -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Farbe der Navigationshilfe PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Ausgabeverzeichnis PREFERENCES_OUTDIRFOLDER;In dieses Verzeichnis speichern @@ -1427,7 +1427,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontal spiegeln. TP_COARSETRAF_TOOLTIP_ROTLEFT;Nach links drehen.\nTaste: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Nach rechts drehen.\nTaste: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vertikal spiegeln. -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute Luminanz der Betrachtungsumgebung\n(normalerweise 16cd/m²). TP_COLORAPP_ALGO;Algorithmus TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Helligkeit + Buntheit (JH) @@ -1493,6 +1492,7 @@ TP_COLORAPP_TCMODE_SATUR;Sättigung (S) TP_COLORAPP_TEMP_TOOLTIP;Um eine Farbtemperatur auszuwählen\nsetzen Sie die Tönung immer auf "1".\nA Temp=2856\nD50 Temp=5003\nD55 Temp=5503\nD65 Temp=6504\nD75 Temp=7504 TP_COLORAPP_TONECIE;Tonwertkorrektur mittels\nCIECAM02-Helligkeit (Q) TP_COLORAPP_TONECIE_TOOLTIP;Wenn diese Option ausgeschaltet ist, wird die Tonwertkorrektur im L*a*b*-Farbraum durchgeführt.\nWenn die Option eingeschaltet ist, wird CIECAM02 für die Tonwertkorrektur verwendet. Das Werkzeug Tonwertkorrektur muss aktiviert sein, damit diese Option berücksichtigt wird. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute Luminanz der Betrachtungsumgebung\n(normalerweise 16cd/m²). TP_COLORAPP_WBCAM;[RT+CAT02] + [Ausgabe] TP_COLORAPP_WBRT;[RT] + [Ausgabe] TP_COLORTONING_AB;o C/L @@ -2353,11 +2353,21 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - !HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold !HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !PARTIALPASTE_DEHAZE;Haze removal +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORTONING_LABREGIONS;L*a*b* correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C @@ -2372,6 +2382,17 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map !TP_DEHAZE_STRENGTH;Strength +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold !TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_TM_FATTAL_THRESHOLD;Detail +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 2e251a8a9..a266349cd 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -30,15 +30,18 @@ HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Colour correction HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid colour shift HISTORY_MSG_SH_COLORSPACE;S/H - Colourspace MAIN_TAB_COLOR;Colour -MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: Theme-based\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: Black\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR2;Background colour of the preview: White\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR3;Background colour of the preview: Middle grey\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: theme-based\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: black\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR2;Background colour of the preview: white\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR3;Background colour of the preview: middle grey\nShortcut: 9 PARTIALPASTE_COLORGROUP;Colour Related Settings PARTIALPASTE_COLORTONING;Colour toning PARTIALPASTE_ICMSETTINGS;Colour management settings PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid colour shift PARTIALPASTE_RAW_FALSECOLOR;False colour suppression +PREFERENCES_APPEARANCE_COLORPICKERFONT;Colour picker font +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask colour +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide colour PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor colour profile PREFERENCES_BEHAVIOR;Behaviour PREFERENCES_ICCDIR;Directory containing colour profiles @@ -46,12 +49,11 @@ PREFERENCES_INTENT_ABSOLUTE;Absolute Colourimetric PREFERENCES_INTENT_RELATIVE;Relative Colourimetric PREFERENCES_MENUGROUPLABEL;Group "Colour label" PREFERENCES_MONPROFILE;Default colour profile -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide colour PREFERENCES_PRTPROFILE;Colour profile PREFERENCES_TAB_COLORMGR;Colour Management SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colours with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Colour Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Colour Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a colour picker\nDrag it around while pressing the left mouse button\nDelete the colour picker with a right mouse button click\nDelete all colour pickers with Shift + Right mouse button click\nRight click away from any colour picker to go back to the Hand tool +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Colour Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Centre of rotation is the geometrical centre of the image. TP_BWMIX_CC_ENABLED;Adjust complementary colour TP_BWMIX_CC_TOOLTIP;Enable to allow automatic adjustment of complementary colours in ROYGCBPM mode. @@ -947,7 +949,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1007,12 +1008,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l !MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < !MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -1110,7 +1111,11 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_VIGNETTING;Vignetting correction !PARTIALPASTE_WHITEBALANCE;White balance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_APPLNEXTSTARTUP;restart required +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1168,6 +1173,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1260,6 +1266,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_SELECTLANG;Select language !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time @@ -1360,7 +1367,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift-mouse drag +!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w !TP_BWMIX_ALGO;Algorithm OYCPM @@ -1431,7 +1438,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1440,6 +1447,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_BADPIXSL;Hot/bad pixel filter !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_S;Saturation (S) !TP_COLORAPP_CHROMA_S_TOOLTIP;Saturation in CIECAM02 differs from L*a*b* and RGB saturation. @@ -1465,6 +1473,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1488,6 +1497,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1767,7 +1777,16 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1808,6 +1827,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red !TP_RAWCACORR_CASTR;Strength @@ -1906,7 +1926,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_W;Width: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1944,6 +1967,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2242,6 +2266,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 !TP_WBALANCE_METHOD;Method +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SIZE;Size: !TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 84c03e687..49553272b 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -861,7 +861,6 @@ !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -918,20 +917,20 @@ !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM;Transform !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. !MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l !MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < !MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -1034,8 +1033,15 @@ !PARTIALPASTE_VIGNETTING;Vignetting correction !PARTIALPASTE_WHITEBALANCE;White balance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_APPLNEXTSTARTUP;restart required !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1094,6 +1100,7 @@ !PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1150,7 +1157,6 @@ !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OUTDIR;Output Directory !PREFERENCES_OUTDIRFOLDER;Save to folder @@ -1193,6 +1199,7 @@ !PREFERENCES_SELECTLANG;Select language !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time @@ -1296,8 +1303,8 @@ !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift-mouse drag +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. !TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w @@ -1375,7 +1382,7 @@ !TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1386,6 +1393,7 @@ !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1416,6 +1424,7 @@ !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1441,6 +1450,7 @@ !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1751,7 +1761,16 @@ !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1794,6 +1813,7 @@ !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1895,7 +1915,10 @@ !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_W;Width: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1933,6 +1956,7 @@ !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2242,6 +2266,7 @@ !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 !TP_WBALANCE_METHOD;Method +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SIZE;Size: !TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index ceaff3887..abac30029 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -712,6 +712,7 @@ PARTIALPASTE_VIBRANCE;Vibranza PARTIALPASTE_VIGNETTING;Corrección de viñeteo PARTIALPASTE_WHITEBALANCE;Equilibrio de blancos PREFERENCES_ADD;Añadir +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Color de la guía del navegador PREFERENCES_APPLNEXTSTARTUP;requiere reinicio PREFERENCES_AUTOMONPROFILE;Usar perfil de color del monitor principal en el sistema operativo PREFERENCES_BATCH_PROCESSING;Procesamiento por lotes @@ -793,7 +794,6 @@ PREFERENCES_MENUOPTIONS;Opciones de menú de contexto PREFERENCES_METADATA;Metadatos PREFERENCES_MULTITAB;Modo Editor de varias pestañas PREFERENCES_MULTITABDUALMON;Modo Editor de varias pestañas, si está disponible en segundo monitor -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Color de la guía del navegador PREFERENCES_OUTDIR;Carpeta de salida PREFERENCES_OUTDIRFOLDER;Guardar en carpeta PREFERENCES_OUTDIRFOLDERHINT;Guardar las imágenes creadas en una carpeta elegida @@ -967,7 +967,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nAtajo: '[' TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nAtajo: ']' TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotar a la derecha TP_COARSETRAF_TOOLTIP_VFLIP;Voltear verticalmente -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminancia absoluta del entorno de visualización\n(usualmente 16cd/m²) TP_COLORAPP_ALGO;Algoritmo TP_COLORAPP_ALGO_ALL;Todo TP_COLORAPP_ALGO_JC;Claridad + Crominancia (JC) @@ -1029,6 +1028,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Claridad TP_COLORAPP_TCMODE_SATUR;Saturación TP_COLORAPP_TONECIE;Mapeo tonal usando Brillo (Q) CIECAM02. TP_COLORAPP_TONECIE_TOOLTIP;Si esta opción no está seleccionada, el mapeo tonal se hace usando el espacio de color Lab.\nSi esta opción está seleccionada, el mapeo tonal se hace usando CIECAM02.\nLa herramienta de mapeo tonal debe de estar habilitada para que esta selección tenga efecto +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminancia absoluta del entorno de visualización\n(usualmente 16cd/m²) TP_COLORAPP_WBCAM;BalBlanco [RT+CAT02] + [salida] TP_COLORAPP_WBRT;BalBlanco [RT] + [salida] TP_COLORTONING_AB;o C/L @@ -1799,14 +1799,13 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1836,6 +1835,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1858,6 +1863,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1895,6 +1901,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1919,14 +1926,17 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -2008,6 +2018,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. !TP_LABCURVE_CURVEEDITOR_CC;CC +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2028,6 +2047,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) @@ -2088,7 +2108,10 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2126,6 +2149,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2335,6 +2359,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 5b8004105..1a3f3f036 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1088,7 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1122,17 +1121,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1214,7 +1213,14 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1260,6 +1266,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1305,7 +1312,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,6 +1337,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1398,7 +1405,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1462,7 +1469,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1473,6 +1480,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1503,6 +1511,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1528,6 +1537,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1802,7 +1812,16 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1845,6 +1864,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1938,7 +1958,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1976,6 +1999,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2251,6 +2275,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index e6c9d83d7..976324a51 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1036,6 +1036,7 @@ PARTIALPASTE_VIGNETTING;Correction du vignettage PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette PARTIALPASTE_WHITEBALANCE;Balance des blancs PREFERENCES_ADD;Ajoute +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Couleur du cadre dans le Navigateur PREFERENCES_APPLNEXTSTARTUP;appliqué au prochain lancement PREFERENCES_AUTOMONPROFILE;Utiliser automatiquement le profil de l'écran principal PREFERENCES_BATCH_PROCESSING;Traitement par lot @@ -1156,7 +1157,6 @@ PREFERENCES_MONPROFILE;Profil couleur par défaut PREFERENCES_MONPROFILE_WARNOSX;Due à des limitations de macOS, seul sRGB est supporté. PREFERENCES_MULTITAB;Éditeurs multiple PREFERENCES_MULTITABDUALMON;Éditeurs multiple, si possible sur un second moniteur -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Couleur du cadre dans le Navigateur PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Dossier de sortie PREFERENCES_OUTDIRFOLDER;Dossier de sauvegarde @@ -1383,7 +1383,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Symétriser / axe vertical TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotation vers la gauche\nRaccourci: [\n\nRaccourci en mode Éditeur unique: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotation vers la droite\nRaccourci: ]\n\nRaccourci en mode Éditeur unique: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;Symétriser / axe horizontal -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²) TP_COLORAPP_ALGO;Algorithme TP_COLORAPP_ALGO_ALL;Tout TP_COLORAPP_ALGO_JC;Luminosité + Chroma (JC) @@ -1449,6 +1448,7 @@ TP_COLORAPP_TCMODE_SATUR;Saturation TP_COLORAPP_TEMP_TOOLTIP;Pour sélectionner un illuminant, toujours régler Teinte=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 TP_COLORAPP_TONECIE;Compression Tonale utilisant CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Si cette option est désactivée, la compression tonale est faite dans l'espace Lab.\nSi cette options est activée, la compression tonale est faite en utilisant CIECAM02.\nL'outil Compression Tonale doit être activé pour que ce réglage prenne effet +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²) TP_COLORAPP_WBCAM;BB [RT+CAT02] + [sortie] TP_COLORAPP_WBRT;BB [RT] + [sortie] TP_COLORTONING_AB;o C/L @@ -2299,3 +2299,30 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: Alt-f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. +!TP_RETINEX_CONTEDIT_MAP;Equalizer +!TP_RETINEX_MAP;Method +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index bf8f6a01f..eff50dc3a 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1087,7 +1087,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1121,17 +1120,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1213,7 +1212,14 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1259,6 +1265,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1304,7 +1311,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1330,6 +1336,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1397,7 +1404,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1461,7 +1468,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1472,6 +1479,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1502,6 +1510,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1527,6 +1536,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1801,7 +1811,16 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1844,6 +1863,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1937,7 +1957,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1975,6 +1998,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2250,6 +2274,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index b33799a85..f1bbde6f9 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1088,7 +1088,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1122,17 +1121,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1214,7 +1213,14 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1260,6 +1266,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1305,7 +1312,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,6 +1337,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1398,7 +1405,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1462,7 +1469,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1473,6 +1480,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1503,6 +1511,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1528,6 +1537,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1802,7 +1812,16 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1845,6 +1864,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1938,7 +1958,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1976,6 +1999,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2251,6 +2275,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index bc63bc3aa..6155ae7b5 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -618,6 +618,7 @@ PARTIALPASTE_VIBRANCE;Vividezza PARTIALPASTE_VIGNETTING;Correzione Vignettatura PARTIALPASTE_WHITEBALANCE;Bilanciamento del bianco PREFERENCES_ADD;Somma +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Colore delle guide del Navigatore PREFERENCES_APPLNEXTSTARTUP;applicato al prossimo avvio PREFERENCES_AUTOMONPROFILE;Usa il profilo colore dello schermo principale del sistema operativo PREFERENCES_BATCH_PROCESSING;Sviluppo in serie @@ -698,7 +699,6 @@ PREFERENCES_MENUOPTIONS;Opzioni del menù a discesa PREFERENCES_METADATA;Metadati PREFERENCES_MULTITAB;Modalità a Schede Multiple PREFERENCES_MULTITABDUALMON;Modalità a Schede Multiple (se disponibile sul secondo schermo) -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Colore delle guide del Navigatore PREFERENCES_OUTDIR;Cartella di destinazione PREFERENCES_OUTDIRFOLDER;Salva nella cartella PREFERENCES_OUTDIRFOLDERHINT;Salva le immagini nella cartella scelta @@ -872,7 +872,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Rifletti orizzontalmente. TP_COARSETRAF_TOOLTIP_ROTLEFT;Ruota a sinistra.\nScorciatoie:\n[ - Modalità a Scheda Multipla,\nAlt-[ - Modalità a Scheda Singola. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Ruota a destra.\nScorciatoie:\n] - Modalità a Scheda Multipla,\nAlt-] - Modalità a Scheda Singola. TP_COARSETRAF_TOOLTIP_VFLIP;Rifletti verticalmente -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminanza assoluta dell'ambiente di visualizzazione\n(normalmente 16cd/m²). TP_COLORAPP_ALGO;Algoritmo TP_COLORAPP_ALGO_ALL;Tutto TP_COLORAPP_ALGO_JC;Chiarezza + Croma (JC) @@ -934,6 +933,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Chiarezza TP_COLORAPP_TCMODE_SATUR;Saturazione TP_COLORAPP_TONECIE;Tone mapping con CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Se questa opzione è disabilitata, il Tone Mapping è eseguito nello spazio Lab.\nSe l'opzione è abilitata, il Tone Mapping è fatto usando CIECAM02.\nLo strumento Tone Mapping (Lab/CIECAM02) deve essere abilitato affinché questa impostazione abbia effetto. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminanza assoluta dell'ambiente di visualizzazione\n(normalmente 16cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] TP_COLORAPP_WBRT;WB [RT] + [output] TP_CROP_FIXRATIO;Rapporto fisso: @@ -1674,15 +1674,14 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1707,6 +1706,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1730,6 +1735,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1767,6 +1773,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1791,14 +1798,17 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -1934,6 +1944,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1958,6 +1977,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -2029,7 +2049,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2067,6 +2090,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2276,6 +2300,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index c80a64425..cbab4ca3f 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1065,6 +1065,7 @@ PARTIALPASTE_VIBRANCE;自然な彩度 PARTIALPASTE_VIGNETTING;周辺光量補正 PARTIALPASTE_WHITEBALANCE;ホワイトバランス PREFERENCES_ADD;追加 +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;ナビゲーターのガイドカラー PREFERENCES_APPLNEXTSTARTUP;要再起動 PREFERENCES_AUTOMONPROFILE;OSのメインモニター・プロファイルを使用 PREFERENCES_BATCH_PROCESSING;バッチ処理 @@ -1181,7 +1182,6 @@ PREFERENCES_MONPROFILE;デフォルトのモニタープロファイル PREFERENCES_MONPROFILE_WARNOSX;MacのOSの制約により、サポート出来るのはsRGBだけです PREFERENCES_MULTITAB;マルチ編集タブモード PREFERENCES_MULTITABDUALMON;独自のウィンドウモードによるマルチ編集タブ -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;ナビゲーターのガイドカラー PREFERENCES_NAVIGATIONFRAME;ナビゲーション PREFERENCES_OUTDIR;出力ディレクトリ PREFERENCES_OUTDIRFOLDER;フォルダに保存 @@ -1407,7 +1407,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;左右反転 TP_COARSETRAF_TOOLTIP_ROTLEFT;90度左回転\nショートカット: [\n\nシングル・エディタ・タブのショートカット: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;90度右回転\nショートカット: ]\n\nシングル・エディタ・タブのショートカット: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;上下反転 -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;観視環境の絶対輝度\n(通常 16cd/m2) TP_COLORAPP_ALGO;アルゴリズム TP_COLORAPP_ALGO_ALL;すべて TP_COLORAPP_ALGO_JC;明度 + 色度 (JC) @@ -1473,6 +1472,7 @@ TP_COLORAPP_TCMODE_SATUR;彩度 TP_COLORAPP_TEMP_TOOLTIP;選択した光源に関し色偏差は常に1が使われます\n\n色温度=2856\nD50 色温度=5003\nD55 色温度=5503\nD65 色温度=6504\nD75 色温度=7504 TP_COLORAPP_TONECIE;CIECAM02 明るさ(Q)を使用してトーンマッピング TP_COLORAPP_TONECIE_TOOLTIP;このオプションが無効になっている場合、トーンマッピングはL*a*b*空間を使用します\nこのオプションが有効になっている場合、トーンマッピングは、CIECAM02を使用します\nトーンマッピング(L*a*b*/CIECAM02)ツールを有効にするには、この設定を有効にする必要があります +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;観視環境の絶対輝度\n(通常 16cd/m2) TP_COLORAPP_WBCAM;WB [RT+CAT02] + [出力] TP_COLORAPP_WBRT;WB [RT] + [出力] TP_COLORTONING_AB;o C/L @@ -2302,3 +2302,26 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. +!TP_RETINEX_CONTEDIT_MAP;Equalizer +!TP_RETINEX_MAP;Method +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 73ca345ba..0cfcb9e04 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1088,7 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1122,17 +1121,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1214,7 +1213,14 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1260,6 +1266,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1305,7 +1312,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,6 +1337,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1398,7 +1405,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1462,7 +1469,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1473,6 +1480,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1503,6 +1511,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1528,6 +1537,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1802,7 +1812,16 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1845,6 +1864,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1938,7 +1958,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1976,6 +1999,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2251,6 +2275,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 08c5b6277..af10a8272 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1357,7 +1357,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 @@ -1371,11 +1370,11 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1417,6 +1416,13 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BEHADDALL;All to 'Add' !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_BEHSETALL;All to 'Set' @@ -1452,6 +1458,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_D65;6500K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 @@ -1482,7 +1489,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1504,6 +1510,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1551,7 +1558,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1614,7 +1621,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1625,6 +1632,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1655,6 +1663,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1680,6 +1689,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1895,7 +1905,16 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1929,6 +1948,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -2005,7 +2025,10 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2043,6 +2066,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2268,6 +2292,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_WAVELET_TON;Toning !TP_WBALANCE_EQBLUERED;Blue/Red equalizer !TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable. +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_WATER1;UnderWater 1 diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index b6ee0d50b..7afbdb57c 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -903,6 +903,7 @@ PARTIALPASTE_VIGNETTING;Vignetteringscorrectie PARTIALPASTE_WAVELETGROUP;Wavelet verwerking PARTIALPASTE_WHITEBALANCE;Witbalans PREFERENCES_ADD;Toevoegen +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator randkleur PREFERENCES_APPLNEXTSTARTUP;herstart vereist PREFERENCES_AUTOMONPROFILE;Gebruik automatisch het standaard monitorprofiel \nvan het besturingsysteem PREFERENCES_BATCH_PROCESSING;Batch-verwerking @@ -1007,7 +1008,6 @@ PREFERENCES_MONPROFILE;Standaard kleurprofiel PREFERENCES_MONPROFILE_WARNOSX;Als gevolg van MacOS beperkingen wordt alleen sRGB ondersteund. PREFERENCES_MULTITAB;Multi-tab: elke foto opent in nieuw tabvenster PREFERENCES_MULTITABDUALMON;Multi-tab, indien beschikbaar op tweede monitor -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator randkleur PREFERENCES_NAVIGATIONFRAME;Navigatie PREFERENCES_OUTDIR;Uitvoermap PREFERENCES_OUTDIRFOLDER;Sla op in map @@ -1209,7 +1209,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontaal spiegelen TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nSneltoets:\n[ - Multi-tab Mode,\nAlt-[ - Enkel-tab Mode. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nSneltoets:\n] - Multi-tab Mode,\nAlt-] - Enkel-tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Verticaal spiegelen -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminantie van de weergaveomgeving \n(gebruikelijk 16cd/m²) TP_COLORAPP_ALGO;Algoritme TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Lichtheid + Chroma (JC) @@ -1271,6 +1270,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;lichtheid TP_COLORAPP_TCMODE_SATUR;Verzadiging TP_COLORAPP_TONECIE;Tonemapping gebruik makend van CIECAM TP_COLORAPP_TONECIE_TOOLTIP;Indien uitgezet zal tonemapping plaats vinden in Lab.\nIndien aangezet zal tonemapping gebruik maken van CIECAM02.\nVoorwaarde is dat Tonemapping (Lab/CIECAM02) actief is. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminantie van de weergaveomgeving \n(gebruikelijk 16cd/m²) TP_COLORAPP_WBCAM;WB [RT+CAT02] + [uitvoer] TP_COLORAPP_WBRT;WB [RT] + [uitvoer] TP_COLORTONING_AB;o C/L @@ -2180,13 +2180,12 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. !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\n"%1" will be used instead. @@ -2199,6 +2198,12 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -2213,6 +2218,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 !PREFERENCES_LANG;Language !PREFERENCES_PERFORMANCE_THREADS;Threads @@ -2241,7 +2247,10 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -2272,6 +2281,15 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2289,6 +2307,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_2PASS;1-pass+fast !TP_RAW_4PASS;3-pass+fast @@ -2308,9 +2327,11 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. +!TP_RETINEX_MAP;Method !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_SOFTLIGHT_LABEL;Soft Light @@ -2320,3 +2341,4 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_TM_FATTAL_LABEL;Dynamic Range Compression !TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 83affd841..06a675819 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1087,7 +1087,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1121,17 +1120,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1213,7 +1212,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1259,6 +1265,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1304,7 +1311,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1330,6 +1336,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1397,7 +1404,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1461,7 +1468,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1472,6 +1479,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1502,6 +1510,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1527,6 +1536,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1801,7 +1811,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1844,6 +1863,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1937,7 +1957,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1975,6 +1998,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2250,6 +2274,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index b5f1ad546..385f71041 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -667,6 +667,7 @@ PARTIALPASTE_VIBRANCE;Jaskrawość PARTIALPASTE_VIGNETTING;Korekcja winietowania PARTIALPASTE_WHITEBALANCE;Balans bieli PREFERENCES_ADD;Dodaj +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_APPLNEXTSTARTUP;wymaga ponownego uruchomienia PREFERENCES_AUTOMONPROFILE;Automatycznie użyj systemowego profilu monitora PREFERENCES_BATCH_PROCESSING;Przetwarzanie wsadowe @@ -748,7 +749,6 @@ PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_METADATA;Metadane PREFERENCES_MULTITAB;Tryb wielu zakładek PREFERENCES_MULTITABDUALMON;Tryb wielu zakładek (na drugim monitorze jeśli dostępny) -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_OUTDIR;Katalog wyjściowy PREFERENCES_OUTDIRFOLDER;Zapisz do katalogu PREFERENCES_OUTDIRFOLDERHINT;Umieszcza zapisywane zdjęcia w wybranym katalogu @@ -922,7 +922,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Odbij w poziomie TP_COARSETRAF_TOOLTIP_ROTLEFT;Obróć w lewo.\n\nSkróty:\n[ - Tryb wielu zakładek,\nAlt-[ - Tryb jednej zakładki. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Obróć w prawo.\n\nSkróty:\n] - Tryb wielu zakładek,\nAlt-] - Tryb jednej zakładki. TP_COARSETRAF_TOOLTIP_VFLIP;Odbij w pionie -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzględna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_ALGO;Algorytm TP_COLORAPP_ALGO_ALL;Wszystkie TP_COLORAPP_ALGO_JC;Światłość + Chroma (JC) @@ -984,6 +983,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Światłość TP_COLORAPP_TCMODE_SATUR;Nasycenie TP_COLORAPP_TONECIE;Tone mapping za pomocą jasności CIECAM02 (Q) TP_COLORAPP_TONECIE_TOOLTIP;Jeśli ta opcja jest wyłączona, tone mapping odbywa się w przestrzeni kolorów L*a*b*, zaś jeśli jest włączona, w przestrzeni kolorów CIECAM02.\nNarzędzie Tone Mapping musi być włączone aby to utawienie działało. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzględna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_WBCAM;BB [RT+CAT02] + [wyjściowy] TP_COLORAPP_WBRT;BB [RT] + [wyjściowy] TP_COLORTONING_AB;o C/L @@ -1756,15 +1756,14 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1784,6 +1783,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1806,6 +1811,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1843,6 +1849,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1867,14 +1874,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -1955,6 +1965,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1975,6 +1994,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) @@ -2035,7 +2055,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2073,6 +2096,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2282,5 +2306,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index aa8fb9ee7..df6e5c941 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -667,6 +667,7 @@ PARTIALPASTE_VIBRANCE;Jaskrawosc PARTIALPASTE_VIGNETTING;Korekcja winietowania PARTIALPASTE_WHITEBALANCE;Balans bieli PREFERENCES_ADD;Dodaj +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_APPLNEXTSTARTUP;wymaga ponownego uruchomienia PREFERENCES_AUTOMONPROFILE;Automatycznie uzyj systemowego profilu monitora PREFERENCES_BATCH_PROCESSING;Przetwarzanie wsadowe @@ -748,7 +749,6 @@ PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_METADATA;Metadane PREFERENCES_MULTITAB;Tryb wielu zakladek PREFERENCES_MULTITABDUALMON;Tryb wielu zakladek (na drugim monitorze jesli dostepny) -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_OUTDIR;Katalog wyjsciowy PREFERENCES_OUTDIRFOLDER;Zapisz do katalogu PREFERENCES_OUTDIRFOLDERHINT;Umieszcza zapisywane zdjecia w wybranym katalogu @@ -922,7 +922,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Odbij w poziomie TP_COARSETRAF_TOOLTIP_ROTLEFT;Obroc w lewo.\n\nSkroty:\n[ - Tryb wielu zakladek,\nAlt-[ - Tryb jednej zakladki. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Obroc w prawo.\n\nSkroty:\n] - Tryb wielu zakladek,\nAlt-] - Tryb jednej zakladki. TP_COARSETRAF_TOOLTIP_VFLIP;Odbij w pionie -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzgledna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_ALGO;Algorytm TP_COLORAPP_ALGO_ALL;Wszystkie TP_COLORAPP_ALGO_JC;Swiatlosc + Chroma (JC) @@ -984,6 +983,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Swiatlosc TP_COLORAPP_TCMODE_SATUR;Nasycenie TP_COLORAPP_TONECIE;Tone mapping za pomoca jasnosci CIECAM02 (Q) TP_COLORAPP_TONECIE_TOOLTIP;Jesli ta opcja jest wylaczona, tone mapping odbywa sie w przestrzeni kolorow L*a*b*, zas jesli jest wlaczona, w przestrzeni kolorow CIECAM02.\nNarzedzie Tone Mapping musi byc wlaczone aby to utawienie dzialalo. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzgledna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_WBCAM;BB [RT+CAT02] + [wyjsciowy] TP_COLORAPP_WBRT;BB [RT] + [wyjsciowy] TP_COLORTONING_AB;o C/L @@ -1756,15 +1756,14 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1784,6 +1783,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1806,6 +1811,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1843,6 +1849,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1867,14 +1874,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -1955,6 +1965,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1975,6 +1994,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) @@ -2035,7 +2055,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2073,6 +2096,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2282,5 +2306,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index a627f868e..95923c6f0 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1006,6 +1006,7 @@ PARTIALPASTE_VIBRANCE;Vibração PARTIALPASTE_VIGNETTING;Correção de vinheta PARTIALPASTE_WHITEBALANCE;Balanço de branco PREFERENCES_ADD;Adicionar +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Cor do guia do navegador PREFERENCES_APPLNEXTSTARTUP;é necessário reiniciar PREFERENCES_AUTOMONPROFILE;Usar o perfil de cores do monitor principal do sistema operacional PREFERENCES_BATCH_PROCESSING;Processamento em Lote @@ -1117,7 +1118,6 @@ PREFERENCES_MONPROFILE;Perfil de cor padrão PREFERENCES_MONPROFILE_WARNOSX;Devido às limitações do MacOS, apenas o sRGB é suportado. PREFERENCES_MULTITAB;Modo de Mútiplas Abas do Editor PREFERENCES_MULTITABDUALMON;Múltiplas Abas do Editor no Modo de Janela Própria -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Cor do guia do navegador PREFERENCES_NAVIGATIONFRAME;Navegação PREFERENCES_OUTDIR;Diretório de Saída PREFERENCES_OUTDIRFOLDER;Salvar na pasta @@ -1341,7 +1341,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Girar horizontalmente. TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotacione à esquerda.\n\nAtalhos:\n[ - Modo de Guias do Editor Múltiplo,\nAlt-[ - Modo de Guia do Editor Único. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotacione à direita.\n\nAtalhos:\n] - Modo de Guias do Editor Múltiplo,\nAlt-] - Modo de Guia do Editor Único. TP_COARSETRAF_TOOLTIP_VFLIP;Girar verticalmente. -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²). TP_COLORAPP_ALGO;Algorimo TP_COLORAPP_ALGO_ALL;Tudo TP_COLORAPP_ALGO_JC;Claridade + Croma (JC) @@ -1407,6 +1406,7 @@ TP_COLORAPP_TCMODE_SATUR;Saturação TP_COLORAPP_TEMP_TOOLTIP;Para selecionar um iluminante, defina sempre Matiz=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 TP_COLORAPP_TONECIE;Mapeamento de tom usando CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Se esta opção estiver desativada, o mapeamento de tom é feito no espaço L*a*b*.\nSe esta opção estiver habilitada, o mapeamento de tom é feito usando CIECAM02.\nA ferramenta de Mapeamento de Tom deve estar ativada para que esta configuração tenha efeito. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [saída] TP_COLORAPP_WBRT;WB [RT] + [saída] TP_COLORTONING_AB;o C/L @@ -2248,15 +2248,25 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description !PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance !SAVEDLG_FILEFORMAT_FLOAT; floating-point +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORTONING_LABREGIONS;L*a*b* correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C @@ -2271,9 +2281,22 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map !TP_DEHAZE_STRENGTH;Strength +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold !TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. +!TP_RETINEX_MAP;Method !TP_TM_FATTAL_THRESHOLD;Detail +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 93dd6cdb5..d07ef6f6d 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -960,7 +960,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Горизонтальное зеркальное о TP_COARSETRAF_TOOLTIP_ROTLEFT;Повернуть влево\n\nГорячие клавиши:\n[ - режим множественных редакторов,\nAlt-[ - режим одного редактора TP_COARSETRAF_TOOLTIP_ROTRIGHT;Повернуть вправо\n\nГорячие клавиши:\n] - режим множественных редакторов,\nAlt-] - режим одного редактора TP_COARSETRAF_TOOLTIP_VFLIP;Вертикальное зеркальное отражение -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²) TP_COLORAPP_ALGO;Алгоритм TP_COLORAPP_ALGO_ALL;Все TP_COLORAPP_ALGO_JC;Светимость + Цвет (JC) @@ -993,6 +992,7 @@ TP_COLORAPP_GAMUT;Контроль гаммы (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Позволяет контролировать гамму в режиме L*a*b*. TP_COLORAPP_HUE;Цвет (h) TP_COLORAPP_MODEL;Модель точки белого +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²) TP_CROP_FIXRATIO;Пропорция: TP_CROP_GTDIAGONALS;Правило диагоналей TP_CROP_GTEPASSPORT;Биометрический паспорт @@ -1766,8 +1766,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !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 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !PARTIALPASTE_COLORTONING;Color toning !PARTIALPASTE_DEHAZE;Haze removal @@ -1782,6 +1782,13 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1799,6 +1806,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_CROP_GUIDES_NONE;None !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1815,7 +1823,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_MONINTENT;Default rendering intent !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1833,6 +1840,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview @@ -1853,13 +1861,15 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. @@ -1869,6 +1879,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values @@ -1994,6 +2005,15 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction !TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both !TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal @@ -2004,6 +2024,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast @@ -2048,7 +2069,10 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !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.\n+fast gives less artifacts in flat areas !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_EQUAL;Equalizer @@ -2082,6 +2106,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2281,5 +2306,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index c831dbddb..37ca4dc1e 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -837,7 +837,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Изврће слику хоризонтално TP_COARSETRAF_TOOLTIP_ROTLEFT;Окреће слику улево TP_COARSETRAF_TOOLTIP_ROTRIGHT;Окреће слику удесно TP_COARSETRAF_TOOLTIP_VFLIP;Изврће слику вертикално -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Апсолутна луминозност окружења за преглед\n(обично 16cd/m²). TP_COLORAPP_ALGO;Алгоритам TP_COLORAPP_ALGO_ALL;Све TP_COLORAPP_ALGO_JC;Светлина + Боја (JC) @@ -899,6 +898,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Светлина TP_COLORAPP_TCMODE_SATUR;Засићеност TP_COLORAPP_TONECIE;Мапирање тонова у CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Уколико је искључена ова опција, мапирање тонова се врши у Лаб окружењу.\nУколико је укључена, мапирање се врши помоћу CIECAM02.\nМорате користити алат за мапирање тонова како би ова опција била примењена. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Апсолутна луминозност окружења за преглед\n(обично 16cd/m²). TP_COLORAPP_WBCAM;Баланс беле [RT+CAT02] + [излаз] TP_COLORAPP_WBRT;Баланс беле [RT] + [излаз] TP_CROP_FIXRATIO;Сразмерно: @@ -1650,14 +1650,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1693,6 +1692,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1716,6 +1722,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1734,7 +1741,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1756,6 +1762,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1779,7 +1786,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !THRESHOLDSELECTOR_BL;Bottom-left -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies. !TP_BWMIX_FILTER_YELLOW;Yellow !TP_BWMIX_GAMMA;Gamma Correction @@ -1790,7 +1797,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -1936,6 +1946,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1959,6 +1978,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -2030,7 +2050,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2068,6 +2091,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2277,6 +2301,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 190f52e91..c33abc2e7 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -837,7 +837,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Izvrće sliku horizontalno TP_COARSETRAF_TOOLTIP_ROTLEFT;Okreće sliku ulevo TP_COARSETRAF_TOOLTIP_ROTRIGHT;Okreće sliku udesno TP_COARSETRAF_TOOLTIP_VFLIP;Izvrće sliku vertikalno -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Apsolutna luminoznost okruženja za pregled\n(obično 16cd/m²). TP_COLORAPP_ALGO;Algoritam TP_COLORAPP_ALGO_ALL;Sve TP_COLORAPP_ALGO_JC;Svetlina + Boja (JC) @@ -899,6 +898,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Svetlina TP_COLORAPP_TCMODE_SATUR;Zasićenost TP_COLORAPP_TONECIE;Mapiranje tonova u CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Ukoliko je isključena ova opcija, mapiranje tonova se vrši u Lab okruženju.\nUkoliko je uključena, mapiranje se vrši pomoću CIECAM02.\nMorate koristiti alat za mapiranje tonova kako bi ova opcija bila primenjena. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Apsolutna luminoznost okruženja za pregled\n(obično 16cd/m²). TP_COLORAPP_WBCAM;Balans bele [RT+CAT02] + [izlaz] TP_COLORAPP_WBRT;Balans bele [RT] + [izlaz] TP_CROP_FIXRATIO;Srazmerno: @@ -1650,14 +1650,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1693,6 +1692,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -1716,6 +1722,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1734,7 +1741,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1756,6 +1762,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance @@ -1779,7 +1786,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !THRESHOLDSELECTOR_BL;Bottom-left -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies. !TP_BWMIX_FILTER_YELLOW;Yellow !TP_BWMIX_GAMMA;Gamma Correction @@ -1790,7 +1797,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -1936,6 +1946,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1959,6 +1978,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -2030,7 +2050,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2068,6 +2091,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2277,6 +2301,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 812e087fb..ac6dc7928 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1149,7 +1149,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 !MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3 @@ -1177,17 +1176,17 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1265,7 +1264,14 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BEHADDALL;All to 'Add' !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_BEHSETALL;All to 'Set' @@ -1308,6 +1314,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1352,7 +1359,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files @@ -1376,6 +1382,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs @@ -1437,7 +1444,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1501,7 +1508,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1512,6 +1519,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1542,6 +1550,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1567,6 +1576,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1822,7 +1832,16 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1859,6 +1878,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1947,7 +1967,10 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RESIZE_FITBOX;Bounding Box !TP_RESIZE_FULLIMAGE;Full Image !TP_RESIZE_LANCZOS;Lanczos -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1985,6 +2008,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2260,6 +2284,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 2fdae6ab5..3d450a65c 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1089,7 +1089,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1123,17 +1122,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1215,7 +1214,14 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1261,6 +1267,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1306,7 +1313,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1332,6 +1338,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1398,7 +1405,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1462,7 +1469,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1473,6 +1480,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1503,6 +1511,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1528,6 +1537,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1802,7 +1812,16 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1845,6 +1864,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1938,7 +1958,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1976,6 +1999,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2251,6 +2275,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index fd2690401..7022c8554 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -808,6 +808,7 @@ PARTIALPASTE_VIGNETTING;Reducera vinjettering PARTIALPASTE_WAVELETGROUP;Wavelet-nivåer PARTIALPASTE_WHITEBALANCE;Vitbalans PREFERENCES_ADD;Lägg till +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Översiktsvyns guidefärg PREFERENCES_APPLNEXTSTARTUP;Kräver omstart av RawTherapee PREFERENCES_AUTOMONPROFILE;Använd operativsystemets skärmfärgprofil PREFERENCES_BATCH_PROCESSING;Batchbehandling @@ -906,7 +907,6 @@ PREFERENCES_MENUOPTIONS;Menyval för högerklick PREFERENCES_METADATA;Metadata PREFERENCES_MULTITAB;Öppna bilderna i olika flikar PREFERENCES_MULTITABDUALMON;Visa bild på andra skärmen, om möjligt, i flerfliksläge -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Översiktsvyns guidefärg PREFERENCES_NAVIGATIONFRAME;Navigering PREFERENCES_OUTDIR;Utmatningskatalog PREFERENCES_OUTDIRFOLDER;Spara till katalog @@ -1100,7 +1100,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Vänd horisontellt TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotera åt vänster.\nKortkommando: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotera åt höger.\nKortkommando: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vänd vertikalt -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolut luminans hos betrakningsomgivningen\n(vanligtvis 16cd/m²) TP_COLORAPP_ALGO;Algoritm TP_COLORAPP_ALGO_ALL;Alla TP_COLORAPP_ALGO_JC;Ljushet + kroma (JC) @@ -1162,6 +1161,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Ljushet TP_COLORAPP_TCMODE_SATUR;Mättnad TP_COLORAPP_TONECIE;Tonmappning som använder CIECAM02 ljushet (Q) TP_COLORAPP_TONECIE_TOOLTIP;Om det här valet ej är aktiverat, görs tonmappningen i Lab.\nOm det här valet är aktiverat, görs tonmappningen mha CIECAM02.\nTonmappningsverktyget måste vara aktiverad för att den här inställningen ska ha någon effekt +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolut luminans hos betrakningsomgivningen\n(vanligtvis 16cd/m²) TP_COLORAPP_WBCAM;Vitbalans [RT+CAT02] + [utmatning] TP_COLORAPP_WBRT;Vitbalans [RT] + [utmatning] TP_COLORTONING_AB;o C/L @@ -2010,13 +2010,12 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. !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\n"%1" will be used instead. @@ -2034,6 +2033,12 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: @@ -2049,6 +2054,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !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 @@ -2089,7 +2095,10 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_METHOD;Process located +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !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 @@ -2144,6 +2153,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2161,6 +2179,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast @@ -2218,6 +2237,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. @@ -2225,6 +2245,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). !TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool. !TP_RETINEX_LABEL_MASK;Mask +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2285,5 +2306,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements. !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 723658e4a..37338ba52 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1088,7 +1088,6 @@ TP_WBALANCE_TEMPERATURE;Isı !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. !IPTCPANEL_TRANSREFERENCE;Job ID !IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!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_BUTTON_FULLSCREEN;Fullscreen !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4 @@ -1122,17 +1121,17 @@ TP_WBALANCE_TEMPERATURE;Isı !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!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 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!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 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1214,7 +1213,14 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1260,6 +1266,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1305,7 +1312,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1331,6 +1337,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar @@ -1397,7 +1404,7 @@ TP_WBALANCE_TEMPERATURE;Isı !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1461,7 +1468,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1472,6 +1479,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1502,6 +1510,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset @@ -1527,6 +1536,7 @@ TP_WBALANCE_TEMPERATURE;Isı !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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] !TP_COLORTONING_AB;o C/L @@ -1801,7 +1811,16 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1844,6 +1863,7 @@ TP_WBALANCE_TEMPERATURE;Isı !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. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1937,7 +1957,10 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_LH;Hue equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1975,6 +1998,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2250,6 +2274,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/default b/rtdata/languages/default index 4360ce491..d3e40cb19 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1382,7 +1382,6 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Ed TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance -TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1424,6 +1423,7 @@ TP_COLORAPP_LABEL_SCENE;Scene Conditions TP_COLORAPP_LABEL_VIEWING;Viewing Conditions TP_COLORAPP_LIGHT;Lightness (J) TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) TP_COLORAPP_MODEL;WP Model TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. TP_COLORAPP_NEUTRAL;Reset @@ -1766,9 +1766,9 @@ TP_LENSPROFILE_CORRECTION_MANUAL;Manually TP_LENSPROFILE_LABEL;Profiled Lens Correction TP_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. TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -TP_LENSPROFILE_USE_HEADER;Select distortions to correct: TP_LENSPROFILE_USE_CA;Chromatic aberration TP_LENSPROFILE_USE_GEOMETRIC;Geometric +TP_LENSPROFILE_USE_HEADER;Select distortions to correct: TP_LENSPROFILE_USE_VIGNETTING;Vignetting TP_LOCALCONTRAST_AMOUNT;Amount TP_LOCALCONTRAST_DARKNESS;Darkness level @@ -1914,10 +1914,10 @@ TP_RESIZE_SCALE;Scale TP_RESIZE_SPECIFY;Specify: TP_RESIZE_W;Width: TP_RESIZE_WIDTH;Width -TP_RETINEX_CONTEDIT_MAP;Equalizer TP_RETINEX_CONTEDIT_HSL;HSL histogram TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram TP_RETINEX_CONTEDIT_LH;Hue +TP_RETINEX_CONTEDIT_MAP;Equalizer TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) From cb0b96f702b600c7f6c537e19b44026386a92df1 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 21 Nov 2018 13:11:47 +0100 Subject: [PATCH 195/348] Rearranged contents of Preferences> Appearance Closes #5003 --- rtgui/preferences.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index eefffbb3a..9141b0e3f 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1051,10 +1051,10 @@ Gtk::Widget* Preferences::getGeneralPanel () appearanceGrid->attach(*vSep, 2, 0, 1, 3); appearanceGrid->attach(*mainFontLbl, 0, 1, 1, 1); appearanceGrid->attach(*mainFontFB, 1, 1, 1, 1); - appearanceGrid->attach(*colorPickerFontLbl, 3, 1, 1, 1); - appearanceGrid->attach(*colorPickerFontFB, 4, 1, 1, 1); - appearanceGrid->attach(*cropMaskColorLbl, 0, 2, 1, 1); - appearanceGrid->attach(*cropMaskColorCB, 1, 2, 1, 1); + appearanceGrid->attach(*cropMaskColorLbl, 3, 1, 1, 1); + appearanceGrid->attach(*cropMaskColorCB, 4, 1, 1, 1); + appearanceGrid->attach(*colorPickerFontLbl, 0, 2, 1, 1); + appearanceGrid->attach(*colorPickerFontFB, 1, 2, 1, 1); appearanceGrid->attach(*navGuideColorLbl, 3, 2, 1, 1); appearanceGrid->attach(*navGuideColorCB, 4, 2, 1, 1); From b98f73e51bd8c227582fb2b18732517884e21ab9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 21 Nov 2018 15:17:11 +0100 Subject: [PATCH 196/348] Use unsigned int to avoid undefined behaviour when shifting a signed by 31 bits --- rtgui/dirbrowser.cc | 2 +- rtgui/dirbrowser.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 9ed8455fe..81ee85fed 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -220,7 +220,7 @@ void DirBrowser::updateDirTree (const Gtk::TreeModel::iterator& iter) void DirBrowser::updateVolumes () { - int nvolumes = GetLogicalDrives (); + unsigned int nvolumes = GetLogicalDrives (); if (nvolumes != volumes) { GThreadLock lock; diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h index e8eefdd36..a3f451101 100644 --- a/rtgui/dirbrowser.h +++ b/rtgui/dirbrowser.h @@ -84,7 +84,7 @@ private: bool expandSuccess; #ifdef WIN32 - int volumes; + unsigned int volumes; public: void updateVolumes (); void updateDirTree (const Gtk::TreeModel::iterator& iter); From 7f32010895bdb9ddcb7ed4b90147b724a2412d50 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 21 Nov 2018 16:21:05 +0100 Subject: [PATCH 197/348] Fix coverity issues --- rtexif/rtexif.cc | 64 +++++++++++++++++++++------------------- rtexif/rtexif.h | 12 ++++---- rtgui/mydiagonalcurve.cc | 8 ++--- rtgui/myflatcurve.cc | 8 ++--- 4 files changed, 47 insertions(+), 45 deletions(-) diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 893d0fe22..f1c807126 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -720,7 +720,7 @@ int TagDirectory::write (int start, unsigned char* buffer) return maxPos; } -void TagDirectory::applyChange (std::string name, Glib::ustring value) +void TagDirectory::applyChange (const std::string &name, const Glib::ustring &value) { std::string::size_type dp = name.find_first_of ('.'); @@ -842,14 +842,15 @@ TagDirectoryTable::TagDirectoryTable (TagDirectory* p, FILE* f, int memsize, int : TagDirectory (p, ta, border), zeroOffset (offs), valuesSize (memsize), defaultType ( type ) { values = new unsigned char[valuesSize]; - fread (values, 1, valuesSize, f); + if (fread (values, 1, valuesSize, f) == static_cast(valuesSize)) { - // Security ; will avoid to read above the buffer limit if the RT's tagDirectoryTable is longer that what's in the file - int count = valuesSize / getTypeSize (type); + // Security ; will avoid to read above the buffer limit if the RT's tagDirectoryTable is longer that what's in the file + int count = valuesSize / getTypeSize (type); - for (const TagAttrib* tattr = ta; tattr->ignore != -1 && tattr->ID < count; ++tattr) { - Tag* newTag = new Tag (this, tattr, (values + zeroOffset + tattr->ID * getTypeSize (type)), tattr->type == AUTO ? type : tattr->type); - tags.push_back (newTag); // Here we can insert more tag in the same offset because of bitfield meaning + for (const TagAttrib* tattr = ta; tattr->ignore != -1 && tattr->ID < count; ++tattr) { + Tag* newTag = new Tag (this, tattr, (values + zeroOffset + tattr->ID * getTypeSize (type)), tattr->type == AUTO ? type : tattr->type); + tags.push_back (newTag); // Here we can insert more tag in the same offset because of bitfield meaning + } } } TagDirectory* TagDirectoryTable::clone (TagDirectory* parent) @@ -1215,32 +1216,33 @@ Tag::Tag (TagDirectory* p, FILE* f, int base) defsubdirs: // read value value = new unsigned char [valuesize]; - fread (value, 1, valuesize, f); - - // count the number of valid subdirs - int sdcount = count; - - if (sdcount > 0) { - if (parent->getAttribTable() == olympusAttribs) { - sdcount = 1; - } - - // allocate space - directory = new TagDirectory*[sdcount + 1]; - - // load directories - for (size_t j = 0, i = 0; j < count; j++, i++) { - int newpos = base + toInt (j * 4, LONG); - fseek (f, newpos, SEEK_SET); - directory[i] = new TagDirectory (parent, f, base, attrib->subdirAttribs, order); - } - - // set the terminating NULL - directory[sdcount] = nullptr; - } else { + if (fread (value, 1, valuesize, f) != static_cast(valuesize)) { type = INVALID; - } + } else { + // count the number of valid subdirs + int sdcount = count; + if (sdcount > 0) { + if (parent->getAttribTable() == olympusAttribs) { + sdcount = 1; + } + + // allocate space + directory = new TagDirectory*[sdcount + 1]; + + // load directories + for (size_t j = 0, i = 0; j < count; j++, i++) { + int newpos = base + toInt (j * 4, LONG); + fseek (f, newpos, SEEK_SET); + directory[i] = new TagDirectory (parent, f, base, attrib->subdirAttribs, order); + } + + // set the terminating NULL + directory[sdcount] = nullptr; + } else { + type = INVALID; + } + } // seek back to the saved position fseek (f, save, SEEK_SET); return; diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index 1beba92ec..d7004f388 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -155,11 +155,11 @@ public: virtual Tag* findTagUpward (const char* name) const; bool getXMPTagValue (const char* name, char* value) const; - void keepTag (int ID); - virtual void addTag (Tag* a); - virtual void addTagFront (Tag* a); - virtual void replaceTag (Tag* a); - inline Tag* getTagByIndex (int ix) + void keepTag (int ID); + void addTag (Tag* a); + void addTagFront (Tag* a); + void replaceTag (Tag* a); + inline Tag* getTagByIndex (int ix) { return tags[ix]; } @@ -171,7 +171,7 @@ public: virtual int calculateSize (); virtual int write (int start, unsigned char* buffer); virtual TagDirectory* clone (TagDirectory* parent); - virtual void applyChange (std::string field, Glib::ustring value); + void applyChange (const std::string &field, const Glib::ustring &value); virtual void printAll (unsigned int level = 0) const; // reentrant debug function, keep level=0 on first call ! virtual bool CPBDump (const Glib::ustring &commFName, const Glib::ustring &imageFName, const Glib::ustring &profileFName, const Glib::ustring &defaultPParams, diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index 0bc58f28e..5eacdcc46 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -545,7 +545,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) double minDistanceY = double(MIN_DISTANCE) / double(graphH - 1); switch (event->type) { - case Gdk::BUTTON_PRESS: + case GDK_BUTTON_PRESS: snapToElmt = -100; if (curve.type != DCT_Parametric) { @@ -694,7 +694,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) break; - case Gdk::BUTTON_RELEASE: + case GDK_BUTTON_RELEASE: snapToElmt = -100; if (curve.type != DCT_Parametric && edited_point == -1) { @@ -755,7 +755,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) break; - case Gdk::LEAVE_NOTIFY: + case GDK_LEAVE_NOTIFY: // Pointer can LEAVE even when dragging the point, so we don't modify the cursor in this case // The cursor will have to LEAVE another time after the drag... @@ -772,7 +772,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) retval = true; break; - case Gdk::MOTION_NOTIFY: + case GDK_MOTION_NOTIFY: snapToElmt = -100; if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS) { diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index 70fc0c7d7..9b64ee516 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -613,7 +613,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) switch (event->type) { - case Gdk::BUTTON_PRESS: + case GDK_BUTTON_PRESS: if (edited_point == -1) { //curve.type!=FCT_Parametric) { if (event->button.button == 1) { buttonPressed = true; @@ -816,7 +816,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) break; - case Gdk::BUTTON_RELEASE: + case GDK_BUTTON_RELEASE: if (edited_point == -1) { //curve.type!=FCT_Parametric) { if (buttonPressed && event->button.button == 1) { buttonPressed = false; @@ -908,7 +908,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) break; - case Gdk::MOTION_NOTIFY: + case GDK_MOTION_NOTIFY: if (curve.type == FCT_Linear || curve.type == FCT_MinMaxCPoints) { int previous_lit_point = lit_point; @@ -1178,7 +1178,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) retval = true; break; - case Gdk::LEAVE_NOTIFY: + case GDK_LEAVE_NOTIFY: // Pointer can LEAVE even when dragging the point, so we don't modify the cursor in this case // The cursor will have to LEAVE another time after the drag... From 71b5cc6d65a3de083b6e60cabaab4882f97879b7 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 21 Nov 2018 17:35:53 +0100 Subject: [PATCH 198/348] Fix coverity issues --- rtengine/FTblockDN.cc | 6 +- rtengine/ciecam02.cc | 170 +++++++++++++++++++++--------------------- rtengine/ciecam02.h | 16 ++-- rtengine/curves.cc | 6 +- rtengine/curves.h | 2 +- rtengine/improcfun.cc | 12 +-- rtengine/ipresize.cc | 3 +- 7 files changed, 108 insertions(+), 107 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index dfab72089..1a3b80036 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -807,8 +807,8 @@ BENCHFUN #endif const std::size_t blox_array_size = denoiseNestedLevels * numthreads; - float *LbloxArray[blox_array_size] = {}; - float *fLbloxArray[blox_array_size] = {}; + float *LbloxArray[blox_array_size]; + float *fLbloxArray[blox_array_size]; for (std::size_t i = 0; i < blox_array_size; ++i) { LbloxArray[i] = nullptr; @@ -1748,7 +1748,7 @@ BENCHFUN } - for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) { + for (size_t i = 0; i < blox_array_size; ++i) { if (LbloxArray[i]) { fftwf_free(LbloxArray[i]); } diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index c5e172478..86b67e000 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -191,26 +191,26 @@ float Ciecam02::calculate_fl_from_la_ciecam02float ( float la ) return (0.2f * k * la5) + (0.1f * (1.0f - k) * (1.0f - k) * std::cbrt (la5)); } -float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int gamu ) +float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb ) { float r, g, b; float rc, gc, bc; float rp, gp, bp; float rpa, gpa, bpa; - gamu = 1; - xyz_to_cat02float ( r, g, b, x, y, z, gamu ); +// gamu = 1; + xyz_to_cat02float ( r, g, b, x, y, z); rc = r * (((y * d) / r) + (1.0f - d)); gc = g * (((y * d) / g) + (1.0f - d)); bc = b * (((y * d) / b) + (1.0f - d)); - cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu ); + cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); - if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - rp = MAXR (rp, 0.0f); - gp = MAXR (gp, 0.0f); - bp = MAXR (bp, 0.0f); - } +// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + rp = MAXR (rp, 0.0f); + gp = MAXR (gp, 0.0f); + bp = MAXR (bp, 0.0f); +// } rpa = nonlinear_adaptationfloat ( rp, fl ); gpa = nonlinear_adaptationfloat ( gp, fl ); @@ -219,22 +219,22 @@ float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, f return ((2.0f * rpa) + gpa + ((1.0f / 20.0f) * bpa) - 0.305f) * nbb; } -void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int gamu ) +void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z) { - gamu = 1; - - if (gamu == 0) { - r = ( 0.7328f * x) + (0.4296f * y) - (0.1624f * z); - g = (-0.7036f * x) + (1.6975f * y) + (0.0061f * z); - b = ( 0.0030f * x) + (0.0136f * y) + (0.9834f * z); - } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - //r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z); - //g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z); - //b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z); - r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li - g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z); - b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z); - } +// gamu = 1; +// +// if (gamu == 0) { +// r = ( 0.7328f * x) + (0.4296f * y) - (0.1624f * z); +// g = (-0.7036f * x) + (1.6975f * y) + (0.0061f * z); +// b = ( 0.0030f * x) + (0.0136f * y) + (0.9834f * z); +// } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + //r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z); + //g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z); + //b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z); + r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li + g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z); + b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z); +// } } #ifdef __SSE2__ void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z ) @@ -246,22 +246,22 @@ void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vf } #endif -void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int gamu ) +void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b) { - gamu = 1; - - if (gamu == 0) { - x = ( 1.096124f * r) - (0.278869f * g) + (0.182745f * b); - y = ( 0.454369f * r) + (0.473533f * g) + (0.072098f * b); - z = (-0.009628f * r) - (0.005698f * g) + (1.015326f * b); - } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - //x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b); - //y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b); - //z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b); - x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li - y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b); - z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b); - } +// gamu = 1; +// +// if (gamu == 0) { +// x = ( 1.096124f * r) - (0.278869f * g) + (0.182745f * b); +// y = ( 0.454369f * r) + (0.473533f * g) + (0.072098f * b); +// z = (-0.009628f * r) - (0.005698f * g) + (1.015326f * b); +// } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + //x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b); + //y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b); + //z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b); + x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li + y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b); + z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b); +// } } #ifdef __SSE2__ void Ciecam02::cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b ) @@ -288,19 +288,19 @@ void Ciecam02::hpe_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vflo } #endif -void Ciecam02::cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int gamu ) +void Ciecam02::cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b) { - gamu = 1; - - if (gamu == 0) { - rh = ( 0.7409792f * r) + (0.2180250f * g) + (0.0410058f * b); - gh = ( 0.2853532f * r) + (0.6242014f * g) + (0.0904454f * b); - bh = (-0.0096280f * r) - (0.0056980f * g) + (1.0153260f * b); - } else if (gamu == 1) { //Changjun Li - rh = ( 0.550930835f * r) + (0.519435987f * g) - ( 0.070356303f * b); - gh = ( 0.055954056f * r) + (0.89973132f * g) + (0.044315524f * b); - bh = (0.0f * r) - (0.0f * g) + (1.0f * b); - } +// gamu = 1; +// +// if (gamu == 0) { +// rh = ( 0.7409792f * r) + (0.2180250f * g) + (0.0410058f * b); +// gh = ( 0.2853532f * r) + (0.6242014f * g) + (0.0904454f * b); +// bh = (-0.0096280f * r) - (0.0056980f * g) + (1.0153260f * b); +// } else if (gamu == 1) { //Changjun Li + rh = ( 0.550930835f * r) + (0.519435987f * g) - ( 0.070356303f * b); + gh = ( 0.055954056f * r) + (0.89973132f * g) + (0.044315524f * b); + bh = (0.0f * r) - (0.0f * g) + (1.0f * b); +// } } #ifdef __SSE2__ @@ -407,7 +407,7 @@ void Ciecam02::calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, v #endif -void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, +void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &wh, float &pfl, float &fl, float &c) { n = yb / yw; @@ -421,7 +421,7 @@ void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float fl = calculate_fl_from_la_ciecam02float ( la ); nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f ); cz = 1.48f + sqrt ( n ); - aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, gamu ); + aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb); wh = ( 4.0f / c ) * ( aw + 4.0f ) * pow_F ( fl, 0.25f ); pfl = pow_F ( fl, 0.25f ); #ifdef _DEBUG @@ -433,7 +433,7 @@ void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float #endif } -void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, +void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &fl) { n = yb / yw; @@ -448,7 +448,7 @@ void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float fl = calculate_fl_from_la_ciecam02float ( la ); nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f ); cz = 1.48f + sqrt ( n ); - aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, gamu ); + aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb); #ifdef _DEBUG if (settings->verbose) { @@ -460,7 +460,7 @@ void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q, float &M, float &s, float aw, float fl, float wh, float x, float y, float z, float xw, float yw, float zw, - float c, float nc, int gamu, float pow1, float nbb, float ncb, float pfl, float cz, float d) + float c, float nc, float pow1, float nbb, float ncb, float pfl, float cz, float d) { float r, g, b; @@ -471,20 +471,20 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q float a, ca, cb; float e, t; float myh; - gamu = 1; - xyz_to_cat02float ( r, g, b, x, y, z, gamu ); - xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu ); +// gamu = 1; + xyz_to_cat02float ( r, g, b, x, y, z); + xyz_to_cat02float ( rw, gw, bw, xw, yw, zw); rc = r * (((yw * d) / rw) + (1.f - d)); gc = g * (((yw * d) / gw) + (1.f - d)); bc = b * (((yw * d) / bw) + (1.f - d)); - cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu ); + cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); - if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - rp = MAXR (rp, 0.0f); - gp = MAXR (gp, 0.0f); - bp = MAXR (bp, 0.0f); - } +// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + rp = MAXR (rp, 0.0f); + gp = MAXR (gp, 0.0f); + bp = MAXR (bp, 0.0f); +// } rpa = nonlinear_adaptationfloat ( rp, fl ); gpa = nonlinear_adaptationfloat ( gp, fl ); @@ -501,9 +501,9 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; - if (gamu == 1) { - a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk - } +// if (gamu == 1) { + a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk +// } J = pow_F ( a / aw, c * cz * 0.5f); @@ -590,20 +590,20 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f float a, ca, cb; float e, t; float myh; - int gamu = 1; - xyz_to_cat02float ( r, g, b, x, y, z, gamu ); - xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu ); +// int gamu = 1; + xyz_to_cat02float ( r, g, b, x, y, z); + xyz_to_cat02float ( rw, gw, bw, xw, yw, zw); rc = r * (((yw * d) / rw) + (1.f - d)); gc = g * (((yw * d) / gw) + (1.f - d)); bc = b * (((yw * d) / bw) + (1.f - d)); - cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu ); + cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); - if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - rp = MAXR (rp, 0.0f); - gp = MAXR (gp, 0.0f); - bp = MAXR (bp, 0.0f); - } +// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + rp = MAXR (rp, 0.0f); + gp = MAXR (gp, 0.0f); + bp = MAXR (bp, 0.0f); +// } #ifdef __SSE2__ vfloat pv = _mm_setr_ps(rp, gp, bp, 1.f); @@ -629,9 +629,9 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; - if (gamu == 1) { - a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk - } +// if (gamu == 1) { + a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk +// } J = pow_F ( a / aw, c * cz * 0.5f); @@ -646,7 +646,7 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, float C, float h, float xw, float yw, float zw, - float c, float nc, int gamu, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw) + float c, float nc, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw) { float r, g, b; float rc, gc, bc; @@ -655,8 +655,8 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl float rw, gw, bw; float a, ca, cb; float e, t; - gamu = 1; - xyz_to_cat02float(rw, gw, bw, xw, yw, zw, gamu); +// gamu = 1; + xyz_to_cat02float(rw, gw, bw, xw, yw, zw); e = ((961.53846f) * nc * ncb) * (xcosf(h * rtengine::RT_PI_F_180 + 2.0f) + 3.8f); #ifdef __SSE2__ @@ -686,13 +686,13 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, 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); + xyz_to_cat02float(rc, gc, bc, x, y, z); 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); } #ifdef __SSE2__ diff --git a/rtengine/ciecam02.h b/rtengine/ciecam02.h index d55b1a405..68763b965 100644 --- a/rtengine/ciecam02.h +++ b/rtengine/ciecam02.h @@ -30,9 +30,9 @@ class Ciecam02 private: static float d_factorfloat ( float f, float la ); static float calculate_fl_from_la_ciecam02float ( float la ); - static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int gamu ); - static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int gamu ); - static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int gamu ); + static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb); + static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z); + static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b); #ifdef __SSE2__ static void xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z ); @@ -46,7 +46,7 @@ private: static void calculate_abfloat ( float &aa, float &bb, float h, float e, float t, float nbb, float a ); static void Aab_to_rgbfloat ( float &r, float &g, float &b, float A, float aa, float bb, float nbb ); static void hpe_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b ); - static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int gamu ); + static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b); #ifdef __SSE2__ static vfloat inverse_nonlinear_adaptationfloat ( vfloat c, vfloat fl ); static void calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, vfloat t, vfloat nbb, vfloat a ); @@ -66,7 +66,7 @@ public: static void jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, float C, float h, float xw, float yw, float zw, - float c, float nc, int gamu, float n, float nbb, float ncb, float fl, float cz, float d, float aw ); + float c, float nc, float n, float nbb, float ncb, float fl, float cz, float d, float aw ); #ifdef __SSE2__ static void jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J, vfloat C, vfloat h, @@ -76,10 +76,10 @@ public: /** * Forward transform from XYZ to CIECAM02 JCh. */ - static void initcam1float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, + static void initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &wh, float &pfl, float &fl, float &c); - static void initcam2float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, + static void initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &fl); static void xyz2jch_ciecam02float ( float &J, float &C, float &h, @@ -92,7 +92,7 @@ public: float &Q, float &M, float &s, float aw, float fl, float wh, float x, float y, float z, float xw, float yw, float zw, - float c, float nc, int gamu, float n, float nbb, float ncb, float pfl, float cz, float d ); + float c, float nc, float n, float nbb, float ncb, float pfl, float cz, float d ); #ifdef __SSE2__ static void xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, diff --git a/rtengine/curves.cc b/rtengine/curves.cc index 9e3c6527e..c0f0d9433 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -2040,7 +2040,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float Ciecam02::jch2xyz_ciecam02float( x, y, z, J, C, h, xw, yw, zw, - c, nc, 1, pow1, nbb, ncb, fl, cz, d, aw ); + c, nc, 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. @@ -2123,7 +2123,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float } 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; +float PerceptualToneCurve::f, PerceptualToneCurve::c, PerceptualToneCurve::nc, PerceptualToneCurve::yb, PerceptualToneCurve::la, PerceptualToneCurve::xw, PerceptualToneCurve::yw, PerceptualToneCurve::zw; float PerceptualToneCurve::n, PerceptualToneCurve::d, PerceptualToneCurve::nbb, PerceptualToneCurve::ncb, PerceptualToneCurve::cz, PerceptualToneCurve::aw, PerceptualToneCurve::wh, PerceptualToneCurve::pfl, PerceptualToneCurve::fl, PerceptualToneCurve::pow1; void PerceptualToneCurve::init() @@ -2139,7 +2139,7 @@ void PerceptualToneCurve::init() c = 0.69f; nc = 1.00f; - Ciecam02::initcam1float(gamut, yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb, + Ciecam02::initcam1float(yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c); pow1 = pow_F( 1.64f - pow_F( 0.29f, n ), 0.73f ); diff --git a/rtengine/curves.h b/rtengine/curves.h index f1b402dd3..d9ae15183 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -920,7 +920,7 @@ private: static float cf_range[2]; static float cf[1000]; // for ciecam02 - static float f, c, nc, yb, la, xw, yw, zw, gamut; + static float f, c, nc, yb, la, xw, yw, zw; static float n, d, nbb, ncb, cz, aw, wh, pfl, fl, pow1; static void cubic_spline(const float x[], const float y[], const int len, const float out_x[], float out_y[], const int out_len); diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index de4a93556..268c1e6df 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -910,12 +910,12 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw float cz, wh, pfl; - Ciecam02::initcam1float (gamu, yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c); + Ciecam02::initcam1float (yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c); //printf ("wh=%f \n", wh); 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); + Ciecam02::initcam2float (yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj); #ifdef __SSE2__ const float reccmcz = 1.f / (c2 * czj); #endif @@ -1030,7 +1030,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Q, M, s, aw, fl, wh, x, y, z, xw1, yw1, zw1, - c, nc, gamu, pow1, nbb, ncb, pfl, cz, d); + c, nc, pow1, nbb, ncb, pfl, cz, d); Jbuffer[k] = J; Cbuffer[k] = C; hbuffer[k] = h; @@ -1068,7 +1068,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Q, M, s, aw, fl, wh, x, y, z, xw1, yw1, zw1, - c, nc, gamu, pow1, nbb, ncb, pfl, cz, d); + c, nc, pow1, nbb, ncb, pfl, cz, d); #endif float Jpro, Cpro, hpro, Qpro, Mpro, spro; Jpro = J; @@ -1483,7 +1483,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, - c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); + c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj); float x, y, z; x = xx * 655.35f; y = yy * 655.35f; @@ -1816,7 +1816,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, - c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); + c2, nc2, 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; diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index f33b8f0c9..2d12417e1 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -231,7 +231,8 @@ void ImProcFunctions::Lanczos (const LabImage* src, LabImage* dst, float scale) float* const la = aligned_buffer_la.data; float* const lb = aligned_buffer_lb.data; // weights for interpolation in y direction - float w[support] ALIGNED64 = {}; + float w[support] ALIGNED64; + memset(w, 0, sizeof(w)); // Phase 2: do actual interpolation #ifdef _OPENMP From 2d0d2a44501983386817680f35c383f0ba251be8 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Thu, 22 Nov 2018 08:52:30 +0100 Subject: [PATCH 199/348] Update Deutsch locale (#5005) --- rtdata/languages/Deutsch | 175 ++++++++++++++++++++------------------- 1 file changed, 88 insertions(+), 87 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 6baf1640c..269d90bc9 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -71,6 +71,7 @@ #70 25.07.2018 Korrekturen (TooWaBoo) RT 5.4 #71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5 #72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5 +#73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -152,15 +153,15 @@ EXPORT_BYPASS_DEFRINGE;Farbsaum entfernen überspringen EXPORT_BYPASS_DIRPYRDENOISE;Rauschreduzierung überspringen EXPORT_BYPASS_DIRPYREQUALIZER;Detailebenenkontrast überspringen EXPORT_BYPASS_EQUALIZER;Waveletebenen überspringen -EXPORT_BYPASS_RAW_CA;CA-Korrektur überspringen [RAW] -EXPORT_BYPASS_RAW_CCSTEPS;Falschfarbenreduzierung überspringen\n[RAW] -EXPORT_BYPASS_RAW_DCB_ENHANCE;DCB-Verbesserungsstufen überspringen\n[RAW] -EXPORT_BYPASS_RAW_DCB_ITERATIONS;DCB-Interationen überspringen [RAW] -EXPORT_BYPASS_RAW_DF;Dunkelbild überspringen [RAW] -EXPORT_BYPASS_RAW_FF;Weißbild überspringen [RAW] -EXPORT_BYPASS_RAW_GREENTHRESH;Grün-Ausgleich überspringen [RAW] -EXPORT_BYPASS_RAW_LINENOISE;Zeilenrauschfilter überspringen [RAW] -EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;LMMSE-Verbesserungsstufen überspringen [RAW] +EXPORT_BYPASS_RAW_CA;CA-Korrektur überspringen +EXPORT_BYPASS_RAW_CCSTEPS;Falschfarbenreduzierung überspringen +EXPORT_BYPASS_RAW_DCB_ENHANCE;DCB-Verbesserungsstufen überspringen +EXPORT_BYPASS_RAW_DCB_ITERATIONS;DCB-Interationen überspringen +EXPORT_BYPASS_RAW_DF;Dunkelbild überspringen +EXPORT_BYPASS_RAW_FF;Weißbild überspringen +EXPORT_BYPASS_RAW_GREENTHRESH;Grün-Ausgleich überspringen +EXPORT_BYPASS_RAW_LINENOISE;Zeilenrauschfilter überspringen +EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;LMMSE-Verbesserungsstufen überspringen EXPORT_BYPASS_SHARPENEDGE;Kantenschärfung überspringen EXPORT_BYPASS_SHARPENING;Schärfung überspringen EXPORT_BYPASS_SHARPENMICRO;Mikrokontrast überspringen @@ -173,7 +174,7 @@ EXPORT_PIPELINE;Verarbeitungspipeline EXPORT_PUTTOQUEUEFAST; Zur Warteschlange “Schneller Export“ hinzufügen EXPORT_RAW_DMETHOD;Demosaikmethode EXPORT_USE_FAST_PIPELINE;Priorität Geschwindigkeit -EXPORT_USE_FAST_PIPELINE_TIP;Wendet alle Bearbeitungsschritte, im Gegensatz\nzu „Standard“ , auf das bereits skalierte Bild an.\nDadurch steigt die Verarbeitungsgeschwindigkeit\nauf Kosten der Qualität. +EXPORT_USE_FAST_PIPELINE_TIP;Wendet alle Bearbeitungsschritte, im Gegensatz\nzu „Standard“, auf das bereits skalierte Bild an.\nDadurch steigt die Verarbeitungsgeschwindigkeit\nauf Kosten der Qualität. EXPORT_USE_NORMAL_PIPELINE;Standard EXTPROGTARGET_1;RAW EXTPROGTARGET_2;Stapelverarbeitung beendet @@ -354,7 +355,7 @@ HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung HISTORY_MSG_33;(Schärfung) - RLD\nIterationen HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung -HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur +HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA HISTORY_MSG_37;(Belichtung) - Auto HISTORY_MSG_38;(Weißabgleich) - Methode HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur @@ -795,7 +796,7 @@ HISTORY_MSG_491;(Weißabgleich) HISTORY_MSG_492;(RGB-Kurven) HISTORY_MSG_493;(L*a*b*) HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken -HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b* - Farbkorrektur +HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur HISTORY_MSG_DUALDEMOSAIC_CONTRAST;(Sensor-Matrix)\nFarbinterpolation\nKontrastschwelle HISTORY_MSG_HISTMATCHING;(Belichtung)\nAuto-Tonwertkurve HISTORY_MSG_ICM_OUTPUT_PRIMARIES;(Farbmanagement)\nAusgabeprofil\nVorlagen @@ -1176,7 +1177,7 @@ PREFERENCES_HISTOGRAM_TOOLTIP;Wenn aktiviert, wird das Arbeitsprofil für die Da PREFERENCES_HLTHRESHOLD;Lichter - Schwelle PREFERENCES_ICCDIR;ICC-Profile-Verzeichnis PREFERENCES_IMG_RELOAD_NEEDED;Änderungen werden nur auf neu geöffnete Bilder angewendet -PREFERENCES_IMPROCPARAMS;Standard-Bildverarbeitungsparameter +PREFERENCES_IMPROCPARAMS;Standard-Bearbeitungsprofile PREFERENCES_INSPECT_LABEL;Bildzwischenspeicher PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximale Anzahl Bilder im Zwischenspeicher PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Legt die maximale Anzahl Bilder fest, die im Zwischenspeicher gehalten werden, wenn man in der Dateiverwaltung mit der Maus über ein Bild fährt.\n\nAuf Systemen mit nicht mehr als 2GB RAM, sollte der Wert nicht größer als 2 gewählt werden. @@ -1228,9 +1229,9 @@ PREFERENCES_PROFILEHANDLING;Behandlung der Bearbeitungsprofile PREFERENCES_PROFILELOADPR;Priorität der Profile beim Laden PREFERENCES_PROFILEPRCACHE;Bearbeitungsprofil im Festplatten-Cache PREFERENCES_PROFILEPRFILE;Bearbeitungsprofil welches dem geladenen Bild beiliegt (Sidecar) -PREFERENCES_PROFILESAVEBOTH;Verarbeitungsparameter im Festplatten-Cache und zusammen mit dem Bild speichern -PREFERENCES_PROFILESAVECACHE;Verarbeitungsparameter im Festplatten-Cache speichern -PREFERENCES_PROFILESAVEINPUT;Verarbeitungsparameter zusammen mit dem Bild speichern (Sidecar) +PREFERENCES_PROFILESAVEBOTH;Bearbeitungsprofile im Festplatten-Cache und zusammen mit dem Bild speichern +PREFERENCES_PROFILESAVECACHE;Bearbeitungsprofile im Festplatten-Cache speichern +PREFERENCES_PROFILESAVEINPUT;Bearbeitungsprofile zusammen mit dem Bild speichern (Sidecar) PREFERENCES_PROFILESAVELOCATION;Speicherort der Profile PREFERENCES_PROFILE_NONE;Kein Farbprofil PREFERENCES_PROPERTY;Eigenschaft @@ -1330,7 +1331,7 @@ SAVEDLG_PUTTOQUEUE;Zur Warteschlange hinzufügen SAVEDLG_PUTTOQUEUEHEAD;An den Anfang der Warteschlange hinzufügen SAVEDLG_PUTTOQUEUETAIL;An das Ende der Warteschlange hinzufügen SAVEDLG_SAVEIMMEDIATELY;Sofort speichern -SAVEDLG_SAVESPP;Verarbeitungsparameter mit dem Bild speichern +SAVEDLG_SAVESPP;Bearbeitungsprofile mit dem Bild speichern SAVEDLG_SUBSAMP;Komprimierung SAVEDLG_SUBSAMP_1;Beste Kompression SAVEDLG_SUBSAMP_2;Ausgeglichen @@ -1506,7 +1507,7 @@ TP_COLORTONING_HIGHLIGHT;Lichter TP_COLORTONING_HUE;Farbton TP_COLORTONING_LAB;L*a*b*-Überlagerung TP_COLORTONING_LABEL;Farbanpassungen -TP_COLORTONING_LABGRID;L*a*b* - Farbkorrektur +TP_COLORTONING_LABGRID;L*a*b*-Farbkorrektur TP_COLORTONING_LABGRID_VALUES;HL: a=%1, b=%2\nS: a=%3, b=%4 TP_COLORTONING_LUMA;Luminanz TP_COLORTONING_LUMAMODE;Luminanz schützen @@ -1546,11 +1547,11 @@ TP_CROP_GTTRIANGLE2;Goldenes Dreieck 2 TP_CROP_GUIDETYPE;Hilfslinien: TP_CROP_H;Höhe TP_CROP_LABEL;Ausschnitt -TP_CROP_PPI;PPI= +TP_CROP_PPI;PPI = TP_CROP_SELECTCROP;Ausschnitt wählen TP_CROP_W;Breite -TP_CROP_X;x -TP_CROP_Y;y +TP_CROP_X;Links +TP_CROP_Y;Oben TP_DARKFRAME_AUTOSELECT;Automatische Auswahl TP_DARKFRAME_LABEL;Dunkelbild TP_DEFRINGE_LABEL;Farbsaum entfernen (Defringe) @@ -1835,7 +1836,7 @@ TP_PREPROCESS_PDAFLINESFILTER;PDAF-Zeilenfilter TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Minimiert Streifenrauschen, das bei Gegenlichtaufnahmen mit\nsichtbaren Flares einiger spiegellosen Sony-Kameras entsteht. TP_PRSHARPENING_LABEL;Nach Skalierung schärfen TP_PRSHARPENING_TOOLTIP;Schärft das Bild nach der Größenänderung.\nFunktioniert nur mit der Methode “Lanczos“.\nDas Ergebnis wird nicht in RawTherapee\nangezeigt.\n\nWeitere Informationen finden Sie auf “RawPedia“. -TP_RAWCACORR_AUTO;Automatische Korrektur +TP_RAWCACORR_AUTO;Autokorrektur TP_RAWCACORR_AUTOIT;Iterationen TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_RAWCACORR_CABLUE;Blau @@ -2331,68 +2332,68 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!DYNPROFILEEDITOR_IMGTYPE_ANY;Any -!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR -!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift -!DYNPROFILEEDITOR_IMGTYPE_STD;Standard -!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles -!HISTORY_MSG_489;DRC - Detail -!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask -!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask -!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List -!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask -!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth -!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal -!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map -!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength -!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold -!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace -!PARTIALPASTE_DEHAZE;Haze removal -!PREFERENCES_APPEARANCE;Appearance -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit -!PREFERENCES_CACHECLEAR;Clear -!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: -!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: -!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: -!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser -!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance -!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. -!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions -!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -!TP_COLORTONING_LABREGION_HUEMASK;H -!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -!TP_COLORTONING_LABREGION_LIST_TITLE;Correction -!TP_COLORTONING_LABREGION_MASK;Mask -!TP_COLORTONING_LABREGION_SATURATION;Saturation -!TP_COLORTONING_LABREGION_SHOWMASK;Show mask -!TP_DEHAZE_DEPTH;Depth -!TP_DEHAZE_LABEL;Haze Removal -!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map -!TP_DEHAZE_STRENGTH;Strength -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically -!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually -!TP_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. -!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -!TP_LENSPROFILE_USE_CA;Chromatic aberration -!TP_LENSPROFILE_USE_GEOMETRIC;Geometric -!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: -!TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. -!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). -!TP_TM_FATTAL_THRESHOLD;Detail -!TP_WBALANCE_PICKER;Pick +DYNPROFILEEDITOR_IMGTYPE_ANY;Alle +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel-Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard +FILEBROWSER_CACHECLEARFROMFULL;Alle zwischengespeicherte Profile löschen +FILEBROWSER_CACHECLEARFROMPARTIAL;Alle NICHT zwischengespeicherte Profile löschen +HISTORY_MSG_489;(Dynamikkompression)\nDetails +HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske +HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen +HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe +HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen +HISTORY_MSG_DEHAZE_STRENGTH;(Bildschleier entfernen)\nIntensität +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;(Sensor—Matrix)\nFarbinterpolation\nAuto-Kontrastschwelle +HISTORY_MSG_SH_COLORSPACE;Farbraum +PARTIALPASTE_DEHAZE;Bildschleier entfernen +PREFERENCES_APPEARANCE;Oberflächendesign (erfordert Neustart) +PREFERENCES_APPEARANCE_COLORPICKERFONT;Schriftart Farbwähler +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Farbe/Transparenz für Schnittmaske +PREFERENCES_APPEARANCE_MAINFONT;Schriftart: +PREFERENCES_APPEARANCE_THEME;Oberflächendesign +PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern +PREFERENCES_CACHECLEAR;Löschen +PREFERENCES_CACHECLEAR_ALL;Alle Dateien im Zwischenspeicher löschen: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Alle Dateien im Zwischenspeicher löschen mit Ausnahme der Bearbeitungsprofile: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Alle Bearbeitungsprofile im Zwischenspeicher löschen: +PREFERENCES_CACHECLEAR_SAFETY;Nur Dateien im Zwischenspeicher werden gelöscht. Bearbeitungsprofile im Bildordner bleiben unberührt. +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar +TP_COLORAPP_ABSOLUTELUMINANCE;Absolute Luminanz +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Bei manueller Einstellung werden Werte über 65 empfohlen. +TP_COLORAPP_MEANLUMINANCE;Mittlere Luminanz (Yb%) +TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur +TP_COLORTONING_LABREGION_MASK;Maske +TP_COLORTONING_LABREGION_SATURATION;Sättigung +TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen +TP_DEHAZE_DEPTH;Tiefe +TP_DEHAZE_LABEL;Bildschleier entfernen +TP_DEHAZE_SHOW_DEPTH_MAP;Maske anzeigen +TP_DEHAZE_STRENGTH;Intensität +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei +TP_LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun) +TP_LENSPROFILE_LENS_WARNING;Achtung: Der Crop-Faktor des Profils entspricht\nnicht dem der Kamera.\nDie Ergebnisse sind möglicherweise falsch. +TP_LENSPROFILE_MODE_HEADER;Profil auswählen +TP_LENSPROFILE_USE_CA;CA +TP_LENSPROFILE_USE_GEOMETRIC;Verzeichnung +TP_LENSPROFILE_USE_HEADER;Korrektur auswählen +TP_LENSPROFILE_USE_VIGNETTING;Vignettierung +TP_RAWCACORR_AUTOIT_TOOLTIP;Diese Einstellung ist verfügbar, wenn "Autokorrektur" aktiviert ist.\nDie Autokorrektur ist konservativ, d.h. sie korrigiert häufig nicht alle\nchromatischen Aberrationen. Um die verbleibenden chromatischen\nAberrationen zu korrigieren, können Sie bis zu fünf Iterationen\nverwenden. Jede Iteration verringert die verbleibende chromatische\nAberration auf Kosten zusätzlicher Verarbeitungszeit. +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto-Kontrastschwelle +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Wenn das Kontrollkästchen aktiviert ist (empfohlen), berechnet\nRawTherapee einen optimalen Wert auf der Grundlage homogener\nBereiche im Bild. Wenn kein homogener Bereich vorhanden ist oder\ndas Bild zu sehr rauscht, wird der Wert auf 0 gesetzt. +TP_TM_FATTAL_THRESHOLD;Details +TP_WBALANCE_PICKER;Farbwähler From 546c8ca381d6da315fb0db783412732a55ce12c0 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 22 Nov 2018 08:55:08 +0100 Subject: [PATCH 200/348] Removed obsolete PREFERENCES_CIEART* keys --- rtdata/languages/Chinese (Simplified) | 4 ---- rtdata/languages/Deutsch | 4 ---- rtdata/languages/Espanol | 3 --- rtdata/languages/Francais | 4 ---- rtdata/languages/Italiano | 3 --- rtdata/languages/Nederlands | 4 ---- rtdata/languages/Polish | 3 --- rtdata/languages/Polish (Latin Characters) | 3 --- rtdata/languages/Russian | 3 --- rtdata/languages/Serbian (Cyrilic Characters) | 3 --- rtdata/languages/Serbian (Latin Characters) | 3 --- rtdata/languages/Swedish | 4 ---- 12 files changed, 41 deletions(-) diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 850d028b2..d46b9f6f7 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -496,10 +496,6 @@ PREFERENCES_BLACKBODY;钨丝灯 PREFERENCES_CACHEMAXENTRIES;最大缓存数量 PREFERENCES_CACHEOPTS;缓存选项 PREFERENCES_CACHETHUMBHEIGHT;最大缩略图高度 -PREFERENCES_CIEART;CIECAM02 优化 -PREFERENCES_CIEART_FRAME;CIECAM02-特定选项 -PREFERENCES_CIEART_LABEL;使用单浮点精度而不是双精度 -PREFERENCES_CIEART_TOOLTIP;如果启用, CIECAM02 将使用单精度浮点计算, 结果是品质轻微下降, 速度则可以提高一些 PREFERENCES_CLIPPINGIND;高光溢出提示 PREFERENCES_CLUTSCACHE;HaldCLUT 缓存 PREFERENCES_CLUTSCACHE_LABEL;CLUTs 最大缓存数 diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 269d90bc9..1b737c524 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1099,10 +1099,6 @@ PREFERENCES_BLACKBODY;Wolfram PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Miniaturbilder im Festplatten-Cache PREFERENCES_CACHEOPTS;Einstellungen des Festplatten-Cache für Miniaturbilder PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Miniaturbilder -PREFERENCES_CIEART;CIECAM02-Optimierung -PREFERENCES_CIEART_FRAME;CIECAM02-spezifische Einstellungen -PREFERENCES_CIEART_LABEL;Einfache statt doppelte Genauigkeit -PREFERENCES_CIEART_TOOLTIP;Wenn aktiviert, werden CIECAM02-Berechnungen mit einfacher Genauigkeit statt doppelter durchgeführt. Dadurch wird der Vorgang etwas beschleunigt. Die Qualität nimmt jedoch geringfügig ab. PREFERENCES_CLIPPINGIND;Anzeige zu heller/dunkler Bereiche PREFERENCES_CLUTSCACHE;HaldCLUT-Zwischenspeicher PREFERENCES_CLUTSCACHE_LABEL;Maximale Anzahl CLUTs im Zwischenspeicher diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index abac30029..1a8506d76 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -725,9 +725,6 @@ PREFERENCES_BLACKBODY;Tungsteno PREFERENCES_CACHEMAXENTRIES;Cantidad máxima de entradas en la memoria intermedia PREFERENCES_CACHEOPTS;Opciones de memoria intermedia PREFERENCES_CACHETHUMBHEIGHT;Altura máxima de las miniaturas -PREFERENCES_CIEART;Optimización CIECAM02 -PREFERENCES_CIEART_LABEL;Usar precisión flotante simple en lugar de doble. -PREFERENCES_CIEART_TOOLTIP;Si se habilita, los cálculos CIECAM02 se realizan con precisión flotante simple en lugar de doble. Esto provee un pequeño aumento en la velocidad de cálculo a expensas de una casi imperceptible pérdida de calidad PREFERENCES_CLIPPINGIND;Indicación de recortes PREFERENCES_CLUTSDIR;Directorio HaldCLUT PREFERENCES_CUSTPROFBUILD;Programa generador de perfiles de procesamiento de imagen del usuario diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 976324a51..074efb84d 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1054,10 +1054,6 @@ PREFERENCES_CACHECLEAR_SAFETY;Seuls les fichiers mis en cache sont effacés. Les PREFERENCES_CACHEMAXENTRIES;Nombre maximal d'éléments dans le Cache PREFERENCES_CACHEOPTS;Options du Cache PREFERENCES_CACHETHUMBHEIGHT;Hauteur maximale des vignettes -PREFERENCES_CIEART;CIECAM02 optimisation -PREFERENCES_CIEART_FRAME;Réglages spécifiques à CIECAM02 -PREFERENCES_CIEART_LABEL;Utilise la précision float au lieu de double pour CIECAM02 -PREFERENCES_CIEART_TOOLTIP;Si activé, les calculs CIECAM sont réalisés en précision float au lieu de précision double. Cela amène un léger accroissement de vitesse, et une légère réduction de qualité PREFERENCES_CLIPPINGIND;Indication du dépassement de plage dynamique PREFERENCES_CLUTSCACHE;Cache HaldCLUT PREFERENCES_CLUTSCACHE_LABEL;Nombre maximum de chache CLUT diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 6155ae7b5..d07e50f2b 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -631,9 +631,6 @@ PREFERENCES_BLACKBODY;Tungsteno PREFERENCES_CACHEMAXENTRIES;Numero massimo di voci in memoria PREFERENCES_CACHEOPTS;Opzioni della memoria PREFERENCES_CACHETHUMBHEIGHT;Massima altezza delle miniature -PREFERENCES_CIEART;Ottimizzazione CIECAM02 -PREFERENCES_CIEART_LABEL;Utilizza precisione singola anziché doppia -PREFERENCES_CIEART_TOOLTIP;Se abilitata, i calcoli CIECAM02 sono effettuati in formato a virgola mobile a precisione singola anziché doppia. Questo permette un piccolo incremento di velocità al costo di una trascurabile perdita di qualità. PREFERENCES_CLIPPINGIND;Indicazione di tosaggio PREFERENCES_CUSTPROFBUILD;Generatore profili personalizzati PREFERENCES_CUSTPROFBUILDHINT;File eseguibile (o script) richiamato quando è necessario generare un nuovo profilo per un'immagine.\nIl percorso del file di comunicazione (del tipo *.ini, detto "Keyfile") è aggiunto come parametro da linea di comando. Contiene diversi paramentri necessari agli script e ai dati Exif per generare un profilo di elaborazione.\n\nATTENZIONE:: Devi utilizzare le virgolette doppie quando necessario se utilizzi percorsi contenenti spazi. diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 7afbdb57c..feb3cef52 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -916,10 +916,6 @@ PREFERENCES_BLACKBODY;Tungsten(wolfraam) PREFERENCES_CACHEMAXENTRIES;Maximaal aantal elementen in cache PREFERENCES_CACHEOPTS;Cache-opties PREFERENCES_CACHETHUMBHEIGHT;Maximale hoogte miniaturen -PREFERENCES_CIEART;CIECAM02 optimalisatie -PREFERENCES_CIEART_FRAME;CIECAM02-Specifieke instellingen -PREFERENCES_CIEART_LABEL;Gebruik float precisie in plaats van double -PREFERENCES_CIEART_TOOLTIP;Indien aangezet worden CIECAM02 berekening uitgevoerd in het single-precision floating-point formaat in plaats van double-precision. Dit levert een iets hogere verwerkingssnelheid ten koste van een verwaarloosbaar verlies aan kwaliteit PREFERENCES_CLIPPINGIND;Indicatie over-/onderbelichting PREFERENCES_CLUTSCACHE;HaldCLUT cache PREFERENCES_CLUTSCACHE_LABEL;Maximum aantal cached Cluts diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 385f71041..763905496 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -680,9 +680,6 @@ PREFERENCES_BLACKBODY;Wolfram PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisów w pamięci podręcznej PREFERENCES_CACHEOPTS;Opcje pamięci podręcznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokość miniatury -PREFERENCES_CIEART;CIECAM02 optymalizacja -PREFERENCES_CIEART_LABEL;Użyj precyzję zmiennoprzecinkową zamiast podwójną. -PREFERENCES_CIEART_TOOLTIP;Gdy umożliwione, kalkulacje CIECAM02 są wykonywane w notacji zmiennoprzecinkowej o pojedyńczej precyzji zamiast podwójnej. Skraca to czas egzekucji kosztem nieistotnej zmiany w jakości. PREFERENCES_CLIPPINGIND;Pokazywanie obciętych prześwietleń/cieni PREFERENCES_CLUTSDIR;Folder obrazów HaldCLUT PREFERENCES_CUSTPROFBUILD;Zewnętrzny kreator profilów przetwarzania diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index df6e5c941..e1d110970 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -680,9 +680,6 @@ PREFERENCES_BLACKBODY;Wolfram PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisow w pamieci podrecznej PREFERENCES_CACHEOPTS;Opcje pamieci podrecznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokosc miniatury -PREFERENCES_CIEART;CIECAM02 optymalizacja -PREFERENCES_CIEART_LABEL;Uzyj precyzje zmiennoprzecinkowa zamiast podwojna. -PREFERENCES_CIEART_TOOLTIP;Gdy umozliwione, kalkulacje CIECAM02 sa wykonywane w notacji zmiennoprzecinkowej o pojedynczej precyzji zamiast podwojnej. Skraca to czas egzekucji kosztem nieistotnej zmiany w jakosci. PREFERENCES_CLIPPINGIND;Pokazywanie obcietych przeswietlen/cieni PREFERENCES_CLUTSDIR;Folder obrazow HaldCLUT PREFERENCES_CUSTPROFBUILD;Zewnetrzny kreator profilow przetwarzania diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index d07ef6f6d..36f7f64a6 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -705,9 +705,6 @@ PREFERENCES_BLACKBODY;Лампа накаливания PREFERENCES_CACHEMAXENTRIES;Максимальное число элементов в кэше PREFERENCES_CACHEOPTS;Параметры кэширования PREFERENCES_CACHETHUMBHEIGHT;Максимальная высота эскиза -PREFERENCES_CIEART;Оптимизация CIECAM02 -PREFERENCES_CIEART_LABEL;Использовать числа с плавающей запятой вместо двойной точности -PREFERENCES_CIEART_TOOLTIP;Если включено, вычисления CIECAM02 будут выполняться в формате плавающей запятой с одинарной точностью вместо использования двойной точности. Это обеспечит небольшое увеличение скорости с несущественной потерей качества. PREFERENCES_CLIPPINGIND;Индикация пересветов/затемнений PREFERENCES_CURVEBBOXPOS;Позиция кнопок для копирования и вставки кривых PREFERENCES_CURVEBBOXPOS_ABOVE;Выше diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 37ca4dc1e..1d5c6b3f9 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -600,9 +600,6 @@ PREFERENCES_BLACKBODY;Обична сијалица PREFERENCES_CACHEMAXENTRIES;Највећи број мест у остави PREFERENCES_CACHEOPTS;Подешавање оставе PREFERENCES_CACHETHUMBHEIGHT;Највећа висина приказа -PREFERENCES_CIEART;CIECAM02 оптимизација -PREFERENCES_CIEART_LABEL;Једнострука тачност уместо двоструке -PREFERENCES_CIEART_TOOLTIP;Уколико је омогућено, ради CIECAM02 рачунања са једноструком тачношћу уместо са двоструком. Ово даје мало повећање брзине уз неизоставан губитак на квалитету. PREFERENCES_CLIPPINGIND;Показивачи одсечених делова PREFERENCES_CUSTPROFBUILD;Изградња произвољног почетног профила слике PREFERENCES_CUSTPROFBUILDHINT;Извршна датотека (или скрипта) која се позива када изграђујете нови почетни профил за слику.nПрихвата параметре из командне линије ради прављења .pp3 датотеке на основу неких правила:n[Путања до RAW/JPG] [Путања подразумеваног профила] [Бленда] [Експозиција у s] [Жижна дужина mm] [ИСО] [Објектив] [Фото-апарат] diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index c33abc2e7..97399f629 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -600,9 +600,6 @@ PREFERENCES_BLACKBODY;Obična sijalica PREFERENCES_CACHEMAXENTRIES;Najveći broj mest u ostavi PREFERENCES_CACHEOPTS;Podešavanje ostave PREFERENCES_CACHETHUMBHEIGHT;Najveća visina prikaza -PREFERENCES_CIEART;CIECAM02 optimizacija -PREFERENCES_CIEART_LABEL;Jednostruka tačnost umesto dvostruke -PREFERENCES_CIEART_TOOLTIP;Ukoliko je omogućeno, radi CIECAM02 računanja sa jednostrukom tačnošću umesto sa dvostrukom. Ovo daje malo povećanje brzine uz neizostavan gubitak na kvalitetu. PREFERENCES_CLIPPINGIND;Pokazivači odsečenih delova PREFERENCES_CUSTPROFBUILD;Izgradnja proizvoljnog početnog profila slike PREFERENCES_CUSTPROFBUILDHINT;Izvršna datoteka (ili skripta) koja se poziva kada izgrađujete novi početni profil za sliku.nPrihvata parametre iz komandne linije radi pravljenja .pp3 datoteke na osnovu nekih pravila:n[Putanja do RAW/JPG] [Putanja podrazumevanog profila] [Blenda] [Ekspozicija u s] [Žižna dužina mm] [ISO] [Objektiv] [Foto-aparat] diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 7022c8554..5d93a9279 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -821,10 +821,6 @@ PREFERENCES_BLACKBODY;Glödlampa PREFERENCES_CACHEMAXENTRIES;Maximalt antal cachefiler PREFERENCES_CACHEOPTS;Cacheinställningar PREFERENCES_CACHETHUMBHEIGHT;Maximal höjd på miniatyrbilderna -PREFERENCES_CIEART;CIECAM02-optimering -PREFERENCES_CIEART_FRAME;CIECAM02-Specifika inställningar -PREFERENCES_CIEART_LABEL;Använd flyttalsprecision istället för dubbel -PREFERENCES_CIEART_TOOLTIP;Om aktiverat, så kommer alla CIECAM02-beräkningar att utföras med enkel precision i flyttalsformatet istället för med dubbel precision. Detta ger en liten sänkning av beräkningstiden, till ett pris av en försumbar kvalitetsförsämring. PREFERENCES_CLIPPINGIND;Klippindikering PREFERENCES_CLUTSCACHE;HaldCLUT cache PREFERENCES_CLUTSCACHE_LABEL;Maximalt antal cachade CLUTs From 1d8cd22c0a6c6bf0b1e984d9dcd5de70fd2ba06a Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 22 Nov 2018 08:57:33 +0100 Subject: [PATCH 201/348] generateTranslationDiffs --- rtdata/languages/Deutsch | 134 +++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 69 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 1b737c524..74015b509 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -114,6 +114,10 @@ DYNPROFILEEDITOR_DELETE;Löschen DYNPROFILEEDITOR_EDIT;Ändern DYNPROFILEEDITOR_EDIT_RULE;Profilregel ändern DYNPROFILEEDITOR_ENTRY_TOOLTIP;Groß-/Kleinschreibung wird NICHT berücksichtigt.\nFür einen regulären Ausdruck benutzen Sie bitte\n"re:" als Prefix. +DYNPROFILEEDITOR_IMGTYPE_ANY;Alle +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel-Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_MOVE_DOWN;Runter DYNPROFILEEDITOR_MOVE_UP;Hoch DYNPROFILEEDITOR_NEW;Neu @@ -186,6 +190,8 @@ FILEBROWSER_AUTOFLATFIELD;Automatisches Weißbild FILEBROWSER_BROWSEPATHBUTTONHINT;Ausgewählten Pfad öffnen. FILEBROWSER_BROWSEPATHHINT;Einen Pfad eingeben:\nTaste:\nStrg + o Setzt den Cursor in das Eingabefeld\nEnter Öffnet den Pfad\nEsc Änderungen verwerfen\nUmschalt + Esc Eingabefeld verlassen\n\nSchnellnavigation:\nTaste:\n~ “Home“-Verzeichnis des Benutzers\n! Bilder-Verzeichnis des Benutzers FILEBROWSER_CACHE;Festplatten-Cache +FILEBROWSER_CACHECLEARFROMFULL;Alle zwischengespeicherte Profile löschen +FILEBROWSER_CACHECLEARFROMPARTIAL;Alle NICHT zwischengespeicherte Profile löschen FILEBROWSER_CLEARPROFILE;Profil löschen FILEBROWSER_COLORLABEL_TOOLTIP;Farbmarkierung\n\nTaste: Strg + Umschalt + 0 Ohne\nTaste: Strg + Umschalt + 1 Rot\nTaste: Strg + Umschalt + 2 Gelb\nTaste: Strg + Umschalt + 3 Grün\nTaste: Strg + Umschalt + 4 Blau\nTaste: Strg + Umschalt + 5 Violett FILEBROWSER_COPYPROFILE;Profil kopieren @@ -791,12 +797,26 @@ HISTORY_MSG_485;(Objektivkorrektur)\nProfil HISTORY_MSG_486;(Objektivkorrektur)\nProfil - Kamera HISTORY_MSG_487;(Objektivkorrektur)\nProfil - Objektiv HISTORY_MSG_488;(Dynamikkompression) +HISTORY_MSG_489;(Dynamikkompression)\nDetails HISTORY_MSG_490;(Dynamikkompression)\nIntensität HISTORY_MSG_491;(Weißabgleich) HISTORY_MSG_492;(RGB-Kurven) HISTORY_MSG_493;(L*a*b*) HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur +HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske +HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen +HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe +HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen +HISTORY_MSG_DEHAZE_STRENGTH;(Bildschleier entfernen)\nIntensität +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;(Sensor—Matrix)\nFarbinterpolation\nAuto-Kontrastschwelle HISTORY_MSG_DUALDEMOSAIC_CONTRAST;(Sensor-Matrix)\nFarbinterpolation\nKontrastschwelle HISTORY_MSG_HISTMATCHING;(Belichtung)\nAuto-Tonwertkurve HISTORY_MSG_ICM_OUTPUT_PRIMARIES;(Farbmanagement)\nAusgabeprofil\nVorlagen @@ -821,6 +841,7 @@ HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbv HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle +HISTORY_MSG_SH_COLORSPACE;Farbraum HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität HISTORY_MSG_TM_FATTAL_ANCHOR;(Dynamikkompression)\nHelligkeitsverschiebung @@ -1021,6 +1042,7 @@ PARTIALPASTE_CROP;Ausschnitt PARTIALPASTE_DARKFRAMEAUTOSELECT;Dunkelbild: Automatische Auswahl PARTIALPASTE_DARKFRAMEFILE;Dunkelbild: Datei PARTIALPASTE_DEFRINGE;Farbsaum entfernen (Defringe) +PARTIALPASTE_DEHAZE;Bildschleier entfernen PARTIALPASTE_DETAILGROUP;Detailparameter PARTIALPASTE_DIALOGLABEL;Selektives Einfügen des Bearbeitungsprofils PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung @@ -1086,9 +1108,15 @@ PARTIALPASTE_VIGNETTING;Vignettierungskorrektur PARTIALPASTE_WAVELETGROUP;Wavelet PARTIALPASTE_WHITEBALANCE;Weißabgleich PREFERENCES_ADD;HINZU +PREFERENCES_APPEARANCE;Oberflächendesign (erfordert Neustart) +PREFERENCES_APPEARANCE_COLORPICKERFONT;Schriftart Farbwähler +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Farbe/Transparenz für Schnittmaske +PREFERENCES_APPEARANCE_MAINFONT;Schriftart: PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Farbe der Navigationshilfe +PREFERENCES_APPEARANCE_THEME;Oberflächendesign PREFERENCES_APPLNEXTSTARTUP;erfordert Neustart PREFERENCES_AUTOMONPROFILE;Automatisch das für den aktuellen Monitor festgelegte Profil verwenden +PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern PREFERENCES_BATCH_PROCESSING;Stapelverarbeitung PREFERENCES_BEHADDALL;Alle hinzufügen PREFERENCES_BEHADDALLHINT;Setzt alle Parameter auf Hinzufügen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Deltas zu den gespeicherten Werten interpretiert. @@ -1096,6 +1124,11 @@ PREFERENCES_BEHAVIOR;Verhalten PREFERENCES_BEHSETALL;Alle setzen PREFERENCES_BEHSETALLHINT;Setzt alle Parameter auf Setzen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Absolut zu den gespeicherten Werten interpretiert. PREFERENCES_BLACKBODY;Wolfram +PREFERENCES_CACHECLEAR;Löschen +PREFERENCES_CACHECLEAR_ALL;Alle Dateien im Zwischenspeicher löschen: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Alle Dateien im Zwischenspeicher löschen mit Ausnahme der Bearbeitungsprofile: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Alle Bearbeitungsprofile im Zwischenspeicher löschen: +PREFERENCES_CACHECLEAR_SAFETY;Nur Dateien im Zwischenspeicher werden gelöscht. Bearbeitungsprofile im Bildordner bleiben unberührt. PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Miniaturbilder im Festplatten-Cache PREFERENCES_CACHEOPTS;Einstellungen des Festplatten-Cache für Miniaturbilder PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Miniaturbilder @@ -1142,6 +1175,7 @@ PREFERENCES_EDITORCMDLINE;Benutzerdefinierte Befehlszeile PREFERENCES_EDITORLAYOUT;Editor-Layout PREFERENCES_EXTERNALEDITOR;Externer Editor PREFERENCES_FBROWSEROPTS;Bildinformationen und Miniaturbilder +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar PREFERENCES_FILEFORMAT;Dateiformat PREFERENCES_FLATFIELDFOUND;Gefunden PREFERENCES_FLATFIELDSDIR;Weißbild-Verzeichnis @@ -1424,6 +1458,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontal spiegeln. TP_COARSETRAF_TOOLTIP_ROTLEFT;Nach links drehen.\nTaste: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Nach rechts drehen.\nTaste: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vertikal spiegeln. +TP_COLORAPP_ABSOLUTELUMINANCE;Absolute Luminanz TP_COLORAPP_ALGO;Algorithmus TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Helligkeit + Buntheit (JH) @@ -1434,6 +1469,7 @@ TP_COLORAPP_BADPIXSL;Hot / Bad-Pixelfilter TP_COLORAPP_BADPIXSL_TOOLTIP;Unterdrückt “Hot / Bad“-Pixel\n\n0 = keine Auswirkung\n1 = Mittel\n2 = Gaussian TP_COLORAPP_BRIGHT;Helligkeit (Q) TP_COLORAPP_BRIGHT_TOOLTIP;Helligkeit in CIECAM02 berücksichtigt die Weißintensität und unterscheidet sich von L*a*b* und RGB-Helligkeit. +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Bei manueller Einstellung werden Werte über 65 empfohlen. TP_COLORAPP_CHROMA;Buntheit (H) TP_COLORAPP_CHROMA_M;Farbigkeit (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Die Farbigkeit in CIECAM02 unterscheidet sich\nvon L*a*b*- und RGB-Farbigkeit. @@ -1464,6 +1500,7 @@ TP_COLORAPP_LABEL_SCENE;Umgebungsbedingungen (Szene) TP_COLORAPP_LABEL_VIEWING;Betrachtungsbedingungen TP_COLORAPP_LIGHT;Helligkeit (J) TP_COLORAPP_LIGHT_TOOLTIP;Helligkeit in CIECAM02 unterscheidet sich\nvon L*a*b* und RGB Helligkeit. +TP_COLORAPP_MEANLUMINANCE;Mittlere Luminanz (Yb%) TP_COLORAPP_MODEL;Weißpunktmodell TP_COLORAPP_MODEL_TOOLTIP;Weißabgleich [RT] + [Ausgabe]:\nRT's Weißabgleich wird für die Szene verwendet,\nCIECAM02 auf D50 gesetzt und der Weißabgleich\ndes Ausgabegerätes kann unter:\nEinstellungen > Farb-Management\neingestellt werden.\n\nWeißabgleich [RT+CAT02] + [Ausgabe]:\nRT's Weißabgleich wird für CAT02 verwendet und\nder Weißabgleich des Ausgabegerätes kann unter\nEinstellungen > Farb-Management\neingestellt werden. TP_COLORAPP_NEUTRAL;Zurücksetzen @@ -1505,6 +1542,16 @@ TP_COLORTONING_LAB;L*a*b*-Überlagerung TP_COLORTONING_LABEL;Farbanpassungen TP_COLORTONING_LABGRID;L*a*b*-Farbkorrektur TP_COLORTONING_LABGRID_VALUES;HL: a=%1, b=%2\nS: a=%3, b=%4 +TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur +TP_COLORTONING_LABREGION_MASK;Maske +TP_COLORTONING_LABREGION_SATURATION;Sättigung +TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen TP_COLORTONING_LUMA;Luminanz TP_COLORTONING_LUMAMODE;Luminanz schützen TP_COLORTONING_LUMAMODE_TOOLTIP;Wenn aktiviert, wird die Luminanz der Farben Rot, Grün, Cyan, Blau... geschützt. @@ -1553,6 +1600,10 @@ TP_DARKFRAME_LABEL;Dunkelbild TP_DEFRINGE_LABEL;Farbsaum entfernen (Defringe) TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Schwelle +TP_DEHAZE_DEPTH;Tiefe +TP_DEHAZE_LABEL;Bildschleier entfernen +TP_DEHAZE_SHOW_DEPTH_MAP;Maske anzeigen +TP_DEHAZE_STRENGTH;Intensität 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! @@ -1791,7 +1842,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Kann mit dem Chromatizitätsregler und\nder CC-Kurve TP_LENSGEOM_AUTOCROP;Auto-Schneiden TP_LENSGEOM_FILL;Auto-Füllen TP_LENSGEOM_LABEL;Objektivkorrekturen +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei +TP_LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun) TP_LENSPROFILE_LABEL;Objektivkorrekturprofil +TP_LENSPROFILE_LENS_WARNING;Achtung: Der Crop-Faktor des Profils entspricht\nnicht dem der Kamera.\nDie Ergebnisse sind möglicherweise falsch. +TP_LENSPROFILE_MODE_HEADER;Profil auswählen +TP_LENSPROFILE_USE_CA;CA +TP_LENSPROFILE_USE_GEOMETRIC;Verzeichnung +TP_LENSPROFILE_USE_HEADER;Korrektur auswählen +TP_LENSPROFILE_USE_VIGNETTING;Vignettierung TP_LOCALCONTRAST_AMOUNT;Intensität TP_LOCALCONTRAST_DARKNESS;Dunkle Bereiche TP_LOCALCONTRAST_LABEL;Lokaler Kontrast @@ -1834,6 +1894,7 @@ TP_PRSHARPENING_LABEL;Nach Skalierung schärfen TP_PRSHARPENING_TOOLTIP;Schärft das Bild nach der Größenänderung.\nFunktioniert nur mit der Methode “Lanczos“.\nDas Ergebnis wird nicht in RawTherapee\nangezeigt.\n\nWeitere Informationen finden Sie auf “RawPedia“. TP_RAWCACORR_AUTO;Autokorrektur TP_RAWCACORR_AUTOIT;Iterationen +TP_RAWCACORR_AUTOIT_TOOLTIP;Diese Einstellung ist verfügbar, wenn "Autokorrektur" aktiviert ist.\nDie Autokorrektur ist konservativ, d.h. sie korrigiert häufig nicht alle\nchromatischen Aberrationen. Um die verbleibenden chromatischen\nAberrationen zu korrigieren, können Sie bis zu fünf Iterationen\nverwenden. Jede Iteration verringert die verbleibende chromatische\nAberration auf Kosten zusätzlicher Verarbeitungszeit. TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_RAWCACORR_CABLUE;Blau TP_RAWCACORR_CARED;Rot @@ -1866,6 +1927,8 @@ TP_RAW_DMETHOD;Methode TP_RAW_DMETHOD_PROGRESSBAR;%1 verarbeitet TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaikoptimierung TP_RAW_DMETHOD_TOOLTIP;IGV und LMMSE sind speziel für High-ISO-Aufnahmen um die\nRauschreduzierung zu unterstützen ohne zu Maze-Mustern,\nPosterisierung oder einem ausgewaschenen Look zu führen.\n\nPixel-Shift ist für “Pentax Pixel-Shift“-Dateien. Für "Nicht-Pixel-\nShift"-Dateien wird automatisch AMaZE verwendet. +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto-Kontrastschwelle +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Wenn das Kontrollkästchen aktiviert ist (empfohlen), berechnet\nRawTherapee einen optimalen Wert auf der Grundlage homogener\nBereiche im Bild. Wenn kein homogener Bereich vorhanden ist oder\ndas Bild zu sehr rauscht, wird der Wert auf 0 gesetzt. TP_RAW_DUALDEMOSAICCONTRAST;Kontrastschwelle TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Falschfarbenreduzierung @@ -2081,6 +2144,7 @@ TP_SOFTLIGHT_STRENGTH;Intensität TP_TM_FATTAL_AMOUNT;Intensität TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung TP_TM_FATTAL_LABEL;Dynamikkompression +TP_TM_FATTAL_THRESHOLD;Details TP_VIBRANCE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Hautfarbtöne @@ -2302,6 +2366,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Methode +TP_WBALANCE_PICKER;Farbwähler TP_WBALANCE_SHADE;Schatten TP_WBALANCE_SIZE;Größe: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2324,72 +2389,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -DYNPROFILEEDITOR_IMGTYPE_ANY;Alle -DYNPROFILEEDITOR_IMGTYPE_HDR;HDR -DYNPROFILEEDITOR_IMGTYPE_PS;Pixel-Shift -DYNPROFILEEDITOR_IMGTYPE_STD;Standard -FILEBROWSER_CACHECLEARFROMFULL;Alle zwischengespeicherte Profile löschen -FILEBROWSER_CACHECLEARFROMPARTIAL;Alle NICHT zwischengespeicherte Profile löschen -HISTORY_MSG_489;(Dynamikkompression)\nDetails -HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich -HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske -HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske -HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste -HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung -HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen -HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe -HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) -HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen -HISTORY_MSG_DEHAZE_STRENGTH;(Bildschleier entfernen)\nIntensität -HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;(Sensor—Matrix)\nFarbinterpolation\nAuto-Kontrastschwelle -HISTORY_MSG_SH_COLORSPACE;Farbraum -PARTIALPASTE_DEHAZE;Bildschleier entfernen -PREFERENCES_APPEARANCE;Oberflächendesign (erfordert Neustart) -PREFERENCES_APPEARANCE_COLORPICKERFONT;Schriftart Farbwähler -PREFERENCES_APPEARANCE_CROPMASKCOLOR;Farbe/Transparenz für Schnittmaske -PREFERENCES_APPEARANCE_MAINFONT;Schriftart: -PREFERENCES_APPEARANCE_THEME;Oberflächendesign -PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern -PREFERENCES_CACHECLEAR;Löschen -PREFERENCES_CACHECLEAR_ALL;Alle Dateien im Zwischenspeicher löschen: -PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Alle Dateien im Zwischenspeicher löschen mit Ausnahme der Bearbeitungsprofile: -PREFERENCES_CACHECLEAR_ONLYPROFILES;Alle Bearbeitungsprofile im Zwischenspeicher löschen: -PREFERENCES_CACHECLEAR_SAFETY;Nur Dateien im Zwischenspeicher werden gelöscht. Bearbeitungsprofile im Bildordner bleiben unberührt. -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar -TP_COLORAPP_ABSOLUTELUMINANCE;Absolute Luminanz -TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Bei manueller Einstellung werden Werte über 65 empfohlen. -TP_COLORAPP_MEANLUMINANCE;Mittlere Luminanz (Yb%) -TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche -TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -TP_COLORTONING_LABREGION_HUEMASK;H -TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit -TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur -TP_COLORTONING_LABREGION_MASK;Maske -TP_COLORTONING_LABREGION_SATURATION;Sättigung -TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen -TP_DEHAZE_DEPTH;Tiefe -TP_DEHAZE_LABEL;Bildschleier entfernen -TP_DEHAZE_SHOW_DEPTH_MAP;Maske anzeigen -TP_DEHAZE_STRENGTH;Intensität -TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) -TP_LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei -TP_LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun) -TP_LENSPROFILE_LENS_WARNING;Achtung: Der Crop-Faktor des Profils entspricht\nnicht dem der Kamera.\nDie Ergebnisse sind möglicherweise falsch. -TP_LENSPROFILE_MODE_HEADER;Profil auswählen -TP_LENSPROFILE_USE_CA;CA -TP_LENSPROFILE_USE_GEOMETRIC;Verzeichnung -TP_LENSPROFILE_USE_HEADER;Korrektur auswählen -TP_LENSPROFILE_USE_VIGNETTING;Vignettierung -TP_RAWCACORR_AUTOIT_TOOLTIP;Diese Einstellung ist verfügbar, wenn "Autokorrektur" aktiviert ist.\nDie Autokorrektur ist konservativ, d.h. sie korrigiert häufig nicht alle\nchromatischen Aberrationen. Um die verbleibenden chromatischen\nAberrationen zu korrigieren, können Sie bis zu fünf Iterationen\nverwenden. Jede Iteration verringert die verbleibende chromatische\nAberration auf Kosten zusätzlicher Verarbeitungszeit. -TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto-Kontrastschwelle -TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Wenn das Kontrollkästchen aktiviert ist (empfohlen), berechnet\nRawTherapee einen optimalen Wert auf der Grundlage homogener\nBereiche im Bild. Wenn kein homogener Bereich vorhanden ist oder\ndas Bild zu sehr rauscht, wird der Wert auf 0 gesetzt. -TP_TM_FATTAL_THRESHOLD;Details -TP_WBALANCE_PICKER;Farbwähler From 73898e1a3f07d4659f15524310355627aa4f2db0 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 22 Nov 2018 09:45:59 +0100 Subject: [PATCH 202/348] Enhanced version of the "L*a*b* regions" color toning, adding mask blur and ASC-CDL controls --- rtdata/languages/default | 20 +++++- rtengine/iplabregions.cc | 131 +++++++++++++++++++++++++++++++++----- rtengine/procparams.cc | 40 ++++++++++-- rtengine/procparams.h | 7 +- rtgui/colortoning.cc | 134 +++++++++++++++++++++++++++++++++++---- rtgui/colortoning.h | 14 +++- 6 files changed, 306 insertions(+), 40 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index d3e40cb19..e734c4b44 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -733,13 +733,18 @@ HISTORY_MSG_493;L*a*b* Adjustments HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth HISTORY_MSG_DEHAZE_ENABLED;Haze Removal HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1465,8 +1470,14 @@ 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_LABREGIONS;L*a*b* correction regions +TP_COLORTONING_LABREGIONS;Color correction regions TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +TP_COLORTONING_LABREGION_CHANNEL;Channel +TP_COLORTONING_LABREGION_CHANNEL_ALL;All +TP_COLORTONING_LABREGION_CHANNEL_B;Blue +TP_COLORTONING_LABREGION_CHANNEL_G;Green +TP_COLORTONING_LABREGION_CHANNEL_R;Red TP_COLORTONING_LABREGION_CHROMATICITYMASK;C TP_COLORTONING_LABREGION_HUEMASK;H TP_COLORTONING_LABREGION_LIGHTNESS;Lightness @@ -1475,6 +1486,9 @@ TP_COLORTONING_LABREGION_LIST_TITLE;Correction TP_COLORTONING_LABREGION_MASK;Mask TP_COLORTONING_LABREGION_SATURATION;Saturation TP_COLORTONING_LABREGION_SHOWMASK;Show mask +TP_COLORTONING_LABREGION_SLOPE;Slope +TP_COLORTONING_LABREGION_OFFSET;Offset +TP_COLORTONING_LABREGION_POWER;Power 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. diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index d2380494a..28e7ddad3 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -143,8 +143,12 @@ BENCHFUN } for (int i = begin_idx; i < end_idx; ++i) { - rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread); - rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread); + float blur = params->colorToning.labregions[i].maskBlur; + blur = blur < 0.f ? -1.f/blur : 1.f + blur; + int r1 = max(int(4 / scale * blur + 0.5), 1); + int r2 = max(int(25 / scale * blur + 0.5), 1); + rtengine::guidedFilter(guide, abmask[i], abmask[i], r1, 0.001, multiThread); + rtengine::guidedFilter(guide, Lmask[i], Lmask[i], r2, 0.0001, multiThread); } if (show_mask_idx >= 0) { @@ -166,21 +170,115 @@ BENCHFUN const auto abcoord = [](float x) -> float { - return 12000.f * SGN(x) * xlog2lin(std::abs(x), 4.f); + return /*12000.f **/ SGN(x) * xlog2lin(std::abs(x), 4.f); }; float abca[n]; float abcb[n]; float rs[n]; - float rl[n]; + float slope[n]; + float offset[n]; + float power[n]; + int channel[n]; for (int i = 0; i < n; ++i) { auto &r = params->colorToning.labregions[i]; abca[i] = abcoord(r.a); abcb[i] = abcoord(r.b); - rs[i] = 1.f + r.saturation / 100.f; - rl[i] = 1.f + r.lightness / 500.f; + rs[i] = 1.f + r.saturation / (SGN(r.saturation) > 0 ? 50.f : 100.f); + slope[i] = r.slope; + offset[i] = r.offset; + power[i] = r.power; + channel[i] = r.channel; } + TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); + TMatrix iws = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.workingProfile); + + const auto CDL = + [=](float &l, float &a, float &b, float slope, float offset, float power, float saturation) -> void + { + if (slope != 1.f || offset != 0.f || power != 1.f || saturation != 1.f) { + float rgb[3]; + float x, y, z; + Color::Lab2XYZ(l, a, b, x, y, z); + Color::xyz2rgb(x, y, z, rgb[0], rgb[1], rgb[2], iws); + for (int i = 0; i < 3; ++i) { + rgb[i] = (pow_F(max((rgb[i] / 65535.f) * slope + offset, 0.f), power)) * 65535.f; + } + if (saturation != 1.f) { + float Y = Color::rgbLuminance(rgb[0], rgb[1], rgb[2], ws); + for (int i = 0; i < 3; ++i) { + rgb[i] = max(Y + saturation * (rgb[i] - Y), 0.f); + } + } + Color::rgbxyz(rgb[0], rgb[1], rgb[2], x, y, z, ws); + Color::XYZ2Lab(x, y, z, l, a, b); + } + }; + + const auto chan = + [=](float prev_l, float prev_a, float prev_b, float &l, float &a, float &b, int channel) -> void + { + if (channel >= 0) { + float prev_rgb[3]; + float rgb[3]; + float x, y, z; + Color::Lab2XYZ(l, a, b, x, y, z); + Color::xyz2rgb(x, y, z, rgb[0], rgb[1], rgb[2], iws); + Color::Lab2XYZ(prev_l, prev_a, prev_b, x, y, z); + Color::xyz2rgb(x, y, z, prev_rgb[0], prev_rgb[1], prev_rgb[2], iws); + prev_rgb[channel] = rgb[channel]; + Color::rgbxyz(prev_rgb[0], prev_rgb[1], prev_rgb[2], x, y, z, ws); + Color::XYZ2Lab(x, y, z, l, a, b); + } + }; + +#ifdef __SSE2__ + const auto CDL_v = + [=](vfloat &l, vfloat &a, vfloat &b, float slope, float offset, float power, float saturation) -> void + { + if (slope != 1.f || offset != 0.f || power != 1.f || saturation != 1.f) { + float ll[4]; + float aa[4]; + float bb[4]; + STVFU(ll[0], l); + STVFU(aa[0], a); + STVFU(bb[0], b); + for (int i = 0; i < 4; ++i) { + CDL(ll[i], aa[i], bb[i], slope, offset, power, saturation); + } + l = LVFU(ll[0]); + a = LVFU(aa[0]); + b = LVFU(bb[0]); + } + }; + + const auto chan_v = + [=](vfloat prev_l, vfloat prev_a, vfloat prev_b, vfloat &l, vfloat &a, vfloat &b, int channel) -> void + { + if (channel >= 0) { + float ll[4]; + float aa[4]; + float bb[4]; + STVFU(ll[0], l); + STVFU(aa[0], a); + STVFU(bb[0], b); + float prev_ll[4]; + float prev_aa[4]; + float prev_bb[4]; + STVFU(prev_ll[0], prev_l); + STVFU(prev_aa[0], prev_a); + STVFU(prev_bb[0], prev_b); + for (int i = 0; i < 4; ++i) { + chan(prev_ll[i], prev_aa[i], prev_bb[i], ll[i], aa[i], bb[i], channel); + } + l = LVFU(ll[0]); + a = LVFU(aa[0]); + b = LVFU(bb[0]); + } + }; +#endif + #ifdef _OPENMP #pragma omp parallel if (multiThread) #endif @@ -188,7 +286,6 @@ BENCHFUN #ifdef __SSE2__ vfloat c42000v = F2V(42000.f); vfloat cm42000v = F2V(-42000.f); - vfloat c32768v = F2V(32768.f); #endif #ifdef _OPENMP #pragma omp for @@ -203,10 +300,12 @@ BENCHFUN for (int i = 0; i < n; ++i) { vfloat blendv = LVFU(abmask[i][y][x]); - vfloat sv = F2V(rs[i]); - vfloat a_newv = vclampf(sv * (av + F2V(abca[i])), cm42000v, c42000v); - vfloat b_newv = vclampf(sv * (bv + F2V(abcb[i])), cm42000v, c42000v); - vfloat l_newv = vclampf(lv * F2V(rl[i]), ZEROV, c32768v); + vfloat l_newv = lv; + vfloat a_newv = vclampf(av + lv * F2V(abca[i]), cm42000v, c42000v); + vfloat b_newv = vclampf(bv + lv * F2V(abcb[i]), cm42000v, c42000v); + CDL_v(l_newv, a_newv, b_newv, slope[i], offset[i], power[i], rs[i]); + l_newv = vmaxf(l_newv, ZEROV); + chan_v(lv, av, bv, l_newv, a_newv, b_newv, channel[i]); lv = vintpf(LVFU(Lmask[i][y][x]), l_newv, lv); av = vintpf(blendv, a_newv, av); bv = vintpf(blendv, b_newv, bv); @@ -223,10 +322,12 @@ BENCHFUN for (int i = 0; i < n; ++i) { float blend = abmask[i][y][x]; - float s = rs[i]; - float a_new = LIM(s * (a + abca[i]), -42000.f, 42000.f); - float b_new = LIM(s * (b + abcb[i]), -42000.f, 42000.f); - float l_new = LIM(l * rl[i], 0.f, 32768.f); + float l_new = l; + float a_new = LIM(a + l * abca[i], -42000.f, 42000.f); + float b_new = LIM(b + l * abcb[i], -42000.f, 42000.f); + CDL(l_new, a_new, b_new, slope[i], offset[i], power[i], rs[i]); + l_new = max(l_new, 0.f); + chan(l, a, b, l_new, a_new, b_new, channel[i]); l = intp(Lmask[i][y][x], l_new, l); a = intp(blend, a_new, a); b = intp(blend, b_new, b); diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index b82a7d440..80230a0ae 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -611,7 +611,9 @@ ColorToningParams::LabCorrectionRegion::LabCorrectionRegion(): a(0), b(0), saturation(0), - lightness(0), + slope(1), + offset(0), + power(1), hueMask{ FCT_MinMaxCPoints, 0.166666667, @@ -644,7 +646,9 @@ ColorToningParams::LabCorrectionRegion::LabCorrectionRegion(): 1., 0.35, 0.35 - } + }, + maskBlur(0), + channel(ColorToningParams::LabCorrectionRegion::CHAN_ALL) { } @@ -654,10 +658,14 @@ bool ColorToningParams::LabCorrectionRegion::operator==(const LabCorrectionRegio return a == other.a && b == other.b && saturation == other.saturation - && lightness == other.lightness + && slope == other.slope + && offset == other.offset + && power == other.power && hueMask == other.hueMask && chromaticityMask == other.chromaticityMask - && lightnessMask == other.lightnessMask; + && lightnessMask == other.lightnessMask + && maskBlur == other.maskBlur + && channel == other.channel; } @@ -3479,10 +3487,14 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo putToKeyfile("ColorToning", Glib::ustring("LabRegionA_") + n, l.a, keyFile); putToKeyfile("ColorToning", Glib::ustring("LabRegionB_") + n, l.b, keyFile); putToKeyfile("ColorToning", Glib::ustring("LabRegionSaturation_") + n, l.saturation, keyFile); - putToKeyfile("ColorToning", Glib::ustring("LabRegionLightness_") + n, l.lightness, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionSlope_") + n, l.slope, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionOffset_") + n, l.offset, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionPower_") + n, l.power, keyFile); putToKeyfile("ColorToning", Glib::ustring("LabRegionHueMask_") + n, l.hueMask, keyFile); putToKeyfile("ColorToning", Glib::ustring("LabRegionChromaticityMask_") + n, l.chromaticityMask, keyFile); putToKeyfile("ColorToning", Glib::ustring("LabRegionLightnessMask_") + n, l.lightnessMask, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionMaskBlur_") + n, l.maskBlur, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionChannel_") + n, l.channel, keyFile); } } saveToKeyfile(!pedited || pedited->colorToning.labregionsShowMask, "ColorToning", "LabRegionsShowMask", colorToning.labregionsShowMask, keyFile); @@ -4869,7 +4881,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) found = true; done = false; } - if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionLightness_") + n, pedited, cur.lightness, pedited->colorToning.labregions)) { + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionSlope_") + n, pedited, cur.slope, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionOffset_") + n, pedited, cur.offset, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionPower_") + n, pedited, cur.power, pedited->colorToning.labregions)) { found = true; done = false; } @@ -4885,6 +4905,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) found = true; done = false; } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionMaskBlur_") + n, pedited, cur.maskBlur, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionChannel_") + n, pedited, cur.channel, pedited->colorToning.labregions)) { + found = true; + done = false; + } if (!done) { lg.emplace_back(cur); } diff --git a/rtengine/procparams.h b/rtengine/procparams.h index c81b17c62..9a45ac922 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -456,13 +456,18 @@ struct ColorToningParams { static const double LABGRID_CORR_SCALE; struct LabCorrectionRegion { + enum { CHAN_ALL = -1, CHAN_R, CHAN_G, CHAN_B }; double a; double b; double saturation; - double lightness; + double slope; + double offset; + double power; std::vector hueMask; std::vector chromaticityMask; std::vector lightnessMask; + double maskBlur; + int channel; LabCorrectionRegion(); bool operator==(const LabCorrectionRegion &other) const; diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 3ec149a0a..ec89118df 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -361,14 +361,19 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR EvLabRegionAB = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_AB"); EvLabRegionSaturation = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SATURATION"); EvLabRegionLightness = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS"); + EvLabRegionSlope = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SLOPE"); + EvLabRegionOffset = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_OFFSET"); + EvLabRegionPower = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_POWER"); EvLabRegionHueMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_HUEMASK"); EvLabRegionChromaticityMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK"); EvLabRegionLightnessMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK"); + EvLabRegionMaskBlur = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR"); EvLabRegionShowMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK"); + EvLabRegionChannel = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHANNEL"); labRegionBox = Gtk::manage(new Gtk::VBox()); labRegionList = Gtk::manage(new Gtk::ListViewText(3)); - labRegionList->set_size_request(-1, 100); + labRegionList->set_size_request(-1, 150); labRegionList->set_can_focus(false); labRegionList->set_column_title(0, "#"); labRegionList->set_column_title(1, M("TP_COLORTONING_LABREGION_LIST_TITLE")); @@ -394,6 +399,10 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR labRegionDown->add(*Gtk::manage(new RTImage("arrow-down-small.png"))); labRegionDown->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionDownPressed)); add_button(labRegionDown, vb); + labRegionCopy = Gtk::manage(new Gtk::Button()); + labRegionCopy->add(*Gtk::manage(new RTImage("arrow-right-small.png"))); + labRegionCopy->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionCopyPressed)); + add_button(labRegionCopy, vb); hb->pack_start(*vb, Gtk::PACK_SHRINK); labRegionBox->pack_start(*hb, true, true); @@ -403,9 +412,33 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR labRegionSaturation = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SATURATION"), -100, 100, 1, 0)); labRegionSaturation->setAdjusterListener(this); labRegionBox->pack_start(*labRegionSaturation); - labRegionLightness = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_LIGHTNESS"), -100, 100, 1, 0)); - labRegionLightness->setAdjusterListener(this); - labRegionBox->pack_start(*labRegionLightness); + + labRegionSlope = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SLOPE"), 0.1, 4.0, 0.001, 1)); + labRegionSlope->setLogScale(4, 0.1); + labRegionSlope->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionSlope); + labRegionOffset = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_OFFSET"), -0.1, 0.1, 0.001, 0)); + labRegionOffset->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionOffset); + labRegionPower = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_POWER"), 0.1, 4.0, 0.001, 1)); + labRegionPower->setAdjusterListener(this); + labRegionPower->setLogScale(4, 0.1); + labRegionBox->pack_start(*labRegionPower); + + hb = Gtk::manage(new Gtk::HBox()); + labRegionChannel = Gtk::manage(new MyComboBoxText()); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_ALL")); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_R")); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_G")); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_B")); + labRegionChannel->set_active(0); + labRegionChannel->signal_changed().connect(sigc::mem_fun(*this, &ColorToning::labRegionChannelChanged)); + + hb->pack_start(*Gtk::manage(new Gtk::Label(M("TP_COLORTONING_LABREGION_CHANNEL") + ": ")), Gtk::PACK_SHRINK); + hb->pack_start(*labRegionChannel); + labRegionBox->pack_start(*hb); + + labRegionBox->pack_start(*Gtk::manage(new Gtk::HSeparator())); CurveEditorGroup *labRegionEditorG = Gtk::manage(new CurveEditorGroup(options.lastColorToningCurvesDir, M("TP_COLORTONING_LABREGION_MASK"))); labRegionEditorG->setCurveListener(this); @@ -440,11 +473,22 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR labRegionEditorG->show(); labRegionBox->pack_start(*labRegionEditorG, Gtk::PACK_SHRINK, 2); + labRegionMaskBlur = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_MASKBLUR"), -10, 100, 0.1, 0)); + labRegionMaskBlur->setLogScale(10, 0); + labRegionMaskBlur->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionMaskBlur); + labRegionShowMask = Gtk::manage(new Gtk::CheckButton(M("TP_COLORTONING_LABREGION_SHOWMASK"))); labRegionShowMask->signal_toggled().connect(sigc::mem_fun(*this, &ColorToning::labRegionShowMaskChanged)); labRegionBox->pack_start(*labRegionShowMask, Gtk::PACK_SHRINK, 4); pack_start(*labRegionBox, Gtk::PACK_EXPAND_WIDGET, 4); + + labRegionSaturation->delay = options.adjusterMaxDelay; + labRegionSlope->delay = options.adjusterMaxDelay; + labRegionOffset->delay = options.adjusterMaxDelay; + labRegionPower->delay = options.adjusterMaxDelay; + labRegionMaskBlur->delay = options.adjusterMaxDelay; //------------------------------------------------------------------------ show_all(); @@ -1335,8 +1379,14 @@ void ColorToning::adjusterChanged(Adjuster* a, double newval) listener->panelChanged (EvColorToningStrength, a->getTextValue()); } else if (a == labRegionSaturation) { listener->panelChanged(EvLabRegionSaturation, a->getTextValue()); - } else if (a == labRegionLightness) { - listener->panelChanged(EvLabRegionLightness, a->getTextValue()); + } else if (a == labRegionSlope) { + listener->panelChanged(EvLabRegionSlope, a->getTextValue()); + } else if (a == labRegionOffset) { + listener->panelChanged(EvLabRegionOffset, a->getTextValue()); + } else if (a == labRegionPower) { + listener->panelChanged(EvLabRegionPower, a->getTextValue()); + } else if (a == labRegionMaskBlur) { + listener->panelChanged(EvLabRegionMaskBlur, a->getTextValue()); } } @@ -1395,10 +1445,14 @@ void ColorToning::labRegionGet(int idx) double la, lb; labRegionAB->getParams(la, lb, r.a, r.b); r.saturation = labRegionSaturation->getValue(); - r.lightness = labRegionLightness->getValue(); + r.slope = labRegionSlope->getValue(); + r.offset = labRegionOffset->getValue(); + r.power = labRegionPower->getValue(); r.hueMask = labRegionHueMask->getCurve(); r.chromaticityMask = labRegionChromaticityMask->getCurve(); r.lightnessMask = labRegionLightnessMask->getCurve(); + r.maskBlur = labRegionMaskBlur->getValue(); + r.channel = labRegionChannel->get_active_row_number() - 1; } @@ -1462,6 +1516,21 @@ void ColorToning::labRegionDownPressed() } +void ColorToning::labRegionCopyPressed() +{ + if (labRegionSelected < int(labRegionData.size())) { + auto r = labRegionData[labRegionSelected]; + labRegionData.push_back(r); + labRegionSelected = labRegionData.size()-1; + labRegionPopulateList(); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + void ColorToning::labRegionShowMaskChanged() { if (listener) { @@ -1479,13 +1548,26 @@ void ColorToning::labRegionPopulateList() for (size_t i = 0; i < labRegionData.size(); ++i) { auto &r = labRegionData[i]; auto j = labRegionList->append(std::to_string(i+1)); - labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", round_ab(r.a), round_ab(r.b), r.saturation, r.lightness)); + labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 S=%3\ns=%4 o=%5 p=%6", round_ab(r.a), round_ab(r.b), r.saturation, r.slope, r.offset, r.power)); + const char *ch = ""; + switch (r.channel) { + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_R: + ch = "\n[Red]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_G: + ch = "\n[Green]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_B: + ch = "\n[Blue]"; break; + default: + ch = ""; + } labRegionList->set_text( j, 2, Glib::ustring::compose( - "%1%2%3", + "%1%2%3%4%5", hasMask(dflt.hueMask, r.hueMask) ? "H" : "", hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "", - hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "")); + hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "", + r.maskBlur ? Glib::ustring::compose(" b=%1", r.maskBlur) : "", + ch)); } } @@ -1501,18 +1583,34 @@ void ColorToning::labRegionShow(int idx, bool list_only) if (!list_only) { labRegionAB->setParams(0, 0, r.a, r.b, false); labRegionSaturation->setValue(r.saturation); - labRegionLightness->setValue(r.lightness); + labRegionSlope->setValue(r.slope); + labRegionOffset->setValue(r.offset); + labRegionPower->setValue(r.power); labRegionHueMask->setCurve(r.hueMask); labRegionChromaticityMask->setCurve(r.chromaticityMask); labRegionLightnessMask->setCurve(r.lightnessMask); + labRegionMaskBlur->setValue(r.maskBlur); + labRegionChannel->set_active(r.channel+1); + } + labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 S=%3\ns=%4 o=%5 p=%6", round_ab(r.a), round_ab(r.b), r.saturation, r.slope, r.offset, r.power)); + const char *ch = ""; + switch (r.channel) { + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_R: + ch = "\n[Red]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_G: + ch = "\n[Green]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_B: + ch = "\n[Blue]"; break; + default: + ch = ""; } - labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", round_ab(r.a), round_ab(r.b), r.saturation, r.lightness)); labRegionList->set_text( idx, 2, Glib::ustring::compose( - "%1%2%3", + "%1%2%3%4%5", hasMask(dflt.hueMask, r.hueMask) ? "H" : "", hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "", - hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "")); + hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "", + r.maskBlur ? Glib::ustring::compose(" b=%1", r.maskBlur) : "", ch)); Gtk::TreePath pth; pth.push_back(idx); labRegionList->get_selection()->select(pth); @@ -1522,6 +1620,14 @@ void ColorToning::labRegionShow(int idx, bool list_only) } +void ColorToning::labRegionChannelChanged() +{ + if (listener) { + listener->panelChanged(EvLabRegionChannel, labRegionChannel->get_active_text()); + } +} + + void ColorToning::setEditProvider(EditDataProvider *provider) { labRegionHueMask->setEditProvider(provider); diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index 8fb640cba..7809756b4 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -67,7 +67,9 @@ private: void labRegionRemovePressed(); void labRegionUpPressed(); void labRegionDownPressed(); + void labRegionCopyPressed(); void labRegionShowMaskChanged(); + void labRegionChannelChanged(); void labRegionPopulateList(); void labRegionShow(int idx, bool list_only=false); void labRegionGet(int idx); @@ -130,10 +132,15 @@ private: rtengine::ProcEvent EvLabRegionAB; rtengine::ProcEvent EvLabRegionSaturation; rtengine::ProcEvent EvLabRegionLightness; + rtengine::ProcEvent EvLabRegionSlope; + rtengine::ProcEvent EvLabRegionOffset; + rtengine::ProcEvent EvLabRegionPower; rtengine::ProcEvent EvLabRegionHueMask; rtengine::ProcEvent EvLabRegionChromaticityMask; rtengine::ProcEvent EvLabRegionLightnessMask; + rtengine::ProcEvent EvLabRegionMaskBlur; rtengine::ProcEvent EvLabRegionShowMask; + rtengine::ProcEvent EvLabRegionChannel; Gtk::VBox *labRegionBox; Gtk::ListViewText *labRegionList; @@ -141,12 +148,17 @@ private: Gtk::Button *labRegionRemove; Gtk::Button *labRegionUp; Gtk::Button *labRegionDown; + Gtk::Button *labRegionCopy; LabGrid *labRegionAB; Adjuster *labRegionSaturation; - Adjuster *labRegionLightness; + Adjuster *labRegionSlope; + Adjuster *labRegionOffset; + Adjuster *labRegionPower; + MyComboBoxText *labRegionChannel; FlatCurveEditor *labRegionHueMask; FlatCurveEditor *labRegionChromaticityMask; FlatCurveEditor *labRegionLightnessMask; + Adjuster *labRegionMaskBlur; Gtk::CheckButton *labRegionShowMask; std::vector labRegionData; int labRegionSelected; From f64cb76c218bae5a644e30018d4017df4771cb33 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Thu, 22 Nov 2018 10:41:49 +0100 Subject: [PATCH 203/348] Fix for #5009 --- rtengine/imagefloat.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index bd7ae2a46..cb0792dc5 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -218,7 +218,7 @@ public: return (uint32_t) ((sign << 31) | (exponent << 23) | mantissa); } - virtual void normalizeFloat(float srcMinVal, float srcMaxVal); + void normalizeFloat(float srcMinVal, float srcMaxVal) override; void normalizeFloatTo1(); void normalizeFloatTo65535(); void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist); From 78b5b784374c6e56aba154f48e2a254980704563 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Thu, 22 Nov 2018 10:51:41 +0100 Subject: [PATCH 204/348] Fixes clang warning #5010 --- rtgui/batchqueuepanel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index e21e01352..8ada3ae00 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -69,8 +69,8 @@ public: bool handleShortcutKey (GdkEventKey* event); // batchqueuelistener interface - void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage); - bool canStartNext(); + void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) override; + bool canStartNext() override; private: void startBatchProc (); From d2dcd437b4889dd22def1cdb51bbb243fcc632df Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Thu, 22 Nov 2018 10:52:17 +0100 Subject: [PATCH 205/348] Fixes clang warning #5010 --- rtgui/batchtoolpanelcoord.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index 204750047..f5889f967 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -67,7 +67,7 @@ public: // wbprovider interface void getAutoWB (double& temp, double& green, double equal, double tempBias) override; - void getCamWB (double& temp, double& green); + void getCamWB (double& temp, double& green) override; // thumbnaillistener interface void procParamsChanged (Thumbnail* thm, int whoChangedIt) override; From c667ec4a380078fdcf6c7599e1dce0bfeaf35f3e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 22 Nov 2018 13:41:10 +0100 Subject: [PATCH 206/348] Fix some coverity issues --- rtexif/rtexif.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index f1c807126..d79fd1849 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -368,6 +368,7 @@ void TagDirectory::addTag (Tag* tag) // look up if it already exists: if (getTag (tag->getID())) { delete tag; + tag = nullptr; } else { tags.push_back (tag); } @@ -379,6 +380,7 @@ void TagDirectory::addTagFront (Tag* tag) // look up if it already exists: if (getTag (tag->getID())) { delete tag; + tag = nullptr; } else { tags.insert (tags.begin(), tag); } @@ -2106,10 +2108,12 @@ void ExifManager::parseCIFF () TagDirectory* root = new TagDirectory (nullptr, ifdAttribs, INTEL); Tag* exif = new Tag (root, lookupAttrib (ifdAttribs, "Exif")); exif->initSubDir (); - Tag* mn = new Tag (exif->getDirectory(), lookupAttrib (exifAttribs, "MakerNote")); - mn->initMakerNote (IFD, canonAttribs); root->addTag (exif); - exif->getDirectory()->addTag (mn); + if (exif) { + Tag* mn = new Tag (exif->getDirectory(), lookupAttrib (exifAttribs, "MakerNote")); + mn->initMakerNote (IFD, canonAttribs); + exif->getDirectory()->addTag (mn); + } parseCIFF (rml->ciffLength, root); root->sort (); } @@ -2510,7 +2514,7 @@ parse_leafdata (TagDirectory* root, ByteOrder order) root->addTagFront (exif); } - if (!exif->getDirectory()->getTag ("ISOSpeedRatings")) { + if (exif && !exif->getDirectory()->getTag ("ISOSpeedRatings")) { Tag *t = new Tag (exif->getDirectory(), exif->getDirectory()->getAttrib ("ISOSpeedRatings")); t->initInt (iso_speed, LONG); exif->getDirectory()->addTagFront (t); @@ -2836,7 +2840,7 @@ void ExifManager::parse (bool isRaw, bool skipIgnored) exif->initSubDir (exifdir); root->addTagFront (exif); - if (!exif->getDirectory()->getTag ("ISOSpeedRatings") && exif->getDirectory()->getTag ("ExposureIndex")) { + if (exif && !exif->getDirectory()->getTag ("ISOSpeedRatings") && exif->getDirectory()->getTag ("ExposureIndex")) { Tag* niso = new Tag (exif->getDirectory(), exif->getDirectory()->getAttrib ("ISOSpeedRatings")); niso->initInt (exif->getDirectory()->getTag ("ExposureIndex")->toInt(), SHORT); exif->getDirectory()->addTagFront (niso); From fddb0ec50d7d6ccaa997e577b9b436fd34dd72dd Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 22 Nov 2018 15:25:57 +0100 Subject: [PATCH 207/348] fix black thumnbail issue for float DNGs --- rtengine/rtthumbnail.cc | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 150582f57..1623ecfbf 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -62,15 +62,15 @@ bool checkRawImageThumb (const rtengine::RawImage& raw_image) void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], bool multiThread) { DCraw::dcrawImage_t image = ri->get_image(); + const int height = ri->get_iheight(); + const int width = ri->get_iwidth(); + const int top_margin = ri->get_topmargin(); + const int left_margin = ri->get_leftmargin(); + const int raw_width = ri->get_rawwidth(); + const bool isFloat = ri->isFloat(); + const float * const float_raw_image = ri->get_FloatRawImage(); if (ri->isBayer()) { - const int height = ri->get_iheight(); - const int width = ri->get_iwidth(); - const bool isFloat = ri->isFloat(); - const int top_margin = ri->get_topmargin(); - const int left_margin = ri->get_leftmargin(); - const int raw_width = ri->get_rawwidth(); - const float * const float_raw_image = ri->get_FloatRawImage(); #ifdef _OPENMP #pragma omp parallel for if(multiThread) #endif @@ -110,14 +110,6 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], } } } else if (ri->isXtrans()) { - const int height = ri->get_iheight(); - const int width = ri->get_iwidth(); - const bool isFloat = ri->isFloat(); - const int top_margin = ri->get_topmargin(); - const int left_margin = ri->get_leftmargin(); - const int raw_width = ri->get_rawwidth(); - const float * const float_raw_image = ri->get_FloatRawImage(); - #ifdef _OPENMP #pragma omp parallel for if(multiThread) #endif @@ -157,6 +149,20 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], image[row * width + col][ccol] = rtengine::CLIP (val); } } + } else if (isFloat) { +#ifdef _OPENMP + #pragma omp parallel for if(multiThread) +#endif + for (int row = 0; row < height; ++row) { + for (int col = 0; col < width; ++col) { + for (int i = 0; i < ri->get_colors(); ++i) { + float val = float_raw_image[(row + top_margin) * raw_width + col + left_margin + i]; + val -= cblack[i]; + val *= scale_mul[i]; + image[row * width + col][i] = val; + } + } + } } else { const int size = ri->get_iheight() * ri->get_iwidth(); From 831e18ca4556ae1273de9b8c0a2c5554fe59f08d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 22 Nov 2018 16:19:16 +0100 Subject: [PATCH 208/348] Add override keyword. Thanks @Floessie --- rtengine/curves.h | 16 ++--- rtengine/dcraw.cc | 2 +- rtengine/dcraw.h | 3 +- rtengine/dcrop.h | 12 ++-- rtengine/histmatching.cc | 2 +- rtengine/iccstore.cc | 2 +- rtengine/iimage.h | 46 +++++++------- rtengine/image16.h | 2 +- rtengine/image8.h | 2 +- rtengine/imagedata.h | 52 ++++++++-------- rtengine/imagefloat.h | 2 +- rtengine/imageio.h | 2 +- rtengine/imagesource.h | 14 ++--- rtengine/improccoordinator.h | 94 ++++++++++++++--------------- rtengine/lcp.h | 10 +-- rtengine/pdaflinesfilter.cc | 4 +- rtengine/processingjob.h | 4 +- rtengine/procparams.h | 2 - rtengine/rawimagesource.h | 72 +++++++++++----------- rtengine/rawmetadatalocation.h | 2 +- rtengine/rtlensfun.h | 2 +- rtengine/stdimagesource.h | 44 +++++++------- rtexif/canonattribs.cc | 34 +++++------ rtexif/nikonattribs.cc | 18 +++--- rtexif/olympusattribs.cc | 14 ++--- rtexif/pentaxattribs.cc | 86 +++++++++++++------------- rtexif/rtexif.h | 10 +-- rtexif/sonyminoltaattribs.cc | 42 ++++++------- rtexif/stdattribs.cc | 20 +++--- rtgui/adjuster.h | 2 +- rtgui/batchqueue.h | 28 ++++----- rtgui/batchqueueentry.h | 16 ++--- rtgui/batchqueuepanel.h | 2 +- rtgui/bayerpreprocess.h | 14 ++--- rtgui/bayerprocess.h | 22 +++---- rtgui/bayerrawexposure.h | 16 ++--- rtgui/blackwhite.h | 28 ++++----- rtgui/cacheimagedata.h | 50 +++++++-------- rtgui/cacorrection.h | 14 ++--- rtgui/chmixer.h | 16 ++--- rtgui/coarsepanel.h | 4 +- rtgui/colorappearance.h | 30 ++++----- rtgui/colortoning.h | 42 ++++++------- rtgui/coordinateadjuster.h | 2 +- rtgui/crop.h | 40 ++++++------ rtgui/crophandler.h | 8 +-- rtgui/cropwindow.h | 38 ++++++------ rtgui/curveeditor.h | 22 +++---- rtgui/curveeditorgroup.h | 6 +- rtgui/darkframe.h | 4 +- rtgui/defringe.h | 22 +++---- rtgui/dehaze.h | 14 ++--- rtgui/diagonalcurveeditorsubgroup.h | 40 ++++++------ rtgui/dirbrowser.h | 2 +- rtgui/dirpyrdenoise.h | 32 +++++----- rtgui/dirpyrequalizer.h | 28 ++++----- rtgui/distortion.h | 14 ++--- rtgui/edit.h | 30 ++++----- rtgui/editorpanel.h | 22 +++---- rtgui/editwindow.h | 6 +- rtgui/epd.h | 14 ++--- rtgui/exifpanel.h | 8 +-- rtgui/fattaltonemap.h | 14 ++--- rtgui/filebrowser.h | 32 +++++----- rtgui/filebrowserentry.h | 28 ++++----- rtgui/filecatalog.h | 30 ++++----- rtgui/filepanel.h | 8 +-- rtgui/filmsimulation.h | 14 ++--- rtgui/flatcurveeditorsubgroup.h | 32 +++++----- rtgui/flatfield.h | 18 +++--- rtgui/gradient.h | 32 +++++----- rtgui/guiutils.h | 40 ++++++------ rtgui/histogrampanel.h | 46 +++++++------- rtgui/history.h | 4 +- rtgui/hsvequalizer.h | 18 +++--- rtgui/iccprofilecreator.h | 4 +- rtgui/icmpanel.h | 12 ++-- rtgui/ilabel.h | 6 +- rtgui/imagearea.h | 44 +++++++------- rtgui/imageareapanel.h | 2 +- rtgui/impulsedenoise.h | 16 ++--- rtgui/indclippedpanel.h | 2 +- rtgui/inspector.h | 14 ++--- rtgui/iptcpanel.h | 6 +- rtgui/labcurve.h | 26 ++++---- rtgui/labgrid.h | 16 ++--- rtgui/lensgeom.h | 8 +-- rtgui/lensprofile.h | 6 +- rtgui/localcontrast.h | 14 ++--- rtgui/main.cc | 2 +- rtgui/metadatapanel.h | 12 ++-- rtgui/mycurve.h | 16 ++--- rtgui/mydiagonalcurve.h | 26 ++++---- rtgui/myflatcurve.h | 24 ++++---- rtgui/navigator.h | 8 +-- rtgui/options.h | 4 +- rtgui/pcvignette.h | 16 ++--- rtgui/perspective.h | 14 ++--- rtgui/popupbutton.h | 2 +- rtgui/preferences.h | 8 +-- rtgui/preprocess.h | 8 +-- rtgui/previewhandler.h | 8 +-- rtgui/previewmodepanel.h | 2 +- rtgui/previewwindow.h | 30 ++++----- rtgui/profilepanel.h | 12 ++-- rtgui/profilestorecombobox.cc | 2 +- rtgui/progressconnector.h | 8 +-- rtgui/prsharpening.h | 28 ++++----- rtgui/rawcacorrection.h | 16 ++--- rtgui/rawexposure.h | 14 ++--- rtgui/resize.h | 20 +++--- rtgui/retinex.h | 26 ++++---- rtgui/rgbcurves.h | 16 ++--- rtgui/rotate.h | 14 ++--- rtgui/rtwindow.h | 18 +++--- rtgui/saveformatpanel.h | 6 +- rtgui/shadowshighlights.h | 16 ++--- rtgui/sharpenedge.h | 16 ++--- rtgui/sharpening.h | 28 ++++----- rtgui/sharpenmicro.h | 16 ++--- rtgui/shcselector.h | 20 +++--- rtgui/softlight.h | 14 ++--- rtgui/splash.h | 12 ++-- rtgui/thresholdadjuster.h | 2 +- rtgui/thresholdselector.h | 22 +++---- rtgui/thumbbrowserbase.h | 28 ++++----- rtgui/tonecurve.h | 28 ++++----- rtgui/toolpanel.h | 10 +-- rtgui/toolpanelcoord.h | 50 +++++++-------- rtgui/vibrance.h | 34 +++++------ rtgui/vignetting.h | 14 ++--- rtgui/wavelet.h | 36 +++++------ rtgui/whitebalance.h | 20 +++--- rtgui/xtransprocess.h | 18 +++--- rtgui/xtransrawexposure.h | 14 ++--- 135 files changed, 1250 insertions(+), 1251 deletions(-) diff --git a/rtengine/curves.h b/rtengine/curves.h index d9ae15183..fe93bcde5 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -455,11 +455,11 @@ protected: public: DiagonalCurve (const std::vector& points, int ppn = CURVES_MIN_POLY_POINTS); - virtual ~DiagonalCurve (); + ~DiagonalCurve () override; - double getVal (double t) const; - void getVal (const std::vector& t, std::vector& res) const; - bool isIdentity () const + double getVal (double t) const override; + void getVal (const std::vector& t, std::vector& res) const override; + bool isIdentity () const override { return kind == DCT_Empty; }; @@ -480,12 +480,12 @@ private: public: FlatCurve (const std::vector& points, bool isPeriodic = true, int ppn = CURVES_MIN_POLY_POINTS); - virtual ~FlatCurve (); + ~FlatCurve () override; - double getVal (double t) const; - void getVal (const std::vector& t, std::vector& res) const; + double getVal (double t) const override; + void getVal (const std::vector& t, std::vector& res) const override; bool setIdentityValue (double iVal); - bool isIdentity () const + bool isIdentity () const override { return kind == FCT_Empty; }; diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 7e4c02015..7d4ec4376 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6068,7 +6068,7 @@ int CLASS parse_tiff_ifd (int base) char software[64], *cbuf, *cp; uchar cfa_pat[16], cfa_pc[] = { 0,1,2,3 }, tab[256]; double cc[2][4][4]; - double cm[2][4][3] = {NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN}; + double cm[2][4][3] = {{{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN}},{{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN}}}; double cam_xyz[4][3], num; double ab[]={ 1,1,1,1 }, asn[] = { 0,0,0,0 }, xyz[] = { 1,1,1 }; unsigned sony_curve[] = { 0,0,0,0,0,4095 }; diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index aa49b99ce..923d6190f 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -261,7 +261,7 @@ getbithuff_t getbithuff; class nikbithuff_t { public: - nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){} + explicit nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){} void operator()() {bitbuf = vbits = 0;}; unsigned operator()(int nbits, ushort *huff); unsigned errorCount() { return errors; } @@ -428,6 +428,7 @@ void kodak_thumb_load_raw(); // sony_decrypt(unsigned *data, int len, int start, int key); class sony_decrypt_t{ public: + explicit sony_decrypt_t() : p(0) {} void operator()(unsigned *data, int len, int start, int key); private: unsigned pad[128], p; diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h index efd4a399a..04274ca0c 100644 --- a/rtengine/dcrop.h +++ b/rtengine/dcrop.h @@ -71,12 +71,12 @@ protected: public: Crop (ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow); - virtual ~Crop (); + ~Crop () override; void setEditSubscriber(EditSubscriber* newSubscriber); bool hasListener(); void update (int todo); - void setWindow (int cropX, int cropY, int cropW, int cropH, int skip) + void setWindow (int cropX, int cropY, int cropW, int cropH, int skip) override { setCropSizes (cropX, cropY, cropW, cropH, skip, false); } @@ -84,12 +84,12 @@ public: /** @brief Synchronously look out if a full update is necessary * First try, only make fullUpdate if this returns false */ - bool tryUpdate (); + bool tryUpdate () override; /** @brief Asynchronously reprocess the detailed crop */ - void fullUpdate (); // called via thread + void fullUpdate () override; // called via thread - void setListener (DetailedCropListener* il); - void destroy (); + void setListener (DetailedCropListener* il) override; + void destroy () override; int get_skip(); int getLeftBorder(); int getUpperBorder(); diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 2bc0e940e..da95946e7 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -114,7 +114,7 @@ public: spline_cubic_set(); } - double getVal(double t) const + double getVal(double t) const override { // values under and over the first and last point if (t > x[N - 1]) { diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 1f24852d0..e8463a1d8 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -623,7 +623,7 @@ private: struct PMatrix { double matrix[3][3]; PMatrix(): matrix{} {} - PMatrix(const CMatrix &m) + explicit PMatrix(const CMatrix &m) { set(m); } diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 5738b4655..3549d4dae 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -257,7 +257,7 @@ public: /* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image */ - void allocate (int W, int H) + void allocate (int W, int H) override { if (W == width && H == height) { @@ -327,7 +327,7 @@ public: } } - void rotate (int deg) + void rotate (int deg) override { if (deg == 90) { @@ -446,7 +446,7 @@ public: } } - void hflip () + void hflip () override { int width2 = width / 2; @@ -470,7 +470,7 @@ public: #endif } - void vflip () + void vflip () override { int height2 = height / 2; @@ -648,7 +648,7 @@ public: /* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image */ - void allocate (int W, int H) + void allocate (int W, int H) override { if (W == width && H == height) { @@ -736,7 +736,7 @@ public: } } - void rotate (int deg) + void rotate (int deg) override { if (deg == 90) { @@ -863,7 +863,7 @@ public: } } - void hflip () + void hflip () override { int width2 = width / 2; @@ -895,7 +895,7 @@ public: #endif } - void vflip () + void vflip () override { int height2 = height / 2; @@ -961,7 +961,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -993,7 +993,7 @@ public: } } - void getAutoWBMultipliers (double &rm, double &gm, double &bm) const + void getAutoWBMultipliers (double &rm, double &gm, double &bm) const override { double avg_r = 0.; @@ -1067,9 +1067,9 @@ public: } } - virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, + void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) const + int tran) const override { int x; int y; @@ -1297,7 +1297,7 @@ public: * If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image or to free up it's memory with "allocate (0,0);" */ - void allocate (int W, int H) + void allocate (int W, int H) override { if (W == width && H == height) { @@ -1351,7 +1351,7 @@ public: memcpy (dest->data, data, 3 * width * height * sizeof(T)); } - void rotate (int deg) + void rotate (int deg) override { if (deg == 90) { @@ -1485,7 +1485,7 @@ public: } } - void hflip () + void hflip () override { int width2 = width / 2; @@ -1521,7 +1521,7 @@ public: } } - void vflip () + void vflip () override { AlignedBuffer lBuffer(3 * width); @@ -1570,7 +1570,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1602,7 +1602,7 @@ public: } } - void getAutoWBMultipliers (double &rm, double &gm, double &bm) const + void getAutoWBMultipliers (double &rm, double &gm, double &bm) const override { double avg_r = 0.; @@ -1676,9 +1676,9 @@ public: } } - virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, + void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) const + int tran) const override { int x; int y; @@ -1782,14 +1782,14 @@ public: class IImagefloat : public IImage, public PlanarRGBData { public: - virtual ~IImagefloat() {} + ~IImagefloat() override {} }; /** @brief This class represents an image having a classical 8 bits/pixel representation */ class IImage8 : public IImage, public ChunkyRGBData { public: - virtual ~IImage8() {} + ~IImage8() override {} }; /** @brief This class represents an image having a 16 bits/pixel planar representation. @@ -1797,7 +1797,7 @@ public: class IImage16 : public IImage, public PlanarRGBData { public: - virtual ~IImage16() {} + ~IImage16() override {} }; } diff --git a/rtengine/image16.h b/rtengine/image16.h index 940416254..9f73c322b 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -38,7 +38,7 @@ public: Image16(); Image16(int width, int height); - ~Image16(); + ~Image16() override; Image16* copy() const; diff --git a/rtengine/image8.h b/rtengine/image8.h index 2cc670a4a..8928cf85b 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -36,7 +36,7 @@ public: Image8 (); Image8 (int width, int height); - ~Image8 (); + ~Image8 () override; Image8* copy () const; diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 1c3aff7e9..7aa4812d0 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -98,35 +98,35 @@ private: public: FramesData (const Glib::ustring& fname, std::unique_ptr rml = nullptr, bool firstFrameOnly = false); - ~FramesData (); + ~FramesData () override; void setDCRawFrameCount (unsigned int frameCount); - unsigned int getRootCount () const; - unsigned int getFrameCount () const; - bool getPixelShift () const; - bool getHDR (unsigned int frame = 0) const; - std::string getImageType (unsigned int frame) const; - IIOSampleFormat getSampleFormat (unsigned int frame = 0) const; - rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const; - rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const; - rtexif::TagDirectory* getBestExifData (ImageSource *imgSource, procparams::RAWParams *rawParams) const; - procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const; - bool hasExif (unsigned int frame = 0) const; - bool hasIPTC (unsigned int frame = 0) const; - tm getDateTime (unsigned int frame = 0) const; - time_t getDateTimeAsTS (unsigned int frame = 0) const; - int getISOSpeed (unsigned int frame = 0) const; - double getFNumber (unsigned int frame = 0) const; - double getFocalLen (unsigned int frame = 0) const; - double getFocalLen35mm (unsigned int frame = 0) const; - float getFocusDist (unsigned int frame = 0) const; - double getShutterSpeed (unsigned int frame = 0) const; - double getExpComp (unsigned int frame = 0) const; - std::string getMake (unsigned int frame = 0) const; - std::string getModel (unsigned int frame = 0) const; - std::string getLens (unsigned int frame = 0) const; + unsigned int getRootCount () const override; + unsigned int getFrameCount () const override; + bool getPixelShift () const override; + bool getHDR (unsigned int frame = 0) const override; + std::string getImageType (unsigned int frame) const override; + IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override; + rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const override; + rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const override; + rtexif::TagDirectory* getBestExifData (ImageSource *imgSource, procparams::RAWParams *rawParams) const override; + procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const override; + bool hasExif (unsigned int frame = 0) const override; + bool hasIPTC (unsigned int frame = 0) const override; + tm getDateTime (unsigned int frame = 0) const override; + time_t getDateTimeAsTS (unsigned int frame = 0) const override; + int getISOSpeed (unsigned int frame = 0) const override; + double getFNumber (unsigned int frame = 0) const override; + double getFocalLen (unsigned int frame = 0) const override; + double getFocalLen35mm (unsigned int frame = 0) const override; + float getFocusDist (unsigned int frame = 0) const override; + double getShutterSpeed (unsigned int frame = 0) const override; + double getExpComp (unsigned int frame = 0) const override; + std::string getMake (unsigned int frame = 0) const override; + std::string getModel (unsigned int frame = 0) const override; + std::string getLens (unsigned int frame = 0) const override; std::string getSerialNumber (unsigned int frame = 0) const; - std::string getOrientation (unsigned int frame = 0) const; + std::string getOrientation (unsigned int frame = 0) const override; }; diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index cb0792dc5..9d7c69aef 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -42,7 +42,7 @@ public: Imagefloat (); Imagefloat (int width, int height); - ~Imagefloat (); + ~Imagefloat () override; Imagefloat* copy () const; diff --git a/rtengine/imageio.h b/rtengine/imageio.h index 5970866f0..60bf6bc43 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -72,7 +72,7 @@ public: loadedProfileLength(0), iptc(nullptr), exifRoot (nullptr), sampleFormat(IIOSF_UNKNOWN), sampleArrangement(IIOSA_UNKNOWN) {} - virtual ~ImageIO (); + ~ImageIO () override; void setProgressListener (ProgressListener* l); void setSampleFormat(IIOSampleFormat sFormat); diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 2c7ded588..c87ce4b0d 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -65,7 +65,7 @@ public: ImageSource () : references (1), redAWBMul(-1.), greenAWBMul(-1.), blueAWBMul(-1.), embProfile(nullptr), idata(nullptr), dirpyrdenoiseExpComp(INFINITY) {} - virtual ~ImageSource () {} + ~ImageSource () override {} 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, bool autoContrast, double &contrastThreshold) {}; @@ -119,11 +119,11 @@ public: virtual void setProgressListener (ProgressListener* pl) {} - void increaseRef () + void increaseRef () override { references++; } - void decreaseRef () + void decreaseRef () override { references--; @@ -151,19 +151,19 @@ public: return dirpyrdenoiseExpComp; } // functions inherited from the InitialImage interface - virtual Glib::ustring getFileName () + Glib::ustring getFileName () override { return fileName; } - virtual cmsHPROFILE getEmbeddedProfile () + cmsHPROFILE getEmbeddedProfile () override { return embProfile; } - virtual const FramesMetaData* getMetaData () + const FramesMetaData* getMetaData () override { return idata; } - virtual ImageSource* getImageSource () + ImageSource* getImageSource () override { return this; } diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 356ef6636..488cf28c0 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -219,85 +219,85 @@ protected: public: ImProcCoordinator (); - ~ImProcCoordinator (); + ~ImProcCoordinator () override; void assign (ImageSource* imgsrc); - void getParams (procparams::ProcParams* dst) + void getParams (procparams::ProcParams* dst) override { *dst = params; } - void startProcessing (int changeCode); - ProcParams* beginUpdateParams (); - void endUpdateParams (ProcEvent change); // must be called after beginUpdateParams, triggers update - void endUpdateParams (int changeFlags); - void stopProcessing (); + void startProcessing (int changeCode) override; + ProcParams* beginUpdateParams () override; + void endUpdateParams (ProcEvent change) override; // must be called after beginUpdateParams, triggers update + void endUpdateParams (int changeFlags) override; + void stopProcessing () override; - void setPreviewScale (int scale) + void setPreviewScale (int scale) override { setScale (scale); } - int getPreviewScale () + int getPreviewScale () override { return scale; } //void fullUpdatePreviewImage (); - int getFullWidth () + int getFullWidth () override { return fullw; } - int getFullHeight () + int getFullHeight () override { return fullh; } - int getPreviewWidth () + int getPreviewWidth () override { return pW; } - int getPreviewHeight () + int getPreviewHeight () override { return pH; } - DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow); + DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) override; - bool getAutoWB (double& temp, double& green, double equal, double tempBias); - void getCamWB (double& temp, double& green); - void getSpotWB (int x, int y, int rectSize, double& temp, double& green); - void getAutoCrop (double ratio, int &x, int &y, int &w, int &h); - bool getHighQualComputed(); - void setHighQualComputed(); - void setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent); - void getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const; - void setSoftProofing (bool softProof, bool gamutCheck); - void getSoftProofing (bool &softProof, bool &gamutCheck); - void setSharpMask (bool sharpMask); - bool updateTryLock () + bool getAutoWB (double& temp, double& green, double equal, double tempBias) override; + void getCamWB (double& temp, double& green) override; + void getSpotWB (int x, int y, int rectSize, double& temp, double& green) override; + void getAutoCrop (double ratio, int &x, int &y, int &w, int &h) override; + bool getHighQualComputed() override; + void setHighQualComputed() override; + void setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent) override; + void getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const override; + void setSoftProofing (bool softProof, bool gamutCheck) override; + void getSoftProofing (bool &softProof, bool &gamutCheck) override; + void setSharpMask (bool sharpMask) override; + bool updateTryLock () override { return updaterThreadStart.trylock(); } - void updateUnLock () + void updateUnLock () override { updaterThreadStart.unlock(); } - void setProgressListener (ProgressListener* pl) + void setProgressListener (ProgressListener* pl) override { plistener = pl; } - void setPreviewImageListener (PreviewImageListener* il) + void setPreviewImageListener (PreviewImageListener* il) override { imageListener = il; } - void setSizeListener (SizeListener* il) + void setSizeListener (SizeListener* il) override { sizeListeners.push_back (il); } - void delSizeListener (SizeListener* il) + void delSizeListener (SizeListener* il) override { std::vector::iterator it = std::find (sizeListeners.begin(), sizeListeners.end(), il); @@ -305,70 +305,70 @@ public: sizeListeners.erase (it); } } - void setAutoExpListener (AutoExpListener* ael) + void setAutoExpListener (AutoExpListener* ael) override { aeListener = ael; } - void setHistogramListener (HistogramListener *h) + void setHistogramListener (HistogramListener *h) override { hListener = h; } - void setAutoCamListener (AutoCamListener* acl) + void setAutoCamListener (AutoCamListener* acl) override { acListener = acl; } - void setAutoBWListener (AutoBWListener* abw) + void setAutoBWListener (AutoBWListener* abw) override { abwListener = abw; } - void setAutoWBListener (AutoWBListener* awb) + void setAutoWBListener (AutoWBListener* awb) override { awbListener = awb; } - void setAutoColorTonListener (AutoColorTonListener* bwct) + void setAutoColorTonListener (AutoColorTonListener* bwct) override { actListener = bwct; } - void setAutoChromaListener (AutoChromaListener* adn) + void setAutoChromaListener (AutoChromaListener* adn) override { adnListener = adn; } - void setRetinexListener (RetinexListener* adh) + void setRetinexListener (RetinexListener* adh) override { dehaListener = adh; } - void setWaveletListener (WaveletListener* awa) + void setWaveletListener (WaveletListener* awa) override { awavListener = awa; } - void setFrameCountListener (FrameCountListener* fcl) + void setFrameCountListener (FrameCountListener* fcl) override { frameCountListener = fcl; } - void setFlatFieldAutoClipListener (FlatFieldAutoClipListener* ffacl) + void setFlatFieldAutoClipListener (FlatFieldAutoClipListener* ffacl) override { flatFieldAutoClipListener = ffacl; } - void setBayerAutoContrastListener (AutoContrastListener* acl) + void setBayerAutoContrastListener (AutoContrastListener* acl) override { bayerAutoContrastListener = acl; } - void setXtransAutoContrastListener (AutoContrastListener* acl) + void setXtransAutoContrastListener (AutoContrastListener* acl) override { xtransAutoContrastListener = acl; } - void setImageTypeListener (ImageTypeListener* itl) + void setImageTypeListener (ImageTypeListener* itl) override { imageTypeListener = itl; } - void saveInputICCReference (const Glib::ustring& fname, bool apply_wb); + void saveInputICCReference (const Glib::ustring& fname, bool apply_wb) override; - InitialImage* getInitialImage () + InitialImage* getInitialImage () override { return imgsrc; } diff --git a/rtengine/lcp.h b/rtengine/lcp.h index d588ac381..aa6e24be8 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -190,11 +190,11 @@ public: ); - void correctDistortion(double &x, double &y, int cx, int cy, double scale) const; // MUST be the first stage - bool isCACorrectionAvailable() const; - void correctCA(double& x, double& y, int cx, int cy, int channel) const; - void processVignetteLine(int width, int y, float* line) const; - void processVignetteLine3Channels(int width, int y, float* line) const; + void correctDistortion(double &x, double &y, int cx, int cy, double scale) const override; // MUST be the first stage + bool isCACorrectionAvailable() const override; + void correctCA(double& x, double& y, int cx, int cy, int channel) const override; + void processVignetteLine(int width, int y, float* line) const override; + void processVignetteLine3Channels(int width, int y, float* line) const override; private: bool enableCA; // is the mapper capable if CA correction? diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index 86c6f2d4c..0c5b2d786 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -62,7 +62,7 @@ public: ++r[col / TILE_SIZE]; } - float operator()(int row, int col) const + float operator()(int row, int col) const override { int y = row / TILE_SIZE; int x = col / TILE_SIZE; @@ -136,7 +136,7 @@ public: offset_(offset) {} - float operator()(int row) const + float operator()(int row) const override { static constexpr float BORDER[] = { 1.f, 1.f, 0.8f, 0.5f, 0.2f }; static constexpr int BORDER_WIDTH = sizeof(BORDER)/sizeof(float) - 1; diff --git a/rtengine/processingjob.h b/rtengine/processingjob.h index c7f49192e..026bd4924 100644 --- a/rtengine/processingjob.h +++ b/rtengine/processingjob.h @@ -43,14 +43,14 @@ public: iImage->increaseRef(); } - ~ProcessingJobImpl () + ~ProcessingJobImpl () override { if (initialImage) { initialImage->decreaseRef(); } } - bool fastPipeline() const { return fast; } + bool fastPipeline() const override { return fast; } }; } diff --git a/rtengine/procparams.h b/rtengine/procparams.h index c81b17c62..81416b169 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -26,8 +26,6 @@ #include #include -#include "coord.h" -#include "LUT.h" #include "noncopyable.h" class ParamsEdited; diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 7244f4c7c..470fd138b 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -111,22 +111,22 @@ protected: public: RawImageSource (); - ~RawImageSource (); + ~RawImageSource () override; - int load(const Glib::ustring &fname) { return load(fname, false); } + int load(const Glib::ustring &fname) override { return load(fname, false); } int load(const Glib::ustring &fname, bool firstFrameOnly); - void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true); - void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold); - 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 (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); - void flushRawData (); - void flushRGB (); - void HLRecovery_Global (const ToneCurveParams &hrp); + void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true) override; + void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold) override; + 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) override; + void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) override; + void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) override; + void flushRawData () override; + void flushRGB () override; + void HLRecovery_Global (const ToneCurveParams &hrp) override; void refinement_lassus (int PassCount); void refinement(int PassCount); - void setBorder(unsigned int rawBorder) {border = rawBorder;} - bool isRGBSourceModified() const + void setBorder(unsigned int rawBorder) override {border = rawBorder;} + bool isRGBSourceModified() const override { return rgbSourceModified; // tracks whether cached rgb output of demosaic has been modified } @@ -136,57 +136,57 @@ public: void cfaboxblur (RawImage *riFlatFile, float* cfablur, int boxH, int boxW); void scaleColors (int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData); // raw for cblack - void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw); - eSensorType getSensorType () const + void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override; + eSensorType getSensorType () const override { return ri != nullptr ? ri->getSensorType() : ST_NONE; } - bool isMono () const + bool isMono () const override { return ri->get_colors() == 1; } - ColorTemp getWB () const + ColorTemp getWB () const override { return camera_wb; } - void getAutoWBMultipliers (double &rm, double &gm, double &bm); - ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal); - bool isWBProviderReady () + void getAutoWBMultipliers (double &rm, double &gm, double &bm) override; + ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) override; + bool isWBProviderReady () override { return rawData; } - double getDefGain () const + double getDefGain () const override { return defGain; } - void getFullSize (int& w, int& h, int tr = TR_NONE); - void getSize (const PreviewProps &pp, int& w, int& h); - int getRotateDegree() const + void getFullSize (int& w, int& h, int tr = TR_NONE) override; + void getSize (const PreviewProps &pp, int& w, int& h) override; + int getRotateDegree() const override { return ri->get_rotateDegree(); } - ImageMatrices* getImageMatrices () + ImageMatrices* getImageMatrices () override { return &imatrices; } - bool isRAW() const + bool isRAW() const override { return true; } - void setProgressListener (ProgressListener* pl) + void setProgressListener (ProgressListener* pl) override { plistener = pl; } - void getAutoExpHistogram (LUTu & histogram, int& histcompr); - void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw); - void getAutoMatchedToneCurve(const ColorManagementParams &cp, std::vector &outCurve); - DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as); + void getAutoExpHistogram (LUTu & histogram, int& histcompr) override; + void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw) override; + void getAutoMatchedToneCurve(const ColorManagementParams &cp, std::vector &outCurve) override; + DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as) override; - void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb); + void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override; static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in); 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) { @@ -197,18 +197,18 @@ public: void boxblur2(float** src, float** dst, float** temp, int H, int W, int box ); void boxblur_resamp(float **src, float **dst, float** temp, int H, int W, int box, int samp ); void MSR(float** luminance, float **originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); - void HLRecovery_inpaint (float** red, float** green, float** blue); + void HLRecovery_inpaint (float** red, float** green, float** blue) override; static void HLRecovery_Luminance (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval); static void HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]); static void HLRecovery_blend (float* rin, float* gin, float* bin, int width, float maxval, float* hlmax); static void init (); static void cleanup (); - void setCurrentFrame(unsigned int frameNum) { + void setCurrentFrame(unsigned int frameNum) override { currFrame = std::min(numFrames - 1, frameNum); ri = riFrames[currFrame]; } - int getFrameCount() {return numFrames;} - int getFlatFieldAutoClipValue() {return flatFieldAutoClipValue;} + int getFrameCount() override {return numFrames;} + int getFlatFieldAutoClipValue() override {return flatFieldAutoClipValue;} class GreenEqulibrateThreshold { public: @@ -299,7 +299,7 @@ protected: void pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParams, 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); + void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override; }; } diff --git a/rtengine/rawmetadatalocation.h b/rtengine/rawmetadatalocation.h index 40ac6cc3e..de6c6a0d7 100644 --- a/rtengine/rawmetadatalocation.h +++ b/rtengine/rawmetadatalocation.h @@ -30,7 +30,7 @@ public: int ciffLength; RawMetaDataLocation () : exifBase(-1), ciffBase(-1), ciffLength(-1) {} - RawMetaDataLocation (int exifBase) : exifBase(exifBase), ciffBase(-1), ciffLength(-1) {} + explicit RawMetaDataLocation (int exifBase) : exifBase(exifBase), ciffBase(-1), ciffLength(-1) {} RawMetaDataLocation (int ciffBase, int ciffLength) : exifBase(-1), ciffBase(ciffBase), ciffLength(ciffLength) {} RawMetaDataLocation (int exifBase, int ciffBase, int ciffLength) : exifBase(exifBase), ciffBase(ciffBase), ciffLength(ciffLength) {} }; diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index ef6d2192b..c196a4765 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -38,7 +38,7 @@ class LFModifier final : public NonCopyable { public: - ~LFModifier(); + ~LFModifier() override; explicit operator bool() const; diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index 605b2926c..500641f72 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -40,66 +40,66 @@ protected: public: StdImageSource (); - ~StdImageSource (); + ~StdImageSource () override; - int load (const Glib::ustring &fname); - void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw); - ColorTemp getWB () const + int load (const Glib::ustring &fname) override; + void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override; + ColorTemp getWB () const override { return wb; } - void getAutoWBMultipliers (double &rm, double &gm, double &bm); - ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal); + void getAutoWBMultipliers (double &rm, double &gm, double &bm) override; + ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) override; - eSensorType getSensorType() const {return ST_NONE;} - bool isMono() const {return false;} + eSensorType getSensorType() const override {return ST_NONE;} + bool isMono() const override {return false;} - bool isWBProviderReady () + bool isWBProviderReady () override { return true; }; - void getAutoExpHistogram (LUTu &histogram, int& histcompr); + void getAutoExpHistogram (LUTu &histogram, int& histcompr) override; - double getDefGain () const + double getDefGain () const override { return 0.0; } - void getFullSize (int& w, int& h, int tr = TR_NONE); - void getSize (const PreviewProps &pp, int& w, int& h); + void getFullSize (int& w, int& h, int tr = TR_NONE) override; + void getSize (const PreviewProps &pp, int& w, int& h) override; ImageIO* getImageIO () { return img; } - ImageMatrices* getImageMatrices () + ImageMatrices* getImageMatrices () override { return (ImageMatrices*)nullptr; } - bool isRAW() const + bool isRAW() const override { return false; } - void setProgressListener (ProgressListener* pl) + void setProgressListener (ProgressListener* pl) override { plistener = pl; } - void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb);// RAWParams raw will not be used for non-raw files (see imagesource.h) + void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override;// RAWParams raw will not be used for non-raw files (see imagesource.h) static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams &cmp, cmsHPROFILE embedded, IIOSampleFormat sampleFormat); - bool isRGBSourceModified() const + bool isRGBSourceModified() const override { return rgbSourceModified; } - void setCurrentFrame(unsigned int frameNum) {} - int getFrameCount() {return 1;} - int getFlatFieldAutoClipValue() {return 0;} + void setCurrentFrame(unsigned int frameNum) override {} + int getFrameCount() override {return 1;} + int getFlatFieldAutoClipValue() override {return 0;} - void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) { R = G = B = 0;} + void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override { R = G = B = 0;} }; diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc index 17ce4f343..940206e31 100644 --- a/rtexif/canonattribs.cc +++ b/rtexif/canonattribs.cc @@ -32,7 +32,7 @@ namespace rtexif class CAOnOffInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int n = t->toInt(); @@ -51,7 +51,7 @@ class CAIntSerNumInterpreter : public Interpreter { public: CAIntSerNumInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { return ""; } @@ -63,7 +63,7 @@ class CAApertureInterpreter : public Interpreter { public: CAApertureInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = pow (2.0, t->toDouble() / 64.0); @@ -92,7 +92,7 @@ CAMacroModeInterpreter caMacroModeInterpreter; class CASelfTimerInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int sec = t->toInt (0, SHORT); @@ -385,7 +385,7 @@ CAExposureModeInterpreter caExposureModeInterpreter; class CAFlashBitsInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream s; unsigned bits = t->toInt (0, SHORT); @@ -533,7 +533,7 @@ CARAWQualityInterpreter caRAWQualityInterpreter; class CAFocalInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { Tag *unitTag = t->getParent()->getRoot()->findTag ("FocalUnits"); double v = unitTag ? unitTag->toDouble() : 1.; @@ -956,7 +956,7 @@ public: }; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int lensID = t->toInt(); @@ -1108,7 +1108,7 @@ CAFocalTypeInterpreter caFocalTypeInterpreter; class CAFocalPlaneInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int val = t->toInt(); @@ -1126,7 +1126,7 @@ CAFocalPlaneInterpreter caFocalPlaneInterpreter; class CAExposureTimeInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double d = pow (2, - t->toInt() / 32.0); @@ -1138,7 +1138,7 @@ CAExposureTimeInterpreter caExposureTimeInterpreter; class CAEVInterpreter : public Interpreter { - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%.1f", t->toDouble() / 32.0 ); @@ -1150,14 +1150,14 @@ CAEVInterpreter caEVInterpreter; class CABaseISOInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt(); sprintf (buffer, "%d", a); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = Interpreter::toInt (t, ofs); @@ -1168,7 +1168,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { int a = Interpreter::toInt (t, ofs, astype); @@ -1287,7 +1287,7 @@ CASlowShutterInterpreter caSlowShutterInterpreter; class CAFlashGuideNumberInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int n = t->toInt(); @@ -1348,7 +1348,7 @@ CAControModeInterpreter caControModeInterpreter; class CAFocusDistanceInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%.2f", t->toDouble() / 100 ); @@ -1360,7 +1360,7 @@ CAFocusDistanceInterpreter caFocusDistanceInterpreter; class CAMeasuredEVInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%.1f", t->toDouble() / 8 - 6 ); @@ -1495,7 +1495,7 @@ CAToningEffectInterpreter caToningEffectInterpreter; class CAFileNumberInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { unsigned long val = t->toInt (0, LONG); char buffer[32]; diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index e534f8123..888bebe5a 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -34,7 +34,7 @@ class NAISOInterpreter : public Interpreter { public: NAISOInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->toInt (2)); @@ -47,14 +47,14 @@ class NAISOInfoISOInterpreter : public Interpreter { public: NAISOInfoISOInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt(); sprintf (buffer, "%d", a); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->getValue()[ofs]; @@ -65,7 +65,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { int a = t->getValue()[ofs]; @@ -83,7 +83,7 @@ class NAISOExpansionInterpreter : public Interpreter { public: NAISOExpansionInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); @@ -142,7 +142,7 @@ class NALensTypeInterpreter : public Interpreter { public: NALensTypeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); std::ostringstream str; @@ -191,7 +191,7 @@ class NAShootingModeInterpreter : public Interpreter { public: NAShootingModeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); std::ostringstream str; @@ -234,7 +234,7 @@ public: afpchoices[0x9] = "Far Left"; afpchoices[0xa] = "Far Right"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int am = t->toInt (0, BYTE); int afp = t->toInt (1, BYTE); @@ -314,7 +314,7 @@ class NALensDataInterpreter : public Interpreter static const std::map lenses; public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { static const unsigned char xlat[2][256] = { diff --git a/rtexif/olympusattribs.cc b/rtexif/olympusattribs.cc index 8084637c9..e590a71de 100644 --- a/rtexif/olympusattribs.cc +++ b/rtexif/olympusattribs.cc @@ -33,7 +33,7 @@ class OLOnOffInterpreter : public Interpreter { public: OLOnOffInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { if (t->toInt() == 0) { return "Off"; @@ -48,7 +48,7 @@ class OLYesNoInterpreter : public Interpreter { public: OLYesNoInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { if (t->toInt() == 0) { return "No"; @@ -63,7 +63,7 @@ class OLApertureInterpreter : public Interpreter { public: OLApertureInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; str.precision (2); @@ -194,7 +194,7 @@ public: lenses["03 02 00"] = "Leica D Summilux 25mm f/1.4 Asph."; lenses["05 01 10"] = "Tamron 14-150mm f/3.5-5.8 Di III"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream lid; lid.setf (std::ios_base::hex, std::ios_base::basefield); @@ -465,7 +465,7 @@ class OLNoiseFilterInterpreter : public Interpreter { public: OLNoiseFilterInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0); int b = t->toInt (2); @@ -490,7 +490,7 @@ class OLFlashModeInterpreter : public Interpreter { public: OLFlashModeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int a = t->toInt (); @@ -509,7 +509,7 @@ class OLNoiseReductionInterpreter : public Interpreter { public: OLNoiseReductionInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int a = t->toInt (); diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 0968271e5..4120f6b46 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -415,7 +415,7 @@ class PAFNumberInterpreter: public Interpreter { public: PAFNumberInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble() / 10; @@ -610,7 +610,7 @@ public: choices[256 * 255 + 0] = "Video (Auto Aperture)"; choices[256 * 255 + 4] = "Video (4)"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int c = 256 * t->toInt (0, BYTE) + t->toInt (1, BYTE); std::map::iterator r = choices.find (c); @@ -669,7 +669,7 @@ public: choices3[224] = "HDR Auto"; choices3[255] = "Video"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::map::iterator r1 = choices1.find (t->toInt (1, BYTE)); @@ -993,7 +993,7 @@ public: choices.insert (p_t (256 * 22 + 4, "04 Toy Lens Wide 6.3mm f/7.1")); choices.insert (p_t (256 * 22 + 5, "05 Toy Lens Telephoto 18mm f/8")); } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double *liArray = nullptr; double maxApertureAtFocal = 0.; @@ -1061,7 +1061,7 @@ class PASRResultInterpreter: public Interpreter { public: PASRResultInterpreter() { } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int b = t->toInt (0, BYTE); @@ -1146,7 +1146,7 @@ public: choices[ 2 << 8 | 4 ] = "Auto"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int idx = 0; @@ -1173,7 +1173,7 @@ public: choices[2] = "Standard"; choices[3] = "Fast"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::ostringstream s; @@ -1211,7 +1211,7 @@ public: choices[2] = "Medium"; choices[3] = "High"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::ostringstream s; @@ -1243,7 +1243,7 @@ public: choices2[8] = "2 EV"; choices2[12] = "3 EV"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::map::iterator r1 = choices1.find (t->toInt (1, BYTE)); @@ -1290,7 +1290,7 @@ class PALensModelQInterpreter: public Interpreter { public: PALensModelQInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[31]; buffer[0] = 0; // @@ -1308,7 +1308,7 @@ class PALensInfoQInterpreter: public Interpreter { public: PALensInfoQInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[21]; buffer[0] = 0; @@ -1326,7 +1326,7 @@ class PAFlashExposureCompInterpreter: public Interpreter { public: PAFlashExposureCompInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a; @@ -1340,7 +1340,7 @@ public: sprintf (buffer, "%d", a ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a; @@ -1359,7 +1359,7 @@ class PAFocalLengthInterpreter: public Interpreter { public: PAFocalLengthInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = double (t->toInt (0, LONG)); @@ -1371,7 +1371,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { double a = double (t->toInt (0, LONG)); @@ -1388,7 +1388,7 @@ class PALensDataFocalLengthInterpreter: public Interpreter { public: PALensDataFocalLengthInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2)); @@ -1401,7 +1401,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (ofs, BYTE); float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2)); @@ -1419,7 +1419,7 @@ class PAISOfInterpreter: public Interpreter { public: PAISOfInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1427,7 +1427,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return 100.*exp (double (a - 32) * log (2.) / 8.); @@ -1439,7 +1439,7 @@ class PAMaxApertureInterpreter: public Interpreter { public: PAMaxApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); a &= 0x7F; @@ -1458,7 +1458,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); a &= 0x7F; @@ -1476,7 +1476,7 @@ class PAAEXvInterpreter: public Interpreter { public: PAAEXvInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1484,7 +1484,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return double (a - 64) / 8.; @@ -1496,7 +1496,7 @@ class PAAEBXvInterpreter: public Interpreter { public: PAAEBXvInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, SBYTE); char buffer[32]; @@ -1504,7 +1504,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, SBYTE); return double (a) / 8.; @@ -1516,7 +1516,7 @@ class PAApertureInterpreter: public Interpreter { public: PAApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1524,7 +1524,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return exp ((double (a) - 68.) * log (2.) / 16.); @@ -1536,7 +1536,7 @@ class PAExposureTimeInterpreter: public Interpreter { public: PAExposureTimeInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1544,7 +1544,7 @@ public: sprintf (buffer, "%.6f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return 24.*exp (- (double (a) - 32.) * log (2.) / 8.); @@ -1556,7 +1556,7 @@ class PANominalMinApertureInterpreter: public Interpreter { public: PANominalMinApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt (0, BYTE); @@ -1564,7 +1564,7 @@ public: sprintf (buffer, "%.1f", double (int (pow (2.0, double (mina + 10) / 4.0) + 0.2))); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE) & 0x0F; return double (int (pow (2.0, double (a + 10) / 4.0) + 0.2)); @@ -1576,7 +1576,7 @@ class PANominalMaxApertureInterpreter: public Interpreter { public: PANominalMaxApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt (0, BYTE); @@ -1584,7 +1584,7 @@ public: sprintf (buffer, "%.1f", double (int (pow (2.0, double (maxa) / 4.0) + 0.2)) ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = ( t->toInt (0, BYTE) & 0xF0) >> 4; return double (int (pow (2.0, double (a) / 4.0) + 0.2)); @@ -1694,7 +1694,7 @@ class PAExternalFlashGNInterpreter: public Interpreter { public: PAExternalFlashGNInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int b = t->toInt (0, BYTE) & 0x1F; @@ -1708,7 +1708,7 @@ class PAEVStepsInterpreter: public Interpreter { public: PAEVStepsInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; @@ -1727,7 +1727,7 @@ class PAEDialinInterpreter: public Interpreter { public: PAEDialinInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; @@ -1746,7 +1746,7 @@ class PAApertureRingUseInterpreter: public Interpreter { public: PAApertureRingUseInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; @@ -1776,7 +1776,7 @@ public: choices[9] = "Slow-sync, Red-eye reduction"; choices[10] = "Trailing-curtain Sync"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE) >> 4); @@ -1795,7 +1795,7 @@ class PAMeteringMode2Interpreter: public Interpreter { public: PAMeteringMode2Interpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int v = (t->toInt (0, BYTE) & 0xF); @@ -1859,7 +1859,7 @@ class PAProgramLineInterpreter: public Interpreter { public: PAProgramLineInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int c = t->toInt (0, BYTE); @@ -1899,7 +1899,7 @@ class PAAFModeInterpreter: public Interpreter { public: PAAFModeInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { switch (t->toInt (0, BYTE) & 0x3) { case 0: @@ -1925,7 +1925,7 @@ class PAAFPointSelectedInterpreter: public Interpreter { public: PAAFPointSelectedInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int c = t->toInt (0, SHORT); @@ -1949,7 +1949,7 @@ class PADriveMode2Interpreter: public Interpreter { public: PADriveMode2Interpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int c = t->toInt (0, BYTE); diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index d7004f388..f6960bc09 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -191,10 +191,10 @@ public: TagDirectoryTable(); TagDirectoryTable (TagDirectory* p, unsigned char *v, int memsize, int offs, TagType type, const TagAttrib* ta, ByteOrder border); TagDirectoryTable (TagDirectory* p, FILE* f, int memsize, int offset, TagType type, const TagAttrib* ta, ByteOrder border); - virtual ~TagDirectoryTable(); - virtual int calculateSize (); - virtual int write (int start, unsigned char* buffer); - virtual TagDirectory* clone (TagDirectory* parent); + ~TagDirectoryTable() override; + int calculateSize () override; + int write (int start, unsigned char* buffer) override; + TagDirectory* clone (TagDirectory* parent) override; }; // a class representing a single tag @@ -488,7 +488,7 @@ protected: std::map choices; public: ChoiceInterpreter () {}; - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt()); diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index 76ed788c2..04cb6a548 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -1150,7 +1150,7 @@ public: }; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int lensID = t->toInt(); Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo"); @@ -1297,7 +1297,7 @@ public: choices.insert (p_t (51507, "Samyang AF 35mm f/1.4")); } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int lensID = t->toInt(); Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo"); @@ -2091,7 +2091,7 @@ class SAExposureTimeInterpreter : public Interpreter { public: SAExposureTimeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = t->toDouble(); @@ -2103,7 +2103,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT TagType astype = t->getType(); @@ -2122,7 +2122,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT int a = 0; @@ -2151,7 +2151,7 @@ class SAFNumberInterpreter : public Interpreter { public: SAFNumberInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = double (t->toDouble()); @@ -2163,7 +2163,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT TagType astype = t->getType(); @@ -2182,7 +2182,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT int a = 0; @@ -2211,7 +2211,7 @@ class SAISOSettingInterpreter : public Interpreter { public: SAISOSettingInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); @@ -2223,7 +2223,7 @@ public: return "Auto"; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT int a = 0; @@ -2252,14 +2252,14 @@ class SAExposureCompSetInterpreter : public Interpreter { public: SAExposureCompSetInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = t->toDouble(); char buffer[32]; sprintf (buffer, "%.2f", a ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { // Get the value int a = t->getValue()[ofs]; @@ -2273,13 +2273,13 @@ class SAAFMicroAdjValueInterpreter : public Interpreter { public: SAAFMicroAdjValueInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->getValue()[0] - 20); return buffer; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { return t->getValue()[0] - 20; } @@ -2290,7 +2290,7 @@ class SAAFMicroAdjModeInterpreter : public Interpreter { public: SAAFMicroAdjModeInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->getValue()[0] & 0x80; @@ -2300,7 +2300,7 @@ public: return "Off"; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { return (t->getValue()[0] & 0x80) == 0x80 ? 1 : 0; } @@ -2312,13 +2312,13 @@ class SAAFMicroAdjRegisteredLensesInterpreter : public Interpreter { public: SAAFMicroAdjRegisteredLensesInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->getValue()[0] & 0x7f); return buffer; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { return t->getValue()[0] & 0x7f; } @@ -2329,7 +2329,7 @@ class SAFocusStatusInterpreter : public Interpreter { public: SAFocusStatusInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::string retval; int a = t->toInt(); @@ -2368,13 +2368,13 @@ class SAColorTemperatureSettingInterpreter : public Interpreter { public: SAColorTemperatureSettingInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->toInt()); return buffer; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { int a = 0; diff --git a/rtexif/stdattribs.cc b/rtexif/stdattribs.cc index fc1383839..76ba1f633 100644 --- a/rtexif/stdattribs.cc +++ b/rtexif/stdattribs.cc @@ -327,7 +327,7 @@ class FNumberInterpreter : public Interpreter { public: FNumberInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble(); @@ -346,7 +346,7 @@ class ApertureInterpreter : public Interpreter { public: ApertureInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = pow (2.0, t->toDouble() / 2.0); @@ -365,7 +365,7 @@ class ExposureBiasInterpreter : public Interpreter { public: ExposureBiasInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble(); @@ -384,7 +384,7 @@ class ShutterSpeedInterpreter : public Interpreter { public: ShutterSpeedInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double d = pow (2.0, -t->toDouble()); @@ -404,7 +404,7 @@ class ExposureTimeInterpreter : public Interpreter { public: ExposureTimeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double d = t->toDouble(); @@ -424,7 +424,7 @@ class FocalLengthInterpreter : public Interpreter { public: FocalLengthInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble(); @@ -443,7 +443,7 @@ class UserCommentInterpreter : public Interpreter { public: UserCommentInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int count = t->getCount(); @@ -563,7 +563,7 @@ public: delete [] buffer; return retVal; } - virtual void fromString (Tag* t, const std::string& value) + void fromString (Tag* t, const std::string& value) override { Glib::ustring tmpStr(value); t->userCommentFromString (tmpStr); @@ -575,7 +575,7 @@ class CFAInterpreter : public Interpreter { public: CFAInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char colors[] = "RGB"; char buffer[1024]; @@ -632,7 +632,7 @@ UTF8BinInterpreter utf8BinInterpreter; class RawImageSegmentationInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int segmentNumber = t->toInt(0, SHORT); int segmentWidth = t->toInt(2, SHORT); diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index bd7f426ef..169bd7d12 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -87,7 +87,7 @@ public: int delay; Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep, double vdefault, Gtk::Image *imgIcon1 = nullptr, Gtk::Image *imgIcon2 = nullptr, double2double_fun slider2value = nullptr, double2double_fun value2slider = nullptr); - virtual ~Adjuster (); + ~Adjuster () override; // Add an "Automatic" checkbox next to the reset button. void addAutoButton(Glib::ustring tooltip = ""); diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index a922e5e1f..c05ca54fe 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -44,7 +44,7 @@ class BatchQueue final : { public: explicit BatchQueue (FileCatalog* aFileCatalog); - ~BatchQueue (); + ~BatchQueue () override; void addEntries (const std::vector& entries, bool head = false, bool save = true); void cancelItems (const std::vector& items); @@ -62,17 +62,17 @@ public: return (!fd.empty()); } - void setProgress(double p); - void setProgressStr(const Glib::ustring& str); - void setProgressState(bool inProcessing); - void error(const Glib::ustring& descr); - rtengine::ProcessingJob* imageReady(rtengine::IImagefloat* img); + void setProgress(double p) override; + void setProgressStr(const Glib::ustring& str) override; + void setProgressState(bool inProcessing) override; + void error(const Glib::ustring& descr) override; + rtengine::ProcessingJob* imageReady(rtengine::IImagefloat* img) override; - void rightClicked (ThumbBrowserEntryBase* entry); - void doubleClicked (ThumbBrowserEntryBase* entry); - bool keyPressed (GdkEventKey* event); - void buttonPressed (LWButton* button, int actionCode, void* actionData); - void redrawNeeded (LWButton* button); + void rightClicked (ThumbBrowserEntryBase* entry) override; + void doubleClicked (ThumbBrowserEntryBase* entry) override; + bool keyPressed (GdkEventKey* event) override; + void buttonPressed (LWButton* button, int actionCode, void* actionData) override; + void redrawNeeded (LWButton* button) override; void setBatchQueueListener (BatchQueueListener* l) { @@ -86,9 +86,9 @@ public: static int calcMaxThumbnailHeight(); protected: - int getMaxThumbnailHeight() const; - void saveThumbnailHeight (int height); - int getThumbnailHeight (); + int getMaxThumbnailHeight() const override; + void saveThumbnailHeight (int height) override; + int getThumbnailHeight () override; Glib::ustring autoCompleteFileName (const Glib::ustring& fileName, const Glib::ustring& format); Glib::ustring getTempFilenameForParams( const Glib::ustring &filename ); diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index caf1b8eff..2b75922b7 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -56,21 +56,21 @@ public: bool fast_pipeline; BatchQueueEntry (rtengine::ProcessingJob* job, const rtengine::procparams::ProcParams& pparams, Glib::ustring fname, int prevw, int prevh, Thumbnail* thm = nullptr); - ~BatchQueueEntry (); + ~BatchQueueEntry () override; - void refreshThumbnailImage (); - void calcThumbnailSize (); + void refreshThumbnailImage () override; + void calcThumbnailSize () override; - void drawProgressBar (Glib::RefPtr win, const Gdk::RGBA& foregr, const Gdk::RGBA& backgr, int x, int w, int y, int h); + void drawProgressBar (Glib::RefPtr win, const Gdk::RGBA& foregr, const Gdk::RGBA& backgr, int x, int w, int y, int h) override; void removeButtonSet (); - virtual std::vector > getIconsOnImageArea (); - virtual void getIconSize (int& w, int& h); - virtual Glib::ustring getToolTip (int x, int y); + std::vector > getIconsOnImageArea () override; + void getIconSize (int& w, int& h) override; + Glib::ustring getToolTip (int x, int y) override; // bqentryupdatelistener interface - void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview); + void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview) override; void _updateImage (guint8* img, int w, int h); // inside gtk thread }; diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 8ada3ae00..a1ee7326f 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -59,7 +59,7 @@ class BatchQueuePanel : public Gtk::VBox, public: explicit BatchQueuePanel (FileCatalog* aFileCatalog); - ~BatchQueuePanel(); + ~BatchQueuePanel() override; void init (RTWindow* parent); diff --git a/rtgui/bayerpreprocess.h b/rtgui/bayerpreprocess.h index 18bf35026..e06a46d31 100644 --- a/rtgui/bayerpreprocess.h +++ b/rtgui/bayerpreprocess.h @@ -41,17 +41,17 @@ public: BayerPreProcess (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void hotDeadPixelChanged(); void setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void lineDenoiseDirectionChanged(); void pdafLinesFilterChanged(); }; diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h index b0974e7a4..df0c39d00 100644 --- a/rtgui/bayerprocess.h +++ b/rtgui/bayerprocess.h @@ -70,24 +70,24 @@ protected: public: BayerProcess (); - ~BayerProcess (); + ~BayerProcess () override; - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior(bool falsecoloradd, bool iteradd, bool dualdemozecontrastadd, bool pssigmaadd, bool pssmoothadd, bool pseperisoadd); - void trimValues(rtengine::procparams::ProcParams* pp); - void setBatchMode(bool batchMode); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void trimValues(rtengine::procparams::ProcParams* pp) override; + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void methodChanged(); void imageNumberChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void checkBoxToggled(CheckBox* c, CheckValue newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void checkBoxToggled(CheckBox* c, CheckValue newval) override; void pixelShiftMotionMethodChanged(); void pixelShiftDemosaicMethodChanged(); - void autoContrastChanged (double autoContrast); - void FrameCountChanged(int n, int frameNum); + void autoContrastChanged (double autoContrast) override; + void FrameCountChanged(int n, int frameNum) override; }; #endif diff --git a/rtgui/bayerrawexposure.h b/rtgui/bayerrawexposure.h index a368eea3f..08d415838 100644 --- a/rtgui/bayerrawexposure.h +++ b/rtgui/bayerrawexposure.h @@ -38,15 +38,15 @@ public: BayerRAWExposure (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void checkBoxToggled (CheckBox* c, CheckValue newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void checkBoxToggled (CheckBox* c, CheckValue newval) override; void setAdjusterBehavior (bool pexblackadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/blackwhite.h b/rtgui/blackwhite.h index 43e4b5384..45f1e5b7b 100644 --- a/rtgui/blackwhite.h +++ b/rtgui/blackwhite.h @@ -39,32 +39,32 @@ class BlackWhite final : public: BlackWhite (); - ~BlackWhite (); + ~BlackWhite () override; - 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 autoOpenCurve (); - void setEditProvider (EditDataProvider *provider); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void autoOpenCurve () override; + void setEditProvider (EditDataProvider *provider) override; void autoch_toggled (); void neutral_pressed (); void updateRGBLabel (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool bwadd, bool bwgadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void enabledcc_toggled (); - void enabledChanged (); + void enabledChanged () override; void methodChanged (); void filterChanged (); void settingChanged (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); - void BWChanged (double redbw, double greenbw, double bluebw); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; + void BWChanged (double redbw, double greenbw, double bluebw) override; bool BWComputed_ (); - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void curveMode1Changed (); bool curveMode1Changed_ (); void curveMode1Changed2 (); diff --git a/rtgui/cacheimagedata.h b/rtgui/cacheimagedata.h index d204f1ff9..f146f2ce0 100644 --- a/rtgui/cacheimagedata.h +++ b/rtgui/cacheimagedata.h @@ -87,30 +87,30 @@ public: // FramesMetaData interface //------------------------------------------------------------------------- - unsigned int getRootCount () const { return -1; } - unsigned int getFrameCount () const { return frameCount; } - bool hasExif (unsigned int frame = 0) const { return false; } - rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const { return nullptr; } - rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const { return nullptr; } - rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const { return nullptr; } - bool hasIPTC (unsigned int frame = 0) const { return false; } - rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const { return rtengine::procparams::IPTCPairs(); } - tm getDateTime (unsigned int frame = 0) const { return tm{}; } - time_t getDateTimeAsTS(unsigned int frame = 0) const { return time_t(-1); } - int getISOSpeed (unsigned int frame = 0) const { return iso; } - double getFNumber (unsigned int frame = 0) const { return fnumber; } - double getFocalLen (unsigned int frame = 0) const { return focalLen; } - double getFocalLen35mm (unsigned int frame = 0) const { return focalLen35mm; } - float getFocusDist (unsigned int frame = 0) const { return focusDist; } - double getShutterSpeed (unsigned int frame = 0) const { return shutter; } - double getExpComp (unsigned int frame = 0) const { return atof(expcomp.c_str()); } - std::string getMake (unsigned int frame = 0) const { return camMake; } - std::string getModel (unsigned int frame = 0) const { return camModel; } - std::string getLens (unsigned int frame = 0) const { return lens; } - std::string getOrientation (unsigned int frame = 0) const { return ""; } // TODO - bool getPixelShift () const { return isPixelShift; } - bool getHDR (unsigned int frame = 0) const { return isHDR; } - std::string getImageType (unsigned int frame) const { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; } - rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const { return sampleFormat; } + unsigned int getRootCount () const override { return -1; } + unsigned int getFrameCount () const override { return frameCount; } + bool hasExif (unsigned int frame = 0) const override { return false; } + rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const override { return nullptr; } + rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const override { return nullptr; } + rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const override { return nullptr; } + bool hasIPTC (unsigned int frame = 0) const override { return false; } + rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const override { return rtengine::procparams::IPTCPairs(); } + tm getDateTime (unsigned int frame = 0) const override { return tm{}; } + time_t getDateTimeAsTS(unsigned int frame = 0) const override { return time_t(-1); } + int getISOSpeed (unsigned int frame = 0) const override { return iso; } + double getFNumber (unsigned int frame = 0) const override { return fnumber; } + double getFocalLen (unsigned int frame = 0) const override { return focalLen; } + double getFocalLen35mm (unsigned int frame = 0) const override { return focalLen35mm; } + float getFocusDist (unsigned int frame = 0) const override { return focusDist; } + double getShutterSpeed (unsigned int frame = 0) const override { return shutter; } + double getExpComp (unsigned int frame = 0) const override { return atof(expcomp.c_str()); } + std::string getMake (unsigned int frame = 0) const override { return camMake; } + std::string getModel (unsigned int frame = 0) const override { return camModel; } + std::string getLens (unsigned int frame = 0) const override { return lens; } + std::string getOrientation (unsigned int frame = 0) const override { return ""; } // TODO + bool getPixelShift () const override { return isPixelShift; } + bool getHDR (unsigned int frame = 0) const override { return isHDR; } + std::string getImageType (unsigned int frame) const override { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; } + rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override { return sampleFormat; } }; #endif diff --git a/rtgui/cacorrection.h b/rtgui/cacorrection.h index 2de510968..198037060 100644 --- a/rtgui/cacorrection.h +++ b/rtgui/cacorrection.h @@ -34,15 +34,15 @@ public: CACorrection (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool badd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/chmixer.h b/rtgui/chmixer.h index 0ec28da3d..7e372cbc2 100644 --- a/rtgui/chmixer.h +++ b/rtgui/chmixer.h @@ -36,16 +36,16 @@ public: ChMixer (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool rgbadd); - void trimValues (rtengine::procparams::ProcParams* pp); - void enabledChanged(); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void enabledChanged() override; }; #endif diff --git a/rtgui/coarsepanel.h b/rtgui/coarsepanel.h index 7ac1bccc5..bd4668eea 100644 --- a/rtgui/coarsepanel.h +++ b/rtgui/coarsepanel.h @@ -37,8 +37,8 @@ public: CoarsePanel (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void initBatchBehavior (); void rotateLeft (); diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h index 5dd8a2e82..3f95d9f74 100644 --- a/rtgui/colorappearance.h +++ b/rtgui/colorappearance.h @@ -38,16 +38,16 @@ class ColorAppearance final : { public: ColorAppearance (); - ~ColorAppearance (); + ~ColorAppearance () override; - 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 adjusterAutoToggled (Adjuster* a, bool newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; // void adjusterAdapToggled (Adjuster* a, bool newval); - void enabledChanged (); + void enabledChanged () override; void surroundChanged (); void surrsrcChanged (); void wbmodelChanged (); @@ -58,14 +58,14 @@ public: void datacie_toggled (); void tonecie_toggled (); // void sharpcie_toggled (); - void autoCamChanged (double ccam, double ccamout); + void autoCamChanged (double ccam, double ccamout) override; bool autoCamComputed_ (); - void adapCamChanged (double cadap); + void adapCamChanged (double cadap) override; bool adapCamComputed_ (); - void ybCamChanged (int yb); + void ybCamChanged (int yb) override; bool ybCamComputed_ (); - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void curveMode1Changed (); bool curveMode1Changed_ (); void curveMode2Changed (); @@ -76,10 +76,10 @@ public: void expandCurve (bool isExpanded); bool isCurveExpanded (); - void autoOpenCurve (); + void autoOpenCurve () override; void setAdjusterBehavior (bool degreeadd, bool adapscenadd, bool adaplumadd, bool badpixsladd, bool jlightadd, bool chromaadd, bool contrastadd, bool rstprotectionadd, bool qbrightadd, bool qcontrastadd, bool schromaadd, bool mchromaadd, bool colorhadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void updateCurveBackgroundHistogram( const LUTu& histToneCurve, const LUTu& histLCurve, @@ -92,7 +92,7 @@ public: const LUTu& histLuma, const LUTu& histLRETI ); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller) override; void updateToolState (std::vector &tpOpen); void writeOptions (std::vector &tpOpen); diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index 8fb640cba..acf3fa8b5 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -25,41 +25,41 @@ class ColorToning final : { public: ColorToning (); - ~ColorToning(); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void trimValues (rtengine::procparams::ProcParams* pp); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + ~ColorToning() override; + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool splitAdd, bool satThresholdAdd, bool satOpacityAdd, bool strprotectAdd, bool balanceAdd); void neutral_pressed (); //void neutralCurves_pressed (); - void autoColorTonChanged (int bwct, int satthres, int satprot); + void autoColorTonChanged (int bwct, int satthres, int satprot) override; bool CTComp_ (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; - void enabledChanged (); - void curveChanged (CurveEditor* ce); + void enabledChanged () override; + void curveChanged (CurveEditor* ce) override; void autosatChanged (); - void autoOpenCurve (); + void autoOpenCurve () override; void methodChanged (); void twocolorChanged (bool changedbymethod); void twoColorChangedByGui (); void lumamodeChanged (); - void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; - void setListener(ToolPanelListener *tpl); + void setListener(ToolPanelListener *tpl) override; - void setEditProvider(EditDataProvider *provider); - float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3); + void setEditProvider(EditDataProvider *provider) override; + float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3) override; private: void onLabRegionSelectionChanged(); diff --git a/rtgui/coordinateadjuster.h b/rtgui/coordinateadjuster.h index 08f2fb479..33ea92bb2 100644 --- a/rtgui/coordinateadjuster.h +++ b/rtgui/coordinateadjuster.h @@ -136,7 +136,7 @@ public: /// For more complex adjuster CoordinateAdjuster(CoordinateProvider *provider, CurveEditorSubGroup *parent, const std::vector &axis); - virtual ~CoordinateAdjuster(); + ~CoordinateAdjuster() override; // Update the Axis list, e.g. on Curve change, but MUST have the same axis count void setAxis(const std::vector &axis); diff --git a/rtgui/crop.h b/rtgui/crop.h index d3b5c7b6b..289954398 100644 --- a/rtgui/crop.h +++ b/rtgui/crop.h @@ -41,42 +41,42 @@ class Crop final : { public: Crop(); - ~Crop(); + ~Crop() override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void ratioChanged (); void ratioFixedChanged (); // The toggle button void refreshSize (); void selectPressed (); void setDimensions (int mw, int mh); - void enabledChanged (); + void enabledChanged () override; void positionChanged (); void widthChanged (); void heightChanged (); bool refreshSpins (bool notify = false); void notifyListener (); - void sizeChanged (int w, int h, int ow, int oh); + void sizeChanged (int w, int h, int ow, int oh) override; void trim (rtengine::procparams::ProcParams* pp, int ow, int oh); void readOptions (); void writeOptions (); - void cropMoved (int &x, int &y, int &w, int &h); - void cropWidth1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropWidth2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropHeight1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropHeight2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropTopLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropTopRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropBottomLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropBottomRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropInit (int &x, int &y, int &w, int &h); - void cropResized (int &x, int &y, int& x2, int& y2); - void cropManipReady (); - bool inImageArea (int x, int y); - double getRatio () const; + void cropMoved (int &x, int &y, int &w, int &h) override; + void cropWidth1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropWidth2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropHeight1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropHeight2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropTopLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropTopRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropBottomLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropBottomRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropInit (int &x, int &y, int &w, int &h) override; + void cropResized (int &x, int &y, int& x2, int& y2) override; + void cropManipReady () override; + bool inImageArea (int x, int y) override; + double getRatio () const override; void setCropPanelListener (CropPanelListener* cl) { diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index 14dd5062d..2690ca002 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -51,7 +51,7 @@ class CropHandler final : { public: CropHandler (); - ~CropHandler (); + ~CropHandler () override; void setDisplayHandler (CropDisplayHandler* l) { @@ -96,11 +96,11 @@ public: int cw, int ch, int skip - ); - void getWindow(int& cwx, int& cwy, int& cww, int& cwh, int& cskip); + ) override; + void getWindow(int& cwx, int& cwy, int& cww, int& cwh, int& cskip) override; // SizeListener interface - void sizeChanged (int w, int h, int ow, int oh); + void sizeChanged (int w, int h, int ow, int oh) override; void update (); diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h index 71729e66e..395b1b621 100644 --- a/rtgui/cropwindow.h +++ b/rtgui/cropwindow.h @@ -134,7 +134,7 @@ class CropWindow : public LWButtonListener, public CropDisplayHandler, public Ed public: CropHandler cropHandler; CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDetailWindow); - ~CropWindow (); + ~CropWindow () override; void setDecorated (bool decorated) { @@ -150,19 +150,19 @@ public: } void deleteColorPickers (); - void screenCoordToCropBuffer (int phyx, int phyy, int& cropx, int& cropy); - void screenCoordToImage (int phyx, int phyy, int& imgx, int& imgy); + void screenCoordToCropBuffer (int phyx, int phyy, int& cropx, int& cropy) override; + void screenCoordToImage (int phyx, int phyy, int& imgx, int& imgy) override; void screenCoordToCropCanvas (int phyx, int phyy, int& prevx, int& prevy); - void imageCoordToCropCanvas (int imgx, int imgy, int& phyx, int& phyy); - void imageCoordToScreen (int imgx, int imgy, int& phyx, int& phyy); - void imageCoordToCropBuffer (int imgx, int imgy, int& phyx, int& phyy); - void imageCoordToCropImage (int imgx, int imgy, int& phyx, int& phyy); - int scaleValueToImage (int value); - float scaleValueToImage (float value); - double scaleValueToImage (double value); - int scaleValueToCanvas (int value); - float scaleValueToCanvas (float value); - double scaleValueToCanvas (double value); + void imageCoordToCropCanvas (int imgx, int imgy, int& phyx, int& phyy) override; + void imageCoordToScreen (int imgx, int imgy, int& phyx, int& phyy) override; + void imageCoordToCropBuffer (int imgx, int imgy, int& phyx, int& phyy) override; + void imageCoordToCropImage (int imgx, int imgy, int& phyx, int& phyy) override; + int scaleValueToImage (int value) override; + float scaleValueToImage (float value) override; + double scaleValueToImage (double value) override; + int scaleValueToCanvas (int value) override; + float scaleValueToCanvas (float value) override; + double scaleValueToCanvas (double value) override; double getZoomFitVal (); void setPosition (int x, int y); void getPosition (int& x, int& y); @@ -197,8 +197,8 @@ public: void setEditSubscriber (EditSubscriber* newSubscriber); // interface lwbuttonlistener - void buttonPressed (LWButton* button, int actionCode, void* actionData); - void redrawNeeded (LWButton* button); + void buttonPressed (LWButton* button, int actionCode, void* actionData) override; + void redrawNeeded (LWButton* button) override; // crop handling void getCropRectangle (int& x, int& y, int& w, int& h); @@ -220,10 +220,10 @@ public: void delCropWindowListener (CropWindowListener* l); // crophandlerlistener interface - void cropImageUpdated (); - void cropWindowChanged (); - void initialImageArrived (); - void setDisplayPosition (int x, int y); + void cropImageUpdated () override; + void cropWindowChanged () override; + void initialImageArrived () override; + void setDisplayPosition (int x, int y) override; void remoteMove (int deltaX, int deltaY); void remoteMoveReady (); diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index afd4a1211..14699b42a 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -88,7 +88,7 @@ protected: public: CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup); - virtual ~CurveEditor (); + ~CurveEditor () override; void typeSelectionChanged (int n); void curveTypeToggled(); bool isUnChanged (); @@ -127,12 +127,12 @@ public: sigc::signal signal_curvepoint_click(); sigc::signal signal_curvepoint_release(); - void switchOffEditMode (); - bool mouseOver(const int modifierKey); - bool button1Pressed(const int modifierKey); - bool button1Released(); - bool drag1(const int modifierKey); - CursorShape getCursor(const int objectID); + void switchOffEditMode () override; + bool mouseOver(const int modifierKey) override; + bool button1Pressed(const int modifierKey) override; + bool button1Released() override; + bool drag1(const int modifierKey) override; + CursorShape getCursor(const int objectID) override; }; @@ -161,7 +161,7 @@ protected: public: DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup); - std::vector getCurve (); + std::vector getCurve () override; void setRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4); void getRangeLabels(Glib::ustring &r1, Glib::ustring &r2, Glib::ustring &r3, Glib::ustring &r4); void setRangeDefaultMilestones(double m1, double m2, double m3); @@ -191,15 +191,15 @@ protected: public: FlatCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup, bool isPeriodic = true); - virtual void setIdentityValue (const double iValue = 0.5) + void setIdentityValue (const double iValue = 0.5) override { identityValue = iValue; } - virtual double getIdentityValue () + double getIdentityValue () override { return identityValue; }; - std::vector getCurve (); + std::vector getCurve () override; // set the reset curve for a given curve type. This is optional; all curve type have a default reset curve void setResetCurve(FlatCurveType cType, const std::vector &resetCurve); diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index ffd522fae..80a1a95a4 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -71,7 +71,7 @@ public: */ CurveEditorGroup(Glib::ustring& curveDir, Glib::ustring groupLabel = ""); - ~CurveEditorGroup(); + ~CurveEditorGroup() override; void newLine(); void curveListComplete(); void setBatchMode (bool batchMode); @@ -97,8 +97,8 @@ protected: void hideCurrentCurve (); void updateGUI (CurveEditor* ce); void curveResetPressed (); - void curveChanged (); - float blendPipetteValues(CurveEditor* ce, float chan1, float chan2, float chan3); + void curveChanged () override; + float blendPipetteValues(CurveEditor* ce, float chan1, float chan2, float chan3) override; void setUnChanged (bool uc, CurveEditor* ce); }; diff --git a/rtgui/darkframe.h b/rtgui/darkframe.h index 0660c953d..c385a2153 100644 --- a/rtgui/darkframe.h +++ b/rtgui/darkframe.h @@ -55,8 +55,8 @@ public: DarkFrame (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void darkFrameChanged (); void darkFrameReset (); diff --git a/rtgui/defringe.h b/rtgui/defringe.h index 81b870675..1aa6cc303 100644 --- a/rtgui/defringe.h +++ b/rtgui/defringe.h @@ -41,18 +41,18 @@ protected: public: Defringe (); - ~Defringe (); - 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 autoOpenCurve (); - void curveChanged (); + ~Defringe () override; + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void autoOpenCurve () override; + void curveChanged () override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; }; diff --git a/rtgui/dehaze.h b/rtgui/dehaze.h index 0ae7749e4..322e0bf0c 100644 --- a/rtgui/dehaze.h +++ b/rtgui/dehaze.h @@ -39,15 +39,15 @@ public: Dehaze(); - 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 read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override; + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override; + void setBatchMode(bool batchMode) override; - void adjusterChanged(Adjuster *a, double newval); - void enabledChanged(); + void adjusterChanged(Adjuster *a, double newval) override; + void enabledChanged() override; void showDepthMapChanged(); void setAdjusterBehavior(bool strengthAdd); - void adjusterAutoToggled(Adjuster* a, bool newval) {} + void adjusterAutoToggled(Adjuster* a, bool newval) override {} }; diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index c9dafeadd..39cc86973 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -75,37 +75,37 @@ protected: public: DiagonalCurveEditorSubGroup(CurveEditorGroup* prt, Glib::ustring& curveDir); - virtual ~DiagonalCurveEditorSubGroup(); + ~DiagonalCurveEditorSubGroup() override; DiagonalCurveEditor* addCurve(Glib::ustring curveLabel = ""); - virtual void updateBackgroundHistogram (CurveEditor* ce); - void switchGUI(); - void refresh(CurveEditor *curveToRefresh); - void editModeSwitchedOff (); - void pipetteMouseOver(EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); - void showCoordinateAdjuster(CoordinateProvider *provider); - void stopNumericalAdjustment(); + void updateBackgroundHistogram (CurveEditor* ce) override; + void switchGUI() override; + void refresh(CurveEditor *curveToRefresh) override; + void editModeSwitchedOff () override; + void pipetteMouseOver(EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; + void showCoordinateAdjuster(CoordinateProvider *provider) override; + void stopNumericalAdjustment() override; - bool curveReset (CurveEditor *ce); + bool curveReset (CurveEditor *ce) override; protected: - void storeCurveValues (CurveEditor* ce, const std::vector& p); - void storeDisplayedCurve (); - void restoreDisplayedHistogram (); + void storeCurveValues (CurveEditor* ce, const std::vector& p) override; + void storeDisplayedCurve () override; + void restoreDisplayedHistogram () override; void savePressed (); void loadPressed (); void copyPressed (); void pastePressed (); void editPointToggled(Gtk::ToggleButton *button); void editToggled (Gtk::ToggleButton *button); - void removeEditor (); - const std::vector getCurveFromGUI (int type); - void shcChanged (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void removeEditor () override; + const std::vector getCurveFromGUI (int type) override; + void shcChanged () override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; bool adjusterEntered (GdkEventCrossing* ev, int ac); bool adjusterLeft (GdkEventCrossing* ev, int ac); void setSubGroupRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4); diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h index a3f451101..62bc6f4a4 100644 --- a/rtgui/dirbrowser.h +++ b/rtgui/dirbrowser.h @@ -101,7 +101,7 @@ private: public: DirBrowser (); - ~DirBrowser(); + ~DirBrowser() override; void fillDirTree (); void on_sort_column_changed() const; diff --git a/rtgui/dirpyrdenoise.h b/rtgui/dirpyrdenoise.h index 26a55ba20..2ee1863ab 100644 --- a/rtgui/dirpyrdenoise.h +++ b/rtgui/dirpyrdenoise.h @@ -38,25 +38,25 @@ class DirPyrDenoise final : { public: DirPyrDenoise (); - ~DirPyrDenoise (); + ~DirPyrDenoise () override; - 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 curveChanged (CurveEditor* ce); - void setEditProvider (EditDataProvider *provider); - void autoOpenCurve (); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void curveChanged (CurveEditor* ce) override; + void setEditProvider (EditDataProvider *provider) override; + void autoOpenCurve () override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void medianChanged (); - void chromaChanged (double autchroma, double autred, double autblue); + void chromaChanged (double autchroma, double autred, double autblue) override; bool chromaComputed_ (); - void noiseChanged (double nresid, double highresid); + void noiseChanged (double nresid, double highresid) override; bool noiseComputed_ (); - void noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP); + void noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP) override; bool TilePrevComputed_ (); // void perform_toggled (); @@ -72,10 +72,10 @@ public: void methodmedChanged (); void rgbmethodChanged (); void smethodChanged (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; void setAdjusterBehavior (bool lumaadd, bool lumdetadd, bool chromaadd, bool chromaredadd, bool chromablueadd, bool gammaadd, bool passesadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; Glib::ustring getSettingString (); private: diff --git a/rtgui/dirpyrequalizer.h b/rtgui/dirpyrequalizer.h index 3b5549e55..d7903116b 100644 --- a/rtgui/dirpyrequalizer.h +++ b/rtgui/dirpyrequalizer.h @@ -55,28 +55,28 @@ protected: public: DirPyrEqualizer (); - virtual ~DirPyrEqualizer (); + ~DirPyrEqualizer () override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool skinadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void cbdlMethodChanged(); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged(); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged() override; void gamutlabToggled (); void lumaneutralPressed (); void lumacontrastPlusPressed (); void lumacontrastMinusPressed (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; }; #endif diff --git a/rtgui/distortion.h b/rtgui/distortion.h index b1134e426..ce1e81046 100644 --- a/rtgui/distortion.h +++ b/rtgui/distortion.h @@ -37,15 +37,15 @@ public: Distortion (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool vadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void idPressed (); void setLensGeomListener (LensGeomListener* l) { diff --git a/rtgui/edit.h b/rtgui/edit.h index 611d95e1c..1540dc5ac 100644 --- a/rtgui/edit.h +++ b/rtgui/edit.h @@ -348,9 +348,9 @@ public: Circle (rtengine::Coord& center, int radius, bool filled = false, bool radiusInImageSpace = false); Circle (int centerX, int centerY, int radius, bool filled = false, bool radiusInImageSpace = false); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class Line : public Geometry @@ -363,9 +363,9 @@ public: Line (rtengine::Coord& begin, rtengine::Coord& end); Line (int beginX, int beginY, int endX, int endY); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class Polyline : public Geometry @@ -376,9 +376,9 @@ public: Polyline (); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class Rectangle : public Geometry @@ -394,9 +394,9 @@ public: void setXYXY(int left, int top, int right, int bottom); void setXYWH(rtengine::Coord topLeft, rtengine::Coord widthHeight); void setXYXY(rtengine::Coord topLeft, rtengine::Coord bottomRight); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class OPIcon : public Geometry // OP stands for "On Preview" @@ -431,9 +431,9 @@ public: const Cairo::RefPtr getActiveImg(); const Cairo::RefPtr getDraggedImg(); const Cairo::RefPtr getInsensitiveImg(); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class OPAdjuster : public Geometry // OP stands for "On Preview" diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 29ca70554..de5360646 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -56,11 +56,11 @@ class EditorPanel final : { public: explicit EditorPanel (FilePanel* filePanel = nullptr); - ~EditorPanel (); + ~EditorPanel () override; void open (Thumbnail* tmb, rtengine::InitialImage* isrc); void setAspect (); - void on_realize (); + void on_realize () override; void leftPaneButtonReleased (GdkEventButton *event); void rightPaneButtonReleased (GdkEventButton *event); @@ -83,10 +83,10 @@ public: return realized; } // ProgressListener interface - void setProgress(double p); - void setProgressStr(const Glib::ustring& str); - void setProgressState(bool inProcessing); - void error(const Glib::ustring& descr); + void setProgress(double p) override; + void setProgressStr(const Glib::ustring& str) override; + void setProgressState(bool inProcessing) override; + void error(const Glib::ustring& descr) override; void error(const Glib::ustring& title, const Glib::ustring& descr); void displayError(const Glib::ustring& title, const Glib::ustring& descr); // this is called by error in the gtk thread @@ -98,14 +98,14 @@ public: const rtengine::ProcEvent& ev, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr - ); - void clearParamChanges(); + ) override; + void clearParamChanges() override; // thumbnaillistener interface - void procParamsChanged (Thumbnail* thm, int whoChangedIt); + void procParamsChanged (Thumbnail* thm, int whoChangedIt) override; // HistoryBeforeLineListener - void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params); + void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params) override; // HistogramListener void histogramChanged( @@ -123,7 +123,7 @@ public: const LUTu& histBlueRaw, const LUTu& histChroma, const LUTu& histLRETI - ); + ) override; // event handlers void info_toggled (); diff --git a/rtgui/editwindow.h b/rtgui/editwindow.h index 8cf93dbf8..736e46bd4 100644 --- a/rtgui/editwindow.h +++ b/rtgui/editwindow.h @@ -55,12 +55,12 @@ public: void toFront(); bool keyPressed (GdkEventKey* event); - bool on_configure_event(GdkEventConfigure* event); - bool on_delete_event(GdkEventAny* event); + bool on_configure_event(GdkEventConfigure* event) override; + bool on_delete_event(GdkEventAny* event) override; //bool on_window_state_event(GdkEventWindowState* event); void on_mainNB_switch_page(Gtk::Widget* page, guint page_num); void set_title_decorated(Glib::ustring fname); - void on_realize (); + void on_realize () override; }; #endif diff --git a/rtgui/epd.h b/rtgui/epd.h index c40133c3a..f2073a976 100644 --- a/rtgui/epd.h +++ b/rtgui/epd.h @@ -36,14 +36,14 @@ public: EdgePreservingDecompositionUI(); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool stAdd, bool gAdd, bool esAdd, bool scAdd, bool rAdd); }; diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h index 5121eff4f..cd27cb780 100644 --- a/rtgui/exifpanel.h +++ b/rtgui/exifpanel.h @@ -97,11 +97,11 @@ private: public: ExifPanel (); - virtual ~ExifPanel(); + ~ExifPanel() override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setImageData (const rtengine::FramesMetaData* id); diff --git a/rtgui/fattaltonemap.h b/rtgui/fattaltonemap.h index fb6f1acd6..76e850c4e 100644 --- a/rtgui/fattaltonemap.h +++ b/rtgui/fattaltonemap.h @@ -36,14 +36,14 @@ public: FattalToneMapping(); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior(bool amountAdd, bool thresholdAdd, bool anchorAdd); }; diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 5debe9a6c..f15c7c5e8 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -136,7 +136,7 @@ protected: public: FileBrowser (); - ~FileBrowser (); + ~FileBrowser () override; void addEntry (FileBrowserEntry* entry); // can be called from any thread void addEntry_ (FileBrowserEntry* entry); // this must be executed inside the gtk thread @@ -164,17 +164,17 @@ public: return numFiltered; } - void buttonPressed (LWButton* button, int actionCode, void* actionData); - void redrawNeeded (LWButton* button); - bool checkFilter (ThumbBrowserEntryBase* entry); - void rightClicked (ThumbBrowserEntryBase* entry); - void doubleClicked (ThumbBrowserEntryBase* entry); - bool keyPressed (GdkEventKey* event); + void buttonPressed (LWButton* button, int actionCode, void* actionData) override; + void redrawNeeded (LWButton* button) override; + bool checkFilter (ThumbBrowserEntryBase* entry) override; + void rightClicked (ThumbBrowserEntryBase* entry) override; + void doubleClicked (ThumbBrowserEntryBase* entry) override; + bool keyPressed (GdkEventKey* event) override; - void saveThumbnailHeight (int height); - int getThumbnailHeight (); + void saveThumbnailHeight (int height) override; + int getThumbnailHeight () override; - bool isInTabMode() + bool isInTabMode() override { return tbl ? tbl->isInTabMode() : false; } @@ -191,18 +191,18 @@ public: void openDefaultViewer (int destination); #endif - void thumbRearrangementNeeded (); + void thumbRearrangementNeeded () override; void _thumbRearrangementNeeded (); - void selectionChanged (); + void selectionChanged () override; void setExportPanel (ExportPanel* expanel); // exportpanel interface - void exportRequested(); + void exportRequested() override; - void storeCurrentValue(); - void updateProfileList(); - void restoreValue(); + void storeCurrentValue() override; + void updateProfileList() override; + void restoreValue() override; type_trash_changed trash_changed(); }; diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h index 5d5bd7e8e..b1fa8c54b 100644 --- a/rtgui/filebrowserentry.h +++ b/rtgui/filebrowserentry.h @@ -67,7 +67,7 @@ class FileBrowserEntry : public ThumbBrowserEntryBase, bool onArea (CursorArea a, int x, int y); void updateCursor (int x, int y); void drawStraightenGuide (Cairo::RefPtr c); - void customBackBufferUpdate (Cairo::RefPtr c); + void customBackBufferUpdate (Cairo::RefPtr c) override; public: @@ -78,8 +78,8 @@ public: static Glib::RefPtr ps; FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname); - ~FileBrowserEntry (); - void draw (Cairo::RefPtr cc); + ~FileBrowserEntry () override; + void draw (Cairo::RefPtr cc) override; void setImageAreaToolListener (ImageAreaToolListener* l) { @@ -88,23 +88,23 @@ public: FileThumbnailButtonSet* getThumbButtonSet (); - void refreshThumbnailImage (); - void refreshQuickThumbnailImage (); - void calcThumbnailSize (); + void refreshThumbnailImage () override; + void refreshQuickThumbnailImage () override; + void calcThumbnailSize () override; - virtual std::vector > getIconsOnImageArea (); - virtual std::vector > getSpecificityIconsOnImageArea (); - virtual void getIconSize (int& w, int& h); + std::vector > getIconsOnImageArea () override; + std::vector > getSpecificityIconsOnImageArea () override; + void getIconSize (int& w, int& h) override; // thumbnaillistener interface - void procParamsChanged (Thumbnail* thm, int whoChangedIt); + void procParamsChanged (Thumbnail* thm, int whoChangedIt) override; // thumbimageupdatelistener interface - void updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams); + void updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams) override; void _updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams); // inside gtk thread - virtual bool motionNotify (int x, int y); - virtual bool pressNotify (int button, int type, int bstate, int x, int y); - virtual bool releaseNotify (int button, int type, int bstate, int x, int y); + bool motionNotify (int x, int y) override; + bool pressNotify (int button, int type, int bstate, int x, int y) override; + bool releaseNotify (int button, int type, int bstate, int x, int y) override; }; #endif diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index 0af52fd28..407535ba0 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -164,14 +164,14 @@ public: ToolBar* toolBar; FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel); - ~FileCatalog(); + ~FileCatalog() override; void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile); void closeDir (); void refreshEditedState (const std::set& efiles); // previewloaderlistener interface - void previewReady (int dir_id, FileBrowserEntry* fdn); - void previewsFinished (int dir_id); + void previewReady (int dir_id, FileBrowserEntry* fdn) override; + void previewsFinished (int dir_id) override; void previewsFinishedUI (); void _refreshProgressBar (); @@ -195,10 +195,10 @@ public: } // filterpanel interface - void exifFilterChanged (); + void exifFilterChanged () override; // exportpanel interface - void exportRequested(); + void exportRequested() override; Glib::ustring lastSelectedDir () { @@ -212,15 +212,15 @@ public: void refreshThumbImages (); void refreshHeight (); - void filterApplied(); - void openRequested(const std::vector& tbe); - void deleteRequested(const std::vector& tbe, bool inclBatchProcessed); - void copyMoveRequested(const std::vector& tbe, bool moveRequested); - void developRequested(const std::vector& tbe, bool fastmode); - void renameRequested(const std::vector& tbe); - void selectionChanged(const std::vector& tbe); - void clearFromCacheRequested(const std::vector& tbe, bool leavenotrace); - bool isInTabMode() const; + void filterApplied() override; + void openRequested(const std::vector& tbe) override; + void deleteRequested(const std::vector& tbe, bool inclBatchProcessed) override; + void copyMoveRequested(const std::vector& tbe, bool moveRequested) override; + void developRequested(const std::vector& tbe, bool fastmode) override; + void renameRequested(const std::vector& tbe) override; + void selectionChanged(const std::vector& tbe) override; + void clearFromCacheRequested(const std::vector& tbe, bool leavenotrace) override; + bool isInTabMode() const override; void emptyTrash (); bool trashIsEmpty (); @@ -247,7 +247,7 @@ public: void filterChanged (); void runFilterDialog (); - void on_realize(); + void on_realize() override; void reparseDirectory (); void _openImage (std::vector tmb); diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h index 8be0229bc..df61cb60d 100644 --- a/rtgui/filepanel.h +++ b/rtgui/filepanel.h @@ -40,7 +40,7 @@ class FilePanel final : { public: FilePanel (); - ~FilePanel (); + ~FilePanel () override; Gtk::Paned* placespaned; Gtk::HPaned* dirpaned; @@ -58,7 +58,7 @@ public: parent = p; } void init (); // don't call it directly, the constructor calls it as idle source - void on_realize (); + void on_realize () override; void setAspect(); void open (const Glib::ustring& d); // open a file or a directory void refreshEditedState (const std::set& efiles) @@ -71,8 +71,8 @@ public: void saveOptions (); // interface fileselectionlistener - bool fileSelected(Thumbnail* thm); - bool addBatchQueueJobs(const std::vector& entries); + bool fileSelected(Thumbnail* thm) override; + bool addBatchQueueJobs(const std::vector& entries) override; void optionsChanged (); bool imageLoaded( Thumbnail* thm, ProgressConnector * ); diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h index 72ef019c5..f2c9af621 100644 --- a/rtgui/filmsimulation.h +++ b/rtgui/filmsimulation.h @@ -53,17 +53,17 @@ class FilmSimulation : public ToolParamBlock, public AdjusterListener, public Fo public: FilmSimulation(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - 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 adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void setBatchMode(bool batchMode) override; + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior(bool strength); - void trimValues(rtengine::procparams::ProcParams* pp); + void trimValues(rtengine::procparams::ProcParams* pp) override; private: void onClutSelected(); - void enabledChanged(); + void enabledChanged() override; void updateDisable( bool value ); diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index 0dc040cfe..ab2abedfb 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -46,32 +46,32 @@ protected: public: FlatCurveEditorSubGroup(CurveEditorGroup* prt, Glib::ustring& curveDir); - virtual ~FlatCurveEditorSubGroup(); + ~FlatCurveEditorSubGroup() override; FlatCurveEditor* addCurve(Glib::ustring curveLabel = "", bool periodic = true); //virtual void updateBackgroundHistogram (CurveEditor* ce); - void switchGUI(); - void refresh(CurveEditor *curveToRefresh); - void editModeSwitchedOff(); - void pipetteMouseOver(EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); - void showCoordinateAdjuster(CoordinateProvider *provider); - void stopNumericalAdjustment(); + void switchGUI() override; + void refresh(CurveEditor *curveToRefresh) override; + void editModeSwitchedOff() override; + void pipetteMouseOver(EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; + void showCoordinateAdjuster(CoordinateProvider *provider) override; + void stopNumericalAdjustment() override; - bool curveReset (CurveEditor *ce); + bool curveReset (CurveEditor *ce) override; protected: - void storeCurveValues (CurveEditor* ce, const std::vector& p); - void storeDisplayedCurve (); - void restoreDisplayedHistogram (); + void storeCurveValues (CurveEditor* ce, const std::vector& p) override; + void storeDisplayedCurve () override; + void restoreDisplayedHistogram () override; void savePressed (); void loadPressed (); void copyPressed (); void pastePressed (); - void removeEditor (); - const std::vector getCurveFromGUI (int type); + void removeEditor () override; + const std::vector getCurveFromGUI (int type) override; void editPointToggled(Gtk::ToggleButton *button); void editToggled (Gtk::ToggleButton *button); }; diff --git a/rtgui/flatfield.h b/rtgui/flatfield.h index 599589b68..46e2f6ddd 100644 --- a/rtgui/flatfield.h +++ b/rtgui/flatfield.h @@ -62,17 +62,17 @@ protected: public: FlatField (); - ~FlatField (); + ~FlatField () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void setAdjusterBehavior (bool clipctrladd); - void trimValues (rtengine::procparams::ProcParams* pp); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void flatFieldFileChanged (); void flatFieldFile_Reset (); void flatFieldAutoSelectChanged (); @@ -82,7 +82,7 @@ public: { ffp = p; }; - void flatFieldAutoClipValueChanged(int n = 0); + void flatFieldAutoClipValueChanged(int n = 0) override; }; #endif diff --git a/rtgui/gradient.h b/rtgui/gradient.h index c34364cb5..8812d6670 100644 --- a/rtgui/gradient.h +++ b/rtgui/gradient.h @@ -35,29 +35,29 @@ protected: public: Gradient (); - ~Gradient (); + ~Gradient () override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool degreeadd, bool featheradd, bool strengthadd, bool centeradd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void updateGeometry (const int centerX, const int centerY, const double feather, const double degree, const int fullWidth=-1, const int fullHeight=-1); - void setEditProvider (EditDataProvider* provider); + void setEditProvider (EditDataProvider* provider) override; // EditSubscriber interface - CursorShape getCursor(const int objectID); - bool mouseOver(const int modifierKey); - bool button1Pressed(const int modifierKey); - bool button1Released(); - bool drag1(const int modifierKey); - void switchOffEditMode (); + CursorShape getCursor(const int objectID) override; + bool mouseOver(const int modifierKey) override; + bool button1Pressed(const int modifierKey) override; + bool button1Released() override; + bool drag1(const int modifierKey) override; + void switchOffEditMode () override; }; #endif diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 8816eca4f..074e3bacc 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -149,7 +149,7 @@ private: public: explicit ExpanderBox( Gtk::Container *p); - ~ExpanderBox( ) + ~ExpanderBox( ) override { delete pC; } @@ -285,9 +285,9 @@ public: class MyScrolledWindow : public Gtk::ScrolledWindow { - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; public: MyScrolledWindow(); @@ -299,7 +299,7 @@ public: class MyScrolledToolbar : public Gtk::ScrolledWindow { - bool on_scroll_event (GdkEventScroll* event); + bool on_scroll_event (GdkEventScroll* event) override; void get_preferred_height (int &minimumHeight, int &naturalHeight); public: @@ -313,9 +313,9 @@ class MyComboBox : public Gtk::ComboBox { int naturalWidth, minimumWidth; - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; public: MyComboBox (); @@ -331,9 +331,9 @@ class MyComboBoxText : public Gtk::ComboBoxText int naturalWidth, minimumWidth; sigc::connection myConnection; - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; public: explicit MyComboBoxText (bool has_entry = false); @@ -350,8 +350,8 @@ class MySpinButton : public Gtk::SpinButton { protected: - bool on_scroll_event (GdkEventScroll* event); - bool on_key_press_event (GdkEventKey* event); + bool on_scroll_event (GdkEventScroll* event) override; + bool on_key_press_event (GdkEventKey* event) override; public: MySpinButton (); @@ -364,8 +364,8 @@ public: class MyHScale : public Gtk::HScale { - bool on_scroll_event (GdkEventScroll* event); - bool on_key_press_event (GdkEventKey* event); + bool on_scroll_event (GdkEventScroll* event) override; + bool on_key_press_event (GdkEventKey* event) override; }; /** @@ -388,9 +388,9 @@ private: sigc::signal selection_changed_; protected: - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; void set_none(); @@ -484,8 +484,8 @@ class MyProgressBar : public Gtk::ProgressBar private: int w; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; public: explicit MyProgressBar(int width); diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h index 9a8f58938..f34b07c39 100644 --- a/rtgui/histogrampanel.h +++ b/rtgui/histogrampanel.h @@ -81,7 +81,7 @@ protected: public: HistogramRGBArea(); - ~HistogramRGBArea(); + ~HistogramRGBArea() override; void updateBackBuffer (int r, int g, int b, const Glib::ustring &profile = "", const Glib::ustring &profileW = ""); bool getShow (); @@ -93,17 +93,17 @@ public: void update (int val, int rh, int gh, int bh); void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, bool show); - void on_realize(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); + void on_realize() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; void factorChanged (double newFactor); private: - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const override; }; @@ -141,7 +141,7 @@ protected: public: explicit HistogramArea(DrawModeListener *fml = nullptr); - ~HistogramArea(); + ~HistogramArea() override; void updateBackBuffer (); void update( @@ -155,21 +155,21 @@ public: const LUTu& histBlueRaw ); void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, int mode); - void on_realize(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); + void on_realize() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; type_signal_factor_changed signal_factor_changed(); private: void drawCurve(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int vsize); void drawMarks(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int & ui, int & oi); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; class HistogramPanel : public Gtk::Grid, public PointerMotionListener, public DrawModeListener @@ -216,7 +216,7 @@ protected: public: HistogramPanel (); - ~HistogramPanel (); + ~HistogramPanel () override; void histogramChanged( const LUTu& histRed, @@ -231,7 +231,7 @@ public: histogramArea->update(histRed, histGreen, histBlue, histLuma, histChroma, histRedRaw, histGreenRaw, histBlueRaw); } // pointermotionlistener interface - void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false); + void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false) override; // TODO should be protected void setHistRGBInvalid (); @@ -249,7 +249,7 @@ public: void resized (Gtk::Allocation& req); // drawModeListener interface - void toggleButtonMode (); + void toggleButtonMode () override; }; #endif diff --git a/rtgui/history.h b/rtgui/history.h index 4b9499502..196b29b67 100644 --- a/rtgui/history.h +++ b/rtgui/history.h @@ -111,8 +111,8 @@ public: const rtengine::ProcEvent& ev, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr - ); - void clearParamChanges (); + ) override; + void clearParamChanges () override; void historySelectionChanged (); void bookmarkSelectionChanged (); diff --git a/rtgui/hsvequalizer.h b/rtgui/hsvequalizer.h index 2d80bb626..8d34b486b 100644 --- a/rtgui/hsvequalizer.h +++ b/rtgui/hsvequalizer.h @@ -42,19 +42,19 @@ protected: public: HSVEqualizer (); - virtual ~HSVEqualizer (); + ~HSVEqualizer () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void curveChanged (CurveEditor* ce); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void curveChanged (CurveEditor* ce) override; //void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); - void setBatchMode (bool batchMode); - void setEditProvider (EditDataProvider *provider); - void autoOpenCurve (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void setBatchMode (bool batchMode) override; + void setEditProvider (EditDataProvider *provider) override; + void autoOpenCurve () override; + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; //void adjusterChanged (Adjuster* a, double newval); - void enabledChanged(); + void enabledChanged() override; }; #endif diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 74fa4bc54..23e5b86c8 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -91,8 +91,8 @@ private: void primariesChanged(); void illuminantChanged(); void trcPresetsChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; static std::vector getGamma(); Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); void getPrimaries(const Glib::ustring &preset, double *p, ColorTemp &temp); diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index bd4aa493e..b1106b6e1 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -121,12 +121,12 @@ private: public: ICMPanel(); - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode(bool batchMode); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void wpChanged(); void wtrcinChanged(); diff --git a/rtgui/ilabel.h b/rtgui/ilabel.h index 26b29061f..1f5340fa2 100644 --- a/rtgui/ilabel.h +++ b/rtgui/ilabel.h @@ -28,9 +28,9 @@ class ILabel : public Gtk::DrawingArea public: explicit ILabel (const Glib::ustring &lab); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - void on_realize(); - void on_style_updated (); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + void on_realize() override; + void on_style_updated () override; }; #endif diff --git a/rtgui/imagearea.h b/rtgui/imagearea.h index de9ba1f71..f95045532 100644 --- a/rtgui/imagearea.h +++ b/rtgui/imagearea.h @@ -59,11 +59,11 @@ protected: ImageAreaToolListener* listener; CropWindow* getCropWindow (int x, int y); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; int fullImageWidth, fullImageHeight; public: @@ -75,7 +75,7 @@ public: ImageArea* iLinkedImageArea; // used to set a reference to the Before image area, which is set when before/after view is enabled explicit ImageArea (ImageAreaPanel* p); - ~ImageArea (); + ~ImageArea () override; rtengine::StagedImageProcessor* getImProcCoordinator() const; void setImProcCoordinator(rtengine::StagedImageProcessor* ipc_); @@ -97,15 +97,15 @@ public: void infoEnabled (bool e); // widget base events - void on_realize (); - bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_scroll_event (GdkEventScroll* event); - bool on_leave_notify_event (GdkEventCrossing* event); + void on_realize () override; + bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_scroll_event (GdkEventScroll* event) override; + bool on_leave_notify_event (GdkEventCrossing* event) override; void on_resized (Gtk::Allocation& req); - void on_style_updated (); + void on_style_updated () override; void syncBeforeAfterViews (); void setCropGUIListener (CropGUIListener* l); @@ -140,18 +140,18 @@ public: void setZoom (double zoom); // EditDataProvider interface - void subscribe(EditSubscriber *subscriber); - void unsubscribe(); - void getImageSize (int &w, int&h); + void subscribe(EditSubscriber *subscriber) override; + void unsubscribe() override; + void getImageSize (int &w, int&h) override; // CropWindowListener interface - void cropPositionChanged (CropWindow* cw); - void cropWindowSizeChanged (CropWindow* cw); - void cropZoomChanged (CropWindow* cw); - void initialImageArrived (); + void cropPositionChanged (CropWindow* cw) override; + void cropWindowSizeChanged (CropWindow* cw) override; + void cropZoomChanged (CropWindow* cw) override; + void initialImageArrived () override; // LockablePickerToolListener interface - void switchPickerVisibility (bool isVisible); + void switchPickerVisibility (bool isVisible) override; CropWindow* getMainCropWindow () { diff --git a/rtgui/imageareapanel.h b/rtgui/imageareapanel.h index a0c5c8df2..13fd6650b 100644 --- a/rtgui/imageareapanel.h +++ b/rtgui/imageareapanel.h @@ -35,7 +35,7 @@ public: ImageArea* imageArea; ImageAreaPanel (); - ~ImageAreaPanel (); + ~ImageAreaPanel () override; void zoomChanged (); diff --git a/rtgui/impulsedenoise.h b/rtgui/impulsedenoise.h index 14b51eb7a..79484dc65 100644 --- a/rtgui/impulsedenoise.h +++ b/rtgui/impulsedenoise.h @@ -34,17 +34,17 @@ public: ImpulseDenoise (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool threshadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/indclippedpanel.h b/rtgui/indclippedpanel.h index 95e870e95..c026d4611 100644 --- a/rtgui/indclippedpanel.h +++ b/rtgui/indclippedpanel.h @@ -35,7 +35,7 @@ protected: public: explicit IndicateClippedPanel(ImageArea* ia); - ~IndicateClippedPanel(); + ~IndicateClippedPanel() override; void buttonToggled(Gtk::ToggleButton* tb); void toggleClipped(bool highlights); // inverts a toggle programmatically diff --git a/rtgui/inspector.h b/rtgui/inspector.h index ac8f52ee2..d5ed327b8 100644 --- a/rtgui/inspector.h +++ b/rtgui/inspector.h @@ -51,14 +51,14 @@ private: sigc::connection delayconn; Glib::ustring next_image_path; - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; void deleteBuffers(); bool doSwitchImage(); public: Inspector(); - ~Inspector(); + ~Inspector() override; /** @brief Mouse movement to a new position * @param pos Location of the mouse, in percentage (i.e. [0;1] range) relative to the full size image ; -1,-1 == out of the image @@ -92,11 +92,11 @@ public: return active; }; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; diff --git a/rtgui/iptcpanel.h b/rtgui/iptcpanel.h index b216cf638..5574fe884 100644 --- a/rtgui/iptcpanel.h +++ b/rtgui/iptcpanel.h @@ -71,9 +71,9 @@ private: public: IPTCPanel (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setImageData (const rtengine::FramesMetaData* id); diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h index d15f7d144..eb582035a 100644 --- a/rtgui/labcurve.h +++ b/rtgui/labcurve.h @@ -62,20 +62,20 @@ protected: public: LCurve (); - ~LCurve (); + ~LCurve () override; - 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 autoOpenCurve (); - void setEditProvider (EditDataProvider *provider); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void autoOpenCurve () override; + void setEditProvider (EditDataProvider *provider) override; void setAdjusterBehavior (bool bradd, bool contradd, bool satadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; - void curveChanged (CurveEditor* ce); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void curveChanged (CurveEditor* ce) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void avoidcolorshift_toggled (); void lcredsk_toggled(); @@ -92,9 +92,9 @@ public: const LUTu& histLRETI ); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; - void enabledChanged(); + void enabledChanged() override; }; #endif diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h index 30f6e76e5..00266c91b 100644 --- a/rtgui/labgrid.h +++ b/rtgui/labgrid.h @@ -85,14 +85,14 @@ public: bool lowEnabled() const; void setLowEnabled(bool yes); - 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; + bool on_draw(const ::Cairo::RefPtr &crf) override; + void on_style_updated () override; + bool on_button_press_event(GdkEventButton *event) override; + bool on_button_release_event(GdkEventButton *event) override; + bool on_motion_notify_event(GdkEventMotion *event) override; + Gtk::SizeRequestMode get_request_mode_vfunc() const override; + void get_preferred_width_vfunc(int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; }; diff --git a/rtgui/lensgeom.h b/rtgui/lensgeom.h index 29b0c7f20..20bb4b7eb 100644 --- a/rtgui/lensgeom.h +++ b/rtgui/lensgeom.h @@ -37,16 +37,16 @@ protected: public: LensGeometry (); - ~LensGeometry (); + ~LensGeometry () override; Gtk::Box* getPackBox () { return packBox; } - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void fillPressed (); void autoCropPressed (); diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 42b60a414..76c15aa9a 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -31,8 +31,8 @@ class LensProfilePanel final : public: LensProfilePanel(); - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); void onLCPFileChanged(); @@ -40,7 +40,7 @@ public: void onUseVignChanged(); void onUseCAChanged(); - void setBatchMode(bool yes); + void setBatchMode(bool yes) override; void onLensfunCameraChanged(); void onLensfunLensChanged(); diff --git a/rtgui/localcontrast.h b/rtgui/localcontrast.h index 89341c976..efe7a18f0 100644 --- a/rtgui/localcontrast.h +++ b/rtgui/localcontrast.h @@ -41,14 +41,14 @@ 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 read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override; + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override; + void setBatchMode(bool batchMode) override; - void adjusterChanged(Adjuster *a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged(); + void adjusterChanged(Adjuster *a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged() override; void setAdjusterBehavior(bool radiusAdd, bool amountAdd, bool darknessAdd, bool lightnessAdd); }; diff --git a/rtgui/main.cc b/rtgui/main.cc index 8dc6b615c..7789b75ed 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -358,7 +358,7 @@ public: { } - ~RTApplication() + ~RTApplication() override { if (rtWindow) { delete rtWindow; diff --git a/rtgui/metadatapanel.h b/rtgui/metadatapanel.h index a2c1f43ac..d34a04585 100644 --- a/rtgui/metadatapanel.h +++ b/rtgui/metadatapanel.h @@ -36,14 +36,14 @@ private: public: MetaDataPanel(); - ~MetaDataPanel(); + ~MetaDataPanel() override; - 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 setBatchMode(bool batchMode) override; + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setImageData(const rtengine::FramesMetaData* id); - void setListener(ToolPanelListener *tpl); + void setListener(ToolPanelListener *tpl) override; }; diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index 8521b5748..f555ab7ef 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -109,7 +109,7 @@ protected: public: MyCurve (); - ~MyCurve (); + ~MyCurve () override; void setCurveListener (CurveListener* cl) { @@ -126,10 +126,10 @@ public: { curveIsDirty = true; } - void on_style_updated (); + void on_style_updated () override; virtual std::vector getPoints () = 0; virtual void setPoints (const std::vector& p) = 0; - virtual bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) = 0; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override = 0; virtual bool handleEvents (GdkEvent* event) = 0; virtual void reset (const std::vector &resetCurve, double identityValue = 0.5) = 0; @@ -138,11 +138,11 @@ public: virtual void pipetteButton1Released(EditDataProvider *provider) = 0; virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; class MyCurveIdleHelper diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index abb8d3dc6..9433c42b5 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -72,7 +72,7 @@ protected: void interpolate (); void findClosestPoint(); CursorShape motionNotify(CursorShape type, double minDistanceX, double minDistanceY, int num); - std::vector get_vector (int veclen); + std::vector get_vector (int veclen) override; void get_LUT (LUTf &lut); // Get the cursor position and unclamped position from the curve given an X value ; BEWARE: can be time consuming, use with care void getCursorPositionFromCurve(float x); @@ -82,23 +82,23 @@ protected: public: MyDiagonalCurve (); - ~MyDiagonalCurve (); - std::vector getPoints (); - void setPoints (const std::vector& p); + ~MyDiagonalCurve () override; + std::vector getPoints () override; + void setPoints (const std::vector& p) override; void setType (DiagonalCurveType t); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool handleEvents (GdkEvent* event); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool handleEvents (GdkEvent* event) override; void setActiveParam (int ac); - void reset (const std::vector &resetCurve, double identityValue = 0.5); + void reset (const std::vector &resetCurve, double identityValue = 0.5) override; void updateBackgroundHistogram (LUTu & hist); - void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); + void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; - virtual void setPos(double pos, int chanIdx); - virtual void stopNumericalAdjustment(); + void setPos(double pos, int chanIdx) override; + void stopNumericalAdjustment() override; }; #endif diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index 65a1e2230..c0223bfcf 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -112,31 +112,31 @@ protected: void getMouseOverArea (); bool getHandles(int n); CursorShape motionNotify(CursorShape type, double minDistanceX, double minDistanceY, int num); - std::vector get_vector (int veclen); + std::vector get_vector (int veclen) override; void get_LUT (LUTf &lut); public: MyFlatCurve (); //~MyFlatCurve (); - std::vector getPoints (); + std::vector getPoints () override; void setPeriodicity (bool isPeriodic) { periodic = isPeriodic; }; - void setPoints (const std::vector& p); + void setPoints (const std::vector& p) override; void setType (FlatCurveType t); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool handleEvents (GdkEvent* event); - void reset (const std::vector &resetCurve, double identityValue = 0.5); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool handleEvents (GdkEvent* event) override; + void reset (const std::vector &resetCurve, double identityValue = 0.5) override; //void updateBackgroundHistogram (unsigned int* hist); - void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); + void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; - void setPos(double pos, int chanIdx); - virtual void stopNumericalAdjustment(); + void setPos(double pos, int chanIdx) override; + void stopNumericalAdjustment() override; }; #endif diff --git a/rtgui/navigator.h b/rtgui/navigator.h index e7689b7c2..1b898f895 100644 --- a/rtgui/navigator.h +++ b/rtgui/navigator.h @@ -55,12 +55,12 @@ public: // pointermotionlistener interface // void pointerMoved (bool validPos, int x, int y, int r, int g, int b); - void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false); + void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false) override; void setInvalid (int fullWidth = -1, int fullHeight = -1); - void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false); - void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV); - void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB); + void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false) override; + void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV) override; + void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB) override; }; diff --git a/rtgui/options.h b/rtgui/options.h index 3afeb94d9..47ced982d 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -108,8 +108,8 @@ public: class Error: public std::exception { public: - Error (const Glib::ustring &msg): msg_ (msg) {} - const char *what() const throw() + explicit Error (const Glib::ustring &msg): msg_ (msg) {} + const char *what() const throw() override { return msg_.c_str(); } diff --git a/rtgui/pcvignette.h b/rtgui/pcvignette.h index 91e876947..98d42a477 100644 --- a/rtgui/pcvignette.h +++ b/rtgui/pcvignette.h @@ -20,16 +20,16 @@ public: PCVignette (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool strengthadd, bool featheradd, bool roundnessadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/perspective.h b/rtgui/perspective.h index a97d5d347..8038120fa 100644 --- a/rtgui/perspective.h +++ b/rtgui/perspective.h @@ -34,15 +34,15 @@ public: PerspCorrection (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool badd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/popupbutton.h b/rtgui/popupbutton.h index 245d29aee..be08cd1ba 100644 --- a/rtgui/popupbutton.h +++ b/rtgui/popupbutton.h @@ -34,7 +34,7 @@ public: void set_sensitive (bool isSensitive=true); protected: - bool on_button_release_event (GdkEventButton* event); + bool on_button_release_event (GdkEventButton* event) override; private: bool nextOnClicked; diff --git a/rtgui/preferences.h b/rtgui/preferences.h index a77e3ea82..3b78c0472 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -258,7 +258,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener public: explicit Preferences (RTWindow *rtwindow); - ~Preferences (); + ~Preferences () override; void savePressed (); void loadPressed (); @@ -288,9 +288,9 @@ public: void behAddAllPressed (); void behSetAllPressed (); - virtual void storeCurrentValue(); - virtual void updateProfileList(); - virtual void restoreValue(); + void storeCurrentValue() override; + void updateProfileList() override; + void restoreValue() override; // void selectICCProfileDir (); // void selectMonitorProfile (); diff --git a/rtgui/preprocess.h b/rtgui/preprocess.h index 64ed110fb..58cc2c2de 100644 --- a/rtgui/preprocess.h +++ b/rtgui/preprocess.h @@ -40,15 +40,15 @@ public: PreProcess (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; //void setBatchMode (bool batchMode); //void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); void hotPixelChanged(); void deadPixelChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; //void adjusterChanged (Adjuster* a, double newval); diff --git a/rtgui/previewhandler.h b/rtgui/previewhandler.h index 7fae4121e..81a68e05c 100644 --- a/rtgui/previewhandler.h +++ b/rtgui/previewhandler.h @@ -64,7 +64,7 @@ protected: public: PreviewHandler (); - virtual ~PreviewHandler (); + ~PreviewHandler () override; void addPreviewImageListener (PreviewListener* l) { @@ -72,9 +72,9 @@ public: } // previewimagelistener - void setImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cp); - void delImage(rtengine::IImage8* img); - void imageReady(const rtengine::procparams::CropParams& cp); + void setImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cp) override; + void delImage(rtengine::IImage8* img) override; + void imageReady(const rtengine::procparams::CropParams& cp) override; // this function is called when a new preview image arrives from rtengine void previewImageChanged (); diff --git a/rtgui/previewmodepanel.h b/rtgui/previewmodepanel.h index 1d7b99625..4924b77af 100644 --- a/rtgui/previewmodepanel.h +++ b/rtgui/previewmodepanel.h @@ -47,7 +47,7 @@ protected: public: explicit PreviewModePanel (ImageArea* ia); - ~PreviewModePanel(); + ~PreviewModePanel() override; void toggleR (); void toggleG (); diff --git a/rtgui/previewwindow.h b/rtgui/previewwindow.h index ba9d8f633..c89c89d4e 100644 --- a/rtgui/previewwindow.h +++ b/rtgui/previewwindow.h @@ -50,26 +50,26 @@ public: void setPreviewHandler (PreviewHandler* ph); void setImageArea (ImageArea* ia); - void on_realize (); + void on_realize () override; void on_resized (Gtk::Allocation& req); - bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event(GdkEventButton* event); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event(GdkEventButton* event) override; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; // PreviewListener interface - void previewImageChanged (); + void previewImageChanged () override; // CropWindowListener interface - void cropPositionChanged(CropWindow* w); - void cropWindowSizeChanged(CropWindow* w); - void cropZoomChanged(CropWindow* w); - void initialImageArrived(); + void cropPositionChanged(CropWindow* w) override; + void cropWindowSizeChanged(CropWindow* w) override; + void cropZoomChanged(CropWindow* w) override; + void initialImageArrived() override; }; #endif diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index 509800aaa..b0fb42ab7 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -72,7 +72,7 @@ protected: public: explicit ProfilePanel (); - virtual ~ProfilePanel (); + ~ProfilePanel () override; void setProfileChangeListener (ProfileChangeListener* ppl) { @@ -81,9 +81,9 @@ public: static void init (Gtk::Window* parentWindow); static void cleanup (); - void storeCurrentValue(); - void updateProfileList (); - void restoreValue(); + void storeCurrentValue() override; + void updateProfileList () override; + void restoreValue() override; void initProfile (const Glib::ustring& profileFullPath, rtengine::procparams::ProcParams* lastSaved); void setInitialFileName (const Glib::ustring& filename); @@ -94,8 +94,8 @@ public: const rtengine::ProcEvent& ev, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr - ); - void clearParamChanges(); + ) override; + void clearParamChanges() override; // gui callbacks void save_clicked (GdkEventButton* event); diff --git a/rtgui/profilestorecombobox.cc b/rtgui/profilestorecombobox.cc index 186309aa3..b4e893c1d 100644 --- a/rtgui/profilestorecombobox.cc +++ b/rtgui/profilestorecombobox.cc @@ -337,7 +337,7 @@ Gtk::TreeIter ProfileStoreComboBox::getRowFromLabel (Glib::ustring name) const ProfileStoreEntry *pse = currRow[methodColumns.profileStoreEntry]; if (pse->label == name) { - return currRow; + return std::move(currRow); } } } diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h index 12a2bf82f..394ad3909 100644 --- a/rtgui/progressconnector.h +++ b/rtgui/progressconnector.h @@ -36,12 +36,12 @@ public: } // ProgressListener interface - void setProgress(double p) + void setProgress(double p) override { GThreadLock lock; pl->setProgress(p); } - void setProgressStr(const Glib::ustring& str) + void setProgressStr(const Glib::ustring& str) override { GThreadLock lock; Glib::ustring progrstr; @@ -49,13 +49,13 @@ public: pl->setProgressStr(progrstr); } - void setProgressState(bool inProcessing) + void setProgressState(bool inProcessing) override { GThreadLock lock; pl->setProgressState(inProcessing); } - void error(const Glib::ustring& descr) + void error(const Glib::ustring& descr) override { GThreadLock lock; pl->error(descr); diff --git a/rtgui/prsharpening.h b/rtgui/prsharpening.h index 8b2c02e25..0bceca856 100644 --- a/rtgui/prsharpening.h +++ b/rtgui/prsharpening.h @@ -57,28 +57,28 @@ protected: public: PrSharpening (); - virtual ~PrSharpening (); + ~PrSharpening () override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void edgesonly_toggled (); void halocontrol_toggled (); void method_changed (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/rawcacorrection.h b/rtgui/rawcacorrection.h index 3bb511885..13db1d1e3 100644 --- a/rtgui/rawcacorrection.h +++ b/rtgui/rawcacorrection.h @@ -42,16 +42,16 @@ public: RAWCACorr (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior (bool caadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void checkBoxToggled (CheckBox* c, CheckValue newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void checkBoxToggled (CheckBox* c, CheckValue newval) override; }; #endif diff --git a/rtgui/rawexposure.h b/rtgui/rawexposure.h index 6153ae98b..a04d0e3db 100644 --- a/rtgui/rawexposure.h +++ b/rtgui/rawexposure.h @@ -37,14 +37,14 @@ public: RAWExposure (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool pexposadd, bool pexpreseradd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/resize.h b/rtgui/resize.h index e403e5d6f..3c599808d 100644 --- a/rtgui/resize.h +++ b/rtgui/resize.h @@ -33,20 +33,20 @@ class Resize final : { public: Resize (); - ~Resize (); + ~Resize () override; Gtk::Box* getPackBox () { return packBox; } - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void entryWChanged (); void entryHChanged (); void appliesToChanged (); @@ -54,12 +54,12 @@ public: void specChanged (); void update (bool isCropped, int cw, int ch, int ow = 0, int oh = 0); void setGUIFromCrop (bool isCropped, int cw, int ch); - void sizeChanged (int w, int h, int ow, int oh); + void sizeChanged (int w, int h, int ow, int oh) override; void setDimensions (); - void enabledChanged (); + void enabledChanged () override; void setAdjusterBehavior (bool scaleadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; private: void fitBoxScale (); diff --git a/rtgui/retinex.h b/rtgui/retinex.h index e0d0d7695..b9ed3c927 100644 --- a/rtgui/retinex.h +++ b/rtgui/retinex.h @@ -96,25 +96,25 @@ protected: public: Retinex (); - ~Retinex (); + ~Retinex () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void trimValues (rtengine::procparams::ProcParams* pp); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void autoOpenCurve (); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void autoOpenCurve () override; void medianmapChanged (); - void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax); + void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override; bool minmaxComputed_ (); void updateLabel (); void updateTrans (); void neutral_pressed (); - void enabledChanged (); - void curveChanged (CurveEditor* ce); + void enabledChanged () override; + void curveChanged (CurveEditor* ce) override; void retinexMethodChanged(); void mapMethodChanged(); void viewMethodChanged(); @@ -137,7 +137,7 @@ public: const LUTu& histLRETI ); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; private: void foldAllButMe (GdkEventButton* event, MyExpander *expander); diff --git a/rtgui/rgbcurves.h b/rtgui/rgbcurves.h index 2bb24a10f..a7846f9ab 100644 --- a/rtgui/rgbcurves.h +++ b/rtgui/rgbcurves.h @@ -42,15 +42,15 @@ protected: public: RGBCurves (); - ~RGBCurves (); + ~RGBCurves () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setEditProvider (EditDataProvider *provider); - void autoOpenCurve (); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setEditProvider (EditDataProvider *provider) override; + void autoOpenCurve () override; - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void updateCurveBackgroundHistogram( const LUTu& histToneCurve, const LUTu& histLCurve, @@ -64,7 +64,7 @@ public: const LUTu& histLRETI ); void lumamodeChanged (); - void enabledChanged(); + void enabledChanged() override; }; #endif diff --git a/rtgui/rotate.h b/rtgui/rotate.h index 5361cd80e..c23807361 100644 --- a/rtgui/rotate.h +++ b/rtgui/rotate.h @@ -36,17 +36,17 @@ public: Rotate (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void straighten (double deg); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool rotadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void selectStraightPressed (); void setLensGeomListener (LensGeomListener* l) { diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index 61b961b64..5b58ab0eb 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -68,7 +68,7 @@ private: public: RTWindow (); - ~RTWindow(); + ~RTWindow() override; #if defined(__APPLE__) bool osxFileOpenEvent (Glib::ustring path); @@ -81,20 +81,20 @@ public: void addBatchQueueJobs (const std::vector& entries); bool keyPressed (GdkEventKey* event); - bool on_configure_event (GdkEventConfigure* event); - bool on_delete_event (GdkEventAny* event); - bool on_window_state_event (GdkEventWindowState* event); + bool on_configure_event (GdkEventConfigure* event) override; + bool on_delete_event (GdkEventAny* event) override; + bool on_window_state_event (GdkEventWindowState* event) override; void on_mainNB_switch_page (Gtk::Widget* widget, guint page_num); void showICCProfileCreator (); void showPreferences (); - void on_realize (); + void on_realize () override; void toggle_fullscreen (); - void setProgress(double p); - void setProgressStr(const Glib::ustring& str); - void setProgressState(bool inProcessing); - void error(const Glib::ustring& descr); + void setProgress(double p) override; + void setProgressStr(const Glib::ustring& str) override; + void setProgressState(bool inProcessing) override; + void error(const Glib::ustring& descr) override; rtengine::ProgressListener* getProgressListener () { diff --git a/rtgui/saveformatpanel.h b/rtgui/saveformatpanel.h index e6560d73d..48fa97e13 100644 --- a/rtgui/saveformatpanel.h +++ b/rtgui/saveformatpanel.h @@ -49,7 +49,7 @@ protected: public: SaveFormatPanel (); - ~SaveFormatPanel (); + ~SaveFormatPanel () override; void setListener (FormatChangeListener* l) { listener = l; @@ -59,8 +59,8 @@ public: SaveFormat getFormat (); void formatChanged (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; }; #endif diff --git a/rtgui/shadowshighlights.h b/rtgui/shadowshighlights.h index 4b6daa9dc..e04e2000a 100644 --- a/rtgui/shadowshighlights.h +++ b/rtgui/shadowshighlights.h @@ -40,17 +40,17 @@ public: ShadowsHighlights (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool hadd, bool sadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void colorspaceChanged(); }; diff --git a/rtgui/sharpenedge.h b/rtgui/sharpenedge.h index 82f796cb5..8bf5647ed 100644 --- a/rtgui/sharpenedge.h +++ b/rtgui/sharpenedge.h @@ -44,16 +44,16 @@ public: SharpenEdge (); - 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 trimValues (rtengine::procparams::ProcParams* pp); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; void setAdjusterBehavior (bool amountadd, bool passadd); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; - void enabledChanged (); + void enabledChanged () override; void chanthree_toggled (); }; diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h index ed22357fa..fa5c956da 100644 --- a/rtgui/sharpening.h +++ b/rtgui/sharpening.h @@ -58,28 +58,28 @@ protected: public: Sharpening (); - virtual ~Sharpening (); + ~Sharpening () override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void edgesonly_toggled (); void halocontrol_toggled (); void method_changed (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/sharpenmicro.h b/rtgui/sharpenmicro.h index 19c962841..6dfccea85 100644 --- a/rtgui/sharpenmicro.h +++ b/rtgui/sharpenmicro.h @@ -47,16 +47,16 @@ public: SharpenMicro (); - 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 trimValues (rtengine::procparams::ProcParams* pp); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; void setAdjusterBehavior (bool amountadd, bool contrastadd, bool uniformityadd); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; - void enabledChanged (); + void enabledChanged () override; void matrix_toggled (); diff --git a/rtgui/shcselector.h b/rtgui/shcselector.h index 5e02342d5..ac6c8afed 100644 --- a/rtgui/shcselector.h +++ b/rtgui/shcselector.h @@ -51,16 +51,16 @@ protected: SHCListener* cl; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; - void on_realize(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - 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 override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; + void on_realize() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; void updateBackBuffer(); public: diff --git a/rtgui/softlight.h b/rtgui/softlight.h index ad537894e..a036592e4 100644 --- a/rtgui/softlight.h +++ b/rtgui/softlight.h @@ -35,14 +35,14 @@ public: SoftLight(); - 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 read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override; + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override; + void setBatchMode(bool batchMode) override; - void adjusterChanged(Adjuster *a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged(); + void adjusterChanged(Adjuster *a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged() override; void setAdjusterBehavior(bool strengthAdd); }; diff --git a/rtgui/splash.h b/rtgui/splash.h index 4769700f6..b35021c65 100644 --- a/rtgui/splash.h +++ b/rtgui/splash.h @@ -30,12 +30,12 @@ private: public: SplashImage (); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; //class Splash : public Gtk::Window { diff --git a/rtgui/thresholdadjuster.h b/rtgui/thresholdadjuster.h index fea4e9094..54026a183 100644 --- a/rtgui/thresholdadjuster.h +++ b/rtgui/thresholdadjuster.h @@ -91,7 +91,7 @@ public: double defTopLeft, double defBottomRight, double defTopRight, unsigned int precision, bool startAtOne, bool editedCheckBox = false); - virtual ~ThresholdAdjuster (); + ~ThresholdAdjuster () override; void setAdjusterListener (ThresholdAdjusterListener* alistener) { adjusterListener = alistener; diff --git a/rtgui/thresholdselector.h b/rtgui/thresholdselector.h index 32b423e64..0b0f46d5f 100644 --- a/rtgui/thresholdselector.h +++ b/rtgui/thresholdselector.h @@ -111,17 +111,17 @@ protected: void updateTooltip(); void updateBackBuffer(); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; - void on_realize (); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_leave_notify_event (GdkEventCrossing* event); + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; + void on_realize () override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_leave_notify_event (GdkEventCrossing* event) override; public: diff --git a/rtgui/thumbbrowserbase.h b/rtgui/thumbbrowserbase.h index 02bea3646..dbc9374a0 100644 --- a/rtgui/thumbbrowserbase.h +++ b/rtgui/thumbbrowserbase.h @@ -49,21 +49,21 @@ class ThumbBrowserBase : public Gtk::Grid public: Internal (); void setParent (ThumbBrowserBase* p); - void on_realize(); - void on_style_updated(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); + void on_realize() override; + void on_style_updated() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) 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; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_scroll_event (GdkEventScroll* event); - bool on_key_press_event (GdkEventKey* event); + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_scroll_event (GdkEventScroll* event) override; + bool on_key_press_event (GdkEventKey* event) override; bool on_query_tooltip (int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip); void setPosition (int x, int y); @@ -199,7 +199,7 @@ public: { return fd; } - void on_style_updated (); + void on_style_updated () override; void redraw (); // arrange files and draw area void refreshThumbImages (); // refresh thumbnail sizes, re-generate thumbnail images, arrange and draw void refreshQuickThumbImages (); // refresh thumbnail sizes, re-generate thumbnail images, arrange and draw diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h index 53ec2fa9f..d95049d1c 100644 --- a/rtgui/tonecurve.h +++ b/rtgui/tonecurve.h @@ -88,21 +88,21 @@ protected: public: ToneCurve (); - ~ToneCurve (); + ~ToneCurve () override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void setAdjusterBehavior (bool expadd, bool hlcompadd, bool hlcompthreshadd, bool bradd, bool blackadd, bool shcompadd, bool contradd, bool satadd); - void trimValues (rtengine::procparams::ProcParams* pp); - void autoOpenCurve (); - void setEditProvider (EditDataProvider *provider); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void autoOpenCurve () override; + void setEditProvider (EditDataProvider *provider) override; - virtual float blendPipetteValues (CurveEditor *ce, float chan1, float chan2, float chan3); + float blendPipetteValues (CurveEditor *ce, float chan1, float chan2, float chan3) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void neutral_pressed (); void autolevels_toggled (); void clip_changed (); @@ -110,7 +110,7 @@ public: void waitForAutoExp (); bool autoExpComputed_ (); void enableAll (); - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void curveMode1Changed (); bool curveMode1Changed_ (); void curveMode2Changed (); @@ -133,8 +133,8 @@ public: void histmatchingToggled(); bool histmatchingComputed(); - void autoExpChanged(double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons); - void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector& curve); + void autoExpChanged(double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons) override; + void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector& curve) override; void setRaw (bool raw); diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 9f2d031c0..39abd03fa 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -148,11 +148,11 @@ public: FoldableToolPanel(Gtk::Box* content, Glib::ustring toolName, Glib::ustring UILabel, bool need11 = false, bool useEnabled = false); - MyExpander* getExpander() + MyExpander* getExpander() override { return exp; } - void setExpanded (bool expanded) + void setExpanded (bool expanded) override { if (exp) { exp->set_expanded( expanded ); @@ -170,7 +170,7 @@ public: exp->show(); } } - bool getExpanded () + bool getExpanded () override { if (exp) { return exp->get_expanded(); @@ -178,11 +178,11 @@ public: return false; } - void setParent (Gtk::Box* parent) + void setParent (Gtk::Box* parent) override { parentContainer = parent; } - Gtk::Box* getParent () + Gtk::Box* getParent () override { return parentContainer; } diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 041386771..437e4055a 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -200,7 +200,7 @@ public: Gtk::Notebook* toolPanelNotebook; ToolPanelCoordinator (bool batch = false); - virtual ~ToolPanelCoordinator (); + ~ToolPanelCoordinator () override; bool getChangedState () { @@ -227,9 +227,9 @@ public: } // toolpanellistener interface - void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr); + void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr) override; - void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false); + void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false) override; // void autoContrastChanged (double autoContrast); // profilechangelistener interface @@ -239,8 +239,8 @@ public: const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSave = false - ); - void setDefaults(const rtengine::procparams::ProcParams* defparams); + ) override; + void setDefaults(const rtengine::procparams::ProcParams* defparams) override; // DirSelectionListener interface void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile); @@ -263,13 +263,13 @@ public: // wbprovider interface - void getAutoWB (double& temp, double& green, double equal, double tempBias) + void getAutoWB (double& temp, double& green, double equal, double tempBias) override { if (ipc) { ipc->getAutoWB (temp, green, equal, tempBias); } } - void getCamWB (double& temp, double& green) + void getCamWB (double& temp, double& green) override { if (ipc) { ipc->getCamWB (temp, green); @@ -277,41 +277,41 @@ public: } //DFProvider interface - rtengine::RawImage* getDF(); + rtengine::RawImage* getDF() override; //FFProvider interface - rtengine::RawImage* getFF(); - Glib::ustring GetCurrentImageFilePath(); + rtengine::RawImage* getFF() override; + Glib::ustring GetCurrentImageFilePath() override; // rotatelistener interface - void straightenRequested (); - void autoCropRequested (); - double autoDistorRequested (); + void straightenRequested () override; + void autoCropRequested () override; + double autoDistorRequested () override; // spotwblistener interface - void spotWBRequested (int size); + void spotWBRequested (int size) override; // croppanellistener interface - void cropSelectRequested (); + void cropSelectRequested () override; // icmpanellistener interface - void saveInputICCReference(const Glib::ustring& fname, bool apply_wb); + void saveInputICCReference(const Glib::ustring& fname, bool apply_wb) override; // imageareatoollistener interface - void spotWBselected(int x, int y, Thumbnail* thm = nullptr); - void sharpMaskSelected(bool sharpMask); - int getSpotWBRectSize() const; - void cropSelectionReady(); - void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr); - ToolBar* getToolBar() const; - CropGUIListener* startCropEditing(Thumbnail* thm = nullptr); + void spotWBselected(int x, int y, Thumbnail* thm = nullptr) override; + void sharpMaskSelected(bool sharpMask) override; + int getSpotWBRectSize() const override; + void cropSelectionReady() override; + void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr) override; + ToolBar* getToolBar() const override; + CropGUIListener* startCropEditing(Thumbnail* thm = nullptr) override; void updateTPVScrollbar (bool hide); bool handleShortcutKey (GdkEventKey* event); // ToolBarListener interface - void toolSelected (ToolMode tool); - void editModeSwitchedOff (); + void toolSelected (ToolMode tool) override; + void editModeSwitchedOff () override; void setEditProvider (EditDataProvider *provider); diff --git a/rtgui/vibrance.h b/rtgui/vibrance.h index 62faf0c85..ed3e10059 100644 --- a/rtgui/vibrance.h +++ b/rtgui/vibrance.h @@ -52,30 +52,30 @@ protected: public: Vibrance (); - ~Vibrance (); + ~Vibrance () override; - 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 trimValues (rtengine::procparams::ProcParams* pp); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; void setAdjusterBehavior (bool pastelsadd, bool saturatedadd); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void curveChanged (); - void autoOpenCurve (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void curveChanged () override; + void autoOpenCurve () override; - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; - void enabledChanged (); + void enabledChanged () override; void protectskins_toggled (); void avoidcolorshift_toggled (); void pastsattog_toggled (); - std::vector getCurvePoints(ThresholdSelector* tAdjuster) const; + std::vector getCurvePoints(ThresholdSelector* tAdjuster) const override; }; diff --git a/rtgui/vignetting.h b/rtgui/vignetting.h index 975bf7344..5432b6178 100644 --- a/rtgui/vignetting.h +++ b/rtgui/vignetting.h @@ -37,15 +37,15 @@ public: Vignetting (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool amountadd, bool radiusadd, bool strengthadd, bool centeradd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index 5cbb5bfe3..163395d52 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -40,32 +40,32 @@ class Wavelet : { public: Wavelet (); - ~Wavelet (); + ~Wavelet () override; bool wavComputed_ (); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void autoOpenCurve (); - void curveChanged (CurveEditor* ce); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void autoOpenCurve () override; + void curveChanged (CurveEditor* ce) override; + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setEditProvider (EditDataProvider *provider); + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setEditProvider (EditDataProvider *provider) override; void updateToolState (std::vector &tpOpen); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void writeOptions (std::vector &tpOpen); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; private: void foldAllButMe (GdkEventButton* event, MyExpander *expander); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; void BAmethodChanged (); void NPmethodChanged (); void BackmethodChanged (); @@ -84,7 +84,7 @@ private: void contrastMinusPressed (); void contrastPlusPressed (); void daubcoeffmethodChanged (); - void enabledChanged (); + void enabledChanged () override; void linkedgToggled (); void lipstToggled (); void medianToggled (); @@ -94,7 +94,7 @@ private: void neutralchPressed (); void tmrToggled (); void updatewavLabel (); - void wavChanged (double nlevel); + void wavChanged (double nlevel) override; void HSmethodUpdateUI(); void CHmethodUpdateUI(); diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index 08ec05047..2db46b7af 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -94,20 +94,20 @@ protected: public: WhiteBalance (); - ~WhiteBalance (); + ~WhiteBalance () override; static void init (); static void cleanup (); - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void optChanged (); void spotPressed (); void spotSizeChanged (); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; int getSize (); void setWBProvider (WBProvider* p) { @@ -118,11 +118,11 @@ public: wblistener = l; } void setWB (int temp, double green); - void WBChanged (double temp, double green); + void WBChanged (double temp, double green) override; void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd); - void trimValues (rtengine::procparams::ProcParams* pp); - void enabledChanged(); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void enabledChanged() override; }; #endif diff --git a/rtgui/xtransprocess.h b/rtgui/xtransprocess.h index 7a706b1ac..cd60337dc 100644 --- a/rtgui/xtransprocess.h +++ b/rtgui/xtransprocess.h @@ -46,19 +46,19 @@ protected: public: XTransProcess (); - ~XTransProcess (); + ~XTransProcess () override; - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior(bool falsecoloradd, bool dualDemosaicContrastAdd); - void setBatchMode(bool batchMode); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void methodChanged(); - void autoContrastChanged (double autoContrast); - void adjusterChanged(Adjuster* a, double newval); - void checkBoxToggled(CheckBox* c, CheckValue newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void autoContrastChanged (double autoContrast) override; + void adjusterChanged(Adjuster* a, double newval) override; + void checkBoxToggled(CheckBox* c, CheckValue newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; }; #endif diff --git a/rtgui/xtransrawexposure.h b/rtgui/xtransrawexposure.h index fc95d5743..75bdbd0e2 100644 --- a/rtgui/xtransrawexposure.h +++ b/rtgui/xtransrawexposure.h @@ -38,14 +38,14 @@ public: XTransRAWExposure (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool pexblackadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif From b7c04d3b080aaaa1bfbf8d644d7bfedfd38d8364 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 22 Nov 2018 16:39:22 +0100 Subject: [PATCH 209/348] Using 'fast' as method for preview < 100% gives wrong result when demosaic is set to 'Mono', fixes #5012 --- rtengine/improccoordinator.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 16d94dd57..ecc068bdb 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -173,13 +173,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) if (!highDetailNeeded) { // if below 100% magnification, take a fast path - if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE)) { + if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO)) { rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); } //bayerrp.all_enhance = false; - if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE)) { + if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO)) { rp.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); } From 190772af5eeffc368896e4c1598f80385bc4d22b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 22 Nov 2018 18:40:09 +0100 Subject: [PATCH 210/348] Fix some issues found by cppcheck --- rtengine/dcrop.cc | 7 ++----- rtengine/improccoordinator.cc | 6 ++---- rtengine/improcfun.cc | 14 +++++++------- rtengine/lcp.h | 2 +- rtengine/pdaflinesfilter.h | 2 +- rtengine/procparams.cc | 2 -- rtengine/simpleprocess.cc | 9 +++------ rtgui/dirbrowser.h | 2 +- rtgui/exifpanel.cc | 2 +- rtgui/filmsimulation.h | 4 ++-- rtgui/retinex.cc | 1 - 11 files changed, 20 insertions(+), 31 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 48d1df191..81cc576c9 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -818,9 +818,7 @@ void Crop::update(int todo) //first put gamma TRC to 1 int cw = baseCrop->getWidth(); int ch = baseCrop->getHeight(); - Imagefloat* readyImg0 = NULL; - - readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + Imagefloat* readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -834,8 +832,7 @@ void Crop::update(int todo) delete readyImg0; //adjust gamma TRC - Imagefloat* readyImg = NULL; - readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + Imagefloat* readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index ecc068bdb..2d6db3dd9 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -513,8 +513,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) int cw = oprevi->getWidth(); int ch = oprevi->getHeight(); // put gamma TRC to 1 - Imagefloat* readyImg0 = NULL; - readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + Imagefloat* readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -527,8 +526,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) delete readyImg0; //adjust TRC - Imagefloat* readyImg = NULL; - readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + Imagefloat* readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 268c1e6df..d368eb0cd 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -1638,7 +1638,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (params->defringe.enabled) if (execsharp) { lab->deleteLab(); - ImProcFunctions::defringecam (ncie);//defringe adapted to CIECAM + defringecam (ncie);//defringe adapted to CIECAM lab->reallocLab(); } @@ -1649,7 +1649,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw const bool hotbad = params->dirpyrequalizer.skinprotect != 0.0; lab->deleteLab(); - ImProcFunctions::badpixcam (ncie, artifact / scale, 5, 2, chrom, hotbad); //enabled remove artifacts for cbDL + badpixcam (ncie, artifact / scale, 5, 2, chrom, hotbad); //enabled remove artifacts for cbDL lab->reallocLab(); } @@ -1657,7 +1657,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (params->colorappearance.badpixsl > 0 && execsharp) { int mode = params->colorappearance.badpixsl; lab->deleteLab(); - ImProcFunctions::badpixcam (ncie, 3.0, 10, mode, 0, true);//for bad pixels CIECAM + badpixcam (ncie, 3.0, 10, mode, 0, true);//for bad pixels CIECAM lab->reallocLab(); } @@ -1666,17 +1666,17 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw buffers[0] = lab->L; buffers[1] = lab->a; buffers[2] = lab->b; - ImProcFunctions::impulsedenoisecam (ncie, buffers); //impulse adapted to CIECAM + impulsedenoisecam (ncie, buffers); //impulse adapted to CIECAM } if (params->sharpenMicro.enabled)if (execsharp) { - ImProcFunctions::MLmicrocontrastcam (ncie); + MLmicrocontrastcam (ncie); } if (params->sharpening.enabled) if (execsharp) { float **buffer = lab->L; // We can use the L-buffer from lab as buffer to save some memory - ImProcFunctions::sharpeningcam (ncie, buffer, showSharpMask); // sharpening adapted to CIECAM + sharpeningcam (ncie, buffer, showSharpMask); // sharpening adapted to CIECAM } //if(params->dirpyrequalizer.enabled) if(execsharp) { @@ -1732,7 +1732,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (epdEnabled && params->colorappearance.tonecie && algepd) { lab->deleteLab(); - ImProcFunctions::EPDToneMapCIE (ncie, a_w, c_, width, height, minQ, maxQ, Iterates, scale ); + EPDToneMapCIE (ncie, a_w, c_, width, height, minQ, maxQ, Iterates, scale ); lab->reallocLab(); } diff --git a/rtengine/lcp.h b/rtengine/lcp.h index aa6e24be8..2d9707907 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -153,7 +153,7 @@ public: Glib::ustring getDefaultCommonDirectory() const; private: - LCPStore(unsigned int _cache_size = 32); + explicit LCPStore(unsigned int _cache_size = 32); // Maps file name to profile as cache mutable Cache> cache; diff --git a/rtengine/pdaflinesfilter.h b/rtengine/pdaflinesfilter.h index 9837db5b6..b1f7bf650 100644 --- a/rtengine/pdaflinesfilter.h +++ b/rtengine/pdaflinesfilter.h @@ -27,7 +27,7 @@ namespace rtengine { class PDAFLinesFilter { public: - PDAFLinesFilter(RawImage *ri); + explicit PDAFLinesFilter(RawImage *ri); ~PDAFLinesFilter(); int mark(array2D &rawData, PixelsMap &bpMap); diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index b82a7d440..b58f0f866 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -5081,8 +5081,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } if (keyFile.has_group("Exif")) { - std::vector keys = keyFile.get_keys("Exif"); - for (const auto& key : keyFile.get_keys("Exif")) { exif[key] = keyFile.get_string("Exif", key); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 9e23b51a3..bdb3ced19 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -900,8 +900,7 @@ private: int cw = baseImg->getWidth(); int ch = baseImg->getHeight(); // put gamma TRC to 1 - Imagefloat* readyImg0 = NULL; - readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + Imagefloat* readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -915,8 +914,7 @@ private: delete readyImg0; //adjust TRC - Imagefloat* readyImg = NULL; - readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + Imagefloat* readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { @@ -1258,7 +1256,6 @@ private: } } - Imagefloat* readyImg = nullptr; cmsHPROFILE jprof = nullptr; constexpr bool customGamma = false; constexpr bool useLCMS = false; @@ -1270,7 +1267,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.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); + Imagefloat* readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); if (settings->verbose) { printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str()); diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h index 62bc6f4a4..9d004f5f9 100644 --- a/rtgui/dirbrowser.h +++ b/rtgui/dirbrowser.h @@ -89,7 +89,7 @@ public: void updateVolumes (); void updateDirTree (const Gtk::TreeModel::iterator& iter); void updateDirTreeRoot (); - void winDirChanged (); + void winDirChanged () override; private: void addRoot (char letter); #endif diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc index fa362a351..20416c549 100644 --- a/rtgui/exifpanel.cc +++ b/rtgui/exifpanel.cc @@ -261,7 +261,7 @@ void ExifPanel::addDirectory (const TagDirectory* dir, Gtk::TreeModel::Children Tag* t2 = (const_cast (dir))->getTagByIndex (j); const TagAttrib* currAttrib = t2->getAttrib(); - if (currAttrib && ((options.lastShowAllExif) || (!options.lastShowAllExif && currAttrib->action != AC_SYSTEM))) { + if (currAttrib && (options.lastShowAllExif || currAttrib->action != AC_SYSTEM)) { addSeparator(); hasContent = true; break; diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h index f2c9af621..5f66b579e 100644 --- a/rtgui/filmsimulation.h +++ b/rtgui/filmsimulation.h @@ -11,7 +11,7 @@ class ClutComboBox : public MyComboBox { public: - ClutComboBox(const Glib::ustring &path); + explicit ClutComboBox(const Glib::ustring &path); //int fillFromDir (const Glib::ustring& path); int foundClutsCount() const; Glib::ustring getSelectedClut(); @@ -34,7 +34,7 @@ private: Glib::RefPtr m_model; ClutColumns m_columns; int count; - ClutModel(const Glib::ustring &path); + explicit ClutModel(const Glib::ustring &path); int parseDir (const Glib::ustring& path); }; diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index 08883708e..a271efc0a 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -11,7 +11,6 @@ using namespace rtengine::procparams; Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL"), false, true), lastmedianmap (false) { CurveListener::setMulti (true); - std::vector defaultCurve; std::vector milestones; nextmin = 0.; nextmax = 0.; From 863649a4c235606b8acef74c2b7b573a340e9049 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 22 Nov 2018 19:10:34 +0100 Subject: [PATCH 211/348] Fix another issue detected by cppcheck --- rtengine/rawimagesource.cc | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 13ff1171c..89a66f6c3 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -4396,17 +4396,11 @@ bool RawImageSource::findInputProfile(Glib::ustring inProfile, cmsHPROFILE embed // very effective to reduce (or remove) the magenta, but with levels of grey ! void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int width, float maxval, float* hlmax) { - const int ColorCount = 3; + constexpr int ColorCount = 3; // Transform matrixes rgb>lab and back - static const float trans[2][ColorCount][ColorCount] = { - { { 1, 1, 1 }, { 1.7320508, -1.7320508, 0 }, { -1, -1, 2 } }, - { { 1, 1, 1 }, { 1, -1, 1 }, { 1, 1, -1 } } - }; - static const float itrans[2][ColorCount][ColorCount] = { - { { 1, 0.8660254, -0.5 }, { 1, -0.8660254, -0.5 }, { 1, 0, 1 } }, - { { 1, 1, 1 }, { 1, -1, 1 }, { 1, 1, -1 } } - }; + constexpr float trans[ColorCount][ColorCount] = { { 1, 1, 1 }, { 1.7320508, -1.7320508, 0 }, { -1, -1, 2 } }; + constexpr float itrans[ColorCount][ColorCount] = { { 1, 0.8660254, -0.5 }, { 1, -0.8660254, -0.5 }, { 1, 0, 1 } }; #define FOREACHCOLOR for (int c=0; c < ColorCount; c++) @@ -4463,7 +4457,7 @@ void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int wi for (int j = 0; j < ColorCount; j++) { - lab[i][c] += trans[ColorCount - 3][c][j] * cam[i][j]; + lab[i][c] += trans[c][j] * cam[i][j]; } } @@ -4487,7 +4481,7 @@ void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int wi for (int j = 0; j < ColorCount; j++) { - cam[0][c] += itrans[ColorCount - 3][c][j] * lab[0][j]; + cam[0][c] += itrans[c][j] * lab[0][j]; } } FOREACHCOLOR rgb[c] = cam[0][c] / ColorCount; From e58519f2dc07ddecd37cb29b82d2bfbfb4dd04ec Mon Sep 17 00:00:00 2001 From: Thanatomanic <6567747+Thanatomanic@users.noreply.github.com> Date: Thu, 22 Nov 2018 21:26:58 +0100 Subject: [PATCH 212/348] Some pedantic fixes --- rtengine/cplx_wavelet_dec.cc | 2 +- rtengine/cplx_wavelet_dec.h | 2 +- rtengine/cplx_wavelet_filter_coeffs.h | 2 +- rtengine/cplx_wavelet_level.h | 2 +- rtengine/curves.cc | 16 ++++++++-------- rtengine/labimage.cc | 2 +- rtengine/rtthumbnail.h | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/rtengine/cplx_wavelet_dec.cc b/rtengine/cplx_wavelet_dec.cc index eafadaa54..a43a7b8b6 100644 --- a/rtengine/cplx_wavelet_dec.cc +++ b/rtengine/cplx_wavelet_dec.cc @@ -39,5 +39,5 @@ wavelet_decomposition::~wavelet_decomposition() } } -}; +} diff --git a/rtengine/cplx_wavelet_dec.h b/rtengine/cplx_wavelet_dec.h index 45e829322..ccecef819 100644 --- a/rtengine/cplx_wavelet_dec.h +++ b/rtengine/cplx_wavelet_dec.h @@ -266,6 +266,6 @@ void wavelet_decomposition::reconstruct(E * dst, const float blend) coeff0 = nullptr; } -}; +} #endif diff --git a/rtengine/cplx_wavelet_filter_coeffs.h b/rtengine/cplx_wavelet_filter_coeffs.h index ff22c9812..bd333d4b9 100644 --- a/rtengine/cplx_wavelet_filter_coeffs.h +++ b/rtengine/cplx_wavelet_filter_coeffs.h @@ -50,5 +50,5 @@ const float Daub4_anal16[2][16] ALIGNED16 = {//Daub 14 }; // if necessary ?? we can add D20 !! -}; +} diff --git a/rtengine/cplx_wavelet_level.h b/rtengine/cplx_wavelet_level.h index 9996ec2af..cab0d8e3e 100644 --- a/rtengine/cplx_wavelet_level.h +++ b/rtengine/cplx_wavelet_level.h @@ -758,6 +758,6 @@ template template void wavelet_level::reconstruct_lev } } #endif -}; +} #endif diff --git a/rtengine/curves.cc b/rtengine/curves.cc index c0f0d9433..ecd38d4aa 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -1025,7 +1025,7 @@ void ColorAppearance::Set(const Curve &pCurve) } // -RetinextransmissionCurve::RetinextransmissionCurve() {}; +RetinextransmissionCurve::RetinextransmissionCurve() {} void RetinextransmissionCurve::Reset() { @@ -1058,7 +1058,7 @@ void RetinextransmissionCurve::Set(const std::vector &curvePoints) } -RetinexgaintransmissionCurve::RetinexgaintransmissionCurve() {}; +RetinexgaintransmissionCurve::RetinexgaintransmissionCurve() {} void RetinexgaintransmissionCurve::Reset() { @@ -1168,7 +1168,7 @@ void OpacityCurve::Set(const std::vector &curvePoints, bool &opautili) } -WavCurve::WavCurve() : sum(0.f) {}; +WavCurve::WavCurve() : sum(0.f) {} void WavCurve::Reset() { @@ -1211,7 +1211,7 @@ void WavCurve::Set(const std::vector &curvePoints) } -WavOpacityCurveRG::WavOpacityCurveRG() {}; +WavOpacityCurveRG::WavOpacityCurveRG() {} void WavOpacityCurveRG::Reset() { @@ -1244,7 +1244,7 @@ void WavOpacityCurveRG::Set(const std::vector &curvePoints) } -WavOpacityCurveBY::WavOpacityCurveBY() {}; +WavOpacityCurveBY::WavOpacityCurveBY() {} void WavOpacityCurveBY::Reset() { @@ -1276,7 +1276,7 @@ void WavOpacityCurveBY::Set(const std::vector &curvePoints) } } -WavOpacityCurveW::WavOpacityCurveW() {}; +WavOpacityCurveW::WavOpacityCurveW() {} void WavOpacityCurveW::Reset() { @@ -1308,7 +1308,7 @@ void WavOpacityCurveW::Set(const std::vector &curvePoints) } } -WavOpacityCurveWL::WavOpacityCurveWL() {}; +WavOpacityCurveWL::WavOpacityCurveWL() {} void WavOpacityCurveWL::Reset() { @@ -1341,7 +1341,7 @@ void WavOpacityCurveWL::Set(const std::vector &curvePoints) } -NoiseCurve::NoiseCurve() : sum(0.f) {}; +NoiseCurve::NoiseCurve() : sum(0.f) {} void NoiseCurve::Reset() { diff --git a/rtengine/labimage.cc b/rtengine/labimage.cc index bcadda0ed..f4e13049a 100644 --- a/rtengine/labimage.cc +++ b/rtengine/labimage.cc @@ -101,6 +101,6 @@ void LabImage::deleteLab() void LabImage::reallocLab() { allocLab(W, H); -}; +} } diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 667d8e1c9..c01aa81ee 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -156,7 +156,7 @@ public: } return imgPtr; - }; + } }; } From 944b901a65e8d4ac139ce543d0c2fd3ab83a9704 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 22 Nov 2018 22:07:39 +0100 Subject: [PATCH 213/348] Fix some coverity issues, next try... --- rtexif/rtexif.cc | 4 ++-- rtexif/rtexif.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index d79fd1849..bea091b66 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -362,7 +362,7 @@ Glib::ustring TagDirectory::getDumpKey (int tagID, const Glib::ustring &tagName) return key; } -void TagDirectory::addTag (Tag* tag) +void TagDirectory::addTag (Tag* &tag) { // look up if it already exists: @@ -374,7 +374,7 @@ void TagDirectory::addTag (Tag* tag) } } -void TagDirectory::addTagFront (Tag* tag) +void TagDirectory::addTagFront (Tag* &tag) { // look up if it already exists: diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index f6960bc09..2b68a6754 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -156,8 +156,8 @@ public: bool getXMPTagValue (const char* name, char* value) const; void keepTag (int ID); - void addTag (Tag* a); - void addTagFront (Tag* a); + void addTag (Tag* &a); + void addTagFront (Tag* &a); void replaceTag (Tag* a); inline Tag* getTagByIndex (int ix) { From 52ddc63f5406ff16c13e393cf2d61caa235f7697 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 00:33:30 +0100 Subject: [PATCH 214/348] Fix coverity issues --- rtengine/eahd_demosaic.cc | 2 +- rtexif/rtexif.cc | 12 ++++++++---- rtgui/main-cli.cc | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/rtengine/eahd_demosaic.cc b/rtengine/eahd_demosaic.cc index 4ebeb2d66..816f4bf55 100644 --- a/rtengine/eahd_demosaic.cc +++ b/rtengine/eahd_demosaic.cc @@ -163,7 +163,7 @@ inline void RawImageSource::interpolate_row_rb (float* ar, float* ab, float* pg, n++; } - nonGreen2[j] = cg[j] + nonGreen / n; + nonGreen2[j] = cg[j] + nonGreen / std::max(n, 1); // linear R-G interp. horizontally float val1; diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index bea091b66..39d85ace9 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -1207,8 +1207,8 @@ Tag::Tag (TagDirectory* p, FILE* f, int base) } else { // read value value = new unsigned char [valuesize + 1]; - fread (value, 1, valuesize, f); - value[valuesize] = '\0'; + auto readSize = fread (value, 1, valuesize, f); + value[readSize] = '\0'; } // seek back to the saved position @@ -2149,10 +2149,14 @@ void ExifManager::parseCIFF (int length, TagDirectory* root) char buffer[1024]; Tag* t; - fseek (f, rml->ciffBase + length - 4, SEEK_SET); + if (fseek(f, rml->ciffBase + length - 4, SEEK_SET)) { + return; + } int dirStart = get4 (f, INTEL) + rml->ciffBase; - fseek (f, dirStart, SEEK_SET); + if (fseek(f, dirStart, SEEK_SET)) { + return; + } int numOfTags = get2 (f, INTEL); diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc index 66e0b9cfc..be225378e 100644 --- a/rtgui/main-cli.cc +++ b/rtgui/main-cli.cc @@ -203,7 +203,9 @@ int main (int argc, char **argv) // Move the old path to the new one if the new does not exist if (Glib::file_test (Glib::build_filename (options.rtdir, "cache"), Glib::FILE_TEST_IS_DIR) && !Glib::file_test (options.cacheBaseDir, Glib::FILE_TEST_IS_DIR)) { - g_rename (Glib::build_filename (options.rtdir, "cache").c_str (), options.cacheBaseDir.c_str ()); + if (g_rename (Glib::build_filename (options.rtdir, "cache").c_str (), options.cacheBaseDir.c_str ()) == -1) { + std::cout << "g_rename " << Glib::build_filename (options.rtdir, "cache").c_str () << " => " << options.cacheBaseDir.c_str () << " failed." << std::endl; + } } #endif From 822ba6ae1870af98c847f8d8a3eae2da178beee0 Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 23 Nov 2018 08:58:50 +0100 Subject: [PATCH 215/348] Small changes to GammaPreset in iccprofilecreator.cc --- rtgui/iccprofilecreator.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 60b45519a..f745598e0 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -833,23 +833,29 @@ void ICCProfileCreator::savePressed() } else if (gammaPreset == "sRGB_g2.4_s12.92") { sGammaPreset = "sRGB_g=2.4_s=12.92310"; ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom - ga[1] = 0.947858; - ga[2] = 0.052142; - ga[3] = 0.077399; - ga[4] = 0.039293; + ga[1] = 0.947867; + ga[2] = 0.052133; + ga[3] = 0.077381; + ga[4] = 0.039286; + //g3 = 0.00340 + //g4 = 0.0550 + //g5 = 0.449842 presetGamma = 2.4; presetSlope = 12.92310; } else if (gammaPreset == "BT709_g2.2_s4.5") { sGammaPreset = "BT709_g=2.2_s=4.5"; - ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin + ga[0] = 2.22; //BT709 2.22 4.5 - my preferred as D.Coffin ga[1] = 0.909995; ga[2] = 0.090005; ga[3] = 0.222222; ga[4] = 0.081071; - presetGamma = 2.2; + //g3=0.018016 + //g4=0.098907 + //g5=0.517448 + presetGamma = 2.22; presetSlope = 4.5; - + } else if (gammaPreset == "linear_g1.0") { sGammaPreset = "Linear_g=1.0"; ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...) From e0ccb7da7d3036a56564ed083cf32fc4222f129f Mon Sep 17 00:00:00 2001 From: "luz.paz" Date: Fri, 23 Nov 2018 07:07:38 -0500 Subject: [PATCH 216/348] Misc. comment typo fixes Found via `codespell` --- rtengine/ipwavelet.cc | 8 +- rtengine/klt/trackFeatures.cc | 322 +++++++++++++++++----------------- rtgui/cropwindow.cc | 8 +- rtgui/iccprofilecreator.cc | 2 +- 4 files changed, 169 insertions(+), 171 deletions(-) diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index e22e4553c..860823b3a 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -2773,8 +2773,8 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit } } else if(cp.EDmet == 1) { //threshold adjuster float MaxPCompare = MaxP[level] * SQR(cp.edg_max / 100.f); //100 instead of b_r...case if b_r < 100 - float MaxNCompare = MaxN[level] * SQR(cp.edg_max / 100.f); //always rduce a little edge for near max values - float edgeSdCompare = (mean[level] + 1.5f * sigma[level]) * SQR(cp.edg_sd / t_r); // 1.5 standard deviation #80% range between mean 50% and 80% + float MaxNCompare = MaxN[level] * SQR(cp.edg_max / 100.f); //always reduce a little edge for near max values + float edgeSdCompare = (mean[level] + 1.5f * sigma[level]) * SQR(cp.edg_sd / t_r); // 1.5 standard deviation #80% range between mean 50% and 80% float edgeMeanCompare = mean[level] * SQR(cp.edg_mean / t_l); float edgeLowCompare = (5.f + SQR(cp.edg_low)); float edgeMeanFactor = cbrt(cp.edg_mean / t_l); @@ -2818,7 +2818,7 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit edge = edgePrecalc; } - //algorithm that take into account local contrast + //algorithm that takes into account local contrast // I use a thresholdadjuster with // Bottom left ==> minimal low value for local contrast (not 0, but 5...we can change) // 0 10*10 35*35 100*100 substantially correspond to the true distribution of low value, mean, standard-deviation and max (ed 5, 50, 400, 4000 @@ -2866,7 +2866,7 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit if(edge < 1.f) { edge = 1.f; } - }//mofify effect if sd change + }//modify effect if sd change if (fabs(WavCoeffs_L[dir][k]) < edgeMeanCompare) { edge *= edgeMeanFactor; diff --git a/rtengine/klt/trackFeatures.cc b/rtengine/klt/trackFeatures.cc index 474d0f5f5..a99225543 100644 --- a/rtengine/klt/trackFeatures.cc +++ b/rtengine/klt/trackFeatures.cc @@ -23,14 +23,14 @@ typedef float *_FloatWindow; /********************************************************************* * _interpolate - * - * Given a point (x,y) in an image, computes the bilinear interpolated - * gray-level value of the point in the image. + * + * Given a point (x,y) in an image, computes the bilinear interpolated + * gray-level value of the point in the image. */ static float _interpolate( - float x, - float y, + float x, + float y, _KLT_FloatImage img) { int xt = (int) x; /* coordinates of top-left corner */ @@ -61,7 +61,7 @@ static float _interpolate( * _computeIntensityDifference * * Given two images and the window center in both images, - * aligns the images wrt the window and computes the difference + * aligns the images wrt the window and computes the difference * between the two overlaid images. */ @@ -91,7 +91,7 @@ static void _computeIntensityDifference( * _computeGradientSum * * Given two gradients and the window center in both images, - * aligns the gradients wrt the window and computes the sum of the two + * aligns the gradients wrt the window and computes the sum of the two * overlaid gradients. */ @@ -126,7 +126,7 @@ static void _computeGradientSum( * _computeIntensityDifferenceLightingInsensitive * * Given two images and the window center in both images, - * aligns the images wrt the window and computes the difference + * aligns the images wrt the window and computes the difference * between the two overlaid images; normalizes for overall gain and bias. */ @@ -141,7 +141,7 @@ static void _computeIntensityDifferenceLightingInsensitive( int hw = width/2, hh = height/2; float g1, g2, sum1_squared = 0, sum2_squared = 0; int i, j; - + float sum1 = 0, sum2 = 0; float mean1, mean2,alpha,belta; /* Compute values */ @@ -165,7 +165,7 @@ static void _computeIntensityDifferenceLightingInsensitive( g1 = _interpolate(x1+i, y1+j, img1); g2 = _interpolate(x2+i, y2+j, img2); *imgdiff++ = g1- g2*alpha-belta; - } + } } @@ -173,7 +173,7 @@ static void _computeIntensityDifferenceLightingInsensitive( * _computeGradientSumLightingInsensitive * * Given two gradients and the window center in both images, - * aligns the gradients wrt the window and computes the sum of the two + * aligns the gradients wrt the window and computes the sum of the two * overlaid gradients; normalizes for overall gain and bias. */ @@ -184,7 +184,7 @@ static void _computeGradientSumLightingInsensitive( _KLT_FloatImage grady2, _KLT_FloatImage img1, /* images */ _KLT_FloatImage img2, - + float x1, float y1, /* center of window in 1st img */ float x2, float y2, /* center of window in 2nd img */ int width, int height, /* size of window */ @@ -194,7 +194,7 @@ static void _computeGradientSumLightingInsensitive( int hw = width/2, hh = height/2; float g1, g2, sum1_squared = 0, sum2_squared = 0; int i, j; - + float mean1, mean2, alpha; for (j = -hh ; j <= hh ; j++) for (i = -hw ; i <= hw ; i++) { @@ -205,7 +205,7 @@ static void _computeGradientSumLightingInsensitive( mean1 = sum1_squared/(width*height); mean2 = sum2_squared/(width*height); alpha = (float) sqrt(mean1/mean2); - + /* Compute values */ for (j = -hh ; j <= hh ; j++) for (i = -hw ; i <= hw ; i++) { @@ -215,7 +215,7 @@ static void _computeGradientSumLightingInsensitive( g1 = _interpolate(x1+i, y1+j, grady1); g2 = _interpolate(x2+i, y2+j, grady2); *grady++ = g1+ g2*alpha; - } + } } /********************************************************************* @@ -229,8 +229,8 @@ static void _compute2by2GradientMatrix( int width, /* size of window */ int height, float *gxx, /* return values */ - float *gxy, - float *gyy) + float *gxy, + float *gyy) { float gx, gy; @@ -246,8 +246,8 @@ static void _compute2by2GradientMatrix( *gyy += gy*gy; } } - - + + /********************************************************************* * _compute2by1ErrorVector * @@ -267,7 +267,7 @@ static void _compute2by1ErrorVector( int i; /* Compute values */ - *ex = 0; *ey = 0; + *ex = 0; *ey = 0; for (i = 0 ; i < width * height ; i++) { diff = *imgdiff++; *ex += diff * (*gradx++); @@ -297,7 +297,7 @@ static int _solveEquation( { float det = gxx*gyy - gxy*gxy; - + if (det < small) return KLT_SMALL_DET; *dx = (gyy*ex - gxy*ey)/det; @@ -309,7 +309,7 @@ static int _solveEquation( /********************************************************************* * _allocateFloatWindow */ - + static _FloatWindow _allocateFloatWindow( int width, int height) @@ -347,7 +347,7 @@ static void _printFloatWindow( } } */ - + /********************************************************************* * _sumAbsFloatWindow @@ -385,10 +385,10 @@ static int _trackFeature( float y1, float *x2, /* starting location of search in second image */ float *y2, - _KLT_FloatImage img1, + _KLT_FloatImage img1, _KLT_FloatImage gradx1, _KLT_FloatImage grady1, - _KLT_FloatImage img2, + _KLT_FloatImage img2, _KLT_FloatImage gradx2, _KLT_FloatImage grady2, int width, /* size of window */ @@ -410,7 +410,7 @@ static int _trackFeature( int nr = img1->nrows; float one_plus_eps = 1.001f; /* To prevent rounding errors */ - + /* Allocate memory for windows */ imgdiff = _allocateFloatWindow(width, height); gradx = _allocateFloatWindow(width, height); @@ -430,24 +430,24 @@ static int _trackFeature( /* Compute gradient and difference windows */ if (lighting_insensitive) { - _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, + _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, img1, img2, x1, y1, *x2, *y2, width, height, gradx, grady); } else { - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSum(gradx1, grady1, gradx2, grady2, + _computeGradientSum(gradx1, grady1, gradx2, grady2, x1, y1, *x2, *y2, width, height, gradx, grady); } - + /* Use these windows to construct matrices */ - _compute2by2GradientMatrix(gradx, grady, width, height, + _compute2by2GradientMatrix(gradx, grady, width, height, &gxx, &gxy, &gyy); _compute2by1ErrorVector(imgdiff, gradx, grady, width, height, step_factor, &ex, &ey); - + /* Using matrices, solve equation for new displacement */ status = _solveEquation(gxx, gxy, gyy, ex, ey, small, &dx, &dy); if (status == KLT_SMALL_DET) break; @@ -459,19 +459,19 @@ static int _trackFeature( } while ((fabs(dx)>=th || fabs(dy)>=th) && iteration < max_iterations); /* Check whether window is out of bounds */ - if (*x2-hw < 0.0f || nc-(*x2+hw) < one_plus_eps || + if (*x2-hw < 0.0f || nc-(*x2+hw) < one_plus_eps || *y2-hh < 0.0f || nr-(*y2+hh) < one_plus_eps) status = KLT_OOB; /* Check whether residue is too large */ if (status == KLT_TRACKED) { if (lighting_insensitive) - _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); else - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) + if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) status = KLT_LARGE_RESIDUE; } @@ -505,25 +505,25 @@ static KLT_BOOL _outOfBounds( -/********************************************************************** +/********************************************************************** * CONSISTENCY CHECK OF FEATURES BY AFFINE MAPPING (BEGIN) -* -* Created by: Thorsten Thormaehlen (University of Hannover) June 2004 +* +* Created by: Thorsten Thormaehlen (University of Hannover) June 2004 * thormae@tnt.uni-hannover.de -* +* * Permission is granted to any individual or institution to use, copy, modify, -* and distribute this part of the software, provided that this complete authorship -* and permission notice is maintained, intact, in all copies. +* and distribute this part of the software, provided that this complete authorship +* and permission notice is maintained, intact, in all copies. * * This software is provided "as is" without express or implied warranty. * * * The following static functions are helpers for the affine mapping. -* They all start with "_am". +* They all start with "_am". * There are also small changes in other files for the * affine mapping these are all marked by "for affine mapping" -* -* Thanks to Kevin Koeser (koeser@mip.informatik.uni-kiel.de) for fixing a bug +* +* Thanks to Kevin Koeser (koeser@mip.informatik.uni-kiel.de) for fixing a bug */ #define SWAP_ME(X,Y) {temp=(X);(X)=(Y);(Y)=temp;} @@ -613,7 +613,7 @@ static int _am_gauss_jordan_elimination(float **a, int n, float **b, int m) /********************************************************************* * _am_getGradientWinAffine * - * aligns the gradients with the affine transformed window + * aligns the gradients with the affine transformed window */ static void _am_getGradientWinAffine( @@ -628,7 +628,7 @@ static void _am_getGradientWinAffine( int hw = width/2, hh = height/2; int i, j; float mi, mj; - + /* Compute values */ for (j = -hh ; j <= hh ; j++) for (i = -hw ; i <= hw ; i++) { @@ -637,19 +637,19 @@ static void _am_getGradientWinAffine( *out_gradx++ = _interpolate(x+mi, y+mj, in_gradx); *out_grady++ = _interpolate(x+mi, y+mj, in_grady); } - + } ///********************************************************************* // * _computeAffineMappedImage // * used only for DEBUG output -// * +// * //*/ // //static void _am_computeAffineMappedImage( // _KLT_FloatImage img, /* images */ // float x, float y, /* center of window */ -// float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ +// float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ // int width, int height, /* size of window */ // _FloatWindow imgdiff) /* output */ //{ @@ -679,14 +679,14 @@ static void _am_getSubFloatImage( int hw = window->ncols/2, hh = window->nrows/2; int x0 = (int) x; int y0 = (int) y; - float * windata = window->data; + float * windata = window->data; int offset; int i, j; assert(x0 - hw >= 0); assert(y0 - hh >= 0); assert(x0 + hw <= img->ncols); - assert(y0 + hh <= img->nrows); + assert(y0 + hh <= img->nrows); /* copy values */ for (j = -hh ; j <= hh ; j++) @@ -700,10 +700,10 @@ static void _am_getSubFloatImage( * _am_computeIntensityDifferenceAffine * * Given two images and the window center in both images, - * aligns the images with the window and computes the difference + * aligns the images with the window and computes the difference * between the two overlaid images using the affine mapping. * A = [ Axx Axy] - * [ Ayx Ayy] + * [ Ayx Ayy] */ static void _am_computeIntensityDifferenceAffine( @@ -711,7 +711,7 @@ static void _am_computeIntensityDifferenceAffine( _KLT_FloatImage img2, float x1, float y1, /* center of window in 1st img */ float x2, float y2, /* center of window in 2nd img */ - float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ + float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ int width, int height, /* size of window */ _FloatWindow imgdiff) /* output */ { @@ -746,15 +746,15 @@ static void _am_compute6by6GradientMatrix( int hw = width/2, hh = height/2; int i, j; float gx, gy, gxx, gxy, gyy, x, y, xx, xy, yy; - - - /* Set values to zero */ + + + /* Set values to zero */ for (j = 0 ; j < 6 ; j++) { for (i = j ; i < 6 ; i++) { T[j][i] = 0.0; } } - + for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { gx = *gradx++; @@ -762,41 +762,41 @@ static void _am_compute6by6GradientMatrix( gxx = gx * gx; gxy = gx * gy; gyy = gy * gy; - x = (float) i; - y = (float) j; + x = (float) i; + y = (float) j; xx = x * x; xy = x * y; yy = y * y; - - T[0][0] += xx * gxx; + + T[0][0] += xx * gxx; T[0][1] += xx * gxy; T[0][2] += xy * gxx; T[0][3] += xy * gxy; T[0][4] += x * gxx; T[0][5] += x * gxy; - + T[1][1] += xx * gyy; T[1][2] += xy * gxy; T[1][3] += xy * gyy; T[1][4] += x * gxy; T[1][5] += x * gyy; - + T[2][2] += yy * gxx; T[2][3] += yy * gxy; T[2][4] += y * gxx; T[2][5] += y * gxy; - + T[3][3] += yy * gyy; T[3][4] += y * gxy; - T[3][5] += y * gyy; + T[3][5] += y * gyy; - T[4][4] += gxx; + T[4][4] += gxx; T[4][5] += gxy; - - T[5][5] += gyy; + + T[5][5] += gyy; } } - + for (j = 0 ; j < 5 ; j++) { for (i = j+1 ; i < 6 ; i++) { T[i][j] = T[j][i]; @@ -824,9 +824,9 @@ static void _am_compute6by1ErrorVector( int i, j; float diff, diffgradx, diffgrady; - /* Set values to zero */ - for(i = 0; i < 6; i++) e[i][0] = 0.0; - + /* Set values to zero */ + for(i = 0; i < 6; i++) e[i][0] = 0.0; + /* Compute values */ for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { @@ -835,15 +835,15 @@ static void _am_compute6by1ErrorVector( diffgrady = diff * (*grady++); e[0][0] += diffgradx * i; e[1][0] += diffgrady * i; - e[2][0] += diffgradx * j; - e[3][0] += diffgrady * j; + e[2][0] += diffgradx * j; + e[3][0] += diffgrady * j; e[4][0] += diffgradx; - e[5][0] += diffgrady; + e[5][0] += diffgrady; } } - + for(i = 0; i < 6; i++) e[i][0] *= 0.5; - + } @@ -862,37 +862,37 @@ static void _am_compute4by4GradientMatrix( int hw = width/2, hh = height/2; int i, j; float gx, gy, x, y; - - - /* Set values to zero */ + + + /* Set values to zero */ for (j = 0 ; j < 4 ; j++) { for (i = 0 ; i < 4 ; i++) { T[j][i] = 0.0; } } - + for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { gx = *gradx++; gy = *grady++; - x = (float) i; - y = (float) j; + x = (float) i; + y = (float) j; T[0][0] += (x*gx+y*gy) * (x*gx+y*gy); T[0][1] += (x*gx+y*gy)*(x*gy-y*gx); T[0][2] += (x*gx+y*gy)*gx; T[0][3] += (x*gx+y*gy)*gy; - + T[1][1] += (x*gy-y*gx) * (x*gy-y*gx); T[1][2] += (x*gy-y*gx)*gx; T[1][3] += (x*gy-y*gx)*gy; - + T[2][2] += gx*gx; T[2][3] += gx*gy; - + T[3][3] += gy*gy; } } - + for (j = 0 ; j < 3 ; j++) { for (i = j+1 ; i < 4 ; i++) { T[i][j] = T[j][i]; @@ -918,9 +918,9 @@ static void _am_compute4by1ErrorVector( int i, j; float diff, diffgradx, diffgrady; - /* Set values to zero */ - for(i = 0; i < 4; i++) e[i][0] = 0.0; - + /* Set values to zero */ + for(i = 0; i < 4; i++) e[i][0] = 0.0; + /* Compute values */ for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { @@ -933,9 +933,9 @@ static void _am_compute4by1ErrorVector( e[3][0] += diffgrady; } } - + for(i = 0; i < 4; i++) e[i][0] *= 0.5; - + } @@ -950,7 +950,7 @@ static void _am_compute4by1ErrorVector( * KLT_TRACKED otherwise. */ -/* if you enalbe the DEBUG_AFFINE_MAPPING make sure you have created a directory "./debug" */ +/* if you enable the DEBUG_AFFINE_MAPPING make sure you have created a directory "./debug" */ /* #define DEBUG_AFFINE_MAPPING */ #ifdef DEBUG_AFFINE_MAPPING @@ -963,10 +963,10 @@ static int _am_trackFeatureAffine( float y1, float *x2, /* starting location of search in second image */ float *y2, - _KLT_FloatImage img1, + _KLT_FloatImage img1, _KLT_FloatImage gradx1, _KLT_FloatImage grady1, - _KLT_FloatImage img2, + _KLT_FloatImage img2, _KLT_FloatImage gradx2, _KLT_FloatImage grady2, int width, /* size of window */ @@ -980,7 +980,7 @@ static int _am_trackFeatureAffine( int lighting_insensitive, /* whether to normalize for gain and bias */ int affine_map, /* whether to evaluates the consistency of features with affine mapping */ float mdd, /* difference between the displacements */ - float *Axx, float *Ayx, + float *Axx, float *Ayx, float *Axy, float *Ayy) /* used affine mapping */ { @@ -996,7 +996,7 @@ static int _am_trackFeatureAffine( int nc2 = img2->ncols; int nr2 = img2->nrows; float **a; - float **T; + float **T; float one_plus_eps = 1.001f; /* To prevent rounding errors */ float old_x2 = *x2; float old_y2 = *y2; @@ -1007,7 +1007,7 @@ static int _am_trackFeatureAffine( _KLT_FloatImage aff_diff_win = _KLTCreateFloatImage(width,height); printf("starting location x2=%f y2=%f\n", *x2, *y2); #endif - + /* Allocate memory for windows */ imgdiff = _allocateFloatWindow(width, height); gradx = _allocateFloatWindow(width, height); @@ -1019,7 +1019,7 @@ static int _am_trackFeatureAffine( do { if(!affine_map) { /* pure translation tracker */ - + /* If out of bounds, exit loop */ if ( x1-hw < 0.0f || nc1-( x1+hw) < one_plus_eps || *x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps || @@ -1028,47 +1028,47 @@ static int _am_trackFeatureAffine( status = KLT_OOB; break; } - + /* Compute gradient and difference windows */ if (lighting_insensitive) { - _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, + _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, img1, img2, x1, y1, *x2, *y2, width, height, gradx, grady); } else { - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSum(gradx1, grady1, gradx2, grady2, + _computeGradientSum(gradx1, grady1, gradx2, grady2, x1, y1, *x2, *y2, width, height, gradx, grady); } - -#ifdef DEBUG_AFFINE_MAPPING + +#ifdef DEBUG_AFFINE_MAPPING aff_diff_win->data = imgdiff; sprintf(fname, "./debug/kltimg_trans_diff_win%03d.%03d.pgm", glob_index, counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); printf("iter = %d translation tracker res: %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height)); #endif - + /* Use these windows to construct matrices */ - _compute2by2GradientMatrix(gradx, grady, width, height, + _compute2by2GradientMatrix(gradx, grady, width, height, &gxx, &gxy, &gyy); _compute2by1ErrorVector(imgdiff, gradx, grady, width, height, step_factor, &ex, &ey); - + /* Using matrices, solve equation for new displacement */ status = _solveEquation(gxx, gxy, gyy, ex, ey, small, &dx, &dy); convergence = (fabs(dx) < th && fabs(dy) < th); - + *x2 += dx; *y2 += dy; - + }else{ /* affine tracker */ - + float ul_x = *Axx * (-hw) + *Axy * hh + *x2; /* upper left corner */ - float ul_y = *Ayx * (-hw) + *Ayy * hh + *y2; + float ul_y = *Ayx * (-hw) + *Ayy * hh + *y2; float ll_x = *Axx * (-hw) + *Axy * (-hh) + *x2; /* lower left corner */ float ll_y = *Ayx * (-hw) + *Ayy * (-hh) + *y2; float ur_x = *Axx * hw + *Axy * hh + *x2; /* upper right corner */ @@ -1098,25 +1098,25 @@ static int _am_trackFeatureAffine( sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_1.pgm", glob_index, counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); - + _am_computeAffineMappedImage(img2, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, imgdiff); aff_diff_win->data = imgdiff; sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_2.pgm", glob_index, counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); #endif - + _am_computeIntensityDifferenceAffine(img1, img2, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, imgdiff); -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING aff_diff_win->data = imgdiff; sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_3.pgm", glob_index,counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); - + printf("iter = %d affine tracker res: %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height)); -#endif - +#endif + _am_getGradientWinAffine(gradx2, grady2, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, gradx, grady); @@ -1124,24 +1124,24 @@ static int _am_trackFeatureAffine( case 1: _am_compute4by1ErrorVector(imgdiff, gradx, grady, width, height, a); _am_compute4by4GradientMatrix(gradx, grady, width, height, T); - + status = _am_gauss_jordan_elimination(T,4,a,1); - + *Axx += a[0][0]; *Ayx += a[1][0]; *Ayy = *Axx; *Axy = -(*Ayx); - + dx = a[2][0]; dy = a[3][0]; - + break; case 2: _am_compute6by1ErrorVector(imgdiff, gradx, grady, width, height, a); _am_compute6by6GradientMatrix(gradx, grady, width, height, T); - + status = _am_gauss_jordan_elimination(T,6,a,1); - + *Axx += a[0][0]; *Ayx += a[1][0]; *Axy += a[2][0]; @@ -1149,30 +1149,30 @@ static int _am_trackFeatureAffine( dx = a[4][0]; dy = a[5][0]; - + break; } - + *x2 += dx; *y2 += dy; - + /* old upper left corner - new upper left corner */ - ul_x -= *Axx * (-hw) + *Axy * hh + *x2; - ul_y -= *Ayx * (-hw) + *Ayy * hh + *y2; + ul_x -= *Axx * (-hw) + *Axy * hh + *x2; + ul_y -= *Ayx * (-hw) + *Ayy * hh + *y2; /* old lower left corner - new lower left corner */ - ll_x -= *Axx * (-hw) + *Axy * (-hh) + *x2; + ll_x -= *Axx * (-hw) + *Axy * (-hh) + *x2; ll_y -= *Ayx * (-hw) + *Ayy * (-hh) + *y2; /* old upper right corner - new upper right corner */ - ur_x -= *Axx * hw + *Axy * hh + *x2; + ur_x -= *Axx * hw + *Axy * hh + *x2; ur_y -= *Ayx * hw + *Ayy * hh + *y2; /* old lower right corner - new lower right corner */ - lr_x -= *Axx * hw + *Axy * (-hh) + *x2; + lr_x -= *Axx * hw + *Axy * (-hh) + *x2; lr_y -= *Ayx * hw + *Ayy * (-hh) + *y2; -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING printf ("iter = %d, ul_x=%f ul_y=%f ll_x=%f ll_y=%f ur_x=%f ur_y=%f lr_x=%f lr_y=%f \n", iteration, ul_x, ul_y, ll_x, ll_y, ur_x, ur_y, lr_x, lr_y); -#endif +#endif convergence = (fabs(dx) < th && fabs(dy) < th && fabs(ul_x) < th_aff && fabs(ul_y) < th_aff && @@ -1180,19 +1180,19 @@ static int _am_trackFeatureAffine( fabs(ur_x) < th_aff && fabs(ur_y) < th_aff && fabs(lr_x) < th_aff && fabs(lr_y) < th_aff); } - + if (status == KLT_SMALL_DET) break; iteration++; -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING printf ("iter = %d, x1=%f, y1=%f, x2=%f, y2=%f, Axx=%f, Ayx=%f , Axy=%f, Ayy=%f \n",iteration, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy); -#endif - } while ( !convergence && iteration < max_iterations); +#endif + } while ( !convergence && iteration < max_iterations); /*} while ( (fabs(dx)>=th || fabs(dy)>=th || (affine_map && iteration < 8) ) && iteration < max_iterations); */ _am_free_matrix(T); _am_free_matrix(a); /* Check whether window is out of bounds */ - if (*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps || + if (*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps || *y2-hh < 0.0f || nr2-(*y2+hh) < one_plus_eps) status = KLT_OOB; @@ -1203,7 +1203,7 @@ static int _am_trackFeatureAffine( /* Check whether residue is too large */ if (status == KLT_TRACKED) { if(!affine_map){ - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); }else{ _am_computeIntensityDifferenceAffine(img1, img2, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, @@ -1211,8 +1211,8 @@ static int _am_trackFeatureAffine( } #ifdef DEBUG_AFFINE_MAPPING printf("iter = %d final_res = %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height)); -#endif - if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) +#endif + if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) status = KLT_LARGE_RESIDUE; } @@ -1222,8 +1222,8 @@ static int _am_trackFeatureAffine( #ifdef DEBUG_AFFINE_MAPPING printf("iter = %d status=%d\n", iteration, status); _KLTFreeFloatImage( aff_diff_win ); -#endif - +#endif + /* Return appropriate value */ return status; } @@ -1313,7 +1313,7 @@ void KLTTrackFeatures( pyramid1_gradx = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); pyramid1_grady = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); for (i = 0 ; i < tc->nPyramidLevels ; i++) - _KLTComputeGradients(pyramid1->img[i], tc->grad_sigma, + _KLTComputeGradients(pyramid1->img[i], tc->grad_sigma, pyramid1_gradx->img[i], pyramid1_grady->img[i]); } @@ -1327,7 +1327,7 @@ void KLTTrackFeatures( pyramid2_gradx = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); pyramid2_grady = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); for (i = 0 ; i < tc->nPyramidLevels ; i++) - _KLTComputeGradients(pyramid2->img[i], tc->grad_sigma, + _KLTComputeGradients(pyramid2->img[i], tc->grad_sigma, pyramid2_gradx->img[i], pyramid2_grady->img[i]); @@ -1372,11 +1372,11 @@ void KLTTrackFeatures( xloc *= subsampling; yloc *= subsampling; xlocout *= subsampling; ylocout *= subsampling; - val = _trackFeature(xloc, yloc, + val = _trackFeature(xloc, yloc, &xlocout, &ylocout, - pyramid1->img[r], - pyramid1_gradx->img[r], pyramid1_grady->img[r], - pyramid2->img[r], + pyramid1->img[r], + pyramid1_gradx->img[r], pyramid1_grady->img[r], + pyramid2->img[r], pyramid2_gradx->img[r], pyramid2_grady->img[r], tc->window_width, tc->window_height, tc->step_factor, @@ -1449,7 +1449,7 @@ void KLTTrackFeatures( if (tc->affineConsistencyCheck >= 0 && val == KLT_TRACKED) { /*for affine mapping*/ int border = 2; /* add border for interpolation */ -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING glob_index = indx; #endif @@ -1467,10 +1467,10 @@ void KLTTrackFeatures( /* affine tracking */ val = _am_trackFeatureAffine(featurelist->feature[indx]->aff_x, featurelist->feature[indx]->aff_y, &xlocout, &ylocout, - featurelist->feature[indx]->aff_img, - featurelist->feature[indx]->aff_img_gradx, + featurelist->feature[indx]->aff_img, + featurelist->feature[indx]->aff_img_gradx, featurelist->feature[indx]->aff_img_grady, - pyramid2->img[0], + pyramid2->img[0], pyramid2_gradx->img[0], pyramid2_grady->img[0], tc->affine_window_width, tc->affine_window_height, tc->step_factor, @@ -1478,14 +1478,14 @@ void KLTTrackFeatures( tc->min_determinant, tc->min_displacement, tc->affine_min_displacement, - tc->affine_max_residue, + tc->affine_max_residue, tc->lighting_insensitive, tc->affineConsistencyCheck, tc->affine_max_displacement_differ, &featurelist->feature[indx]->aff_Axx, &featurelist->feature[indx]->aff_Ayx, &featurelist->feature[indx]->aff_Axy, - &featurelist->feature[indx]->aff_Ayy + &featurelist->feature[indx]->aff_Ayy ); featurelist->feature[indx]->val = val; if(val != KLT_TRACKED){ @@ -1538,5 +1538,3 @@ void KLTTrackFeatures( } } - - diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 374b755ae..45372f1f5 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -44,7 +44,7 @@ CropWindow::CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDet crop_custom_ratio(0.f) { initZoomSteps(); - + Glib::RefPtr context = parent->get_pango_context () ; Pango::FontDescription fontd = context->get_font_description (); fontd.set_weight (Pango::WEIGHT_BOLD); @@ -351,7 +351,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) if ((bstate & GDK_SHIFT_MASK) && cropHandler.cropParams.w > 0 && cropHandler.cropParams.h > 0) { crop_custom_ratio = float(cropHandler.cropParams.w) / float(cropHandler.cropParams.h); } - + if (iarea->getToolMode () == TMColorPicker) { if (hoveredPicker) { if ((bstate & GDK_CONTROL_MASK) && !(bstate & GDK_SHIFT_MASK)) { @@ -1385,7 +1385,7 @@ void CropWindow::expose (Cairo::RefPtr cr) } } bool useBgColor = (state == SNormal || state == SDragPicker || state == SDeletePicker || state == SEditDrag1); - + if (cropHandler.cropPixbuf) { imgW = cropHandler.cropPixbuf->get_width (); imgH = cropHandler.cropPixbuf->get_height (); @@ -1653,7 +1653,7 @@ void CropWindow::expose (Cairo::RefPtr cr) const int shThreshold = options.shadowThreshold; const float ShawdowFac = 64.f / (options.shadowThreshold + 1); const float HighlightFac = 64.f / (256 - options.highlightThreshold); - const bool showclippedAny = (!showR && !showG && !showB && !showL); // will show clipping if any (all) of RGB chanels is (shadow) clipped + const bool showclippedAny = (!showR && !showG && !showB && !showL); // will show clipping if any (all) of RGB channels is (shadow) clipped #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index f745598e0..584412120 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1131,7 +1131,7 @@ void ICCProfileCreator::savePressed() //calculate XYZ matrix for each primaries and each temp (D50, D65...) - // reduce coordonate of primaries + // reduce coordinate of primaries //printf("p0=%f p1=%f p2=%f p3=%f p4=%f p5=%f \n", p[0], p[1], p[2], p[3],p[4], p[5]); double Xr = p[0] / p[1]; double Yr = 1.0; From d604abec39dde950ceadbd61bebb9a01bf67f8ac Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 14:36:16 +0100 Subject: [PATCH 217/348] Custom tool panel, first step --- rtdata/languages/default | 2 + rtgui/options.cc | 7 +++ rtgui/options.h | 1 + rtgui/toolpanel.h | 3 + rtgui/toolpanelcoord.cc | 116 +++++++++++++++++++++++---------------- rtgui/toolpanelcoord.h | 9 ++- 6 files changed, 90 insertions(+), 48 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index d3e40cb19..5e0a5e0cb 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -900,6 +900,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c +MAIN_TAB_CUSTOM;Custom +MAIN_TAB_CUSTOM_TOOLTIP;Shortcut: none MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit diff --git a/rtgui/options.cc b/rtgui/options.cc index c1494a085..a388ccb3e 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,6 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); + userTools.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -1069,6 +1070,10 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { + if (keyFile.has_key("GUI", "UserTools")) { + userTools = keyFile.get_string_list("GUI", "UserTools"); + } + if (keyFile.has_key("GUI", "WindowWidth")) { windowWidth = keyFile.get_integer("GUI", "WindowWidth"); } @@ -1967,6 +1972,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); + Glib::ArrayHandle pusert = userTools; + keyFile.set_string_list("GUI", "UserTools", pusert); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index 47ced982d..a97c1f165 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -375,6 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; + std::vector userTools; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 39abd03fa..fbe87f5f0 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -131,6 +131,9 @@ public: this->batchMode = batchMode; } + virtual Glib::ustring getToolName () { + return toolName; + } }; class FoldableToolPanel : public ToolPanel diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index bf155b1d6..3ea638569 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -31,6 +31,7 @@ using namespace rtengine::procparams; ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) { + userPanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -100,66 +101,70 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO + userTools.resize(options.userTools.size()); - addPanel (colorPanel, whitebalance); - addPanel (exposurePanel, toneCurve); - addPanel (colorPanel, vibrance); - addPanel (colorPanel, chmixer); - addPanel (colorPanel, blackwhite); - addPanel (exposurePanel, shadowshighlights); - addPanel (detailsPanel, sharpening); - addPanel (detailsPanel, localContrast); - addPanel (detailsPanel, sharpenEdge); - addPanel (detailsPanel, sharpenMicro); - addPanel (colorPanel, hsvequalizer); - addPanel (colorPanel, filmSimulation); - addPanel (colorPanel, softlight); - addPanel (colorPanel, rgbcurves); - addPanel (colorPanel, colortoning); - addPanel (exposurePanel, epd); - addPanel (exposurePanel, fattal); - addPanel (advancedPanel, retinex); - addPanel (exposurePanel, pcvignette); - addPanel (exposurePanel, gradient); - addPanel (exposurePanel, lcurve); - addPanel (advancedPanel, colorappearance); - addPanel (detailsPanel, impulsedenoise); - addPanel (detailsPanel, dirpyrdenoise); - addPanel (detailsPanel, defringe); - addPanel (detailsPanel, dirpyrequalizer); - addPanel (detailsPanel, dehaze); - addPanel (advancedPanel, wavelet); - addPanel (transformPanel, crop); - addPanel (transformPanel, resize); + addUserPanel (colorPanel, whitebalance); + addUserPanel (exposurePanel, toneCurve); + addUserPanel (colorPanel, vibrance); + addUserPanel (colorPanel, chmixer); + addUserPanel (colorPanel, blackwhite); + addUserPanel (exposurePanel, shadowshighlights); + addUserPanel (detailsPanel, sharpening); + addUserPanel (detailsPanel, localContrast); + addUserPanel (detailsPanel, sharpenEdge); + addUserPanel (detailsPanel, sharpenMicro); + addUserPanel (colorPanel, hsvequalizer); + addUserPanel (colorPanel, filmSimulation); + addUserPanel (colorPanel, softlight); + addUserPanel (colorPanel, rgbcurves); + addUserPanel (colorPanel, colortoning); + addUserPanel (exposurePanel, epd); + addUserPanel (exposurePanel, fattal); + addUserPanel (advancedPanel, retinex); + addUserPanel (exposurePanel, pcvignette); + addUserPanel (exposurePanel, gradient); + addUserPanel (exposurePanel, lcurve); + addUserPanel (advancedPanel, colorappearance); + addUserPanel (detailsPanel, impulsedenoise); + addUserPanel (detailsPanel, dirpyrdenoise); + addUserPanel (detailsPanel, defringe); + addUserPanel (detailsPanel, dirpyrequalizer); + addUserPanel (detailsPanel, dehaze); + addUserPanel (advancedPanel, wavelet); + addUserPanel (transformPanel, crop); + addUserPanel (transformPanel, resize); addPanel (resize->getPackBox(), prsharpening, 2); - addPanel (transformPanel, lensgeom); + addUserPanel (transformPanel, lensgeom); addPanel (lensgeom->getPackBox(), rotate, 2); addPanel (lensgeom->getPackBox(), perspective, 2); addPanel (lensgeom->getPackBox(), lensProf, 2); addPanel (lensgeom->getPackBox(), distortion, 2); addPanel (lensgeom->getPackBox(), cacorrection, 2); addPanel (lensgeom->getPackBox(), vignetting, 2); - addPanel (colorPanel, icm); - addPanel (rawPanel, sensorbayer); + addUserPanel (colorPanel, icm); + addUserPanel (rawPanel, sensorbayer); addPanel (sensorbayer->getPackBox(), bayerprocess, 2); addPanel (sensorbayer->getPackBox(), bayerrawexposure, 2); addPanel (sensorbayer->getPackBox(), bayerpreprocess, 2); addPanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addPanel (rawPanel, sensorxtrans); + addUserPanel (rawPanel, sensorxtrans); addPanel (sensorxtrans->getPackBox(), xtransprocess, 2); addPanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addPanel (rawPanel, rawexposure); - addPanel (rawPanel, preprocess); - addPanel (rawPanel, darkframe); - addPanel (rawPanel, flatfield); + addUserPanel (rawPanel, rawexposure); + addUserPanel (rawPanel, preprocess); + addUserPanel (rawPanel, darkframe); + addUserPanel (rawPanel, flatfield); + for(auto it = userTools.begin(); it != userTools.end(); ++it) { + addPanel(userPanel, *it); + } toolPanels.push_back (coarse); toolPanels.push_back(metadata); toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - + userPanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); @@ -169,7 +174,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan updateVScrollbars (options.hideTPVScrollbar); // load panel endings - for (int i = 0; i < 6; i++) { + for (int i = 0; i < 7; i++) { vbPanelEnd[i] = Gtk::manage (new Gtk::VBox ()); imgPanelEnd[i] = Gtk::manage (new RTImage ("ornament1.png")); imgPanelEnd[i]->show (); @@ -177,30 +182,35 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } + userPanelSW->add (*userPanel); + userPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + userPanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - exposurePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + exposurePanel->pack_start (*vbPanelEnd[1], Gtk::PACK_SHRINK, 4); detailsPanelSW->add (*detailsPanel); detailsPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - detailsPanel->pack_start (*vbPanelEnd[1], Gtk::PACK_SHRINK, 4); + detailsPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); colorPanelSW->add (*colorPanel); colorPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - colorPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); + colorPanel->pack_start (*vbPanelEnd[3], Gtk::PACK_SHRINK, 4); advancedPanelSW->add (*advancedPanel); advancedPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - advancedPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + advancedPanel->pack_start (*vbPanelEnd[6], Gtk::PACK_SHRINK, 0); transformPanelSW->add (*transformPanel); transformPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - transformPanel->pack_start (*vbPanelEnd[3], Gtk::PACK_SHRINK, 4); + transformPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 4); rawPanelSW->add (*rawPanel); rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - rawPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 0); + rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + toiU = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_CUSTOM"), M ("MAIN_TAB_CUSTOM_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -209,6 +219,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); + toolPanelNotebook->append_page (*userPanelSW, *toiU); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -251,6 +262,18 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } +void ToolPanelCoordinator::addUserPanel (Gtk::Box* where, FoldableToolPanel* panel) +{ + auto name = panel->getToolName(); + auto it = std::find(options.userTools.begin(), options.userTools.end(), name); + if (it != options.userTools.end()) { + int index = std::distance(options.userTools.begin(), it); + userTools[index] = panel; + } else { + addPanel(where, panel); + } +} + ToolPanelCoordinator::~ToolPanelCoordinator () { idle_register.destroy(); @@ -893,6 +916,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; + userPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 437e4055a..76a3cdd1c 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -158,6 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; + std::vector userTools; + ToolVBox* userPanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -166,6 +168,7 @@ protected: ToolVBox* advancedPanel; ToolBar* toolBar; + TextOrIcon* toiU; TextOrIcon* toiE; TextOrIcon* toiD; TextOrIcon* toiC; @@ -174,9 +177,10 @@ protected: TextOrIcon* toiM; TextOrIcon* toiW; - Gtk::Image* imgPanelEnd[6]; - Gtk::VBox* vbPanelEnd[6]; + Gtk::Image* imgPanelEnd[7]; + Gtk::VBox* vbPanelEnd[7]; + Gtk::ScrolledWindow* userPanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -191,6 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); + void addUserPanel (Gtk::Box* where, FoldableToolPanel* panel); private: EditDataProvider *editDataProvider; From 0ae602bcf0a0663dd3c7e8b7c0c88041e31339b9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 16:00:57 +0100 Subject: [PATCH 218/348] custom tool panel. Changed naming to 'Favourites'. Added alt-h hotkey. Allow moving of subtools to Favourites --- rtdata/languages/default | 4 +- rtgui/options.cc | 10 +-- rtgui/options.h | 2 +- rtgui/toolpanelcoord.cc | 140 ++++++++++++++++++++------------------- rtgui/toolpanelcoord.h | 10 +-- 5 files changed, 85 insertions(+), 81 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 5e0a5e0cb..e38e7eb81 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -900,8 +900,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c -MAIN_TAB_CUSTOM;Custom -MAIN_TAB_CUSTOM_TOOLTIP;Shortcut: none +MAIN_TAB_FAVOURITES;Favourites +MAIN_TAB_FAVOURITES_TOOLTIP;Shortcut: Alt-u MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit diff --git a/rtgui/options.cc b/rtgui/options.cc index a388ccb3e..9681978ca 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,7 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); - userTools.clear(); + favourites.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -1070,8 +1070,8 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { - if (keyFile.has_key("GUI", "UserTools")) { - userTools = keyFile.get_string_list("GUI", "UserTools"); + if (keyFile.has_key("GUI", "Favourites")) { + favourites = keyFile.get_string_list("GUI", "Favourites"); } if (keyFile.has_key("GUI", "WindowWidth")) { @@ -1972,8 +1972,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); - Glib::ArrayHandle pusert = userTools; - keyFile.set_string_list("GUI", "UserTools", pusert); + Glib::ArrayHandle ahfavourites = favourites; + keyFile.set_string_list("GUI", "Favourites", ahfavourites); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index a97c1f165..ea29e047e 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -375,7 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; - std::vector userTools; + std::vector favourites; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 3ea638569..84244d7c8 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -31,7 +31,7 @@ using namespace rtengine::procparams; ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) { - userPanel = Gtk::manage (new ToolVBox ()); + favouritePanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -101,62 +101,62 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO - userTools.resize(options.userTools.size()); + favourites.resize(options.favourites.size()); - addUserPanel (colorPanel, whitebalance); - addUserPanel (exposurePanel, toneCurve); - addUserPanel (colorPanel, vibrance); - addUserPanel (colorPanel, chmixer); - addUserPanel (colorPanel, blackwhite); - addUserPanel (exposurePanel, shadowshighlights); - addUserPanel (detailsPanel, sharpening); - addUserPanel (detailsPanel, localContrast); - addUserPanel (detailsPanel, sharpenEdge); - addUserPanel (detailsPanel, sharpenMicro); - addUserPanel (colorPanel, hsvequalizer); - addUserPanel (colorPanel, filmSimulation); - addUserPanel (colorPanel, softlight); - addUserPanel (colorPanel, rgbcurves); - addUserPanel (colorPanel, colortoning); - addUserPanel (exposurePanel, epd); - addUserPanel (exposurePanel, fattal); - addUserPanel (advancedPanel, retinex); - addUserPanel (exposurePanel, pcvignette); - addUserPanel (exposurePanel, gradient); - addUserPanel (exposurePanel, lcurve); - addUserPanel (advancedPanel, colorappearance); - addUserPanel (detailsPanel, impulsedenoise); - addUserPanel (detailsPanel, dirpyrdenoise); - addUserPanel (detailsPanel, defringe); - addUserPanel (detailsPanel, dirpyrequalizer); - addUserPanel (detailsPanel, dehaze); - addUserPanel (advancedPanel, wavelet); - addUserPanel (transformPanel, crop); - addUserPanel (transformPanel, resize); - addPanel (resize->getPackBox(), prsharpening, 2); - addUserPanel (transformPanel, lensgeom); - addPanel (lensgeom->getPackBox(), rotate, 2); - addPanel (lensgeom->getPackBox(), perspective, 2); - addPanel (lensgeom->getPackBox(), lensProf, 2); - addPanel (lensgeom->getPackBox(), distortion, 2); - addPanel (lensgeom->getPackBox(), cacorrection, 2); - addPanel (lensgeom->getPackBox(), vignetting, 2); - addUserPanel (colorPanel, icm); - addUserPanel (rawPanel, sensorbayer); - addPanel (sensorbayer->getPackBox(), bayerprocess, 2); - addPanel (sensorbayer->getPackBox(), bayerrawexposure, 2); - addPanel (sensorbayer->getPackBox(), bayerpreprocess, 2); - addPanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addUserPanel (rawPanel, sensorxtrans); - addPanel (sensorxtrans->getPackBox(), xtransprocess, 2); - addPanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addUserPanel (rawPanel, rawexposure); - addUserPanel (rawPanel, preprocess); - addUserPanel (rawPanel, darkframe); - addUserPanel (rawPanel, flatfield); + addfavouritePanel (colorPanel, whitebalance); + addfavouritePanel (exposurePanel, toneCurve); + addfavouritePanel (colorPanel, vibrance); + addfavouritePanel (colorPanel, chmixer); + addfavouritePanel (colorPanel, blackwhite); + addfavouritePanel (exposurePanel, shadowshighlights); + addfavouritePanel (detailsPanel, sharpening); + addfavouritePanel (detailsPanel, localContrast); + addfavouritePanel (detailsPanel, sharpenEdge); + addfavouritePanel (detailsPanel, sharpenMicro); + addfavouritePanel (colorPanel, hsvequalizer); + addfavouritePanel (colorPanel, filmSimulation); + addfavouritePanel (colorPanel, softlight); + addfavouritePanel (colorPanel, rgbcurves); + addfavouritePanel (colorPanel, colortoning); + addfavouritePanel (exposurePanel, epd); + addfavouritePanel (exposurePanel, fattal); + addfavouritePanel (advancedPanel, retinex); + addfavouritePanel (exposurePanel, pcvignette); + addfavouritePanel (exposurePanel, gradient); + addfavouritePanel (exposurePanel, lcurve); + addfavouritePanel (advancedPanel, colorappearance); + addfavouritePanel (detailsPanel, impulsedenoise); + addfavouritePanel (detailsPanel, dirpyrdenoise); + addfavouritePanel (detailsPanel, defringe); + addfavouritePanel (detailsPanel, dirpyrequalizer); + addfavouritePanel (detailsPanel, dehaze); + addfavouritePanel (advancedPanel, wavelet); + addfavouritePanel (transformPanel, crop); + addfavouritePanel (transformPanel, resize); + addfavouritePanel (resize->getPackBox(), prsharpening, 2); + addfavouritePanel (transformPanel, lensgeom); + addfavouritePanel (lensgeom->getPackBox(), rotate, 2); + addfavouritePanel (lensgeom->getPackBox(), perspective, 2); + addfavouritePanel (lensgeom->getPackBox(), lensProf, 2); + addfavouritePanel (lensgeom->getPackBox(), distortion, 2); + addfavouritePanel (lensgeom->getPackBox(), cacorrection, 2); + addfavouritePanel (lensgeom->getPackBox(), vignetting, 2); + addfavouritePanel (colorPanel, icm); + addfavouritePanel (rawPanel, sensorbayer); + addfavouritePanel (sensorbayer->getPackBox(), bayerprocess, 2); + addfavouritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); + addfavouritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); + addfavouritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); + addfavouritePanel (rawPanel, sensorxtrans); + addfavouritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); + addfavouritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); + addfavouritePanel (rawPanel, rawexposure); + addfavouritePanel (rawPanel, preprocess); + addfavouritePanel (rawPanel, darkframe); + addfavouritePanel (rawPanel, flatfield); - for(auto it = userTools.begin(); it != userTools.end(); ++it) { - addPanel(userPanel, *it); + for(auto it = favourites.begin(); it != favourites.end(); ++it) { + addPanel(favouritePanel, *it); } toolPanels.push_back (coarse); toolPanels.push_back(metadata); @@ -164,7 +164,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - userPanelSW = Gtk::manage (new MyScrolledWindow ()); + favouritePanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); @@ -182,9 +182,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } - userPanelSW->add (*userPanel); - userPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - userPanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + favouritePanelSW->add (*favouritePanel); + favouritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favouritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -210,7 +210,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); - toiU = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_CUSTOM"), M ("MAIN_TAB_CUSTOM_TOOLTIP"))); + toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVOURITES"), M ("MAIN_TAB_FAVOURITES_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -219,7 +219,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); - toolPanelNotebook->append_page (*userPanelSW, *toiU); + toolPanelNotebook->append_page (*favouritePanelSW, *toiF); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -262,15 +262,15 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } -void ToolPanelCoordinator::addUserPanel (Gtk::Box* where, FoldableToolPanel* panel) +void ToolPanelCoordinator::addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) { auto name = panel->getToolName(); - auto it = std::find(options.userTools.begin(), options.userTools.end(), name); - if (it != options.userTools.end()) { - int index = std::distance(options.userTools.begin(), it); - userTools[index] = panel; + auto it = std::find(options.favourites.begin(), options.favourites.end(), name); + if (it != options.favourites.end()) { + int index = std::distance(options.favourites.begin(), it); + favourites[index] = panel; } else { - addPanel(where, panel); + addPanel(where, panel, level); } } @@ -879,6 +879,10 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { + case GDK_KEY_u: + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favouritePanelSW)); + return true; + case GDK_KEY_e: toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*exposurePanelSW)); return true; @@ -916,7 +920,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; - userPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + favouritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 76a3cdd1c..fa007b6ab 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -158,8 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; - std::vector userTools; - ToolVBox* userPanel; + std::vector favourites; + ToolVBox* favouritePanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -168,7 +168,7 @@ protected: ToolVBox* advancedPanel; ToolBar* toolBar; - TextOrIcon* toiU; + TextOrIcon* toiF; TextOrIcon* toiE; TextOrIcon* toiD; TextOrIcon* toiC; @@ -180,7 +180,7 @@ protected: Gtk::Image* imgPanelEnd[7]; Gtk::VBox* vbPanelEnd[7]; - Gtk::ScrolledWindow* userPanelSW; + Gtk::ScrolledWindow* favouritePanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -195,7 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); - void addUserPanel (Gtk::Box* where, FoldableToolPanel* panel); + void addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); private: EditDataProvider *editDataProvider; From 43b77679d4afcb4d57f15578c4771496e0e4d29b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 16:48:05 +0100 Subject: [PATCH 219/348] Favourites => Favorites, #5016 --- rtdata/languages/default | 4 +- rtgui/options.cc | 10 +-- rtgui/options.h | 2 +- rtgui/toolpanelcoord.cc | 138 ++++++++++++++++++++------------------- rtgui/toolpanelcoord.h | 8 +-- 5 files changed, 82 insertions(+), 80 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index e38e7eb81..869e96178 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -900,8 +900,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c -MAIN_TAB_FAVOURITES;Favourites -MAIN_TAB_FAVOURITES_TOOLTIP;Shortcut: Alt-u +MAIN_TAB_FAVORITES;Favorites +MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: Alt-u MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit diff --git a/rtgui/options.cc b/rtgui/options.cc index 9681978ca..d1b7070de 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,7 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); - favourites.clear(); + favorites.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -1070,8 +1070,8 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { - if (keyFile.has_key("GUI", "Favourites")) { - favourites = keyFile.get_string_list("GUI", "Favourites"); + if (keyFile.has_key("GUI", "Favorites")) { + favorites = keyFile.get_string_list("GUI", "Favorites"); } if (keyFile.has_key("GUI", "WindowWidth")) { @@ -1972,8 +1972,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); - Glib::ArrayHandle ahfavourites = favourites; - keyFile.set_string_list("GUI", "Favourites", ahfavourites); + Glib::ArrayHandle ahfavorites = favorites; + keyFile.set_string_list("GUI", "Favorites", ahfavorites); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index ea29e047e..5001306ff 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -375,7 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; - std::vector favourites; + std::vector favorites; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 84244d7c8..56c987986 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -31,7 +31,7 @@ using namespace rtengine::procparams; ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) { - favouritePanel = Gtk::manage (new ToolVBox ()); + favoritePanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -101,62 +101,64 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO - favourites.resize(options.favourites.size()); + favorites.resize(options.favorites.size(), nullptr); - addfavouritePanel (colorPanel, whitebalance); - addfavouritePanel (exposurePanel, toneCurve); - addfavouritePanel (colorPanel, vibrance); - addfavouritePanel (colorPanel, chmixer); - addfavouritePanel (colorPanel, blackwhite); - addfavouritePanel (exposurePanel, shadowshighlights); - addfavouritePanel (detailsPanel, sharpening); - addfavouritePanel (detailsPanel, localContrast); - addfavouritePanel (detailsPanel, sharpenEdge); - addfavouritePanel (detailsPanel, sharpenMicro); - addfavouritePanel (colorPanel, hsvequalizer); - addfavouritePanel (colorPanel, filmSimulation); - addfavouritePanel (colorPanel, softlight); - addfavouritePanel (colorPanel, rgbcurves); - addfavouritePanel (colorPanel, colortoning); - addfavouritePanel (exposurePanel, epd); - addfavouritePanel (exposurePanel, fattal); - addfavouritePanel (advancedPanel, retinex); - addfavouritePanel (exposurePanel, pcvignette); - addfavouritePanel (exposurePanel, gradient); - addfavouritePanel (exposurePanel, lcurve); - addfavouritePanel (advancedPanel, colorappearance); - addfavouritePanel (detailsPanel, impulsedenoise); - addfavouritePanel (detailsPanel, dirpyrdenoise); - addfavouritePanel (detailsPanel, defringe); - addfavouritePanel (detailsPanel, dirpyrequalizer); - addfavouritePanel (detailsPanel, dehaze); - addfavouritePanel (advancedPanel, wavelet); - addfavouritePanel (transformPanel, crop); - addfavouritePanel (transformPanel, resize); - addfavouritePanel (resize->getPackBox(), prsharpening, 2); - addfavouritePanel (transformPanel, lensgeom); - addfavouritePanel (lensgeom->getPackBox(), rotate, 2); - addfavouritePanel (lensgeom->getPackBox(), perspective, 2); - addfavouritePanel (lensgeom->getPackBox(), lensProf, 2); - addfavouritePanel (lensgeom->getPackBox(), distortion, 2); - addfavouritePanel (lensgeom->getPackBox(), cacorrection, 2); - addfavouritePanel (lensgeom->getPackBox(), vignetting, 2); - addfavouritePanel (colorPanel, icm); - addfavouritePanel (rawPanel, sensorbayer); - addfavouritePanel (sensorbayer->getPackBox(), bayerprocess, 2); - addfavouritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); - addfavouritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); - addfavouritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addfavouritePanel (rawPanel, sensorxtrans); - addfavouritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); - addfavouritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addfavouritePanel (rawPanel, rawexposure); - addfavouritePanel (rawPanel, preprocess); - addfavouritePanel (rawPanel, darkframe); - addfavouritePanel (rawPanel, flatfield); + addfavoritePanel (colorPanel, whitebalance); + addfavoritePanel (exposurePanel, toneCurve); + addfavoritePanel (colorPanel, vibrance); + addfavoritePanel (colorPanel, chmixer); + addfavoritePanel (colorPanel, blackwhite); + addfavoritePanel (exposurePanel, shadowshighlights); + addfavoritePanel (detailsPanel, sharpening); + addfavoritePanel (detailsPanel, localContrast); + addfavoritePanel (detailsPanel, sharpenEdge); + addfavoritePanel (detailsPanel, sharpenMicro); + addfavoritePanel (colorPanel, hsvequalizer); + addfavoritePanel (colorPanel, filmSimulation); + addfavoritePanel (colorPanel, softlight); + addfavoritePanel (colorPanel, rgbcurves); + addfavoritePanel (colorPanel, colortoning); + addfavoritePanel (exposurePanel, epd); + addfavoritePanel (exposurePanel, fattal); + addfavoritePanel (advancedPanel, retinex); + addfavoritePanel (exposurePanel, pcvignette); + addfavoritePanel (exposurePanel, gradient); + addfavoritePanel (exposurePanel, lcurve); + addfavoritePanel (advancedPanel, colorappearance); + addfavoritePanel (detailsPanel, impulsedenoise); + addfavoritePanel (detailsPanel, dirpyrdenoise); + addfavoritePanel (detailsPanel, defringe); + addfavoritePanel (detailsPanel, dirpyrequalizer); + addfavoritePanel (detailsPanel, dehaze); + addfavoritePanel (advancedPanel, wavelet); + addfavoritePanel (transformPanel, crop); + addfavoritePanel (transformPanel, resize); + addfavoritePanel (resize->getPackBox(), prsharpening, 2); + addfavoritePanel (transformPanel, lensgeom); + addfavoritePanel (lensgeom->getPackBox(), rotate, 2); + addfavoritePanel (lensgeom->getPackBox(), perspective, 2); + addfavoritePanel (lensgeom->getPackBox(), lensProf, 2); + addfavoritePanel (lensgeom->getPackBox(), distortion, 2); + addfavoritePanel (lensgeom->getPackBox(), cacorrection, 2); + addfavoritePanel (lensgeom->getPackBox(), vignetting, 2); + addfavoritePanel (colorPanel, icm); + addfavoritePanel (rawPanel, sensorbayer); + addfavoritePanel (sensorbayer->getPackBox(), bayerprocess, 2); + addfavoritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); + addfavoritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); + addfavoritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); + addfavoritePanel (rawPanel, sensorxtrans); + addfavoritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); + addfavoritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); + addfavoritePanel (rawPanel, rawexposure); + addfavoritePanel (rawPanel, preprocess); + addfavoritePanel (rawPanel, darkframe); + addfavoritePanel (rawPanel, flatfield); - for(auto it = favourites.begin(); it != favourites.end(); ++it) { - addPanel(favouritePanel, *it); + for(auto it = favorites.begin(); it != favorites.end(); ++it) { + if (*it) { + addPanel(favoritePanel, *it); + } } toolPanels.push_back (coarse); toolPanels.push_back(metadata); @@ -164,7 +166,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - favouritePanelSW = Gtk::manage (new MyScrolledWindow ()); + favoritePanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); @@ -182,9 +184,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } - favouritePanelSW->add (*favouritePanel); - favouritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - favouritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + favoritePanelSW->add (*favoritePanel); + favoritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favoritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -210,7 +212,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); - toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVOURITES"), M ("MAIN_TAB_FAVOURITES_TOOLTIP"))); + toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVORITES"), M ("MAIN_TAB_FAVORITES_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -219,7 +221,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); - toolPanelNotebook->append_page (*favouritePanelSW, *toiF); + toolPanelNotebook->append_page (*favoritePanelSW, *toiF); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -262,13 +264,13 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } -void ToolPanelCoordinator::addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) +void ToolPanelCoordinator::addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) { auto name = panel->getToolName(); - auto it = std::find(options.favourites.begin(), options.favourites.end(), name); - if (it != options.favourites.end()) { - int index = std::distance(options.favourites.begin(), it); - favourites[index] = panel; + auto it = std::find(options.favorites.begin(), options.favorites.end(), name); + if (it != options.favorites.end()) { + int index = std::distance(options.favorites.begin(), it); + favorites[index] = panel; } else { addPanel(where, panel, level); } @@ -880,7 +882,7 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { case GDK_KEY_u: - toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favouritePanelSW)); + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); return true; case GDK_KEY_e: @@ -920,7 +922,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; - favouritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index fa007b6ab..1ac74871a 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -158,8 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; - std::vector favourites; - ToolVBox* favouritePanel; + std::vector favorites; + ToolVBox* favoritePanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -180,7 +180,7 @@ protected: Gtk::Image* imgPanelEnd[7]; Gtk::VBox* vbPanelEnd[7]; - Gtk::ScrolledWindow* favouritePanelSW; + Gtk::ScrolledWindow* favoritePanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -195,7 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); - void addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); + void addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); private: EditDataProvider *editDataProvider; From c8300b137cb8aba10ec5b418bfe0110ff8ab3a3e Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Fri, 23 Nov 2018 19:10:04 +0100 Subject: [PATCH 220/348] Add Crop reset button - 2nd attempt (#5015) Add dedicated reset button for Crop, rearrange some GUI, disable crop buttons in batch mode --- rtdata/languages/Catala | 1 - rtdata/languages/Chinese (Simplified) | 1 - rtdata/languages/Chinese (Traditional) | 1 - rtdata/languages/Czech | 1 - rtdata/languages/Dansk | 1 - rtdata/languages/English (UK) | 1 - rtdata/languages/English (US) | 1 - rtdata/languages/Espanol | 1 - rtdata/languages/Euskara | 1 - rtdata/languages/Francais | 1 - rtdata/languages/Greek | 1 - rtdata/languages/Hebrew | 1 - rtdata/languages/Italiano | 1 - rtdata/languages/Japanese | 1 - rtdata/languages/Latvian | 1 - rtdata/languages/Magyar | 1 - rtdata/languages/Nederlands | 1 - rtdata/languages/Norsk BM | 1 - rtdata/languages/Polish | 1 - rtdata/languages/Polish (Latin Characters) | 1 - rtdata/languages/Portugues (Brasil) | 1 - rtdata/languages/Russian | 1 - rtdata/languages/Serbian (Cyrilic Characters) | 1 - rtdata/languages/Serbian (Latin Characters) | 1 - rtdata/languages/Slovak | 1 - rtdata/languages/Suomi | 1 - rtdata/languages/Swedish | 1 - rtdata/languages/Turkish | 1 - rtdata/languages/default | 7 +- rtgui/batchtoolpanelcoord.cc | 6 +- rtgui/crop.cc | 166 ++++++++++++------ rtgui/crop.h | 8 +- rtgui/thumbnail.cc | 5 + rtgui/thumbnail.h | 1 + 34 files changed, 134 insertions(+), 87 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index c9b6b4408..257807ca1 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -658,7 +658,6 @@ TP_CROP_GUIDETYPE;Tipus de guia: TP_CROP_H;Alt TP_CROP_LABEL;Cropa TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Selecc. cropar TP_CROP_W;Ample TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index d46b9f6f7..c9790898a 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -761,7 +761,6 @@ TP_CROP_GUIDETYPE;辅助方式: TP_CROP_H;高 TP_CROP_LABEL;剪裁 TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;选择预设 TP_CROP_W;宽 TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 84f99ba81..91574c9d0 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -339,7 +339,6 @@ TP_CROP_GTRULETHIRDS;1/3法則 TP_CROP_GUIDETYPE;輔助方式: TP_CROP_H;高 TP_CROP_LABEL;剪裁 -TP_CROP_SELECTCROP; 選擇預設 TP_CROP_W;寬 TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 16c68ec5d..5ccce935a 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -1425,7 +1425,6 @@ TP_CROP_GUIDETYPE;Druh vodítek: TP_CROP_H;Výška TP_CROP_LABEL;Ořez TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Vyznačit výřez TP_CROP_W;Šířka TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 1e83b4951..4a2e3c6d4 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Reglen om tredjedele TP_CROP_GUIDETYPE;Hjælpelinjer: TP_CROP_H;H TP_CROP_LABEL;Beskær -TP_CROP_SELECTCROP; Vælg beskæring TP_CROP_W;B TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index a266349cd..07046d0e5 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1553,7 +1553,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_CROP_H;Height !TP_CROP_LABEL;Crop !TP_CROP_PPI;PPI= -!TP_CROP_SELECTCROP;Select Crop !TP_CROP_W;Width !TP_CROP_X;X !TP_CROP_Y;Y diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 49553272b..e1d55b2a1 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1515,7 +1515,6 @@ !TP_CROP_H;Height !TP_CROP_LABEL;Crop !TP_CROP_PPI;PPI= -!TP_CROP_SELECTCROP;Select Crop !TP_CROP_W;Width !TP_CROP_X;X !TP_CROP_Y;Y diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 1a8506d76..da37e03fd 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1075,7 +1075,6 @@ TP_CROP_GUIDETYPE;Clase de guía: TP_CROP_H;Al TP_CROP_LABEL;Recortar TP_CROP_PPI;Ptos/Pulgada= -TP_CROP_SELECTCROP;Seleccionar recorte TP_CROP_W;Ancho TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 1a3f3f036..f1cc3290a 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Herenen erregela TP_CROP_GUIDETYPE;Gida mota: TP_CROP_H;H TP_CROP_LABEL;Moztu -TP_CROP_SELECTCROP; Mozketa hautatu TP_CROP_W;W TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 074efb84d..12c122a2d 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1509,7 +1509,6 @@ TP_CROP_GUIDETYPE;Type de guide: TP_CROP_H;H TP_CROP_LABEL;Recadrage TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Sélection du recadrage TP_CROP_W;L TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index eff50dc3a..bf03647ca 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Κανόνας τρίτων TP_CROP_GUIDETYPE;Είδος βοηθών: TP_CROP_H;H TP_CROP_LABEL;Αποκοπή -TP_CROP_SELECTCROP; Επιλογή αποκοπής TP_CROP_W;W TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index f1bbde6f9..e0e5d8a6c 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;כלל השליש TP_CROP_GUIDETYPE;סוג מדריך TP_CROP_H;גובה TP_CROP_LABEL;גזור -TP_CROP_SELECTCROP;בחור גזירה TP_CROP_W;רוחב TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index d07e50f2b..6932a9b8c 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -944,7 +944,6 @@ TP_CROP_GUIDETYPE;Tipo di guida: TP_CROP_H;A TP_CROP_LABEL;Ritaglio TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Seleziona Area TP_CROP_W;L TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index cbab4ca3f..11289fbce 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1537,7 +1537,6 @@ TP_CROP_GUIDETYPE;ガイドタイプ: TP_CROP_H;高さ TP_CROP_LABEL;切り抜き TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; 選択範囲切り抜き TP_CROP_W;W 幅 TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 0cfcb9e04..74c7d4435 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Trešdaļas TP_CROP_GUIDETYPE;Vadlīnijas: TP_CROP_H;A TP_CROP_LABEL;Kadrējums -TP_CROP_SELECTCROP; Norādīt kadrējumu TP_CROP_W;P TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index af10a8272..ac7dd6e81 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -626,7 +626,6 @@ TP_CROP_GUIDETYPE;Segédvonal típusa: TP_CROP_H;M TP_CROP_LABEL;Kivágás TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Kijelölés egérrel TP_CROP_W;Sz TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index feb3cef52..be33cc433 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -1319,7 +1319,6 @@ TP_CROP_GUIDETYPE;Hulplijnen: TP_CROP_H;Hoogte TP_CROP_LABEL;Bijsnijden TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Selecteer gebied TP_CROP_W;Breedte TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 06a675819..d7e817dbc 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Tredjedelsreglen TP_CROP_GUIDETYPE;Guidetype: TP_CROP_H;H TP_CROP_LABEL;Beskjæring -TP_CROP_SELECTCROP;Velg beskjæringsområde TP_CROP_W;B TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 763905496..71295015e 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1030,7 +1030,6 @@ TP_CROP_GUIDETYPE;Typ pomocy: TP_CROP_H;Wysokość TP_CROP_LABEL;Kadrowanie TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Wybierz kadr TP_CROP_W;Szerokość TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index e1d110970..6abf773b6 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1030,7 +1030,6 @@ TP_CROP_GUIDETYPE;Typ pomocy: TP_CROP_H;Wysokosc TP_CROP_LABEL;Kadrowanie TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Wybierz kadr TP_CROP_W;Szerokosc TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 95923c6f0..e49129afd 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1461,7 +1461,6 @@ TP_CROP_GUIDETYPE;Tipo de guia: TP_CROP_H;Altura TP_CROP_LABEL;Cortar TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Selecione para Cortar TP_CROP_W;Largura TP_CROP_X;X TP_CROP_Y;Y diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 36f7f64a6..acf163298 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1004,7 +1004,6 @@ TP_CROP_GUIDETYPE;Тип направляющей: TP_CROP_H;Высота TP_CROP_LABEL;Кадрирование TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Включить режим обрезки TP_CROP_W;Ширина TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 1d5c6b3f9..6da76619f 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -909,7 +909,6 @@ TP_CROP_GUIDETYPE;Вођицe: TP_CROP_H;В TP_CROP_LABEL;Исецање TP_CROP_PPI;ППИ= -TP_CROP_SELECTCROP; Изабери област TP_CROP_W;Ш TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 97399f629..ea663dab4 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -909,7 +909,6 @@ TP_CROP_GUIDETYPE;Vođice: TP_CROP_H;V TP_CROP_LABEL;Isecanje TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Izaberi oblast TP_CROP_W;Š TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index ac6dc7928..98e330bbb 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -384,7 +384,6 @@ TP_CROP_GTRULETHIRDS;Pravidlo tretín TP_CROP_GUIDETYPE;Type vodidiel: TP_CROP_H;V TP_CROP_LABEL;Orezanie -TP_CROP_SELECTCROP; Vyberte Orez TP_CROP_W;Š TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 3d450a65c..6728207d2 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -331,7 +331,6 @@ TP_CROP_GTRULETHIRDS;Kolmijako TP_CROP_GUIDETYPE;Sommittelumalli: TP_CROP_H;Kork. TP_CROP_LABEL;Rajaus -TP_CROP_SELECTCROP;Valitse alue TP_CROP_W;Lev. TP_CROP_X; x TP_CROP_Y; y diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 5d93a9279..af522505a 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1206,7 +1206,6 @@ TP_CROP_GUIDETYPE;Guidetyp: TP_CROP_H;Höjd TP_CROP_LABEL;Beskär TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Välj beskärningsområde TP_CROP_W;Bredd TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 37338ba52..30b4e2b98 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -331,7 +331,6 @@ TP_CROP_GTRULETHIRDS;Üçler kuralı TP_CROP_GUIDETYPE;Kılavuz türü: TP_CROP_H;Y TP_CROP_LABEL;Kırp -TP_CROP_SELECTCROP; Kırpma alanı seç TP_CROP_W;G TP_CROP_X;x TP_CROP_Y;y diff --git a/rtdata/languages/default b/rtdata/languages/default index e734c4b44..759dcd1bc 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1528,10 +1528,11 @@ TP_CROP_GUIDETYPE;Guide type: TP_CROP_H;Height TP_CROP_LABEL;Crop TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Select Crop +TP_CROP_SELECTCROP;Select +TP_CROP_RESETCROP;Reset TP_CROP_W;Width -TP_CROP_X;X -TP_CROP_Y;Y +TP_CROP_X;Left +TP_CROP_Y;Top TP_DARKFRAME_AUTOSELECT;Auto-selection TP_DARKFRAME_LABEL;Dark-Frame TP_DEFRINGE_LABEL;Defringe diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 80796d0ae..55d9f3c79 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -107,7 +107,7 @@ void BatchToolPanelCoordinator::initSession () // compare all the ProcParams and describe which parameters has different (i.e. inconsistent) values in pparamsEdited pparamsEdited.initFrom (initialPP); - crop->setDimensions (100000, 100000); + //crop->setDimensions (100000, 100000); /* if (!selected.empty()) { pparams = selected[0]->getProcParams (); @@ -126,6 +126,10 @@ void BatchToolPanelCoordinator::initSession () pparams = selected[0]->getProcParams (); coarse->initBatchBehavior (); + + int w,h; + selected[0]->getOriginalSize(w,h); + crop->setDimensions (w, h); if (selected.size() == 1) { diff --git a/rtgui/crop.cc b/rtgui/crop.cc index d5b246107..2484b9060 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -99,89 +99,129 @@ Crop::Crop(): maxw = 3000; maxh = 2000; - Gtk::HBox* hb1 = Gtk::manage (new Gtk::HBox ()); + methodgrid = Gtk::manage(new Gtk::Grid()); + methodgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(methodgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - hb1->pack_start (*Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("TP_CROP_X") + ": "))); + Gtk::Label* xlab = Gtk::manage (new Gtk::Label (M("TP_CROP_X") + ":")); + setExpandAlignProperties(xlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + x = Gtk::manage (new MySpinButton ()); - x->set_size_request (60, -1); - hb1->pack_start (*x); + setExpandAlignProperties(x, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + x->set_width_chars(6); - hb1->pack_start (*Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("TP_CROP_Y") + ": "))); + Gtk::Label* ylab = Gtk::manage (new Gtk::Label (M("TP_CROP_Y") + ":")); + setExpandAlignProperties(ylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + y = Gtk::manage (new MySpinButton ()); - y->set_size_request (60, -1); - hb1->pack_start (*y); - - pack_start (*hb1, Gtk::PACK_SHRINK, 2); - - Gtk::HBox* hb2 = Gtk::manage (new Gtk::HBox ()); - - hb2->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_W") + ": "))); + setExpandAlignProperties(y, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + y->set_width_chars(6); + + Gtk::Label* wlab = Gtk::manage (new Gtk::Label (M("TP_CROP_W") + ":")); + setExpandAlignProperties(wlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + w = Gtk::manage (new MySpinButton ()); - w->set_size_request (60, -1); - hb2->pack_start (*w); + setExpandAlignProperties(w, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + w->set_width_chars(6); - hb2->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_H") + ": "))); + Gtk::Label* hlab = Gtk::manage (new Gtk::Label (M("TP_CROP_H") + ":")); + setExpandAlignProperties(hlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + h = Gtk::manage (new MySpinButton ()); - h->set_size_request (60, -1); - hb2->pack_start (*h); - - pack_start (*hb2, Gtk::PACK_SHRINK, 4); + setExpandAlignProperties(h, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + h->set_width_chars(6); selectCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_SELECTCROP"))); + setExpandAlignProperties(selectCrop, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); selectCrop->get_style_context()->add_class("independent"); selectCrop->set_image (*Gtk::manage (new RTImage ("crop-small.png"))); - pack_start (*selectCrop, Gtk::PACK_SHRINK, 2); + resetCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_RESETCROP"))); + setExpandAlignProperties(resetCrop, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + resetCrop->get_style_context()->add_class("independent"); + resetCrop->set_image (*Gtk::manage (new RTImage ("undo-small.png"))); + + methodgrid->attach (*xlab, 0, 0, 1, 1); + methodgrid->attach (*x, 1, 0, 1, 1); + methodgrid->attach (*ylab, 2, 0, 1, 1); + methodgrid->attach (*y, 3, 0, 1, 1); + methodgrid->attach (*wlab, 0, 1, 1, 1); + methodgrid->attach (*w, 1, 1, 1, 1); + methodgrid->attach (*hlab, 2, 1, 1, 1); + methodgrid->attach (*h, 3, 1, 1, 1); + methodgrid->attach (*selectCrop, 0, 2, 2, 1); + methodgrid->attach (*resetCrop, 2, 2, 2, 1); + pack_start (*methodgrid, Gtk::PACK_EXPAND_WIDGET, 0 ); + + Gtk::HSeparator* methodseparator = Gtk::manage (new Gtk::HSeparator()); + methodseparator->get_style_context()->add_class("grid-row-separator"); + pack_start (*methodseparator, Gtk::PACK_SHRINK, 0); - Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ()); + Gtk::Grid* settingsgrid = Gtk::manage(new Gtk::Grid()); + settingsgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(settingsgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); fixr = Gtk::manage (new Gtk::CheckButton (M("TP_CROP_FIXRATIO"))); + setExpandAlignProperties(fixr, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); fixr->set_active (1); - hb3->pack_start (*fixr, Gtk::PACK_SHRINK, 4); - ratio = Gtk::manage (new MyComboBoxText ()); - hb3->pack_start (*ratio, Gtk::PACK_EXPAND_WIDGET, 4); + setExpandAlignProperties(ratio, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); orientation = Gtk::manage (new MyComboBoxText ()); - hb3->pack_start (*orientation); + setExpandAlignProperties(orientation, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - pack_start (*hb3, Gtk::PACK_SHRINK, 4); - - Gtk::HBox* hb31 = Gtk::manage (new Gtk::HBox ()); - - hb31->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE"))), Gtk::PACK_SHRINK, 4); + Gtk::Label* guidelab = Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE"))); + setExpandAlignProperties(guidelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + guide = Gtk::manage (new MyComboBoxText ()); - hb31->pack_start (*guide); + setExpandAlignProperties(guide, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + settingsgrid->attach (*fixr, 0, 0, 1, 1); + settingsgrid->attach (*ratio, 1, 0, 1, 1); + settingsgrid->attach (*orientation, 2, 0, 1, 1); + settingsgrid->attach (*guidelab, 0, 1, 1, 1); + settingsgrid->attach (*guide, 1, 1, 2, 1); + pack_start (*settingsgrid, Gtk::PACK_SHRINK, 0 ); - pack_start (*hb31, Gtk::PACK_SHRINK, 4); - // ppibox START - ppibox = Gtk::manage (new Gtk::VBox()); - ppibox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 2); + // ppigrid START + ppigrid = Gtk::manage(new Gtk::Grid()); + ppigrid->get_style_context()->add_class("grid-spacing"); + ppigrid->set_column_homogeneous (true); + setExpandAlignProperties(ppigrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - Gtk::HBox* hb4 = Gtk::manage (new Gtk::HBox ()); - hb4->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_PPI")))); + Gtk::HSeparator* ppiseparator = Gtk::manage (new Gtk::HSeparator()); + ppiseparator->get_style_context()->add_class("grid-row-separator"); + + Gtk::Grid* ppisubgrid = Gtk::manage(new Gtk::Grid()); + ppisubgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(ppisubgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Label* ppilab = Gtk::manage (new Gtk::Label (M("TP_CROP_PPI"))); + setExpandAlignProperties(ppilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + ppi = Gtk::manage (new MySpinButton ()); - ppi->set_size_request (60, -1); - hb4->pack_start (*ppi); - - sizebox = Gtk::manage (new Gtk::VBox()); + setExpandAlignProperties(ppi, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + ppi->set_width_chars(6); + + ppisubgrid->attach (*ppilab, 0, 0, 1, 1); + ppisubgrid->attach (*ppi, 1, 0, 1, 1); sizecm = Gtk::manage (new Gtk::Label (M("GENERAL_NA") + " cm x " + M("GENERAL_NA") + " cm")); + setExpandAlignProperties(sizecm, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + sizein = Gtk::manage (new Gtk::Label (M("GENERAL_NA") + " in x " + M("GENERAL_NA") + " in")); - - sizebox->pack_start (*sizecm, Gtk::PACK_SHRINK, 4); - sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6); - sizebox->pack_start (*sizein, Gtk::PACK_SHRINK, 4); - sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6); - sizebox->pack_start (*hb4, Gtk::PACK_SHRINK, 2); - - ppibox->pack_start (*sizebox, Gtk::PACK_SHRINK, 1); - pack_start (*ppibox, Gtk::PACK_SHRINK, 0); + setExpandAlignProperties(sizein, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + + ppigrid->attach (*ppiseparator, 0, 0, 2, 1); + ppigrid->attach (*sizecm, 1, 1, 1, 1); + ppigrid->attach (*sizein, 1, 2, 1, 1); + ppigrid->attach (*ppisubgrid, 0, 1, 1, 2); + pack_start (*ppigrid, Gtk::PACK_SHRINK, 0 ); ppi->set_value (300); - // ppibox END + // ppigrid END // Populate the combobox for (const auto& crop_ratio : crop_ratios) { @@ -241,6 +281,7 @@ Crop::Crop(): oconn = orientation->signal_changed().connect( sigc::mem_fun(*this, &Crop::ratioChanged) ); gconn = guide->signal_changed().connect( sigc::mem_fun(*this, &Crop::notifyListener) ); selectCrop->signal_pressed().connect( sigc::mem_fun(*this, &Crop::selectPressed) ); + resetCrop->signal_pressed().connect( sigc::mem_fun(*this, &Crop::doresetCrop) ); ppi->signal_value_changed().connect( sigc::mem_fun(*this, &Crop::refreshSize) ); nx = ny = nw = nh = 0; @@ -482,6 +523,23 @@ void Crop::selectPressed () } } +void Crop::doresetCrop () +{ + xDirty = true; + yDirty = true; + wDirty = true; + hDirty = true; + + int X = 0; + int Y = 0; + int W = maxw; + int H = maxh; + cropResized (X, Y, W, H); + idle_register.add(notifyListenerUI, this); + + refreshSpins(); +} + void Crop::notifyListener () { @@ -1296,5 +1354,7 @@ void Crop::setBatchMode (bool batchMode) ratio->append (M("GENERAL_UNCHANGED")); orientation->append (M("GENERAL_UNCHANGED")); guide->append (M("GENERAL_UNCHANGED")); - removeIfThere (this, ppibox); + removeIfThere (this, ppigrid); + removeIfThere (methodgrid, selectCrop); + removeIfThere (methodgrid, resetCrop); } diff --git a/rtgui/crop.h b/rtgui/crop.h index 289954398..a16683d1b 100644 --- a/rtgui/crop.h +++ b/rtgui/crop.h @@ -51,6 +51,7 @@ public: void ratioFixedChanged (); // The toggle button void refreshSize (); void selectPressed (); + void doresetCrop (); void setDimensions (int mw, int mh); void enabledChanged () override; void positionChanged (); @@ -102,7 +103,9 @@ private: MyComboBoxText* ratio; MyComboBoxText* orientation; MyComboBoxText* guide; + Gtk::Button* selectCrop; + Gtk::Button* resetCrop; CropPanelListener* clistener; int opt; MySpinButton* x; @@ -112,8 +115,9 @@ private: MySpinButton* ppi; Gtk::Label* sizecm; Gtk::Label* sizein; - Gtk::VBox* ppibox; - Gtk::VBox* sizebox; + Gtk::Grid* ppigrid; + Gtk::Grid* methodgrid; + int maxw, maxh; double nx, ny; int nw, nh; diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 4b5b21dcc..4d744edcb 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -618,6 +618,11 @@ void Thumbnail::getFinalSize (const rtengine::procparams::ProcParams& pparams, i } } +void Thumbnail::getOriginalSize (int& w, int& h) +{ + w = tw; + h = th; +} rtengine::IImage8* Thumbnail::processThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale) { diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index ae627c22f..28762e505 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -114,6 +114,7 @@ public: rtengine::IImage8* upgradeThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale); void getThumbnailSize (int &w, int &h, const rtengine::procparams::ProcParams *pparams = nullptr); void getFinalSize (const rtengine::procparams::ProcParams& pparams, int& w, int& h); + void getOriginalSize (int& w, int& h); const Glib::ustring& getExifString () const; const Glib::ustring& getDateTimeString () const; From f5d56ffd1717e7c8468942651741902153d9a1e5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 19:51:01 +0100 Subject: [PATCH 221/348] Shortcut 'p' for Sharpening contrast mask, closes #5018 --- rtdata/languages/default | 2 +- rtgui/editorpanel.cc | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 759dcd1bc..5f0976900 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -934,7 +934,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 1f46d60e7..f44e682f2 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -1640,6 +1640,10 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) iareapanel->imageArea->previewModePanel->toggleB(); return true; + case GDK_KEY_p: //preview mode Sharpening Contrast mask + iareapanel->imageArea->indClippedPanel->toggleSharpMask(); + return true; + case GDK_KEY_v: //preview mode Luminosity iareapanel->imageArea->previewModePanel->toggleL(); return true; From 883d967a030cafa75c3c1bf5f1736928117ac55b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 20:49:04 +0100 Subject: [PATCH 222/348] Exclude pr-sharpening from being moved separately to favorites panel --- rtgui/toolpanelcoord.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 56c987986..709acc75a 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -133,7 +133,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addfavoritePanel (advancedPanel, wavelet); addfavoritePanel (transformPanel, crop); addfavoritePanel (transformPanel, resize); - addfavoritePanel (resize->getPackBox(), prsharpening, 2); + addPanel (resize->getPackBox(), prsharpening, 2); addfavoritePanel (transformPanel, lensgeom); addfavoritePanel (lensgeom->getPackBox(), rotate, 2); addfavoritePanel (lensgeom->getPackBox(), perspective, 2); From 7adad4688d74c33283106812ffd42ff2b2e3848f Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 23 Nov 2018 22:11:09 +0100 Subject: [PATCH 223/348] Updated translations Updated or deleted MAIN_TOOLTIP_PREVIEWSHARPMASK from f5d56f #5018 and ran generateTranslationDiffs --- rtdata/languages/Catala | 24 +++++++++++++--- rtdata/languages/Chinese (Simplified) | 24 +++++++++++++--- rtdata/languages/Chinese (Traditional) | 24 +++++++++++++--- rtdata/languages/Czech | 24 +++++++++++++--- rtdata/languages/Dansk | 24 +++++++++++++--- rtdata/languages/Deutsch | 21 +++++++++++++- rtdata/languages/English (UK) | 28 +++++++++++++++---- rtdata/languages/English (US) | 28 +++++++++++++++---- rtdata/languages/Espanol | 24 +++++++++++++--- rtdata/languages/Euskara | 24 +++++++++++++--- rtdata/languages/Francais | 18 +++++++++++- rtdata/languages/Greek | 24 +++++++++++++--- rtdata/languages/Hebrew | 24 +++++++++++++--- rtdata/languages/Italiano | 24 +++++++++++++--- rtdata/languages/Japanese | 18 +++++++++++- rtdata/languages/Latvian | 24 +++++++++++++--- rtdata/languages/Magyar | 24 +++++++++++++--- rtdata/languages/Nederlands | 24 +++++++++++++--- rtdata/languages/Norsk BM | 24 +++++++++++++--- rtdata/languages/Polish | 24 +++++++++++++--- rtdata/languages/Polish (Latin Characters) | 24 +++++++++++++--- rtdata/languages/Portugues (Brasil) | 24 +++++++++++++--- rtdata/languages/Russian | 24 +++++++++++++--- rtdata/languages/Serbian (Cyrilic Characters) | 24 +++++++++++++--- rtdata/languages/Serbian (Latin Characters) | 24 +++++++++++++--- rtdata/languages/Slovak | 24 +++++++++++++--- rtdata/languages/Suomi | 24 +++++++++++++--- rtdata/languages/Swedish | 24 +++++++++++++--- rtdata/languages/Turkish | 24 +++++++++++++--- rtdata/languages/default | 16 +++++------ 30 files changed, 586 insertions(+), 119 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 257807ca1..bf1a12876 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1316,13 +1316,18 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1437,7 +1442,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1751,16 +1756,25 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1789,6 +1803,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index c9790898a..38c4a37fe 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1387,13 +1387,18 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1513,7 +1518,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1699,16 +1704,25 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1734,6 +1748,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORTONING_TWOBY;Special a* and b* !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_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEFRINGE_THRESHOLD;Threshold !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 91574c9d0..4c4e727c1 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -984,13 +984,18 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1133,7 +1138,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1554,16 +1559,25 @@ TP_WBALANCE_TEMPERATURE;色溫 !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1596,6 +1610,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 5ccce935a..51873b391 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2179,13 +2179,18 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -2252,7 +2257,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift @@ -2282,16 +2287,27 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 4a2e3c6d4..beb4f2711 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -979,13 +979,18 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1129,7 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1551,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1593,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 74015b509..736247c77 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1004,7 +1004,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Vorschau Fokusmaske\nTaste: Umschalt + f MAIN_TOOLTIP_PREVIEWG;Vorschau Grün-Kanal\nTaste: g MAIN_TOOLTIP_PREVIEWL;Vorschau Helligkeit\nTaste: v\n\n0.299·R + 0.587·G + 0.114·B MAIN_TOOLTIP_PREVIEWR;Vorschau Rot-Kanal\nTaste: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten.\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%. +MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten.\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%.\nTaste: p MAIN_TOOLTIP_QINFO;Bildinformationen ein-/ausblenden.\nTaste: i MAIN_TOOLTIP_SHOWHIDELP1;Linkes Bedienfeld ein-/ausblenden.\nTaste: l MAIN_TOOLTIP_SHOWHIDERP1;Rechtes Bedienfeld ein-/ausblenden.\nTaste: Alt + l @@ -2389,3 +2389,22 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 07046d0e5..648eca675 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -73,6 +73,7 @@ TP_COLORAPP_TCMODE_COLORF;Colourfulness TP_COLORTONING_COLOR;Colour TP_COLORTONING_LABEL;Colour Toning TP_COLORTONING_LABGRID;L*a*b* colour correction grid +TP_COLORTONING_LABREGIONS;Colour correction regions TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change colour (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* blending", "RGB sliders" and "RGB curves" use interpolated colour blending.\n"Colour balance (Shadows/Midtones/Highlights)" and "Saturation 2 colours" use direct colours.\n\nThe Black-and-White tool can be enabled when using any colour toning method, which allows for colour toning. TP_COLORTONING_SPLITCOCO;Colour Balance Shadows/Midtones/Highlights @@ -824,13 +825,18 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1013,7 +1019,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -1510,16 +1516,24 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORTONING_HUE;Hue !TP_COLORTONING_LAB;L*a*b* blending !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_METHOD;Method @@ -1553,9 +1567,11 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_CROP_H;Height !TP_CROP_LABEL;Crop !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_CROP_W;Width -!TP_CROP_X;X -!TP_CROP_Y;Y +!TP_CROP_X;Left +!TP_CROP_Y;Top !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index e1d55b2a1..ead6f7abb 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -734,13 +734,18 @@ !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -930,7 +935,7 @@ !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -1466,16 +1471,25 @@ !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1515,9 +1529,11 @@ !TP_CROP_H;Height !TP_CROP_LABEL;Crop !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_CROP_W;Width -!TP_CROP_X;X -!TP_CROP_Y;Y +!TP_CROP_X;Left +!TP_CROP_Y;Top !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index da37e03fd..dfd0bc84b 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1689,13 +1689,18 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1801,7 +1806,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1938,19 +1943,30 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !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_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index f1cc3290a..33cb478a3 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -980,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1130,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1552,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1594,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 12c122a2d..94f0f3fc9 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -932,7 +932,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Affichage du Masque du focus\nRaccourci: canal Vert\nRaccourci: g MAIN_TOOLTIP_PREVIEWL;Affichage de la Luminosité\nRaccourci: v\n\n0.299*R + 0.587*V + 0.114*B MAIN_TOOLTIP_PREVIEWR;Affichage du canal Rouge\nRaccourci: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Prévisualiser le masque de contraste de netteté.\nRaccourci: Aucun\n\nNe fonctionne que si l'outil Netteté est activé et pour un zomm >= 100%. +MAIN_TOOLTIP_PREVIEWSHARPMASK;Prévisualiser le masque de contraste de netteté.\nRaccourci: p\n\nNe fonctionne que si l'outil Netteté est activé et pour un zomm >= 100%. MAIN_TOOLTIP_QINFO;Informations rapide sur l'image\nRaccourci: i MAIN_TOOLTIP_SHOWHIDELP1;Montrer/Cacher le panneau gauche\nRaccourci: l MAIN_TOOLTIP_SHOWHIDERP1;Afficher/Cacher le panneau droit\nRaccourci: Alt-l @@ -2298,6 +2298,11 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !PREFERENCES_APPEARANCE;Appearance !PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font !PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color @@ -2308,6 +2313,17 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically !TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file !TP_LENSPROFILE_CORRECTION_MANUAL;Manually diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index bf03647ca..d930c3948 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -979,13 +979,18 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1129,7 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1551,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1593,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index e0e5d8a6c..64b29759a 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -980,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1130,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1552,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1594,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 6932a9b8c..6b3e6ef4d 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1564,13 +1564,18 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1677,7 +1682,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1821,16 +1826,25 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1859,6 +1873,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 11289fbce..568d7c842 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -962,7 +962,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;フォーカス・マスク表示\nショ MAIN_TOOLTIP_PREVIEWG;グリーン チャンネル表示\nショートカット: g MAIN_TOOLTIP_PREVIEWL;輝度表示\nショートカット: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;レッド チャンネル表示\nショートカット: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: なし\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ +MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: p\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: i MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: l MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: Alt-l @@ -2301,6 +2301,11 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !PREFERENCES_APPEARANCE;Appearance !PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font !PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color @@ -2311,6 +2316,17 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically !TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file !TP_LENSPROFILE_CORRECTION_MANUAL;Manually diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 74c7d4435..45d06fdd8 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -980,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1130,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1552,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1594,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index ac7dd6e81..9a459d5be 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1249,13 +1249,18 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1373,7 +1378,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 !MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1704,16 +1709,25 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1743,6 +1757,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index be33cc433..e9b05ab7f 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2094,13 +2094,18 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -2180,7 +2185,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. !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\n"%1" will be used instead. @@ -2251,16 +2256,27 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !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_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index d7e817dbc..3db05ead0 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -979,13 +979,18 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1129,7 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1551,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1593,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 71295015e..1026e9bd1 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1646,13 +1646,18 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1759,7 +1764,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1886,19 +1891,30 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !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_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 6abf773b6..7f3271885 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1646,13 +1646,18 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1759,7 +1764,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. @@ -1886,19 +1891,30 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !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_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index e49129afd..b8d85ed59 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -905,7 +905,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Pré-visualize a Máscara de Foco.\nAtalho: MAIN_TOOLTIP_PREVIEWG;Pré-visualize o Canal verde.\nAtalho: g MAIN_TOOLTIP_PREVIEWL;Pré-visualize a Luminosidade.\nAtalho: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;Pré-visualize o Canal vermelho.\nAtalho: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Pré-visualize a Máscara de Contraste de Nitidez.\nAtalho: Nenhum\n\nSó funciona quando a nitidez e o zoom estão ativados >= 100%. +MAIN_TOOLTIP_PREVIEWSHARPMASK;Pré-visualize a Máscara de Contraste de Nitidez.\nAtalho: p\n\nSó funciona quando a nitidez e o zoom estão ativados >= 100%. MAIN_TOOLTIP_QINFO;Informação rápida na imagem.\nAtalho: i MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/Ocultar o painel esquerdo.\nShortcut: l MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/Ocultar o painel direito.\nAtalho: Alt-l @@ -2228,13 +2228,18 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -2266,16 +2271,27 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORTONING_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index acf163298..c930b43d8 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1668,13 +1668,18 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries @@ -1763,7 +1768,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !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 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !PARTIALPASTE_COLORTONING;Color toning !PARTIALPASTE_DEHAZE;Haze removal @@ -1915,16 +1920,25 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1950,6 +1964,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_COLORTONING_TWOBY;Special a* and b* !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_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! !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. diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 6da76619f..fe64675c8 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1540,13 +1540,18 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1652,7 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1813,16 +1818,25 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1851,6 +1865,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index ea663dab4..9cffebc2f 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1540,13 +1540,18 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1652,7 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1813,16 +1818,25 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1851,6 +1865,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 98e330bbb..09c4d83db 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1041,13 +1041,18 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1185,7 +1190,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1591,16 +1596,25 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1633,6 +1647,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 6728207d2..9e05dc05b 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -981,13 +981,18 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1131,7 +1136,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1552,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1594,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index af522505a..a063f0516 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1899,13 +1899,18 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -2010,7 +2015,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !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\n"%1" will be used instead. !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\n"%1" will be used instead. @@ -2101,18 +2106,29 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 30b4e2b98..36e5033c4 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -980,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask !HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power !HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth !HISTORY_MSG_DEHAZE_ENABLED;Haze Removal !HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1130,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Isı !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g !MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B !MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1551,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Isı !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_LABREGIONS;L*a*b* correction regions +!TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red !TP_COLORTONING_LABREGION_CHROMATICITYMASK;C !TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness !TP_COLORTONING_LABREGION_LIGHTNESSMASK;L !TP_COLORTONING_LABREGION_LIST_TITLE;Correction !TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !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. @@ -1593,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe diff --git a/rtdata/languages/default b/rtdata/languages/default index 5f0976900..10c8ed730 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -738,13 +738,13 @@ HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask -HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List -HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth HISTORY_MSG_DEHAZE_ENABLED;Haze Removal HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map @@ -1472,7 +1472,6 @@ 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_LABREGIONS;Color correction regions TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur TP_COLORTONING_LABREGION_CHANNEL;Channel TP_COLORTONING_LABREGION_CHANNEL_ALL;All TP_COLORTONING_LABREGION_CHANNEL_B;Blue @@ -1484,11 +1483,12 @@ TP_COLORTONING_LABREGION_LIGHTNESS;Lightness TP_COLORTONING_LABREGION_LIGHTNESSMASK;L TP_COLORTONING_LABREGION_LIST_TITLE;Correction TP_COLORTONING_LABREGION_MASK;Mask +TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +TP_COLORTONING_LABREGION_OFFSET;Offset +TP_COLORTONING_LABREGION_POWER;Power TP_COLORTONING_LABREGION_SATURATION;Saturation TP_COLORTONING_LABREGION_SHOWMASK;Show mask TP_COLORTONING_LABREGION_SLOPE;Slope -TP_COLORTONING_LABREGION_OFFSET;Offset -TP_COLORTONING_LABREGION_POWER;Power 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. @@ -1528,8 +1528,8 @@ TP_CROP_GUIDETYPE;Guide type: TP_CROP_H;Height TP_CROP_LABEL;Crop TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Select TP_CROP_RESETCROP;Reset +TP_CROP_SELECTCROP;Select TP_CROP_W;Width TP_CROP_X;Left TP_CROP_Y;Top From a9d13ab56a0b9da44a7dcf5774f7a9096f13cfad Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sat, 24 Nov 2018 06:30:49 +0100 Subject: [PATCH 224/348] Update Deutsch locale --- rtdata/languages/Deutsch | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 736247c77..99c41cde4 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -72,6 +72,7 @@ #71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5 #72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5 #73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5 +#74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -1591,7 +1592,7 @@ TP_CROP_GUIDETYPE;Hilfslinien: TP_CROP_H;Höhe TP_CROP_LABEL;Ausschnitt TP_CROP_PPI;PPI = -TP_CROP_SELECTCROP;Ausschnitt wählen +TP_CROP_SELECTCROP;Ausschnitt TP_CROP_W;Breite TP_CROP_X;Links TP_CROP_Y;Oben @@ -2393,18 +2394,18 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel -!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur -!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset -!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope -!TP_COLORTONING_LABREGION_CHANNEL;Channel -!TP_COLORTONING_LABREGION_CHANNEL_ALL;All -!TP_COLORTONING_LABREGION_CHANNEL_B;Blue -!TP_COLORTONING_LABREGION_CHANNEL_G;Green -!TP_COLORTONING_LABREGION_CHANNEL_R;Red -!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur -!TP_COLORTONING_LABREGION_OFFSET;Offset -!TP_COLORTONING_LABREGION_POWER;Power -!TP_COLORTONING_LABREGION_SLOPE;Slope -!TP_CROP_RESETCROP;Reset +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz +HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung +TP_COLORTONING_LABREGION_CHANNEL;Kanal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle +TP_COLORTONING_LABREGION_CHANNEL_B;Blau +TP_COLORTONING_LABREGION_CHANNEL_G;Grün +TP_COLORTONING_LABREGION_CHANNEL_R;Rot +TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe +TP_COLORTONING_LABREGION_OFFSET;Versatz +TP_COLORTONING_LABREGION_POWER;Verstärkung +TP_COLORTONING_LABREGION_SLOPE;Steigung +TP_CROP_RESETCROP;Zurücksetzen From ad7f47804b8592d04de46eb5f0be01490c608015 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 24 Nov 2018 13:01:18 +0100 Subject: [PATCH 225/348] If a custom TRC is set, it is applied after every edit, fixes #5023 --- rtengine/dcrop.cc | 38 ++++++++++++++++++----------------- rtengine/improccoordinator.cc | 8 ++++++-- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 81cc576c9..7854dfb81 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -808,56 +808,58 @@ void Crop::update(int todo) } - if (todo & (M_AUTOEXP | M_RGBCURVE)) { + if (todo & M_RGBCURVE) { + Imagefloat *workingCrop = baseCrop; + if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + const Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { - + int cw = baseCrop->getWidth(); + int ch = baseCrop->getHeight(); + workingCrop = new Imagefloat(cw, ch); + baseCrop->copyData(workingCrop); //first put gamma TRC to 1 - int cw = baseCrop->getWidth(); - int ch = baseCrop->getHeight(); - Imagefloat* readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + Imagefloat* readyImg0 = parent->ipf.workingtrc(workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { for (int col = 0; col < cw; col++) { - baseCrop->r(row, col) = (float)readyImg0->r(row, col); - baseCrop->g(row, col) = (float)readyImg0->g(row, col); - baseCrop->b(row, col) = (float)readyImg0->b(row, col); + workingCrop->r(row, col) = (float)readyImg0->r(row, col); + workingCrop->g(row, col) = (float)readyImg0->g(row, col); + workingCrop->b(row, col) = (float)readyImg0->b(row, col); } } delete readyImg0; //adjust gamma TRC - Imagefloat* readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + Imagefloat* readyImg = parent->ipf.workingtrc(workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { for (int col = 0; col < cw; col++) { - baseCrop->r(row, col) = (float)readyImg->r(row, col); - baseCrop->g(row, col) = (float)readyImg->g(row, col); - baseCrop->b(row, col) = (float)readyImg->b(row, col); + workingCrop->r(row, col) = (float)readyImg->r(row, col); + workingCrop->g(row, col) = (float)readyImg->g(row, col); + workingCrop->b(row, col) = (float)readyImg->b(row, col); } } delete readyImg; } } - } - - if (todo & M_RGBCURVE) { double rrm, ggm, bbm; DCPProfile::ApplyState as; DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as); LUTu histToneCurve; - parent->ipf.rgbProc (baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, + parent->ipf.rgbProc (workingCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve, parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm, parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve); + if (workingCrop != baseCrop) { + delete workingCrop; + } } /*xref=000;yref=000; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 2d6db3dd9..d76ccda27 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -506,8 +506,12 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) if (todo & (M_AUTOEXP | M_RGBCURVE)) { if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + if (oprevi == orig_prev) { + oprevi = new Imagefloat(pW, pH); + orig_prev->copyData(oprevi); + } + + Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { int cw = oprevi->getWidth(); From 27e6d5e72383d0d9d7545d9498bb77b8fc9335f5 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 24 Nov 2018 13:14:54 +0100 Subject: [PATCH 226/348] generateTranslationDiffs Deutsch --- rtdata/languages/Deutsch | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 99c41cde4..8cc1bc000 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -806,13 +806,18 @@ HISTORY_MSG_493;(L*a*b*) HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz +HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen @@ -1545,14 +1550,23 @@ TP_COLORTONING_LABGRID;L*a*b*-Farbkorrektur TP_COLORTONING_LABGRID_VALUES;HL: a=%1, b=%2\nS: a=%3, b=%4 TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Kanal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle +TP_COLORTONING_LABREGION_CHANNEL_B;Blau +TP_COLORTONING_LABREGION_CHANNEL_G;Grün +TP_COLORTONING_LABREGION_CHANNEL_R;Rot TP_COLORTONING_LABREGION_CHROMATICITYMASK;C TP_COLORTONING_LABREGION_HUEMASK;H TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit TP_COLORTONING_LABREGION_LIGHTNESSMASK;L TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur TP_COLORTONING_LABREGION_MASK;Maske +TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe +TP_COLORTONING_LABREGION_OFFSET;Versatz +TP_COLORTONING_LABREGION_POWER;Verstärkung TP_COLORTONING_LABREGION_SATURATION;Sättigung TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen +TP_COLORTONING_LABREGION_SLOPE;Steigung TP_COLORTONING_LUMA;Luminanz TP_COLORTONING_LUMAMODE;Luminanz schützen TP_COLORTONING_LUMAMODE_TOOLTIP;Wenn aktiviert, wird die Luminanz der Farben Rot, Grün, Cyan, Blau... geschützt. @@ -1592,6 +1606,7 @@ TP_CROP_GUIDETYPE;Hilfslinien: TP_CROP_H;Höhe TP_CROP_LABEL;Ausschnitt TP_CROP_PPI;PPI = +TP_CROP_RESETCROP;Zurücksetzen TP_CROP_SELECTCROP;Ausschnitt TP_CROP_W;Breite TP_CROP_X;Links @@ -2390,22 +2405,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal -HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe -HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz -HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung -HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung -TP_COLORTONING_LABREGION_CHANNEL;Kanal -TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle -TP_COLORTONING_LABREGION_CHANNEL_B;Blau -TP_COLORTONING_LABREGION_CHANNEL_G;Grün -TP_COLORTONING_LABREGION_CHANNEL_R;Rot -TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe -TP_COLORTONING_LABREGION_OFFSET;Versatz -TP_COLORTONING_LABREGION_POWER;Verstärkung -TP_COLORTONING_LABREGION_SLOPE;Steigung -TP_CROP_RESETCROP;Zurücksetzen From d1571658f89e31f644cf7c79d366bfe6bf41a631 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Sat, 24 Nov 2018 13:37:36 +0100 Subject: [PATCH 227/348] Consistent display of lensfun profile, fixes #5024 --- rtgui/lensprofile.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 0d5d9a0c3..e110792ec 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -194,6 +194,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP: { corrLcpFileRB->set_active(true); + setManualParamsVisibility(false); break; } @@ -209,6 +210,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa case procparams::LensProfParams::LcMode::NONE: { corrOffRB->set_active(true); + setManualParamsVisibility(false); break; } } From 23aa0562aabc2c028202a3291dd03c91dd78ea88 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 25 Nov 2018 00:00:40 +0100 Subject: [PATCH 228/348] crop tool: fix grid spacing for gtkmm < 3.20 --- rtgui/crop.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rtgui/crop.cc b/rtgui/crop.cc index 2484b9060..5bfeca61b 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -286,6 +286,20 @@ Crop::Crop(): nx = ny = nw = nh = 0; lastRotationDeg = 0; + +//GTK318 +#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 20 + methodgrid->set_row_spacing(4); + methodgrid->set_column_spacing(4); + settingsgrid->set_row_spacing(4); + settingsgrid->set_column_spacing(4); + ppigrid->set_row_spacing(4); + ppigrid->set_column_spacing(4); + ppisubgrid->set_row_spacing(4); + ppisubgrid->set_column_spacing(4); +#endif +//GTK318 + show_all (); } From 0ffc7d9617de17cfc69c82b79db8c5cdf29838e7 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 25 Nov 2018 08:47:39 +0100 Subject: [PATCH 229/348] Add frames to lensprofile.cc --- rtgui/lensprofile.cc | 48 +++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index e110792ec..b2043963a 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -65,18 +65,19 @@ LensProfilePanel::LensProfilePanel() : } // Main containers: + + Gtk::Frame *nodesFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_MODE_HEADER"))); modesGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Frame *distFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_USE_HEADER"))); distGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); // Mode choice widgets: - Gtk::Label* const corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); - setExpandAlignProperties(corrHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - corrUnchangedRB->hide(); corrGroup = corrUnchangedRB->get_group(); @@ -133,37 +134,34 @@ LensProfilePanel::LensProfilePanel() : // Choice of properties to correct, applicable to all modes: - Gtk::Label* const useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); - setExpandAlignProperties(useHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - // Populate modes grid: - modesGrid->attach(*corrHeaderLbl, 0, 0, 2, 1); - modesGrid->attach(*corrUnchangedRB, 0, 1, 2, 1); - modesGrid->attach(*corrOffRB, 0, 2, 2, 1); - modesGrid->attach(*corrLensfunAutoRB, 0, 3, 2, 1); - modesGrid->attach(*corrLensfunManualRB, 0, 4, 2, 1); + modesGrid->attach(*corrUnchangedRB, 0, 0, 3, 1); + modesGrid->attach(*corrOffRB, 0, 1, 3, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 2, 3, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 3, 3, 1); - modesGrid->attach(*lensfunCamerasLbl, 0, 5, 1, 1); - modesGrid->attach(*lensfunCameras, 1, 5, 1, 1); - modesGrid->attach(*lensfunLensesLbl, 0, 6, 1, 1); - modesGrid->attach(*lensfunLenses, 1, 6, 1, 1); - modesGrid->attach(*warning, 2, 6, 1, 1); + modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); + modesGrid->attach(*warning, 2, 4, 1, 2); - modesGrid->attach(*corrLcpFileRB, 0, 7, 1, 1); - modesGrid->attach(*corrLcpFileChooser, 1, 7, 1, 1); + modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 6, 2, 1); // Populate distortions grid: - distGrid->attach(*useHeaderLbl, 0, 0, 1, 1); - distGrid->attach(*ckbUseDist, 0, 1, 1, 1); - distGrid->attach(*ckbUseVign, 0, 2, 1, 1); - distGrid->attach(*ckbUseCA, 0, 3, 1, 1); + distGrid->attach(*ckbUseDist, 0, 0, 1, 1); + distGrid->attach(*ckbUseVign, 0, 1, 1, 1); + distGrid->attach(*ckbUseCA, 0, 2, 1, 1); // Attach grids: - - pack_start(*modesGrid); - pack_start(*distGrid); + nodesFrame->add(*modesGrid); + distFrame->add(*distGrid); + + pack_start(*nodesFrame, Gtk::PACK_EXPAND_WIDGET); + pack_start(*distFrame, Gtk::PACK_EXPAND_WIDGET); // Signals: From 67aa52b4ff98e4a65963fae203ed21444ea824a1 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 25 Nov 2018 09:50:00 +0100 Subject: [PATCH 230/348] Update TWB-theme (cleaning & minor cosmetic changes (#5027) --- rtdata/themes/TooWaBlue-GTK3-20_.css | 92 +++++++++++++++------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index b7b5175a7..d4565829a 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-2018 TooWaBoo - Version 2.96 + Version 2.98 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -164,7 +164,9 @@ undershoot { } label { - margin: 0 0.19em; + padding: 0.083333333333333333em 0; + margin: 0.19em; + min-height: 1.333333333333333333em; } /*** Frames ************************************************************************************/ @@ -323,11 +325,8 @@ fontchooser scrolledwindow, padding-bottom: 0.25em; background-color: @bg-dark-grey; } -#Navigator box label { - padding: 0.166666666666666666em 0; -} -#Navigator > label:nth-child(2) { - margin-top: 0.5em; +#Navigator label { + padding: 0; } /*** end ***************************************************************************************/ @@ -927,14 +926,18 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border-bottom: 0.083333333333333333em solid @view-grid-border; margin-left: 0.083333333333333333em; margin-right: 0.083333333333333333em; + padding: 0 0.19em; } #ToolPanelNotebook > header tabs { - margin-bottom: 0.333333333333333333em; + margin: 0 0 0.25em; } -#ToolPanelNotebook > header tab > box > image{ +#ToolPanelNotebook > header tab { + padding: 0; +} +#ToolPanelNotebook > header tab image{ min-height: 2em; min-width: 2em; - margin: 0.25em 0 0.333333333333333333em; + margin: 0.19em 0.25em 0.333333333333333333em; padding: 0; } #ToolPanelNotebook > stack { @@ -963,11 +966,6 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #PrefNotebook > header { margin: -0.666666666666666666em -0.666666666666666666em 0.333333333333333333em; } -#PrefNotebook > header tab label, -#AboutNotebook > header tab label { - padding-top: 0.25em; - padding-bottom: 0.25em; -} #PrefNotebook > stack { margin: 0 -0.666666666666666666em; } @@ -994,9 +992,6 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-dark-grey; padding-left: 0.333333333333333333em; } -#MetaPanelNotebook > header tab label{ - margin: 0.083333333333333333em 0.083333333333333333em 0.19em; -} #MetaPanelNotebook > stack { background-color: @bg-dark-grey; padding: 0 0 0.5em 0; @@ -1036,8 +1031,10 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: transparent; } -#MetaPanelNotebook label { - padding: 0.083333333333333333em 0 0; +#MetaPanelNotebook stack label { + margin-top: 0; + margin-bottom: 0; + padding: 0; } /*** end ***************************************************************************************/ @@ -1093,9 +1090,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border-left: 0.083333333333333333em solid @bg-dark-grey; } +/* !!! Must be same height as "Small Lock Button" */ #BeforeAfterContainer label { - min-height: 2.666666666666666666em; padding: 0 0.5em; + min-height: 2em; + min-width: 2em; + margin: 0.25em 0; + border: 0.083333333333333333em solid transparent; } #EditorToolbarTop { @@ -1478,13 +1479,21 @@ scale + image + image + button.flat { margin-bottom: 0.095em; } -/*Color chooser & buttons */ +/* Color chooser & buttons */ button.color { - min-height: 1.166666666666666666em; - min-width: 2.75em; - padding: 0.25em; + min-width: 3.25em; + box-shadow: none; + background-image: none; + background-color: transparent; } -button.color colorswatch, + +button.color colorswatch { + min-height: 0; + min-width: 0; + margin: 1px; + border-radius: 0.2em; +} + colorchooser colorswatch { border: 1px solid @bg-button-border; } @@ -1492,6 +1501,13 @@ colorchooser colorswatch#add-color-button:first-child { border-radius: 5.5px 0 0 5.5px; } +/* Font chooser button */ +button.font label{ + min-height: 0; + min-width: 0; + margin: 0 0.19em; +} + /* Save, Cancel, OK ... buttons */ dialog .dialog-action-area button { min-height: 2.166666666666666666em; @@ -1708,9 +1724,6 @@ window treeview > header image { min-width: 1.333333333333333333em; } -.view button.text-button label { - margin: 0; -} window .view button { border: none; border-bottom: 0.083333333333333333em solid @view-grid-border; @@ -1792,11 +1805,7 @@ popover button.text-button:active { /*** end ***************************************************************************************/ /*** Checkbox & Radio **************************************************************************/ -checkbutton { - padding: 0; - margin: 0.083333333333333333em 0.19em; - min-height: 1.666666666666666666em;/*x*/ -} +checkbutton, radiobutton { padding: 0.083333333333333333em 0; margin: 0.19em; @@ -1839,16 +1848,11 @@ frame > checkbutton check{ } #PartialPaste checkbutton { - min-height: 1.166666666666666666em; - margin-top: calc(0.416666666666666666em - 4px); - margin-bottom: calc(0.416666666666666666em - 4px) + padding: 0; + margin: 0.19em 0 0 0.583333333333333333em; } #PartialPaste checkbutton:not(#PartialPasteHeader) { - margin-left: 1.166666666666666666em; -} -#PartialPasteHeader { - margin-left: 0.5em; - padding-top: calc(0.666666666666666666em - 5px) + margin: 0 0 0 1.166666666666666666em; } /*** end ***************************************************************************************/ @@ -1908,8 +1912,8 @@ spinbutton { margin-bottom: 0.333333333333333333em; } #MyExpander checkbutton + label + spinbutton { - margin-top: 0.333333333333333333em; - margin-bottom: 0.333333333333333333em; + margin-top: 0.416666666666666666em; + margin-bottom: 0.416666666666666666em; } /**/ From 20577ccab67a595a8e98c301a517ba07842b9836 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 25 Nov 2018 13:54:59 +0100 Subject: [PATCH 231/348] custom trc, speedup and reduced memory usage, #5025 --- rtengine/dcrop.cc | 32 +++----------------- rtengine/imagefloat.cc | 21 ++++++++----- rtengine/imagefloat.h | 2 +- rtengine/improccoordinator.cc | 34 ++++------------------ rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 55 +++++++++++++++-------------------- rtengine/simpleprocess.cc | 34 ++++------------------ 7 files changed, 53 insertions(+), 127 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 7854dfb81..d9b4f1ca1 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -815,37 +815,13 @@ void Crop::update(int todo) const Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { - int cw = baseCrop->getWidth(); - int ch = baseCrop->getHeight(); + const int cw = baseCrop->getWidth(); + const int ch = baseCrop->getHeight(); workingCrop = new Imagefloat(cw, ch); - baseCrop->copyData(workingCrop); //first put gamma TRC to 1 - Imagefloat* readyImg0 = parent->ipf.workingtrc(workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - workingCrop->r(row, col) = (float)readyImg0->r(row, col); - workingCrop->g(row, col) = (float)readyImg0->g(row, col); - workingCrop->b(row, col) = (float)readyImg0->b(row, col); - } - } - - delete readyImg0; - + parent->ipf.workingtrc(baseCrop, workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, true, false); //adjust gamma TRC - Imagefloat* readyImg = parent->ipf.workingtrc(workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - workingCrop->r(row, col) = (float)readyImg->r(row, col); - workingCrop->g(row, col) = (float)readyImg->g(row, col); - workingCrop->b(row, col) = (float)readyImg->b(row, col); - } - } - - delete readyImg; + parent->ipf.workingtrc(workingCrop, workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, false, true); } } double rrm, ggm, bbm; diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 63c521040..2dae72793 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -475,7 +475,7 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT } // Parallelized transformation; create transform with cmsFLAGS_NOCACHE! -void Imagefloat::ExecCMSTransform2(cmsHTRANSFORM hTransform) +void Imagefloat::ExecCMSTransform2(cmsHTRANSFORM hTransform, bool normalizeIn) { // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation @@ -487,18 +487,25 @@ void Imagefloat::ExecCMSTransform2(cmsHTRANSFORM hTransform) AlignedBuffer pBuf(width * 3); #ifdef _OPENMP - #pragma omp for schedule(static) + #pragma omp for schedule(dynamic, 16) #endif for (int y = 0; y < height; y++) { float *p = pBuf.data, *pR = r(y), *pG = g(y), *pB = b(y); - for (int x = 0; x < width; x++) { - *(p++) = *(pR++)/ 65535.f; - *(p++) = *(pG++)/ 65535.f; - *(p++) = *(pB++)/ 65535.f; - + if (normalizeIn) { + for (int x = 0; x < width; x++) { + *(p++) = *(pR++)/ 65535.f; + *(p++) = *(pG++)/ 65535.f; + *(p++) = *(pB++)/ 65535.f; + } + } else { + for (int x = 0; x < width; x++) { + *(p++) = *(pR++); + *(p++) = *(pG++); + *(p++) = *(pB++); + } } cmsDoTransform (hTransform, pBuf.data, pBuf.data, width); diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 9d7c69aef..921f86b59 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -222,7 +222,7 @@ public: void normalizeFloatTo1(); void normalizeFloatTo65535(); void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist); - void ExecCMSTransform2(cmsHTRANSFORM hTransform); + void ExecCMSTransform2(cmsHTRANSFORM hTransform, bool normalizeIn = true); void ExecCMSTransform(cmsHTRANSFORM hTransform); void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index d76ccda27..bbadbf0a7 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -28,7 +28,6 @@ #include #include #include "color.h" - #ifdef _OPENMP #include #endif @@ -511,38 +510,15 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) orig_prev->copyData(oprevi); } - Glib::ustring profile = params.icm.workingProfile; + const Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { - int cw = oprevi->getWidth(); - int ch = oprevi->getHeight(); + const int cw = oprevi->getWidth(); + const int ch = oprevi->getHeight(); // put gamma TRC to 1 - Imagefloat* readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - oprevi->r(row, col) = (float)readyImg0->r(row, col); - oprevi->g(row, col) = (float)readyImg0->g(row, col); - oprevi->b(row, col) = (float)readyImg0->b(row, col); - } - } - - delete readyImg0; + ipf.workingtrc(oprevi, oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, true, false); //adjust TRC - Imagefloat* readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - oprevi->r(row, col) = (float)readyImg->r(row, col); - oprevi->g(row, col) = (float)readyImg->g(row, col); - oprevi->b(row, col) = (float)readyImg->b(row, col); - } - } - - delete readyImg; - + ipf.workingtrc(oprevi, oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, false, true); } } } diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index c3e17a050..470922508 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -350,7 +350,7 @@ public: Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); // CieImage *ciec; - Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos); + void workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, bool normalizeIn = true, bool normalizeOut = true); 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); bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index da8e687ed..437144600 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -432,7 +432,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos) +void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, bool normalizeIn, bool normalizeOut) { TMatrix wprof; @@ -445,22 +445,20 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int } double toxyz[3][3] = { { - (wprof[0][0] / dx), //I have suppressed / Color::D50x - (wprof[0][1] / dx), - (wprof[0][2] / dx) + (wprof[0][0] / (dx * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50x + (wprof[0][1] / (dx * (normalizeIn ? 65535.0 : 1.0))), + (wprof[0][2] / (dx * (normalizeIn ? 65535.0 : 1.0))) }, { - (wprof[1][0]), - (wprof[1][1]), - (wprof[1][2]) + (wprof[1][0] / (normalizeIn ? 65535.0 : 1.0)), + (wprof[1][1] / (normalizeIn ? 65535.0 : 1.0)), + (wprof[1][2] / (normalizeIn ? 65535.0 : 1.0)) }, { - (wprof[2][0] / dz), //I have suppressed / Color::D50z - (wprof[2][1] / dz), - (wprof[2][2] / dz) + (wprof[2][0] / (dz * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50z + (wprof[2][1] / (dz * (normalizeIn ? 65535.0 : 1.0))), + (wprof[2][2] / (dz * (normalizeIn ? 65535.0 : 1.0))) } }; - Imagefloat* image = new Imagefloat(cw, ch); - double pwr; double ts; ts = slpos; @@ -618,27 +616,22 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int #pragma omp parallel for if (multiThread) for (int i = 0; i < ch; i++) { - float* rr = working->r(i); - float* rg = working->g(i); - float* rb = working->b(i); + float* rr = src->r(i); + float* rg = src->g(i); + float* rb = src->b(i); - float* xa = (float*)image->r(i); - float* ya = (float*)image->g(i); - float* za = (float*)image->b(i); + float* xa = (float*)dst->r(i); + float* ya = (float*)dst->g(i); + float* za = (float*)dst->b(i); for (int j = 0; j < cw; j++) { float r1 = rr[j]; float g1 = rg[j]; float b1 = rb[j]; - float x_ = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; - float y_ = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; - float z_ = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; - - xa[j] = ( x_) ; - ya[j] = ( y_); - za[j] = ( z_); - + xa[j] = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; + ya[j] = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; + za[j] = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; } } @@ -651,16 +644,14 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); lcmsMutex->unlock(); - image->ExecCMSTransform2(hTransform); + dst->ExecCMSTransform2(hTransform, false); cmsDeleteTransform(hTransform); - image->normalizeFloatTo65535(); + if (normalizeOut) { + dst->normalizeFloatTo65535(); + } } - - - return image; - } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index bdb3ced19..e09d2fe3a 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -893,39 +893,15 @@ private: //gamma TRC working if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + const Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { - int cw = baseImg->getWidth(); - int ch = baseImg->getHeight(); + const int cw = baseImg->getWidth(); + const int ch = baseImg->getHeight(); // put gamma TRC to 1 - Imagefloat* readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - baseImg->r(row, col) = (float)readyImg0->r(row, col); - baseImg->g(row, col) = (float)readyImg0->g(row, col); - baseImg->b(row, col) = (float)readyImg0->b(row, col); - } - } - - delete readyImg0; - + ipf.workingtrc(baseImg, baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, true, false); //adjust TRC - Imagefloat* readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - baseImg->r(row, col) = (float)readyImg->r(row, col); - baseImg->g(row, col) = (float)readyImg->g(row, col); - baseImg->b(row, col) = (float)readyImg->b(row, col); - } - } - - delete readyImg; + ipf.workingtrc(baseImg, baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, false, true); } } From cfc947a865cbfe554a28ca9c80f4bf9c1eceda85 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 25 Nov 2018 14:23:06 +0100 Subject: [PATCH 232/348] Moved the ICC TRC patching code for RTv2 profiles from ImProcFunctions::lab2rgbOut to ICCStore See #5026 --- rtengine/iccstore.cc | 128 ++++++++++++++++++++++++++++++++++++++++-- rtengine/iplab2rgb.cc | 77 +------------------------ 2 files changed, 125 insertions(+), 80 deletions(-) diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index e8463a1d8..33972075c 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -38,6 +38,8 @@ #include "../rtgui/threadutils.h" #include "lcms2_plugin.h" +#include "color.h" + #include "cJSON.h" #define inkc_constant 0x696E6B43 namespace rtengine @@ -208,8 +210,85 @@ const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB // high g=1.3 s=3.35 for high dynamic images //low g=2.6 s=6.9 for low contrast images +//----------------------------------------------------------------------------- +// helper functions to fix V2 profiles TRCs, used in +// rtengine::ProfileContent::toProfile() +// see https://github.com/Beep6581/RawTherapee/issues/5026 +// ----------------------------------------------------------------------------- +bool is_RTv2_profile(cmsHPROFILE profile) +{ + if (int(cmsGetProfileVersion(profile)) != 2) { + return false; + } + const cmsMLU *mlu = static_cast(cmsReadTag(profile, cmsSigDeviceMfgDescTag)); + if (!mlu) { + return false; + } + cmsUInt32Number sz = cmsMLUgetASCII(mlu, "en", "US", nullptr, 0); + if (!sz) { + return false; + } + std::vector buf(sz); + cmsMLUgetASCII(mlu, "en", "US", &buf[0], sz); + buf.back() = 0; // sanity + return strcmp(&buf[0], "RawTherapee") == 0; } + +bool get_RT_gamma_slope(cmsHPROFILE profile, double &gammatag, double &slopetag) +{ + const cmsMLU *modelDescMLU = static_cast(cmsReadTag(profile, cmsSigDeviceModelDescTag)); + if (modelDescMLU) { + cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "en", "US", nullptr, 0); + if (count) { + std::vector vbuf(count); + wchar_t *buffer = &vbuf[0]; + count = cmsMLUgetWide(modelDescMLU, "en", "US", buffer, count); + Glib::ustring modelDesc; +#if __SIZEOF_WCHAR_T__ == 2 + char *cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib + if (cModelDesc) { + modelDesc.assign(cModelDesc); + g_free(cModelDesc); + } +#else + modelDesc = utf32_to_utf8(buffer, count); +#endif + if (!modelDesc.empty()) { + std::size_t pos = modelDesc.find("g"); + std::size_t posmid = modelDesc.find("s"); + std::size_t posend = modelDesc.find("!"); + std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); + gammatag = std::stod(strgamma.c_str()); + std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); + slopetag = std::stod(strslope.c_str()); + return true; + } + } + } + return false; +} + + +Glib::ustring get_profile_description(cmsHPROFILE profile) +{ + const cmsMLU *mlu = static_cast(cmsReadTag(profile, cmsSigProfileDescriptionTag)); + if (!mlu) { + return ""; + } + cmsUInt32Number sz = cmsMLUgetASCII(mlu, "en", "US", nullptr, 0); + if (!sz) { + return ""; + } + std::vector buf(sz); + cmsMLUgetASCII(mlu, "en", "US", &buf[0], sz); + buf.back() = 0; // sanity + return std::string(&buf[0]); +} + +} // namespace + + rtengine::ProfileContent::ProfileContent() = default; rtengine::ProfileContent::ProfileContent(const Glib::ustring& fileName) @@ -255,11 +334,52 @@ rtengine::ProfileContent::ProfileContent(cmsHPROFILE hProfile) cmsHPROFILE rtengine::ProfileContent::toProfile() const { + cmsHPROFILE profile = nullptr; + if (!data.empty()) { + profile = cmsOpenProfileFromMem(data.c_str(), data.size()); + // if this is a V2 profile generated by RawTherapee, we rebuild the + // TRC. See https://github.com/Beep6581/RawTherapee/issues/5026 and + // the references in there + if (profile && is_RTv2_profile(profile)) { + double gammatag, slopetag; + if (get_RT_gamma_slope(profile, gammatag, slopetag)) { + constexpr double eps = 0.000000001; // not divide by zero + double pwr = 1.0 / gammatag; + double ts = slopetag; + double slope = slopetag == 0 ? eps : slopetag; - return - !data.empty() - ? cmsOpenProfileFromMem(data.c_str(), data.size()) - : nullptr; + GammaValues g_b; //gamma parameters + Color::calcGamma(pwr, ts, 0, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + cmsFloat64Number gammaParams[7]; //gamma parameters + gammaParams[4] = g_b[3] * ts; + gammaParams[0] = gammatag; + gammaParams[1] = 1. / (1.0 + g_b[4]); + gammaParams[2] = g_b[4] / (1.0 + g_b[4]); + gammaParams[3] = 1. / slope; + gammaParams[5] = 0.0; + gammaParams[6] = 0.0; + + cmsToneCurve* GammaTRC; + if (slopetag == 0.) { + //printf("gammatag=%f\n", gammatag); + GammaTRC = cmsBuildGamma(NULL, gammatag); + } else { + GammaTRC = cmsBuildParametricToneCurve(nullptr, 5, gammaParams); //5 = smoother than 4 + } + cmsWriteTag(profile, cmsSigRedTRCTag, GammaTRC); + cmsWriteTag(profile, cmsSigGreenTRCTag, GammaTRC); + cmsWriteTag(profile, cmsSigBlueTRCTag, GammaTRC); + cmsFreeToneCurve(GammaTRC); + + if (settings->verbose) { + std::cout << "ICCStore: rebuilt TRC for RTv2 profile " << get_profile_description(profile) << ": gamma=" << gammatag << ", slope=" << slopetag << std::endl; + } + } else if (settings->verbose) { + std::cout << "ICCStore: no gamma/slope info found for RTv2 profile " << get_profile_description(profile) << std::endl; + } + } + } + return profile; } const std::string& rtengine::ProfileContent::getData() const diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index da8e687ed..2cbfc3df3 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -303,82 +303,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } Imagefloat* image = new Imagefloat(cw, ch); - - cmsHPROFILE oprof = nullptr; - - oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); - Glib::ustring outtest = icm.outputProfile; - std::string fileis_RTv2 = outtest.substr(0, 4); - //printf("IsRTv2=%s\n", fileis_RTv2.c_str()); - if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2 - //due to bug in LCMS in CmsToneCurve - //printf("icmout=%s \n",icm.output.c_str()); - GammaValues g_b; //gamma parameters - const double eps = 0.000000001; // not divide by zero - double gammatag = 2.4; - double slopetag = 12.92310; - cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag)); - if (modelDescMLU) { - cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "en", "US", nullptr, 0); // get buffer length first - if (count) { - wchar_t *buffer = new wchar_t[count]; - count = cmsMLUgetWide(modelDescMLU, "en", "US", buffer, count); // now put the string in the buffer - Glib::ustring modelDesc; -#if __SIZEOF_WCHAR_T__ == 2 - char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib - if (cModelDesc) { - modelDesc.assign(cModelDesc); - g_free(cModelDesc); - } -#else - modelDesc = utf32_to_utf8(buffer, count); -#endif - delete [] buffer; - if (!modelDesc.empty()) { - std::size_t pos = modelDesc.find("g"); - std::size_t posmid = modelDesc.find("s"); - std::size_t posend = modelDesc.find("!"); - std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos)); - gammatag = std::stod(strgamma.c_str()); - std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid)); - slopetag = std::stod(strslope.c_str()); - // printf("gam=%f slo=%f\n", gammatag, slopetag); - } - } else { - printf("Error: lab2rgbOut / String length is null!\n"); - } - } else { - printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n"); - } - - double pwr = 1.0 / gammatag; - double ts = slopetag; - double slope = slopetag == 0 ? eps : slopetag; - - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - cmsFloat64Number gammaParams[7]; //gamma parameters - gammaParams[4] = g_b[3] * ts; - gammaParams[0] = gammatag; - gammaParams[1] = 1. / (1.0 + g_b[4]); - gammaParams[2] = g_b[4] / (1.0 + g_b[4]); - gammaParams[3] = 1. / slope; - gammaParams[5] = 0.0; - gammaParams[6] = 0.0; - - cmsToneCurve* GammaTRC[3]; - if(slopetag == 0.) { - //printf("gammatag=%f\n", gammatag); - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, gammatag); - } - else { - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, gammaParams); //5 = smoother than 4 - } - cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]); - cmsFreeToneCurve(GammaTRC[0]); - } + cmsHPROFILE oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); if (oprof) { cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; From c9817e369cd0b0d18ee95b2b65897c2fc7ca6d2d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 25 Nov 2018 14:45:28 +0100 Subject: [PATCH 233/348] Remove Imagefloat::ExecCMSTransform2, #5025 --- rtengine/imagefloat.cc | 55 +----------------------------------------- rtengine/imagefloat.h | 2 -- rtengine/iplab2rgb.cc | 2 +- 3 files changed, 2 insertions(+), 57 deletions(-) diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 2dae72793..940806419 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -474,59 +474,6 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT } -// Parallelized transformation; create transform with cmsFLAGS_NOCACHE! -void Imagefloat::ExecCMSTransform2(cmsHTRANSFORM hTransform, bool normalizeIn) -{ - - // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation - // have to be modified too to build temporary buffers that allow multi processor execution -#ifdef _OPENMP - #pragma omp parallel -#endif - { - AlignedBuffer pBuf(width * 3); - -#ifdef _OPENMP - #pragma omp for schedule(dynamic, 16) -#endif - - for (int y = 0; y < height; y++) - { - float *p = pBuf.data, *pR = r(y), *pG = g(y), *pB = b(y); - - if (normalizeIn) { - for (int x = 0; x < width; x++) { - *(p++) = *(pR++)/ 65535.f; - *(p++) = *(pG++)/ 65535.f; - *(p++) = *(pB++)/ 65535.f; - } - } else { - for (int x = 0; x < width; x++) { - *(p++) = *(pR++); - *(p++) = *(pG++); - *(p++) = *(pB++); - } - } - - cmsDoTransform (hTransform, pBuf.data, pBuf.data, width); - - p = pBuf.data; - pR = r(y); - pG = g(y); - pB = b(y); - - for (int x = 0; x < width; x++) { - *(pR++) = *(p++); - *(pG++) = *(p++); - *(pB++) = *(p++); - } - } // End of parallelization - } -} - - - - // Parallelized transformation; create transform with cmsFLAGS_NOCACHE! void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) { @@ -540,7 +487,7 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) AlignedBuffer pBuf(width * 3); #ifdef _OPENMP - #pragma omp for schedule(static) + #pragma omp for schedule(dynamic, 16) #endif for (int y = 0; y < height; y++) diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 921f86b59..e1e5086b8 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -222,8 +222,6 @@ public: void normalizeFloatTo1(); void normalizeFloatTo65535(); void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist); - void ExecCMSTransform2(cmsHTRANSFORM hTransform, bool normalizeIn = true); - void ExecCMSTransform(cmsHTRANSFORM hTransform); void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); }; diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 437144600..3240f06b1 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -644,7 +644,7 @@ void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int c cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); lcmsMutex->unlock(); - dst->ExecCMSTransform2(hTransform, false); + dst->ExecCMSTransform(hTransform); cmsDeleteTransform(hTransform); if (normalizeOut) { From a3549a6247926ac05b96d3d66114a97e12ee61fc Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 25 Nov 2018 16:21:47 +0100 Subject: [PATCH 234/348] custom trc: another small speedup, #5025 --- rtengine/iplab2rgb.cc | 339 +++++++++++++++++++++--------------------- 1 file changed, 172 insertions(+), 167 deletions(-) diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 3240f06b1..38cebd17a 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -443,29 +443,26 @@ void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int c { dx = dz = 1.0; } - double toxyz[3][3] = { + const float toxyz[3][3] = { { - (wprof[0][0] / (dx * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50x - (wprof[0][1] / (dx * (normalizeIn ? 65535.0 : 1.0))), - (wprof[0][2] / (dx * (normalizeIn ? 65535.0 : 1.0))) + static_cast(wprof[0][0] / (dx * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50x + static_cast(wprof[0][1] / (dx * (normalizeIn ? 65535.0 : 1.0))), + static_cast(wprof[0][2] / (dx * (normalizeIn ? 65535.0 : 1.0))) }, { - (wprof[1][0] / (normalizeIn ? 65535.0 : 1.0)), - (wprof[1][1] / (normalizeIn ? 65535.0 : 1.0)), - (wprof[1][2] / (normalizeIn ? 65535.0 : 1.0)) + static_cast(wprof[1][0] / (normalizeIn ? 65535.0 : 1.0)), + static_cast(wprof[1][1] / (normalizeIn ? 65535.0 : 1.0)), + static_cast(wprof[1][2] / (normalizeIn ? 65535.0 : 1.0)) }, { - (wprof[2][0] / (dz * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50z - (wprof[2][1] / (dz * (normalizeIn ? 65535.0 : 1.0))), - (wprof[2][2] / (dz * (normalizeIn ? 65535.0 : 1.0))) + static_cast(wprof[2][0] / (dz * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50z + static_cast(wprof[2][1] / (dz * (normalizeIn ? 65535.0 : 1.0))), + static_cast(wprof[2][2] / (dz * (normalizeIn ? 65535.0 : 1.0))) } }; - double pwr; - double ts; - ts = slpos; - + double pwr = 1.0 / gampos; + double ts = slpos; int five = mul; - pwr = 1.0 / gampos; if (gampos < 1.0) { pwr = gampos; @@ -474,7 +471,7 @@ void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int c } // int select_temp = 1; //5003K - const double eps = 0.000000001; // not divide by zero + constexpr double eps = 0.000000001; // not divide by zero enum class ColorTemp { D50 = 5003, // for Widegamut, ProPhoto Best, Beta -> D50 @@ -484,173 +481,181 @@ void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int c }; ColorTemp temp = ColorTemp::D50; - cmsHPROFILE oprofdef; float p[6]; //primaries - if (true) { - //primaries for 10 working profiles ==> output profiles - if (profile == "WideGamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - } else if (profile == "Adobe RGB") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (profile == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (profile == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (profile == "Beta RGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (profile == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (profile == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (profile == "ACESp0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (profile == "ACESp1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (profile == "ProPhoto") { - p[0] = 0.7347; //ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } else { - p[0] = 0.7347; //default primaries always unused - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; - } - - if (slpos == 0) { - slpos = eps; - } - - GammaValues g_a; //gamma parameters - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - - cmsCIExyY xyD; - - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - - cmsToneCurve* GammaTRC[3]; - cmsFloat64Number gammaParams[7]; - gammaParams[4] = g_a[3] * ts; - gammaParams[0] = gampos; - gammaParams[1] = 1. / (1.0 + g_a[4]); - gammaParams[2] = g_a[4] / (1.0 + g_a[4]); - gammaParams[3] = 1. / slpos; - gammaParams[5] = 0.0; - gammaParams[6] = 0.0; - // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); - - // 7 parameters for smoother curves - cmsWhitePointFromTemp(&xyD, (double)temp); - if (profile == "ACESp0") { - xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences - } - - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 - oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - cmsFreeToneCurve(GammaTRC[0]); + //primaries for 10 working profiles ==> output profiles + if (profile == "WideGamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + } else if (profile == "Adobe RGB") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profile == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profile == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profile == "Beta RGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (profile == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (profile == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (profile == "ACESp0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (profile == "ACESp1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (profile == "ProPhoto") { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else { + p[0] = 0.7347; //default primaries always unused + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; } + if (slpos == 0) { + slpos = eps; + } + + GammaValues g_a; //gamma parameters + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + + cmsCIExyY xyD; + + cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + + cmsToneCurve* GammaTRC[3]; + cmsFloat64Number gammaParams[7]; + gammaParams[4] = g_a[3] * ts; + gammaParams[0] = gampos; + gammaParams[1] = 1. / (1.0 + g_a[4]); + gammaParams[2] = g_a[4] / (1.0 + g_a[4]); + gammaParams[3] = 1. / slpos; + gammaParams[5] = 0.0; + gammaParams[6] = 0.0; + // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); + + // 7 parameters for smoother curves + cmsWhitePointFromTemp(&xyD, (double)temp); + if (profile == "ACESp0") { + xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences + } + + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 + const cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + cmsFreeToneCurve(GammaTRC[0]); + if (oprofdef) { - #pragma omp parallel for if (multiThread) - - for (int i = 0; i < ch; i++) { - float* rr = src->r(i); - float* rg = src->g(i); - float* rb = src->b(i); - - float* xa = (float*)dst->r(i); - float* ya = (float*)dst->g(i); - float* za = (float*)dst->b(i); - - for (int j = 0; j < cw; j++) { - float r1 = rr[j]; - float g1 = rg[j]; - float b1 = rb[j]; - - xa[j] = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; - ya[j] = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; - za[j] = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; - } - } - cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; - - - lcmsMutex->lock(); cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); + lcmsMutex->lock(); // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); lcmsMutex->unlock(); +#ifdef _OPENMP + #pragma omp parallel if (multiThread) +#endif + { + AlignedBuffer pBuf(cw * 3); - dst->ExecCMSTransform(hTransform); +#ifdef _OPENMP + #pragma omp for schedule(dynamic, 16) +#endif + + for (int i = 0; i < ch; i++) { + float *p = pBuf.data; + float* rr = src->r(i); + float* rg = src->g(i); + float* rb = src->b(i); + + float* xa = (float*)dst->r(i); + float* ya = (float*)dst->g(i); + float* za = (float*)dst->b(i); + + for (int j = 0; j < cw; j++) { + float r1 = rr[j]; + float g1 = rg[j]; + float b1 = rb[j]; + + *(p++) = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; + *(p++) = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; + *(p++) = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; + } + cmsDoTransform (hTransform, pBuf.data, pBuf.data, cw); + p = pBuf.data; + for (int x = 0; x < cw; x++) { + *(xa++) = *(p++); + *(ya++) = *(p++); + *(za++) = *(p++); + } + } + } cmsDeleteTransform(hTransform); if (normalizeOut) { dst->normalizeFloatTo65535(); } - } } From 4f89286b986f5d5b22783eac63f54b114830eb4f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 25 Nov 2018 17:53:49 +0100 Subject: [PATCH 235/348] ImProcFunctions::workingtrc(): cleanup and another small speedup, #5025 --- rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 72 ++++++++++++++++++------------------------- 2 files changed, 31 insertions(+), 43 deletions(-) diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 470922508..6684c8ee2 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -350,7 +350,7 @@ public: Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); // CieImage *ciec; - void workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, bool normalizeIn = true, bool normalizeOut = true); + void workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, bool normalizeIn = true, bool normalizeOut = true); 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); bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 38cebd17a..9e47558ca 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -432,11 +432,9 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos, bool normalizeIn, bool normalizeOut) +void ImProcFunctions::workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, bool normalizeIn, bool normalizeOut) { - TMatrix wprof; - - wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); + const TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); double dx = Color::D50x; double dz = Color::D50z; @@ -574,18 +572,10 @@ void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int c } GammaValues g_a; //gamma parameters - int mode = 0; + constexpr int mode = 0; Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - cmsCIExyY xyD; - cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - - cmsToneCurve* GammaTRC[3]; cmsFloat64Number gammaParams[7]; gammaParams[4] = g_a[3] * ts; gammaParams[0] = gampos; @@ -597,65 +587,63 @@ void ImProcFunctions::workingtrc(Imagefloat* src, Imagefloat* dst, int cw, int c // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); // 7 parameters for smoother curves + cmsCIExyY xyD; cmsWhitePointFromTemp(&xyD, (double)temp); if (profile == "ACESp0") { xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences } + cmsToneCurve* GammaTRC[3]; GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 + + const cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; const cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + cmsFreeToneCurve(GammaTRC[0]); if (oprofdef) { - cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; - cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); + constexpr cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; + const cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); lcmsMutex->lock(); - // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); - cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); + const cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); lcmsMutex->unlock(); #ifdef _OPENMP #pragma omp parallel if (multiThread) #endif { AlignedBuffer pBuf(cw * 3); + const float normalize = normalizeOut ? 65535.f : 1.f; #ifdef _OPENMP - #pragma omp for schedule(dynamic, 16) + #pragma omp for schedule(dynamic, 16) nowait #endif - for (int i = 0; i < ch; i++) { + for (int i = 0; i < ch; ++i) { float *p = pBuf.data; - float* rr = src->r(i); - float* rg = src->g(i); - float* rb = src->b(i); + for (int j = 0; j < cw; ++j) { + const float r = src->r(i, j); + const float g = src->g(i, j); + const float b = src->b(i, j); - float* xa = (float*)dst->r(i); - float* ya = (float*)dst->g(i); - float* za = (float*)dst->b(i); - - for (int j = 0; j < cw; j++) { - float r1 = rr[j]; - float g1 = rg[j]; - float b1 = rb[j]; - - *(p++) = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1; - *(p++) = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1; - *(p++) = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1; + *(p++) = toxyz[0][0] * r + toxyz[0][1] * g + toxyz[0][2] * b; + *(p++) = toxyz[1][0] * r + toxyz[1][1] * g + toxyz[1][2] * b; + *(p++) = toxyz[2][0] * r + toxyz[2][1] * g + toxyz[2][2] * b; } - cmsDoTransform (hTransform, pBuf.data, pBuf.data, cw); p = pBuf.data; - for (int x = 0; x < cw; x++) { - *(xa++) = *(p++); - *(ya++) = *(p++); - *(za++) = *(p++); + cmsDoTransform(hTransform, p, p, cw); + for (int j = 0; j < cw; ++j) { + dst->r(i, j) = *(p++) * normalize; + dst->g(i, j) = *(p++) * normalize; + dst->b(i, j) = *(p++) * normalize; } } } cmsDeleteTransform(hTransform); - if (normalizeOut) { - dst->normalizeFloatTo65535(); - } } } From 0f6edfe8ddbf4cf9e4ac5bf826f2e995179ab37b Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 25 Nov 2018 18:06:45 +0100 Subject: [PATCH 236/348] Profiled Lens Correction Buf fix Fixed bug https://github.com/Beep6581/RawTherapee/issues/5002 Profiled Lens Correction does not seem to use (Unchanged) mode in Batch Edit --- rtgui/lensprofile.cc | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index b2043963a..66857dc79 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -78,9 +78,6 @@ LensProfilePanel::LensProfilePanel() : // Mode choice widgets: - corrUnchangedRB->hide(); - corrGroup = corrUnchangedRB->get_group(); - setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); // Manually-selected profile widgets: @@ -136,19 +133,18 @@ LensProfilePanel::LensProfilePanel() : // Populate modes grid: - modesGrid->attach(*corrUnchangedRB, 0, 0, 3, 1); - modesGrid->attach(*corrOffRB, 0, 1, 3, 1); - modesGrid->attach(*corrLensfunAutoRB, 0, 2, 3, 1); - modesGrid->attach(*corrLensfunManualRB, 0, 3, 3, 1); + modesGrid->attach(*corrOffRB, 0, 0, 3, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 1, 3, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 2, 3, 1); - modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); - modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); - modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); - modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); - modesGrid->attach(*warning, 2, 4, 1, 2); + modesGrid->attach(*lensfunCamerasLbl, 0, 3, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 3, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 4, 1, 1); + modesGrid->attach(*warning, 2, 3, 1, 2); - modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); - modesGrid->attach(*corrLcpFileChooser, 1, 6, 2, 1); + modesGrid->attach(*corrLcpFileRB, 0, 5, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 5, 1, 1); // Populate distortions grid: @@ -183,10 +179,6 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa disableListener(); conUseDist.block(true); - if (!batchMode) { - corrUnchangedRB->hide(); - } - corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { @@ -397,10 +389,9 @@ void LensProfilePanel::setBatchMode(bool yes) FoldableToolPanel::setBatchMode(yes); if (yes) { - corrUnchangedRB->show(); + corrUnchangedRB->set_group(corrGroup); + modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); corrUnchangedRB->set_active(true); - } else { - corrUnchangedRB->hide(); } } From 9fca8ed9f1c8924191607c85b9777c4d20f100f5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 26 Nov 2018 14:34:06 +0100 Subject: [PATCH 237/348] custom trc: speedup for preview and detail windows --- rtengine/dcrop.cc | 4 +- rtengine/improccoordinator.cc | 25 ++- rtengine/improccoordinator.h | 13 +- rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 320 ++++++++++++++++++---------------- rtengine/simpleprocess.cc | 5 +- 6 files changed, 205 insertions(+), 164 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index d9b4f1ca1..778f29fe8 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -819,9 +819,9 @@ void Crop::update(int todo) const int ch = baseCrop->getHeight(); workingCrop = new Imagefloat(cw, ch); //first put gamma TRC to 1 - parent->ipf.workingtrc(baseCrop, workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, true, false); + parent->ipf.workingtrc(baseCrop, workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, parent->getCustomTransformIn(), true, false, true); //adjust gamma TRC - parent->ipf.workingtrc(workingCrop, workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, false, true); + parent->ipf.workingtrc(workingCrop, workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, parent->getCustomTransformOut(), false, true, true); } } double rrm, ggm, bbm; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index bbadbf0a7..851f78ed8 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -94,7 +94,7 @@ ImProcCoordinator::ImProcCoordinator() pW(-1), pH(-1), plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), flatFieldAutoClipListener(nullptr), bayerAutoContrastListener(nullptr), xtransAutoContrastListener(nullptr), frameCountListener(nullptr), imageTypeListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr), resultValid(false), lastOutputProfile("BADFOOD"), lastOutputIntent(RI__COUNT), lastOutputBPC(false), thread(nullptr), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), - butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), wavcontlutili(false), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f), highQualityComputed(false) + butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), wavcontlutili(false), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f), highQualityComputed(false), customTransformIn(nullptr), customTransformOut(nullptr) {} void ImProcCoordinator::assign(ImageSource* imgsrc) @@ -128,6 +128,17 @@ ImProcCoordinator::~ImProcCoordinator() } imgsrc->decreaseRef(); + + if(customTransformIn) { + cmsDeleteTransform(customTransformIn); + customTransformIn = nullptr; + } + + if(customTransformOut) { + cmsDeleteTransform(customTransformOut); + customTransformOut = nullptr; + } + updaterThreadStart.unlock(); } @@ -516,9 +527,17 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) const int cw = oprevi->getWidth(); const int ch = oprevi->getHeight(); // put gamma TRC to 1 - ipf.workingtrc(oprevi, oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, true, false); + if(customTransformIn) { + cmsDeleteTransform(customTransformIn); + customTransformIn = nullptr; + } + ipf.workingtrc(oprevi, oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, customTransformIn, true, false, true); //adjust TRC - ipf.workingtrc(oprevi, oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, false, true); + if(customTransformOut) { + cmsDeleteTransform(customTransformOut); + customTransformOut = nullptr; + } + ipf.workingtrc(oprevi, oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, customTransformOut, false, true, true); } } } diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 488cf28c0..fb3012f62 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -215,7 +215,8 @@ protected: float colourToningSatLimit; float colourToningSatLimitOpacity; bool highQualityComputed; - + cmsHTRANSFORM customTransformIn; + cmsHTRANSFORM customTransformOut; public: ImProcCoordinator (); @@ -373,6 +374,16 @@ public: return imgsrc; } + cmsHTRANSFORM& getCustomTransformIn () + { + return customTransformIn; + } + + cmsHTRANSFORM& getCustomTransformOut () + { + return customTransformOut; + } + struct DenoiseInfoStore { DenoiseInfoStore () : chM (0), max_r{}, max_b{}, ch_M{}, valid (false) {} float chM; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 6684c8ee2..3e583958b 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -350,7 +350,7 @@ public: Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true); Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm); // CieImage *ciec; - void workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, bool normalizeIn = true, bool normalizeOut = true); + void workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, cmsHTRANSFORM &transform, bool normalizeIn = true, bool normalizeOut = true, bool keepTransForm = false) const; 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); bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr); diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 0af6aa9de..9ab8e1d01 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -357,7 +357,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -void ImProcFunctions::workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, bool normalizeIn, bool normalizeOut) +void ImProcFunctions::workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, cmsHTRANSFORM &transform, bool normalizeIn, bool normalizeOut, bool keepTransForm) const { const TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); @@ -382,160 +382,167 @@ void ImProcFunctions::workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, } }; - double pwr = 1.0 / gampos; - double ts = slpos; - int five = mul; - - - if (gampos < 1.0) { - pwr = gampos; - gampos = 1. / gampos; - five = -mul; - } - - // int select_temp = 1; //5003K - constexpr double eps = 0.000000001; // not divide by zero - - enum class ColorTemp { - D50 = 5003, // for Widegamut, ProPhoto Best, Beta -> D50 - D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 - D60 = 6005 // for ACES AP0 and AP1 - - }; - ColorTemp temp = ColorTemp::D50; - - float p[6]; //primaries - - //primaries for 10 working profiles ==> output profiles - if (profile == "WideGamut") { - p[0] = 0.7350; //Widegamut primaries - p[1] = 0.2650; - p[2] = 0.1150; - p[3] = 0.8260; - p[4] = 0.1570; - p[5] = 0.0180; - } else if (profile == "Adobe RGB") { - p[0] = 0.6400; //Adobe primaries - p[1] = 0.3300; - p[2] = 0.2100; - p[3] = 0.7100; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (profile == "sRGB") { - p[0] = 0.6400; // sRGB primaries - p[1] = 0.3300; - p[2] = 0.3000; - p[3] = 0.6000; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (profile == "BruceRGB") { - p[0] = 0.6400; // Bruce primaries - p[1] = 0.3300; - p[2] = 0.2800; - p[3] = 0.6500; - p[4] = 0.1500; - p[5] = 0.0600; - temp = ColorTemp::D65; - } else if (profile == "Beta RGB") { - p[0] = 0.6888; // Beta primaries - p[1] = 0.3112; - p[2] = 0.1986; - p[3] = 0.7551; - p[4] = 0.1265; - p[5] = 0.0352; - } else if (profile == "BestRGB") { - p[0] = 0.7347; // Best primaries - p[1] = 0.2653; - p[2] = 0.2150; - p[3] = 0.7750; - p[4] = 0.1300; - p[5] = 0.0350; - } else if (profile == "Rec2020") { - p[0] = 0.7080; // Rec2020 primaries - p[1] = 0.2920; - p[2] = 0.1700; - p[3] = 0.7970; - p[4] = 0.1310; - p[5] = 0.0460; - temp = ColorTemp::D65; - } else if (profile == "ACESp0") { - p[0] = 0.7347; // ACES P0 primaries - p[1] = 0.2653; - p[2] = 0.0000; - p[3] = 1.0; - p[4] = 0.0001; - p[5] = -0.0770; - temp = ColorTemp::D60; - } else if (profile == "ACESp1") { - p[0] = 0.713; // ACES P1 primaries - p[1] = 0.293; - p[2] = 0.165; - p[3] = 0.830; - p[4] = 0.128; - p[5] = 0.044; - temp = ColorTemp::D60; - } else if (profile == "ProPhoto") { - p[0] = 0.7347; //ProPhoto and default primaries - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; + cmsHTRANSFORM hTransform = nullptr; + if (transform) { + hTransform = transform; } else { - p[0] = 0.7347; //default primaries always unused - p[1] = 0.2653; - p[2] = 0.1596; - p[3] = 0.8404; - p[4] = 0.0366; - p[5] = 0.0001; + + double pwr = 1.0 / gampos; + double ts = slpos; + int five = mul; + + + if (gampos < 1.0) { + pwr = gampos; + gampos = 1. / gampos; + five = -mul; + } + + // int select_temp = 1; //5003K + constexpr double eps = 0.000000001; // not divide by zero + + enum class ColorTemp { + D50 = 5003, // for Widegamut, ProPhoto Best, Beta -> D50 + D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65 + D60 = 6005 // for ACES AP0 and AP1 + + }; + ColorTemp temp = ColorTemp::D50; + + float p[6]; //primaries + + //primaries for 10 working profiles ==> output profiles + if (profile == "WideGamut") { + p[0] = 0.7350; //Widegamut primaries + p[1] = 0.2650; + p[2] = 0.1150; + p[3] = 0.8260; + p[4] = 0.1570; + p[5] = 0.0180; + } else if (profile == "Adobe RGB") { + p[0] = 0.6400; //Adobe primaries + p[1] = 0.3300; + p[2] = 0.2100; + p[3] = 0.7100; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profile == "sRGB") { + p[0] = 0.6400; // sRGB primaries + p[1] = 0.3300; + p[2] = 0.3000; + p[3] = 0.6000; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profile == "BruceRGB") { + p[0] = 0.6400; // Bruce primaries + p[1] = 0.3300; + p[2] = 0.2800; + p[3] = 0.6500; + p[4] = 0.1500; + p[5] = 0.0600; + temp = ColorTemp::D65; + } else if (profile == "Beta RGB") { + p[0] = 0.6888; // Beta primaries + p[1] = 0.3112; + p[2] = 0.1986; + p[3] = 0.7551; + p[4] = 0.1265; + p[5] = 0.0352; + } else if (profile == "BestRGB") { + p[0] = 0.7347; // Best primaries + p[1] = 0.2653; + p[2] = 0.2150; + p[3] = 0.7750; + p[4] = 0.1300; + p[5] = 0.0350; + } else if (profile == "Rec2020") { + p[0] = 0.7080; // Rec2020 primaries + p[1] = 0.2920; + p[2] = 0.1700; + p[3] = 0.7970; + p[4] = 0.1310; + p[5] = 0.0460; + temp = ColorTemp::D65; + } else if (profile == "ACESp0") { + p[0] = 0.7347; // ACES P0 primaries + p[1] = 0.2653; + p[2] = 0.0000; + p[3] = 1.0; + p[4] = 0.0001; + p[5] = -0.0770; + temp = ColorTemp::D60; + } else if (profile == "ACESp1") { + p[0] = 0.713; // ACES P1 primaries + p[1] = 0.293; + p[2] = 0.165; + p[3] = 0.830; + p[4] = 0.128; + p[5] = 0.044; + temp = ColorTemp::D60; + } else if (profile == "ProPhoto") { + p[0] = 0.7347; //ProPhoto and default primaries + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } else { + p[0] = 0.7347; //default primaries always unused + p[1] = 0.2653; + p[2] = 0.1596; + p[3] = 0.8404; + p[4] = 0.0366; + p[5] = 0.0001; + } + + if (slpos == 0) { + slpos = eps; + } + + GammaValues g_a; //gamma parameters + constexpr int mode = 0; + Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 + + + cmsFloat64Number gammaParams[7]; + gammaParams[4] = g_a[3] * ts; + gammaParams[0] = gampos; + gammaParams[1] = 1. / (1.0 + g_a[4]); + gammaParams[2] = g_a[4] / (1.0 + g_a[4]); + gammaParams[3] = 1. / slpos; + gammaParams[5] = 0.0; + gammaParams[6] = 0.0; + // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); + + // 7 parameters for smoother curves + cmsCIExyY xyD; + cmsWhitePointFromTemp(&xyD, (double)temp); + if (profile == "ACESp0") { + xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences + } + + cmsToneCurve* GammaTRC[3]; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 + + const cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + const cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + cmsFreeToneCurve(GammaTRC[0]); + + if (oprofdef) { + constexpr cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; + const cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); + lcmsMutex->lock(); + hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); + lcmsMutex->unlock(); + } } - - if (slpos == 0) { - slpos = eps; - } - - GammaValues g_a; //gamma parameters - constexpr int mode = 0; - Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2 - - - cmsFloat64Number gammaParams[7]; - gammaParams[4] = g_a[3] * ts; - gammaParams[0] = gampos; - gammaParams[1] = 1. / (1.0 + g_a[4]); - gammaParams[2] = g_a[4] / (1.0 + g_a[4]); - gammaParams[3] = 1. / slpos; - gammaParams[5] = 0.0; - gammaParams[6] = 0.0; - // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); - - // 7 parameters for smoother curves - cmsCIExyY xyD; - cmsWhitePointFromTemp(&xyD, (double)temp); - if (profile == "ACESp0") { - xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences - } - - cmsToneCurve* GammaTRC[3]; - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 - - const cmsCIExyYTRIPLE Primaries = { - {p[0], p[1], 1.0}, // red - {p[2], p[3], 1.0}, // green - {p[4], p[5], 1.0} // blue - }; - const cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); - - cmsFreeToneCurve(GammaTRC[0]); - - if (oprofdef) { - constexpr cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; - const cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); - lcmsMutex->lock(); - const cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); - lcmsMutex->unlock(); + if (hTransform) { #ifdef _OPENMP #pragma omp parallel if (multiThread) #endif @@ -567,8 +574,11 @@ void ImProcFunctions::workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, } } } - - cmsDeleteTransform(hTransform); + if (!keepTransForm) { + cmsDeleteTransform(hTransform); + hTransform = nullptr; + } + transform = hTransform; } } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index e09d2fe3a..87c33e8f8 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -898,10 +898,11 @@ private: if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { const int cw = baseImg->getWidth(); const int ch = baseImg->getHeight(); + cmsHTRANSFORM dummy = nullptr; // put gamma TRC to 1 - ipf.workingtrc(baseImg, baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, true, false); + ipf.workingtrc(baseImg, baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, dummy, true, false, false); //adjust TRC - ipf.workingtrc(baseImg, baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, false, true); + ipf.workingtrc(baseImg, baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, dummy, false, true, false); } } From ae4cfaa9928b0832f53bad6c6a77c69a99b70153 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 26 Nov 2018 21:00:48 +0100 Subject: [PATCH 238/348] Using mouse wheel to zoom in sometimes zooms out, fixes #5036 --- rtgui/cropwindow.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 45372f1f5..6eac5e59d 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -275,6 +275,10 @@ void CropWindow::scroll (int state, GdkScrollDirection direction, int x, int y, } else { delta = deltaY; } + if (delta == 0.0 && direction == GDK_SCROLL_SMOOTH) { + // sometimes this case happens. To avoid zooming into the wrong direction in this case, we just do nothing + return; + } bool isUp = direction == GDK_SCROLL_UP || (direction == GDK_SCROLL_SMOOTH && delta < 0.0); if ((state & GDK_CONTROL_MASK) && onArea(ColorPicker, x, y)) { // resizing a color picker From 66e90142389b0bc5fbfd8fa9d815bfec18866cb2 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Mon, 26 Nov 2018 23:15:21 +0100 Subject: [PATCH 239/348] Batch mode fixed --- rtgui/lensprofile.cc | 55 ++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 66857dc79..787cb2cad 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -179,7 +179,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa disableListener(); conUseDist.block(true); - corrLensfunAutoRB->set_sensitive(true); + // corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP: { @@ -190,6 +190,9 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH: { corrLensfunAutoRB->set_active(true); + if (batchMode) { + setManualParamsVisibility(false); + } break; } @@ -204,6 +207,10 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa break; } } + + if (multiImage) { + corrUnchangedRB->set_active(true); + } if (pp->lensProf.lcpFile.empty()) { const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); @@ -227,24 +234,29 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa const LFDatabase* const db = LFDatabase::getInstance(); LFCamera c; - if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { + if (pp->lensProf.lfAutoMatch()) { if (metadata) { c = db->findCamera(metadata->getMake(), metadata->getModel()); setLensfunCamera(c.getMake(), c.getModel()); } + } else if (pp->lensProf.lfManual()) { + setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel); } - if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { + if (pp->lensProf.lfAutoMatch()) { if (metadata) { const LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } + } else if (pp->lensProf.lfManual()) { + setLensfunLens(pp->lensProf.lfLens); } lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; - if (!batchMode && !checkLensfunCanCorrect(true)) { + /* + if (!batchMode && !checkLensfunCanCorrect(true)) { if (corrLensfunAutoRB->get_active()) { corrOffRB->set_active(true); } @@ -252,9 +264,10 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAutoRB->set_sensitive(false); } - if (corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { + if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(true)) { corrOffRB->set_active(true); - } + } + */ updateLensfunWarning(); @@ -293,7 +306,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* const auto itc = lensfunCameras->get_active(); - if (itc) { + if (itc && !corrLensfunAutoRB->get_active()) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; pp->lensProf.lfCameraModel = (*itc)[lf->lensfunModelCam.model]; } else { @@ -303,7 +316,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* const auto itl = lensfunLenses->get_active(); - if (itl) { + if (itl && !corrLensfunAutoRB->get_active()) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; } else { pp->lensProf.lfLens = ""; @@ -386,13 +399,13 @@ void LensProfilePanel::onUseCAChanged() void LensProfilePanel::setBatchMode(bool yes) { - FoldableToolPanel::setBatchMode(yes); - if (yes) { - corrUnchangedRB->set_group(corrGroup); - modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); - corrUnchangedRB->set_active(true); - } + FoldableToolPanel::setBatchMode(yes); + + corrUnchangedRB->set_group(corrGroup); + modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); + corrUnchangedRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrUnchangedRB)); + corrUnchangedRB->set_active(true); } void LensProfilePanel::onLensfunCameraChanged() @@ -454,15 +467,21 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) } else if (rbChanged == corrLensfunAutoRB) { useLensfunChanged = true; lensfunAutoChanged = true; + lensfunCameraChanged = true; + lensfunLensChanged = true; lcpFileChanged = true; useDistChanged = true; useVignChanged = true; ckbUseDist->set_sensitive(true); ckbUseVign->set_sensitive(true); - ckbUseCA->set_sensitive(false); + ckbUseCA->set_sensitive(true); - if (metadata) { + + if (batchMode) { + setLensfunCamera("", ""); + setLensfunLens(""); + } else if (metadata) { const bool disabled = disableListener(); const LFDatabase* const db = LFDatabase::getInstance(); const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); @@ -479,6 +498,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) } else if (rbChanged == corrLensfunManualRB) { useLensfunChanged = true; lensfunAutoChanged = true; + lensfunCameraChanged = true; + lensfunLensChanged = true; lcpFileChanged = true; useDistChanged = true; useVignChanged = true; @@ -515,7 +536,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) lcModeChanged = true; updateLensfunWarning(); - if (rbChanged == corrLensfunManualRB || rbChanged == corrLensfunAutoRB) { + if (rbChanged == corrLensfunManualRB || (!batchMode && rbChanged == corrLensfunAutoRB)) { setManualParamsVisibility(true); } else { setManualParamsVisibility(false); From 4a6449b310f57b27c07017e4fa96f1eec7c5284f Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 27 Nov 2018 15:45:53 +0100 Subject: [PATCH 240/348] Crop: improve alignment with fixed ratios Fixes #4981 --- rtgui/crop.cc | 51 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/rtgui/crop.cc b/rtgui/crop.cc index 5bfeca61b..a6b418bd7 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -712,18 +712,51 @@ void Crop::ratioChanged () void Crop::adjustCropToRatio() { if (fixr->get_active() && !fixr->get_inconsistent()) { + int W1 = nw, W2 = nw; + int H1 = nh, H2 = nh; + int X1 = nx, X2 = nx; + int Y1 = ny, Y2 = ny; -// int W = w->get_value (); -// int H = h->get_value (); - int W = nw; - int H = nh; - int X = nx; - int Y = ny; + float r = getRatio(); - if (W >= H) { - cropWidth2Resized (X, Y, W, H); + H1 = round(W1 / r); + Y1 = ny + (nh - H1)/2.0; + if (Y1 < 0) { + Y1 = 0; + } + if (H1 > maxh) { + H1 = maxh; + W1 = round(H1 * r); + X1 = nx + (nw - W1)/2.0; + } + if (Y1+H1 > maxh) { + Y1 = maxh - H1; + } + + W2 = round(H2 * r); + X2 = nx + (nw - W2)/2.0; + if (X2 < 0) { + X2 = 0; + } + if (W2 > maxw) { + W2 = maxw; + H2 = round(W2 / r); + Y2 = ny + (nh - H2)/2.0; + } + if (X2+W2 > maxw) { + X2 = maxw - W2; + } + + if (W1 * H1 >= W2 * H2) { + nx = X1; + ny = Y1; + nw = W1; + nh = H1; } else { - cropHeight2Resized (X, Y, W, H); + nx = X2; + ny = Y2; + nw = W2; + nh = H2; } } From 6ba989ef1cb058b11d56b658489e9de7ed014ee3 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 27 Nov 2018 12:09:39 +0100 Subject: [PATCH 241/348] gamutwarning: clamp in the intermediate transform, otherwise there's no point in checking for OOG Fixes #5019 --- rtengine/gamutwarning.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index 84b4b3c08..c76e2a285 100644 --- a/rtengine/gamutwarning.cc +++ b/rtengine/gamutwarning.cc @@ -34,7 +34,7 @@ GamutWarning::GamutWarning(cmsHPROFILE iprof, cmsHPROFILE gamutprof, RenderingIn softproof2ref(nullptr) { if (cmsIsMatrixShaper(gamutprof) && !cmsIsCLUT(gamutprof, intent, LCMS_USED_AS_OUTPUT)) { - cmsHPROFILE aces = ICCStore::getInstance()->getProfile("RTv4_ACES-AP0"); + cmsHPROFILE aces = ICCStore::getInstance()->workingSpace("ACESp0"); if (aces) { lab2ref = cmsCreateTransform(iprof, TYPE_Lab_FLT, aces, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); lab2softproof = cmsCreateTransform(iprof, TYPE_Lab_FLT, gamutprof, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); @@ -81,6 +81,10 @@ void GamutWarning::markLine(Image8 *image, int y, float *srcbuf, float *buf1, fl float delta_max = lab2ref ? 0.0001f : 4.9999f; cmsDoTransform(lab2softproof, srcbuf, buf2, width); + // since we are checking for out-of-gamut, we do want to clamp here! + for (int i = 0; i < width * 3; ++i) { + buf2[i] = LIM01(buf2[i]); + } cmsDoTransform(softproof2ref, buf2, buf1, width); float *proofdata = buf1; From d06e26356b625a19be32eef03def59e99afffffa Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 27 Nov 2018 19:54:26 +0100 Subject: [PATCH 242/348] Fix scrolling in wrong direction when using mouse wheel in filebrowser, #5036 --- rtgui/thumbbrowserbase.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index fdb551f45..5f75967e6 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -76,6 +76,10 @@ void ThumbBrowserBase::scroll (int direction, double deltaX, double deltaY) } else { delta = deltaY; } + if (direction == GDK_SCROLL_SMOOTH && delta == 0.0) { + // sometimes this case happens. To avoid scrolling the wrong direction in this case, we just do nothing + return; + } double coef = direction == GDK_SCROLL_DOWN || (direction == GDK_SCROLL_SMOOTH && delta > 0.0) ? +1.0 : -1.0; // GUI already acquired when here From 7f1b14c50aa46ac5e48099e43ac9121f7b790275 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 27 Nov 2018 20:06:09 +0100 Subject: [PATCH 243/348] Remove unused Image16::tofloat() --- rtengine/image16.cc | 14 -------------- rtengine/image16.h | 1 - 2 files changed, 15 deletions(-) diff --git a/rtengine/image16.cc b/rtengine/image16.cc index 618d31641..c0e97557a 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -310,20 +310,6 @@ Image8* Image16::to8() const return img8; } -Imagefloat* Image16::tofloat() const -{ - Imagefloat* imgfloat = new Imagefloat(width, height); - - for (int h = 0; h < height; ++h) { - for (int w = 0; w < width; ++w) { - imgfloat->r(h, w) = r(h, w); - imgfloat->g(h, w) = g(h, w); - imgfloat->b(h, w) = b(h, w); - } - } - - return imgfloat; -} // Parallelized transformation; create transform with cmsFLAGS_NOCACHE! void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform) { diff --git a/rtengine/image16.h b/rtengine/image16.h index 9f73c322b..9762af990 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -43,7 +43,6 @@ public: Image16* copy() const; Image8* to8() const; - Imagefloat* tofloat() const; void getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; From 79d561469fa6d03afae75da222b6c02ccae0faf5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 27 Nov 2018 20:06:48 +0100 Subject: [PATCH 244/348] Fix two leaks reported by coverity --- rtgui/previewloader.cc | 4 ++++ rtgui/previewloader.h | 1 + rtgui/thumbimageupdater.cc | 4 ++++ rtgui/thumbimageupdater.h | 1 + 4 files changed, 10 insertions(+) diff --git a/rtgui/previewloader.cc b/rtgui/previewloader.cc index 0c0ecf9f6..f4cfe2b1b 100644 --- a/rtgui/previewloader.cc +++ b/rtgui/previewloader.cc @@ -168,6 +168,10 @@ PreviewLoader::PreviewLoader(): { } +PreviewLoader::~PreviewLoader() { + delete impl_; +} + PreviewLoader* PreviewLoader::getInstance() { static PreviewLoader instance_; diff --git a/rtgui/previewloader.h b/rtgui/previewloader.h index 77091bcd3..311d9d5ce 100644 --- a/rtgui/previewloader.h +++ b/rtgui/previewloader.h @@ -82,6 +82,7 @@ public: private: PreviewLoader(); + ~PreviewLoader(); class Impl; Impl* impl_; diff --git a/rtgui/thumbimageupdater.cc b/rtgui/thumbimageupdater.cc index 992b38812..f7caf5f5e 100644 --- a/rtgui/thumbimageupdater.cc +++ b/rtgui/thumbimageupdater.cc @@ -183,6 +183,10 @@ ThumbImageUpdater::ThumbImageUpdater(): { } +ThumbImageUpdater::~ThumbImageUpdater() { + delete impl_; +} + void ThumbImageUpdater::add(ThumbBrowserEntryBase* tbe, bool* priority, bool upgrade, ThumbImageUpdateListener* l) { // nobody listening? diff --git a/rtgui/thumbimageupdater.h b/rtgui/thumbimageupdater.h index 820ddca8f..a3be44d7c 100644 --- a/rtgui/thumbimageupdater.h +++ b/rtgui/thumbimageupdater.h @@ -89,6 +89,7 @@ public: private: ThumbImageUpdater(); + ~ThumbImageUpdater(); class Impl; Impl* impl_; From 90122c419eb21ab9aca41f7947f2cf1b7a5f9d28 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 27 Nov 2018 20:17:52 +0100 Subject: [PATCH 245/348] Added inconsitent status to checkboxes and radio buttons --- rtgui/lensprofile.cc | 68 +++++++++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 787cb2cad..544093984 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -207,10 +207,6 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa break; } } - - if (multiImage) { - corrUnchangedRB->set_active(true); - } if (pp->lensProf.lcpFile.empty()) { const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); @@ -264,17 +260,34 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAutoRB->set_sensitive(false); } - if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(true)) { + if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { corrOffRB->set_active(true); } */ + + ckbUseDist->set_active(pp->lensProf.useDist); + ckbUseVign->set_active(pp->lensProf.useVign); + ckbUseCA->set_active(pp->lensProf.useCA); + + if (pedited) { + corrUnchangedRB->set_active(!pedited->lensProf.lcMode); + ckbUseDist->set_inconsistent(!pedited->lensProf.useDist); + ckbUseVign->set_inconsistent(!pedited->lensProf.useVign); + ckbUseCA->set_inconsistent(!pedited->lensProf.useCA); + + if (!pedited->lensProf.lfCameraMake || !pedited->lensProf.lfCameraModel) { + setLensfunCamera("", ""); + } + if (!pedited->lensProf.lfLens) { + setLensfunLens(""); + } + + ckbUseDist->set_sensitive(true); + ckbUseVign->set_sensitive(true); + ckbUseCA->set_sensitive(true); + } updateLensfunWarning(); - - ckbUseDist->set_active(pp->lensProf.useDist); - ckbUseVign->set_active(pp->lensProf.useVign && isRaw); - ckbUseCA->set_active(pp->lensProf.useCA && isRaw && ckbUseCA->get_sensitive()); - enableListener(); conUseDist.block(false); } @@ -338,7 +351,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) { - if (!raw || pMeta->getFocusDist() <= 0) { + if ((!raw || pMeta->getFocusDist() <= 0) && !batchMode) { disableListener(); // CA is very focus layer dependent, otherwise it might even worsen things @@ -373,6 +386,10 @@ void LensProfilePanel::onLCPFileChanged() void LensProfilePanel::onUseDistChanged() { useDistChanged = true; + if (ckbUseDist->get_inconsistent()) { + ckbUseDist->set_inconsistent(false); + ckbUseDist->set_active(false); + } if (listener) { listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); @@ -382,6 +399,10 @@ void LensProfilePanel::onUseDistChanged() void LensProfilePanel::onUseVignChanged() { useVignChanged = true; + if (ckbUseVign->get_inconsistent()) { + ckbUseVign->set_inconsistent(false); + ckbUseVign->set_active(false); + } if (listener) { listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); @@ -391,6 +412,10 @@ void LensProfilePanel::onUseVignChanged() void LensProfilePanel::onUseCAChanged() { useCAChanged = true; + if (ckbUseCA->get_inconsistent()) { + ckbUseCA->set_inconsistent(false); + ckbUseCA->set_active(false); + } if (listener) { listener->panelChanged(EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); @@ -464,6 +489,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(false); mode = M("GENERAL_NONE"); + } else if (rbChanged == corrLensfunAutoRB) { useLensfunChanged = true; lensfunAutoChanged = true; @@ -478,23 +504,21 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(true); + disableListener(); if (batchMode) { setLensfunCamera("", ""); setLensfunLens(""); } else if (metadata) { - const bool disabled = disableListener(); const LFDatabase* const db = LFDatabase::getInstance(); const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); const LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); - - if (disabled) { - enableListener(); - } } - + enableListener(); + mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); + } else if (rbChanged == corrLensfunManualRB) { useLensfunChanged = true; lensfunAutoChanged = true; @@ -509,6 +533,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(false); mode = M("TP_LENSPROFILE_CORRECTION_MANUAL"); + } else if (rbChanged == corrLcpFileRB) { useLensfunChanged = true; lensfunAutoChanged = true; @@ -519,6 +544,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) updateDisabled(true); mode = M("TP_LENSPROFILE_CORRECTION_LCPFILE"); + } else if (rbChanged == corrUnchangedRB) { useLensfunChanged = false; lensfunAutoChanged = false; @@ -644,9 +670,11 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() void LensProfilePanel::updateDisabled(bool enable) { - ckbUseDist->set_sensitive(enable); - ckbUseVign->set_sensitive(enable && isRaw); - ckbUseCA->set_sensitive(enable && allowFocusDep); + if (!batchMode) { + ckbUseDist->set_sensitive(enable); + ckbUseVign->set_sensitive(enable && isRaw); + ckbUseCA->set_sensitive(enable && allowFocusDep); + } } bool LensProfilePanel::setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model) From 6b0558c9e3e0329c09bacc8f06556b83bfa2160c Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Wed, 28 Nov 2018 07:44:28 +0100 Subject: [PATCH 246/348] Listener fix --- rtgui/lensprofile.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 544093984..ae8bbb7fe 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -424,7 +424,6 @@ void LensProfilePanel::onUseCAChanged() void LensProfilePanel::setBatchMode(bool yes) { - FoldableToolPanel::setBatchMode(yes); corrUnchangedRB->set_group(corrGroup); @@ -504,7 +503,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(true); - disableListener(); + const bool disabled = disableListener(); if (batchMode) { setLensfunCamera("", ""); setLensfunLens(""); @@ -515,7 +514,9 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); } - enableListener(); + if (disabled) { + enableListener(); + } mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); From b5a20fd6dfae98efa9ec357f360c2a508baf9180 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 28 Nov 2018 16:28:43 +0100 Subject: [PATCH 247/348] Fix bug in calculation of diagonal, #5032, thanks to @Konyicsiva --- rtgui/cropwindow.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 6eac5e59d..50d8f9543 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1964,7 +1964,7 @@ void CropWindow::zoomIn (bool toCursor, int cursorX, int cursorY) int x1 = cropHandler.cropParams.x + cropHandler.cropParams.w / 2; int y1 = cropHandler.cropParams.y + cropHandler.cropParams.h / 2; double cropd = sqrt(cropHandler.cropParams.h * cropHandler.cropParams.h + cropHandler.cropParams.w * cropHandler.cropParams.w) * zoomSteps[cropZoom].zoom; - double imd = sqrt(imgW * imgW + imgH + imgH); + double imd = sqrt(imgW * imgW + imgH * imgH); double d; // the more we can see of the crop, the more gravity towards crop center From 15c18325c0a6fce8c8a8c4cd0e6fc5b22b28f1c1 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 28 Nov 2018 17:04:45 +0100 Subject: [PATCH 248/348] Reset parsed extensions when empty, fixes #5040 --- rtgui/options.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rtgui/options.cc b/rtgui/options.cc index c1494a085..c267c4651 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -942,11 +942,17 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_key("File Browser", "ParseExtensions")) { - parseExtensions = keyFile.get_string_list("File Browser", "ParseExtensions"); + auto l = keyFile.get_string_list("File Browser", "ParseExtensions"); + if (!l.empty()) { + parseExtensions = l; + } } if (keyFile.has_key("File Browser", "ParseExtensionsEnabled")) { - parseExtensionsEnabled = keyFile.get_integer_list("File Browser", "ParseExtensionsEnabled"); + auto l = keyFile.get_integer_list("File Browser", "ParseExtensionsEnabled"); + if (!l.empty()) { + parseExtensionsEnabled = l; + } } if (keyFile.has_key("File Browser", "ThumbnailArrangement")) { From b63b411beee3c1551fd7294e2efecac702107b24 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 29 Nov 2018 13:51:04 +0100 Subject: [PATCH 249/348] findMinMaxPercentile(): clamp minOut and maxOut, #5030 --- rtengine/rt_algo.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index ae385508a..22ea5c76b 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -172,6 +172,7 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& // go back to original range minOut /= scale; minOut += minVal; + minOut = rtengine::LIM(minOut, minVal, maxVal); // find (maxPrct*size) smallest value const float threshmax = maxPrct * size; @@ -190,6 +191,7 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& // go back to original range maxOut /= scale; maxOut += minVal; + maxOut = rtengine::LIM(maxOut, minVal, maxVal); } void buildBlendMask(float** luminance, float **blend, int W, int H, float &contrastThreshold, float amount, bool autoContrast) { From e5679df6f36c0fad2a5354ce29c1b76d368dc27c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 29 Nov 2018 14:43:45 +0100 Subject: [PATCH 250/348] Don't show empty favorite panel, #5016 --- rtgui/toolpanelcoord.cc | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 709acc75a..99dcdde8d 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -28,7 +28,7 @@ using namespace rtengine::procparams; -ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) +ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr), favoritePanelSW(nullptr) { favoritePanel = Gtk::manage (new ToolVBox ()); @@ -155,24 +155,26 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addfavoritePanel (rawPanel, darkframe); addfavoritePanel (rawPanel, flatfield); + int favoriteCount = 0; for(auto it = favorites.begin(); it != favorites.end(); ++it) { if (*it) { addPanel(favoritePanel, *it); + ++favoriteCount; } } + toolPanels.push_back (coarse); toolPanels.push_back(metadata); toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - favoritePanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); transformPanelSW = Gtk::manage (new MyScrolledWindow ()); rawPanelSW = Gtk::manage (new MyScrolledWindow ()); - advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); + advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); updateVScrollbars (options.hideTPVScrollbar); // load panel endings @@ -184,9 +186,12 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } - favoritePanelSW->add (*favoritePanel); - favoritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - favoritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + if(favoriteCount > 0) { + favoritePanelSW = Gtk::manage(new MyScrolledWindow()); + favoritePanelSW->add(*favoritePanel); + favoritePanel->pack_start(*Gtk::manage(new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favoritePanel->pack_start(*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + } exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -221,7 +226,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); - toolPanelNotebook->append_page (*favoritePanelSW, *toiF); + if (favoritePanelSW) { + toolPanelNotebook->append_page (*favoritePanelSW, *toiF); + } toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -882,7 +889,9 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { case GDK_KEY_u: - toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); + if (favoritePanelSW) { + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); + } return true; case GDK_KEY_e: @@ -922,7 +931,9 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; - favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + if (favoritePanelSW) { + favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + } exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); From f21f9cae9c01c99b222b6f7c3de97aee77735b43 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 29 Nov 2018 20:38:07 +0100 Subject: [PATCH 251/348] Added Franz Trischberger to 'Other contributors' section. --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index a9f501919..15e3e13d4 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -63,4 +63,5 @@ Other contributors (profiles, ideas, mockups, testing, forum activity, translati Johan Thor Vitalis Tiknius TooWaBoo + Franz Trischberger Colin Walker From a6a6fa26da5ec0d2d18003a9ad4242583b17dd78 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 29 Nov 2018 21:11:30 +0100 Subject: [PATCH 252/348] Added "restart required" label for theme #4968 --- rtgui/preferences.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 9141b0e3f..19fa41d2b 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1002,6 +1002,8 @@ Gtk::Widget* Preferences::getGeneralPanel () Gtk::Label* themeLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_THEME") + ":")); setExpandAlignProperties(themeLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Label* themeRestartLbl = Gtk::manage ( new Gtk::Label (Glib::ustring (" (") + M ("PREFERENCES_APPLNEXTSTARTUP") + ")") ); + setExpandAlignProperties(themeRestartLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); themeCBT = Gtk::manage(new Gtk::ComboBoxText()); themeCBT->set_active(0); @@ -1048,7 +1050,8 @@ Gtk::Widget* Preferences::getGeneralPanel () appearanceGrid->attach(*themeLbl, 0, 0, 1, 1); appearanceGrid->attach(*themeCBT, 1, 0, 1, 1); - appearanceGrid->attach(*vSep, 2, 0, 1, 3); + appearanceGrid->attach(*themeRestartLbl, 2, 0, 2, 1); + appearanceGrid->attach(*vSep, 2, 1, 1, 3); appearanceGrid->attach(*mainFontLbl, 0, 1, 1, 1); appearanceGrid->attach(*mainFontFB, 1, 1, 1, 1); appearanceGrid->attach(*cropMaskColorLbl, 3, 1, 1, 1); From d0fe52c3eac74ee34e62d7d87acc2ac6a0f074a1 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 30 Nov 2018 11:24:55 +0100 Subject: [PATCH 253/348] Japanese updated by firefly, closes #5044 --- rtdata/languages/Japanese | 90 +++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 47 deletions(-) diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 568d7c842..abc8ae4e7 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -765,13 +765,18 @@ HISTORY_MSG_493;L*a*b*調整 HISTORY_MSG_CLAMPOOG;色域外の色を切り取る HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - カラー補正 HISTORY_MSG_COLORTONING_LABREGION_AB;CT - 色の補正 +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - 色チャンネル HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - 色度のマスク HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - 色相のマスク HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - 明度 HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - 輝度のマスク HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - リスト +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - マスクぼかし +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - オフセット +HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - 強化 HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - 彩度 HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - マスクの表示 +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - スロープ HISTORY_MSG_DEHAZE_DEPTH;霞除去 - 深度 HISTORY_MSG_DEHAZE_ENABLED;霞除去 HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;霞除去 - 深度マップの表示 @@ -1065,9 +1070,15 @@ PARTIALPASTE_VIBRANCE;自然な彩度 PARTIALPASTE_VIGNETTING;周辺光量補正 PARTIALPASTE_WHITEBALANCE;ホワイトバランス PREFERENCES_ADD;追加 +PREFERENCES_APPEARANCE;外観 +PREFERENCES_APPEARANCE_COLORPICKERFONT;カラーピッカーのフォント +PREFERENCES_APPEARANCE_CROPMASKCOLOR;切り抜きのマスクカラー +PREFERENCES_APPEARANCE_MAINFONT;メインフォント PREFERENCES_APPEARANCE_NAVGUIDECOLOR;ナビゲーターのガイドカラー +PREFERENCES_APPEARANCE_THEME;テーマ PREFERENCES_APPLNEXTSTARTUP;要再起動 PREFERENCES_AUTOMONPROFILE;OSのメインモニター・プロファイルを使用 +PREFERENCES_AUTOSAVE_TP_OPEN;プログラム終了時の機能パネルの開閉状態を保存 PREFERENCES_BATCH_PROCESSING;バッチ処理 PREFERENCES_BEHADDALL;すべて '追加' PREFERENCES_BEHADDALLHINT;すべてのパラメータを 追加モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に加算されます @@ -1080,12 +1091,12 @@ PREFERENCES_CACHECLEAR_ALL;cacheに入れられたファイルを全てクリア PREFERENCES_CACHECLEAR_ALLBUTPROFILES;cacheに入れた処理プロファイル以外をクリア: PREFERENCES_CACHECLEAR_ONLYPROFILES;cacheに入れた処理プロファイルだけをクリア: PREFERENCES_CACHECLEAR_SAFETY;casheに入れたファイルだけをクリア。元画像に付随した処理プロファイルはそのまま -PREFERENCES_CACHEMAXENTRIES;キャッシュエントリーの最大数 +PREFERENCES_CACHEMAXENTRIES;cacheに入れるファイルの最大数 PREFERENCES_CACHEOPTS;cache オプション PREFERENCES_CACHETHUMBHEIGHT;サムネイル縦の最大値 PREFERENCES_CLIPPINGIND;クリッピング領域の表示 PREFERENCES_CLUTSCACHE;HaldCLUT cache -PREFERENCES_CLUTSCACHE_LABEL;cacheに置けるHaldCLUTの最大数 +PREFERENCES_CLUTSCACHE_LABEL;cacheに入れるHaldCLUTの最大数 PREFERENCES_CLUTSDIR;HaldCLUTのディレクトリー PREFERENCES_CMMBPC;ブラックポイントの補正 PREFERENCES_CROP;切り抜き画像の編集 @@ -1126,6 +1137,7 @@ PREFERENCES_EDITORCMDLINE;カスタムコマンドライン PREFERENCES_EDITORLAYOUT;編集 レイアウト PREFERENCES_EXTERNALEDITOR;外部エディタ PREFERENCES_FBROWSEROPTS;ファイルブラウザ/サムネイルのオプション +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;ファイルブラウザのツールバーを圧縮 PREFERENCES_FILEFORMAT;ファイル形式 PREFERENCES_FLATFIELDFOUND;検出 PREFERENCES_FLATFIELDSDIR;フラットフィールド・ディレクトリ @@ -1223,13 +1235,13 @@ PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;現在の画像のズームレベルとパ PREFERENCES_SAVE_TP_OPEN_NOW;機能パネルの今の開閉状態を保存する PREFERENCES_SELECTLANG;言語選択 PREFERENCES_SERIALIZE_TIFF_READ;TIFFファイルの読み込み設定 -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;TIFFファイルのシリアル化 +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;TIFFファイルの読み込みをシリアライズ PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;画像フォルダーが多数の非圧縮のTIFFファイルで閉められている場合、このオプションを有効にすることで、サムネイル画像生成の効率が上がります PREFERENCES_SET;設定 PREFERENCES_SHOWBASICEXIF;基本Exif情報を表示 PREFERENCES_SHOWDATETIME;日付表示 PREFERENCES_SHOWEXPOSURECOMPENSATION;露光補正追加 -PREFERENCES_SHOWFILMSTRIPTOOLBAR;画像スライドのツールバーを表示する +PREFERENCES_SHOWFILMSTRIPTOOLBAR;画像スライドにツールバーを表示する PREFERENCES_SHTHRESHOLD;シャドウ・クリッピング領域のしきい値 PREFERENCES_SINGLETAB;シングルタブモードモード PREFERENCES_SINGLETABVERTAB;シングル編集タブモード, 垂直タブ @@ -1407,6 +1419,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;左右反転 TP_COARSETRAF_TOOLTIP_ROTLEFT;90度左回転\nショートカット: [\n\nシングル・エディタ・タブのショートカット: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;90度右回転\nショートカット: ]\n\nシングル・エディタ・タブのショートカット: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;上下反転 +TP_COLORAPP_ABSOLUTELUMINANCE;絶対輝度 TP_COLORAPP_ALGO;アルゴリズム TP_COLORAPP_ALGO_ALL;すべて TP_COLORAPP_ALGO_JC;明度 + 色度 (JC) @@ -1417,6 +1430,7 @@ TP_COLORAPP_BADPIXSL;ホット/バッドピクセルフィルター TP_COLORAPP_BADPIXSL_TOOLTIP;明るい部分のホット/バッドピクセルを圧縮します\n 0は効果なし 1は中間 2はガウスほかし\n\nこれらアーティファクトはCIECAM02の限界に起因するものです。色域を抑制する代わりに、イメージに暗い影が現れるのを防ぎます TP_COLORAPP_BRIGHT;明るさ (Q) TP_COLORAPP_BRIGHT_TOOLTIP;CIECAM02の明るさは L*a*b*やRGBとは異なり、白の輝度を計算に入れます +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;設定を手動で行う場合、65以上の設定値を推奨 TP_COLORAPP_CHROMA;色度 (C) TP_COLORAPP_CHROMA_M;鮮やかさ (M) TP_COLORAPP_CHROMA_M_TOOLTIP;CIECAM02の鮮やかさは L*a*b*やRGBの鮮やかさとは異なります @@ -1447,6 +1461,7 @@ TP_COLORAPP_LABEL_SCENE;撮影環境条件 TP_COLORAPP_LABEL_VIEWING;観視条件 TP_COLORAPP_LIGHT;明度 (J) TP_COLORAPP_LIGHT_TOOLTIP;CIECAM02の明度は L*a*b*やRGBの明度とは異なります +TP_COLORAPP_MEANLUMINANCE;中間輝度 (Yb%) TP_COLORAPP_MODEL;ホワイトポイント・モデル TP_COLORAPP_MODEL_TOOLTIP;WB [RT] + [出力]:\nRTのホワイトバランスは、撮影環境に使用されます。CIECAM02はD50の設定, 出力デバイスのホワイトバランスは「環境設定」の「カラーマネジメント」の設定\n\nWB [RT+CAT02] + [出力]:\nRTのホワイトバランス設定は、CAT02で使用され、出力デバイスのホワイトバランスは環境設定の値を使用します TP_COLORAPP_NEUTRAL;リセット @@ -1490,14 +1505,23 @@ TP_COLORTONING_LABGRID;L*a*b*カラー補正グリッド TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 TP_COLORTONING_LABREGIONS;L*a*b*の補正領域 TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;色チャンネル +TP_COLORTONING_LABREGION_CHANNEL_ALL;全ての色チャンネル +TP_COLORTONING_LABREGION_CHANNEL_B;ブルー +TP_COLORTONING_LABREGION_CHANNEL_G;グリーン +TP_COLORTONING_LABREGION_CHANNEL_R;レッド TP_COLORTONING_LABREGION_CHROMATICITYMASK;色度 TP_COLORTONING_LABREGION_HUEMASK;色相 TP_COLORTONING_LABREGION_LIGHTNESS;明度 TP_COLORTONING_LABREGION_LIGHTNESSMASK;明度 TP_COLORTONING_LABREGION_LIST_TITLE;補正 TP_COLORTONING_LABREGION_MASK;マスク +TP_COLORTONING_LABREGION_MASKBLUR;マスクぼかし +TP_COLORTONING_LABREGION_OFFSET;オフセット +TP_COLORTONING_LABREGION_POWER;強化 TP_COLORTONING_LABREGION_SATURATION;彩度 TP_COLORTONING_LABREGION_SHOWMASK;マスクの表示 +TP_COLORTONING_LABREGION_SLOPE;スロープ TP_COLORTONING_LUMA;明度 TP_COLORTONING_LUMAMODE;明度を維持 TP_COLORTONING_LUMAMODE_TOOLTIP;カラー(レッド、グリーン、シアン、ブルーなど)を変える際に、これを有効にすると、各ピクセルの明度は維持されます。 @@ -1537,6 +1561,8 @@ TP_CROP_GUIDETYPE;ガイドタイプ: TP_CROP_H;高さ TP_CROP_LABEL;切り抜き TP_CROP_PPI;PPI= +TP_CROP_RESETCROP;リセット +TP_CROP_SELECTCROP;セレクト TP_CROP_W;W 幅 TP_CROP_X;X TP_CROP_Y;Y @@ -1782,7 +1808,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;色度スライダーとCCカーブを使用するこ TP_LENSGEOM_AUTOCROP;自動的に切り抜き選択 TP_LENSGEOM_FILL;オートフィル TP_LENSGEOM_LABEL;レンズ / ジオメトリ +TP_LENSPROFILE_CORRECTION_AUTOMATCH;自動で +TP_LENSPROFILE_CORRECTION_LCPFILE;LCPファイル +TP_LENSPROFILE_CORRECTION_MANUAL;手動で TP_LENSPROFILE_LABEL;レンズ補正 プロファイル +TP_LENSPROFILE_LENS_WARNING;注意:レンズプロファイルに使われるクロップファクターはカメラのクロップファクターより大きいので、誤った結果になる可能性があります。 +TP_LENSPROFILE_MODE_HEADER;レンズプロファイルを選択 +TP_LENSPROFILE_USE_CA;色収差 +TP_LENSPROFILE_USE_GEOMETRIC;歪曲収差 +TP_LENSPROFILE_USE_HEADER;補正する収差を選択: +TP_LENSPROFILE_USE_VIGNETTING;周辺光量 TP_LOCALCONTRAST_AMOUNT;量 TP_LOCALCONTRAST_DARKNESS;暗い部分のレベル TP_LOCALCONTRAST_LABEL;ローカルコントラスト @@ -1825,6 +1860,7 @@ TP_PRSHARPENING_LABEL;リサイズ後のシャープ化 TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。 TP_RAWCACORR_AUTO;自動補正 TP_RAWCACORR_AUTOIT;繰り返し +TP_RAWCACORR_AUTOIT_TOOLTIP;”自動補正”が有効になっている場合にこの設定が可能です。\n自動補正の作用は控えめなため、全ての色収差が常に補正されるとは限りません。\n残りの色収差を補正するためには、自動色収差補正の繰り返しを最大5回行います。\n繰り返すたびに、直前の繰り返しで残った色収差を軽減しますが、その分処理時間は増えます。 TP_RAWCACORR_AVOIDCOLORSHIFT;色ずれを回避 TP_RAWCACORR_CABLUE;ブルー TP_RAWCACORR_CARED;レッド @@ -1929,6 +1965,7 @@ TP_RESIZE_WIDTH;幅 TP_RETINEX_CONTEDIT_HSL;ヒストグラムイコライザ HSL TP_RETINEX_CONTEDIT_LAB;ヒストグラムイコライザ L*a*b* TP_RETINEX_CONTEDIT_LH;色相イコライザ +TP_RETINEX_CONTEDIT_MAP;イコライザ TP_RETINEX_CURVEEDITOR_CD;輝度=f(輝度) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;輝度に応じた輝度の関数 L=f(L)\nハロとアーティファクトを減らすためにrawデータを補正します TP_RETINEX_CURVEEDITOR_LH;強さ=f(色相) @@ -1966,6 +2003,7 @@ TP_RETINEX_LABEL;レティネックス TP_RETINEX_LABEL_MASK;マスク TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;低 +TP_RETINEX_MAP;方式 TP_RETINEX_MAP_GAUS;ガウシアンマスク TP_RETINEX_MAP_MAPP;シャープマスク (一部ウェーブレット) TP_RETINEX_MAP_MAPT;シャープマスク (全てウェーブレット) @@ -2275,6 +2313,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;モード +TP_WBALANCE_PICKER;ピック TP_WBALANCE_SHADE;日陰 TP_WBALANCE_SIZE;サイズ: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2297,46 +2336,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: + ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel -!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur -!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset -!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope -!PREFERENCES_APPEARANCE;Appearance -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser -!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance -!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. -!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORTONING_LABREGION_CHANNEL;Channel -!TP_COLORTONING_LABREGION_CHANNEL_ALL;All -!TP_COLORTONING_LABREGION_CHANNEL_B;Blue -!TP_COLORTONING_LABREGION_CHANNEL_G;Green -!TP_COLORTONING_LABREGION_CHANNEL_R;Red -!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur -!TP_COLORTONING_LABREGION_OFFSET;Offset -!TP_COLORTONING_LABREGION_POWER;Power -!TP_COLORTONING_LABREGION_SLOPE;Slope -!TP_CROP_RESETCROP;Reset -!TP_CROP_SELECTCROP;Select -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically -!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually -!TP_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. -!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -!TP_LENSPROFILE_USE_CA;Chromatic aberration -!TP_LENSPROFILE_USE_GEOMETRIC;Geometric -!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: -!TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. -!TP_RETINEX_CONTEDIT_MAP;Equalizer -!TP_RETINEX_MAP;Method -!TP_WBALANCE_PICKER;Pick From 9362f13fccfe0ac0f80ae8bfcd37073c3507b37b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 1 Dec 2018 13:20:30 +0100 Subject: [PATCH 254/348] Wrong border interpolation when using DCB with raw border = 0, fixes #5047 --- rtengine/demosaic_algos.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index a324a7ca6..8e726738e 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -3083,6 +3083,7 @@ BENCHFUN free(buffer0); } + border_interpolate2(W, H, 1, rawData, red, green, blue); if(plistener) { plistener->setProgress (1.0); } From 4673ae3b24baf966054c6b22ba0bf99924eb4a96 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 1 Dec 2018 13:32:51 +0100 Subject: [PATCH 255/348] Wrong border interpolation when using IGV, fixes #5048 --- rtengine/demosaic_algos.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 8e726738e..aa763f01f 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -1425,8 +1425,6 @@ void RawImageSource::igv_interpolate(int winw, int winh) chr[2] = hdif; chr[3] = vdif; - border_interpolate2(winw, winh, 7, rawData, red, green, blue); - if (plistener) { plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::IGV))); plistener->setProgress (0.0); @@ -1781,6 +1779,7 @@ void RawImageSource::igv_interpolate(int winw, int winh) } } }// End of parallelization + border_interpolate2(winw, winh, 8, rawData, red, green, blue); if (plistener) { plistener->setProgress (1.0); @@ -1815,8 +1814,6 @@ void RawImageSource::igv_interpolate(int winw, int winh) vdif = (float (*)) calloc(width * height / 2, sizeof * vdif); hdif = (float (*)) calloc(width * height / 2, sizeof * hdif); - border_interpolate2(winw, winh, 7, rawData, red, green, blue); - if (plistener) { plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::IGV))); plistener->setProgress (0.0); @@ -2045,6 +2042,8 @@ void RawImageSource::igv_interpolate(int winw, int winh) blue [row][col] = CLIP(rgb[1][indx] - 65535.f * chr[1][indx]); } }// End of parallelization + border_interpolate2(winw, winh, 8, rawData, red, green, blue); + if (plistener) { plistener->setProgress (1.0); From 89f09b6ad6afae89ba98b81e6a15b86dbe9f7854 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 1 Dec 2018 14:00:51 +0100 Subject: [PATCH 256/348] better raw crop for Canon PowerShot A3100 IS --- rtengine/camconst.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 2113c5532..637a3a61d 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1131,6 +1131,10 @@ Camera constants: }, // Canon Powershot + { // Quality C, CHDK DNGs, raw frame correction + "make_model": "Canon PowerShot A3100 IS", + "raw_crop": [ 24, 12, 4032, 3024 ] // full size 4036X3026 + }, { // Quality C, CHDK DNGs, raw frame corrections, experimental infrared support commented out "make_model": "Canon PowerShot A480", From 5c73de9f83b6d35dc85e215f5debacc2311afe04 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 1 Dec 2018 14:20:31 +0100 Subject: [PATCH 257/348] better raw crop for Canon PowerShot SX150 IS --- rtengine/camconst.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 637a3a61d..022ca6e86 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1217,6 +1217,11 @@ Camera constants: "ranges": { "white": 4050 } // nominal 4080-4093 }, + { // Quality C + "make_model": "Canon PowerShot SX150 IS", + "raw_crop": [ 26, 10, 4364, 3254 ] // cut 2pix left and right + }, + { // Quality C "make_model": "Canon PowerShot SX220 HS", "raw_crop": [ 92, 16, 4072, 3042 ] // Cut 2pix at lower border because of too high values in blue channel From e29ff3cce2ab5c8922b1468aa0e6a88255a1486f Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 1 Dec 2018 11:47:47 +0100 Subject: [PATCH 258/348] crop: added new locked ratio "Current" --- rtdata/languages/default | 1 + rtgui/crop.cc | 79 +++++++++++++++++++++++++++++++++++----- rtgui/crop.h | 4 +- 3 files changed, 73 insertions(+), 11 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 10c8ed730..da79ec3ac 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -223,6 +223,7 @@ GENERAL_AUTO;Automatic GENERAL_BEFORE;Before GENERAL_CANCEL;Cancel GENERAL_CLOSE;Close +GENERAL_CURRENT;Current GENERAL_DISABLE;Disable GENERAL_DISABLED;Disabled GENERAL_ENABLE;Enable diff --git a/rtgui/crop.cc b/rtgui/crop.cc index a6b418bd7..a06965840 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -52,12 +52,29 @@ int notifyListenerUI (void* data) return 0; } + +inline void get_custom_ratio(int w, int h, double &rw, double &rh) +{ + if (w < h) { + double r = double(h) / double(w); + int rr = r * 100 + 0.5; + rw = 1.0; + rh = rr / 100.0; + } else { + double r = double(w) / double(h); + int rr = r * 100 + 0.5; + rw = rr / 100.0; + rh = 1.0; + } } +} // namespace + Crop::Crop(): FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true), crop_ratios{ {M("GENERAL_ASIMAGE"), 0.0}, + {M("GENERAL_CURRENT"), -1.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 @@ -176,10 +193,17 @@ Crop::Crop(): guide = Gtk::manage (new MyComboBoxText ()); setExpandAlignProperties(guide, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - + + customRatioLabel = Gtk::manage(new Gtk::Label("")); + customRatioLabel->hide(); + Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); + hb->pack_start(*orientation); + hb->pack_start(*customRatioLabel); + + settingsgrid->set_column_homogeneous(true); settingsgrid->attach (*fixr, 0, 0, 1, 1); settingsgrid->attach (*ratio, 1, 0, 1, 1); - settingsgrid->attach (*orientation, 2, 0, 1, 1); + settingsgrid->attach (*hb, 2, 0, 1, 1); settingsgrid->attach (*guidelab, 0, 1, 1, 1); settingsgrid->attach (*guide, 1, 1, 2, 1); pack_start (*settingsgrid, Gtk::PACK_SHRINK, 0 ); @@ -349,13 +373,6 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) setDimensions (pp->crop.x + pp->crop.w, pp->crop.y + pp->crop.h); } - 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 > 0 && crop_ratios[ratio->get_active_row_number()].value < 1.0; if (pp->crop.orientation == "Landscape") { @@ -396,6 +413,20 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) nw = pp->crop.w; nh = pp->crop.h; + customRatioLabel->hide(); + orientation->show(); + if (pp->crop.ratio == "As Image") { + ratio->set_active(0); + } else if (pp->crop.ratio == "Current") { + ratio->set_active(1); + updateCurrentRatio(); + customRatioLabel->show(); + orientation->hide(); + } else { + ratio->set_active_text (pp->crop.ratio); + } + fixr->set_active (pp->crop.fixratio); + lastRotationDeg = pp->coarse.rotate; wDirty = false; @@ -448,7 +479,13 @@ void Crop::write (ProcParams* pp, ParamsEdited* pedited) pp->crop.w = nw; pp->crop.h = nh; pp->crop.fixratio = fixr->get_active (); - pp->crop.ratio = ratio->get_active_text (); + if (ratio->get_active_row_number() == 0) { + pp->crop.ratio = "As Image"; + } else if (ratio->get_active_row_number() == 1) { + pp->crop.ratio = "Current"; + } else { + 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 > 0 && crop_ratios[ratio->get_active_row_number()].value < 1.0; @@ -701,6 +738,15 @@ void Crop::ratioFixedChanged () // change to orientation or ration void Crop::ratioChanged () { + if (ratio->get_active_row_number() == 1) { + orientation->hide(); + updateCurrentRatio(); + customRatioLabel->show(); + } else { + orientation->show(); + customRatioLabel->hide(); + } + if (!fixr->get_active ()) { fixr->set_active(true); // will adjust ratio anyway } else { @@ -880,6 +926,10 @@ bool Crop::refreshSpins (bool notify) wconn.block (false); hconn.block (false); + if (ratio->get_active_row_number() == 1 && !fixr->get_active()) { + updateCurrentRatio(); + } + refreshSize (); if (notify) { @@ -1405,3 +1455,12 @@ void Crop::setBatchMode (bool batchMode) removeIfThere (methodgrid, selectCrop); removeIfThere (methodgrid, resetCrop); } + + +void Crop::updateCurrentRatio() +{ + double rw, rh; + get_custom_ratio(w->get_value(), h->get_value(), rw, rh); + customRatioLabel->set_text(Glib::ustring::compose("%1:%2", rw, rh)); + crop_ratios[1].value = double(w->get_value())/double(h->get_value()); +} diff --git a/rtgui/crop.h b/rtgui/crop.h index a16683d1b..ed0661598 100644 --- a/rtgui/crop.h +++ b/rtgui/crop.h @@ -95,9 +95,10 @@ private: double value; }; - const std::vector crop_ratios; + std::vector crop_ratios; void adjustCropToRatio(); + void updateCurrentRatio(); Gtk::CheckButton* fixr; MyComboBoxText* ratio; @@ -117,6 +118,7 @@ private: Gtk::Label* sizein; Gtk::Grid* ppigrid; Gtk::Grid* methodgrid; + Gtk::Label *customRatioLabel; int maxw, maxh; double nx, ny; From 96715ba7b387b476f444032e58159c32cc7f34bd Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 1 Dec 2018 09:44:19 -0800 Subject: [PATCH 259/348] macOS: Update lensfun version, copy some libs Copies 2 libs not picked up by the routine and bumps the lensfun dylib version. --- tools/osx/macosx_bundle.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index e5c9d0bd3..7dd6f212c 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -152,12 +152,18 @@ done ditto {"${GTK_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme "${GTK_PREFIX}/bin/gtk-update-icon-cache-3.0" "${RESOURCES}/share/icons/Adwaita" +# Copy libjpeg-turbo into the app bundle +cp /opt/local/lib/libjpeg.62.dylib "${RESOURCES}/../Frameworks" + +# Copy libtiff into the app bundle +cp /opt/local/lib/libtiff.5.dylib "${RESOURCES}/../Frameworks" + # Copy the Lensfun database into the app bundle mkdir -p "${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" +cp /opt/local/lib/liblensfun.2.dylib "${RESOURCES}/../Frameworks" # Copy libiomp5 to Frameworks cp /opt/local/lib/libomp/libiomp5.dylib "${RESOURCES}/../Frameworks" From 96c53ca566a8bfffaed5d10bdc5c4856ae517d80 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Sat, 1 Dec 2018 11:37:59 -0800 Subject: [PATCH 260/348] mac: specify HFS+ filesystem for dmg Fixes incompatibility between generated dmg on macos 10.14 and trying to open in 10.11. --- tools/osx/macosx_bundle.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 7dd6f212c..1413b5d76 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -234,7 +234,7 @@ function CreateDmg { fi msg "Creating disk image:" - hdiutil create -format UDBZ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" + hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" # Sign disk image codesign --deep --force -v -s "${CODESIGNID}" "${dmg_name}.dmg" From bb428421f2549944623a75cce88990c985d13011 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 1 Dec 2018 21:00:26 +0100 Subject: [PATCH 261/348] better raw crop for LG mobile LG-H815 --- rtengine/camconst.json | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 022ca6e86..1b2d0cdfa 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1352,6 +1352,7 @@ Camera constants: "make_model": "LG mobile LG-H815", "dcraw_matrix": [ 5859,547,-1250,-6484,15547,547,-2422,5625,3906 ], // DNG D65 //"dcraw_matrix": [ 11563,-2891,-3203,-5313,15625,625,-781,2813,5625 ], // DNG A + "raw_crop": [ 0, 0, 5312, 2986 ], // cropped last two rows because last row was garbage "ranges": { "white": 1000 } }, { // Quality C From f38f0b0ef77f7808100ea8bb52a4d2d95c089ae0 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 1 Dec 2018 21:18:12 +0100 Subject: [PATCH 262/348] Be less restrictive regarding variance in pass 2 of dual demosaic auto contrast threshold calculation --- rtengine/rt_algo.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index 22ea5c76b..3925fc1ec 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -282,7 +282,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr Lum[i][j] = luminance[i + minY][j + minX]; } } - contrastThreshold = (pass == 0 || minvar <= 2.f) ? calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f : 0.f; + contrastThreshold = (pass == 0 || minvar <= 4.f) ? calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f : 0.f; break; } } From c75a0d6bd7bf53b6a48ec0d6a62447c0cd25c939 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sat, 1 Dec 2018 22:30:11 +0100 Subject: [PATCH 263/348] do not apply "filmlike_clip" in rgbProc when clampOOG is false --- rtengine/improcfun.cc | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index d368eb0cd..bf35bee70 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -2450,20 +2450,6 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer btemp[ti * TS + tj] = b; } } - } else { - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - // 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 (OOG(max(r, g, b)) && !OOG(min(r, g, b))) { - filmlike_clip(&r, &g, &b); - } - setUnlessOOG(rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], r, g, b); - } - } } if (histToneCurveThr) { From d7d823e41b4550745358bf8a8e53af0a00185da5 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 01:27:41 +0100 Subject: [PATCH 264/348] Added support for Panasonic DC-LX100M2 Preliminary support, no white frames available yet. Issue #5049 --- rtengine/camconst.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 1b2d0cdfa..7aab3b0bd 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1694,6 +1694,13 @@ Camera constants: "global_green_equilibration" : true }, + { // Quality X + "make_model": [ "Panasonic DC-LX100M2" ], + "dcraw_matrix": [ 11577, -4230, -1106, -3967, 12211, 1957, -758, 1762, 5610 ], // Adobe DNG Converter 11.0 ColorMatrix2 + "raw_crop": [ 0, 0, 0, 0 ], + "ranges": { "black": 15 } + }, + { // Quality C, proper ISO 100-125-160 samples missing, pixelshift files have no black offset etc. #4574 "make_model": [ "Panasonic DC-G9" ], "dcraw_matrix": [ 7685, -2375, -634, -3687, 11700, 2249, -748, 1546, 5111 ], // Adobe DNG Converter 10.3 ColorMatrix2 From 15638548154a5514f983578fe48beea1e15f0c07 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 02:02:53 +0100 Subject: [PATCH 265/348] Lensfun crop factor warning icon Replaced inconsistnent stock "dialog-warning" icon with custom warning.png --- rtdata/images/themed/png/dark/warning.png | Bin 0 -> 560 bytes rtdata/images/themed/png/light/warning.png | Bin 0 -> 579 bytes rtdata/images/themed/svg/warning.svg | 134 +++++++++++++++++++++ rtgui/lensprofile.cc | 7 +- 4 files changed, 137 insertions(+), 4 deletions(-) create mode 100644 rtdata/images/themed/png/dark/warning.png create mode 100644 rtdata/images/themed/png/light/warning.png create mode 100644 rtdata/images/themed/svg/warning.svg diff --git a/rtdata/images/themed/png/dark/warning.png b/rtdata/images/themed/png/dark/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc60b95a74a7a08ded216959f195f7210830a9c GIT binary patch literal 560 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA1(mo)lsM-XR2F5XXOu8FJ1aPr zloVwqm6l}Y=jjG#Bo?JQ=4584DrA(D6jnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}ub5#STz>R#Y;=FFK(mo5RxvuDr# z|NkGzfUqHqbLY<8x^)Z421-EyG8-oLzh=rhRiK#?B|(0{46z&wi=XvwR$JpB!S5}m zs@b$I%wzAJ#gh+iF9oWZ=jq}YqH%udq}xKx3Op`>2Y9)(;{N~l_s((E*i$l#J)tbI zSgl#$f5`Q#rR+OqnBy}7ANYP=o#oA4oPAKnl1}6-6gd+xhS&$WFSLOVtGhLYEfcAYN|qJa(lV!_B$IXpd!u!kH}&M2EHR8%s5q>PZ}r~7~m7)>R#X@Cnu+>s;Z)*0wn+c z{|{jR+3M=*5OFm%HMkT|0R#Y*!I&UgNl6L9O}k@!8ECk4NswPK1INPr)z5l2tBJbA zR|K!vAf~F>#Ix7qj!kIz_q~z=KxIokT^vI+&M%#GlCRl-$Ax{B*uG=3lT{zuhI*&wP@{tRBS-8P6qF*6BUUemxVj7A#Bo@0OaF8+b|V z_3ofjuhOgU>KA75c=28^{M2{q-iw2Vn-;KrSlsZevu4`b*H>lwo&+*x*VZY-YrMbC zTCrHJKeh9fQ~vvva+42l%bd4-^3lp^YPK&O&rjiHJ3UA5=lA&^88^&fJDMY_dmQLs N22WQ%mvv4FO#pM3 + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index ae8bbb7fe..a3dbc2e63 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -55,7 +55,7 @@ LensProfilePanel::LensProfilePanel() : lensfunCameras(Gtk::manage((new MyComboBox()))), lensfunLensesLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_LENS"))))), lensfunLenses(Gtk::manage((new MyComboBox()))), - warning(Gtk::manage((new Gtk::Image()))), + warning(Gtk::manage(new RTImage("warning.png"))), ckbUseDist(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))))), ckbUseVign(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))))), ckbUseCA(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))))) @@ -65,12 +65,12 @@ LensProfilePanel::LensProfilePanel() : } // Main containers: - + Gtk::Frame *nodesFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_MODE_HEADER"))); modesGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - + Gtk::Frame *distFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_USE_HEADER"))); distGrid->get_style_context()->add_class("grid-spacing"); @@ -104,7 +104,6 @@ LensProfilePanel::LensProfilePanel() : lensesCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; lensesCellRenderer->property_ellipsize_set() = true; - warning->set_from_icon_name("dialog-warning", Gtk::ICON_SIZE_LARGE_TOOLBAR); warning->set_tooltip_text(M("TP_LENSPROFILE_LENS_WARNING")); warning->hide(); From d6bdce3417bbd55e02c6cc2aebaba68aeadf1b2d Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 2 Dec 2018 13:29:48 +0100 Subject: [PATCH 266/348] Lens profile bug fix When changed distortion the profile changed too. Fixed --- rtgui/lensprofile.cc | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index a3dbc2e63..d421632a9 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -247,8 +247,6 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa setLensfunLens(pp->lensProf.lfLens); } - lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; - useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; /* if (!batchMode && !checkLensfunCanCorrect(true)) { @@ -286,6 +284,9 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa ckbUseCA->set_sensitive(true); } + lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; + useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; + updateLensfunWarning(); enableListener(); conUseDist.block(false); @@ -478,9 +479,10 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) Glib::ustring mode; if (rbChanged == corrOffRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; - lcpFileChanged = true; + lcpFileChanged = false; ckbUseDist->set_sensitive(false); ckbUseVign->set_sensitive(false); @@ -489,13 +491,12 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) mode = M("GENERAL_NONE"); } else if (rbChanged == corrLensfunAutoRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; lensfunCameraChanged = true; lensfunLensChanged = true; - lcpFileChanged = true; - useDistChanged = true; - useVignChanged = true; + lcpFileChanged = false; ckbUseDist->set_sensitive(true); ckbUseVign->set_sensitive(true); @@ -514,19 +515,18 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) setLensfunLens(l.getLens()); } if (disabled) { - enableListener(); + enableListener(); } mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); } else if (rbChanged == corrLensfunManualRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; lensfunCameraChanged = true; lensfunLensChanged = true; - lcpFileChanged = true; - useDistChanged = true; - useVignChanged = true; + lcpFileChanged = false; ckbUseDist->set_sensitive(true); ckbUseVign->set_sensitive(true); @@ -535,17 +535,17 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) mode = M("TP_LENSPROFILE_CORRECTION_MANUAL"); } else if (rbChanged == corrLcpFileRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; - useDistChanged = true; - useVignChanged = true; updateDisabled(true); mode = M("TP_LENSPROFILE_CORRECTION_LCPFILE"); } else if (rbChanged == corrUnchangedRB) { + lcModeChanged = false; useLensfunChanged = false; lensfunAutoChanged = false; lcpFileChanged = false; @@ -559,7 +559,6 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) mode = M("GENERAL_UNCHANGED"); } - lcModeChanged = true; updateLensfunWarning(); if (rbChanged == corrLensfunManualRB || (!batchMode && rbChanged == corrLensfunAutoRB)) { From 61c84b9ee746de9c99151de7b86814dba7d781ba Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 2 Dec 2018 20:29:11 +0100 Subject: [PATCH 267/348] Get rid of windirmonitor --- rtgui/CMakeLists.txt | 2 +- rtgui/dirbrowser.cc | 15 ------ rtgui/dirbrowser.h | 14 ++---- rtgui/filecatalog.cc | 35 ------------- rtgui/filecatalog.h | 14 ------ rtgui/windirmonitor.cc | 109 ----------------------------------------- rtgui/windirmonitor.h | 57 --------------------- 7 files changed, 4 insertions(+), 242 deletions(-) delete mode 100644 rtgui/windirmonitor.cc delete mode 100644 rtgui/windirmonitor.h diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 434e8187e..6ea768a03 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -170,7 +170,7 @@ endif() if(WIN32) set(EXTRA_SRC_CLI myicon.rc) - set(EXTRA_SRC_NONCLI myicon.rc windirmonitor.cc) + set(EXTRA_SRC_NONCLI myicon.rc) set(EXTRA_LIB_RTGUI winmm) include_directories(${EXTRA_INCDIR} ${GIOMM_INCLUDE_DIRS} diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 81ee85fed..e1acbad3e 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -246,16 +246,6 @@ int updateVolumesUI (void* br) return 1; } -void DirBrowser::winDirChanged () -{ - const auto func = [](gpointer data) -> gboolean { - static_cast(data)->updateDirTreeRoot(); - - return FALSE; - }; - - idle_register.add(func, this); -} #endif void DirBrowser::fillRoot () @@ -333,14 +323,9 @@ void DirBrowser::row_expanded (const Gtk::TreeModel::iterator& iter, const Gtk:: expandSuccess = true; } -#ifdef WIN32 - Glib::RefPtr monitor = Glib::RefPtr(new WinDirMonitor (iter->get_value (dtColumns.dirname), this)); - iter->set_value (dtColumns.monitor, monitor); -#else Glib::RefPtr monitor = dir->monitor_directory (); iter->set_value (dtColumns.monitor, monitor); monitor->signal_changed().connect (sigc::bind(sigc::mem_fun(*this, &DirBrowser::file_changed), iter, dir->get_parse_name())); -#endif } void DirBrowser::updateDir (const Gtk::TreeModel::iterator& iter) diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h index 9d004f5f9..15b6dd201 100644 --- a/rtgui/dirbrowser.h +++ b/rtgui/dirbrowser.h @@ -21,16 +21,13 @@ #include #include -#ifdef WIN32 -#include "windirmonitor.h" -#endif #include "guiutils.h" +#ifdef WIN32 +#include "windows.h" +#endif class DirBrowser : public Gtk::VBox -#ifdef WIN32 - , public WinDirChangeListener -#endif { public: typedef sigc::signal DirSelectionSignal; @@ -45,11 +42,7 @@ private: Gtk::TreeModelColumn > icon1; Gtk::TreeModelColumn > icon2; Gtk::TreeModelColumn dirname; -#ifdef WIN32 - Gtk::TreeModelColumn > monitor; -#else Gtk::TreeModelColumn > monitor; -#endif DirTreeColumns() { @@ -89,7 +82,6 @@ public: void updateVolumes (); void updateDirTree (const Gtk::TreeModel::iterator& iter); void updateDirTreeRoot (); - void winDirChanged () override; private: void addRoot (char letter); #endif diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 0b45d3e3d..305b3985e 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -459,9 +459,6 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : } selectedDirectory = ""; -#ifdef WIN32 - wdMonitor = NULL; -#endif } FileCatalog::~FileCatalog() @@ -540,21 +537,10 @@ void FileCatalog::closeDir () exportPanel->set_sensitive (false); } -#ifndef WIN32 - if (dirMonitor) { dirMonitor->cancel (); } -#else - - if (wdMonitor) { - delete wdMonitor; - wdMonitor = NULL; - } - -#endif - // ignore old requests ++selectedDirectoryId; @@ -671,12 +657,8 @@ void FileCatalog::dirSelected (const Glib::ustring& dirname, const Glib::ustring filepanel->loadingThumbs(M("PROGRESSBAR_LOADINGTHUMBS"), 0); } -#ifdef WIN32 - wdMonitor = new WinDirMonitor (selectedDirectory, this); -#else dirMonitor = dir->monitor_directory (); dirMonitor->signal_changed().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::on_dir_changed), false)); -#endif } catch (Glib::Exception& ex) { std::cout << ex.what(); } @@ -1748,21 +1730,6 @@ void FileCatalog::reparseDirectory () fileNameList = nfileNameList; } -#ifdef WIN32 - -void FileCatalog::winDirChanged () -{ - const auto func = [](gpointer data) -> gboolean { - static_cast(data)->reparseDirectory(); - - return FALSE; - }; - - idle_register.add(func, this); -} - -#else - void FileCatalog::on_dir_changed (const Glib::RefPtr& file, const Glib::RefPtr& other_file, Gio::FileMonitorEvent event_type, bool internal) { @@ -1777,8 +1744,6 @@ void FileCatalog::on_dir_changed (const Glib::RefPtr& file, const Gli } } -#endif - void FileCatalog::checkAndAddFile (Glib::RefPtr file) { diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index 407535ba0..7e613a2b4 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -19,9 +19,6 @@ #ifndef _FILECATALOG_ #define _FILECATALOG_ -#ifdef WIN32 -#include "windirmonitor.h" -#endif #include "filebrowser.h" #include "exiffiltersettings.h" #include @@ -48,9 +45,6 @@ class FileCatalog : public Gtk::VBox, public FilterPanelListener, public FileBrowserListener, public ExportPanelListener -#ifdef WIN32 - , public WinDirChangeListener -#endif { public: typedef sigc::slot DirSelectionSlot; @@ -142,11 +136,7 @@ private: std::set editedFiles; guint modifierKey; // any modifiers held when rank button was pressed -#ifndef _WIN32 Glib::RefPtr dirMonitor; -#else - WinDirMonitor* wdMonitor; -#endif IdleRegister idle_register; @@ -288,11 +278,7 @@ public: void showToolBar(); void hideToolBar(); -#ifndef _WIN32 void on_dir_changed (const Glib::RefPtr& file, const Glib::RefPtr& other_file, Gio::FileMonitorEvent event_type, bool internal); -#else - void winDirChanged (); -#endif }; diff --git a/rtgui/windirmonitor.cc b/rtgui/windirmonitor.cc deleted file mode 100644 index 1888d9405..000000000 --- a/rtgui/windirmonitor.cc +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * 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 "windirmonitor.h" -#include "options.h" - -static void CALLBACK current_directory_monitor_callback (DWORD error, DWORD nBytes, LPOVERLAPPED lpOverlapped) -{ - DWORD dwOffset = 0; - FILE_NOTIFY_INFORMATION* pInfo = NULL; - - WinDirMonitor::MonitorData* monData = (WinDirMonitor::MonitorData*)lpOverlapped; - - if (!nBytes) { - delete monData; - return; - } - - bool notify = false; - - // Analysis of the modifications. Let only parsed file extensions emit a notify, not PP3 changes - do { - // Get a pointer to the first change record... - pInfo = (FILE_NOTIFY_INFORMATION*) &monData->file_notify_buffer[dwOffset]; - - char fnameC[(MAX_PATH + 1) * 2] = {0}; - int strLen = WideCharToMultiByte(CP_UTF8, 0, pInfo->FileName, pInfo->FileNameLength / sizeof(WCHAR), fnameC, sizeof(fnameC), 0, 0); - fnameC[strLen] = 0; - Glib::ustring fname = fnameC; - - if (options.has_retained_extention(fname)) { - notify = true; - } - - // More than one change may happen at the same time. Load the next change and continue... - dwOffset += pInfo->NextEntryOffset; - } while (!notify && pInfo->NextEntryOffset != 0); - - // ReadDirectoryChangesW sometimes emits multiple events per change (one for each change type) - // To make sure it's not flooding update, this gets filtered. - DWORD curTick = GetTickCount(); - - if (notify && monData->listener && (curTick - monData->lastTimeUpdateTick) > 500) { - monData->lastTimeUpdateTick = curTick; - monData->listener->winDirChanged (); - } - - ReadDirectoryChangesW (monData->hDirectory, - monData->file_notify_buffer, - monData->buffer_allocated_bytes, - FALSE, - FILE_NOTIFY_CHANGE_FILE_NAME | - FILE_NOTIFY_CHANGE_DIR_NAME | - FILE_NOTIFY_CHANGE_LAST_WRITE, - &monData->buffer_filled_bytes, - &monData->overlapped, - current_directory_monitor_callback); -} - -WinDirMonitor::WinDirMonitor (Glib::ustring dirName, WinDirChangeListener* listener) : monData(NULL) -{ - wchar_t* wdirname = (wchar_t*)g_utf8_to_utf16 (dirName.c_str(), -1, NULL, NULL, NULL); - HANDLE hDirectory = CreateFileW (wdirname, FILE_LIST_DIRECTORY, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); - g_free (wdirname); - - if (hDirectory != INVALID_HANDLE_VALUE) { - - monData = new MonitorData (); - monData->listener = listener; - monData->buffer_allocated_bytes = 32768; - monData->file_notify_buffer = new char [monData->buffer_allocated_bytes]; - monData->hDirectory = hDirectory; - monData->lastTimeUpdateTick = GetTickCount(); - - ReadDirectoryChangesW (monData->hDirectory, - monData->file_notify_buffer, - monData->buffer_allocated_bytes, - FALSE, - FILE_NOTIFY_CHANGE_FILE_NAME | - FILE_NOTIFY_CHANGE_DIR_NAME | - FILE_NOTIFY_CHANGE_LAST_WRITE, - &monData->buffer_filled_bytes, - &monData->overlapped, - current_directory_monitor_callback); - } -} - -WinDirMonitor::~WinDirMonitor () -{ - - if (monData && monData->hDirectory != INVALID_HANDLE_VALUE) { - CloseHandle (monData->hDirectory); - } -} diff --git a/rtgui/windirmonitor.h b/rtgui/windirmonitor.h deleted file mode 100644 index 8e18b7914..000000000 --- a/rtgui/windirmonitor.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * 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 . - */ -#ifndef _WINDIRMONITOR_ -#define _WINDIRMONITOR_ - -#include -#include - -class WinDirChangeListener -{ -public: - virtual ~WinDirChangeListener() = default; - - virtual void winDirChanged() = 0; -}; - -class WinDirMonitor : public Glib::Object -{ - -public: - struct MonitorData { - OVERLAPPED overlapped; - DWORD buffer_allocated_bytes; - char *file_notify_buffer; - DWORD buffer_filled_bytes; - HANDLE hDirectory; - WinDirChangeListener* listener; - int bigyo; - DWORD lastTimeUpdateTick; // for filtering multiple updates events - }; - -private: - MonitorData* monData; - -public: - WinDirMonitor (Glib::ustring dirName, WinDirChangeListener* listener); - ~WinDirMonitor (); -}; - -#endif - From 562ed3b22a964b6561fcb2bc18dd5a0322a580ce Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 2 Dec 2018 21:07:54 +0100 Subject: [PATCH 268/348] MultiLangMgr::getOSUserLanguage (): get rid of special windows code --- rtgui/multilangmgr.cc | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/rtgui/multilangmgr.cc b/rtgui/multilangmgr.cc index 8d2985436..a439c0602 100644 --- a/rtgui/multilangmgr.cc +++ b/rtgui/multilangmgr.cc @@ -209,27 +209,6 @@ Glib::ustring MultiLangMgr::getOSUserLanguage () { Glib::ustring langName ("default"); -#if defined (WIN32) - - const LCID localeID = GetUserDefaultLCID (); - TCHAR localeName[18]; - - const int langLen = GetLocaleInfo (localeID, LOCALE_SISO639LANGNAME, localeName, 9); - if (langLen <= 0) { - return langName; - } - - localeName[langLen - 1] = '-'; - - const int countryLen = GetLocaleInfo (localeID, LOCALE_SISO3166CTRYNAME, &localeName[langLen], 9); - if (countryLen <= 0) { - return langName; - } - - langName = localeToLang (localeName); - -#elif defined (__linux__) || defined (__APPLE__) - // Query the current locale and force decimal point to dot. const char *locale = getenv("LANG"); if (locale || (locale = setlocale (LC_CTYPE, ""))) { @@ -238,7 +217,5 @@ Glib::ustring MultiLangMgr::getOSUserLanguage () setlocale (LC_NUMERIC, "C"); -#endif - return langName; } From c9e848a896ce546480df9b80700f9307e773da8a Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 21:33:21 +0100 Subject: [PATCH 269/348] Updated rtexif using ExifTool-11.20 --- rtexif/nikonattribs.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index 888bebe5a..84ebd22be 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -1074,6 +1074,7 @@ const std::map NALensDataInterpreter::lenses = { {"C3 34 68 98 38 40 4B 4E", "Sigma 100-400mm f/5-6.3 DG OS HSM | C"}, {"C8 54 62 62 0C 0C 4B 46", "Sigma 85mm f/1.4 DG HSM | A"}, {"C9 48 37 5C 24 24 4B 4E", "Sigma 24-70mm f/2.8 DG OS HSM | A"}, + {"CA 48 27 3E 24 24 DF 4E", "Tamron SP 15-30mm f/2.8 Di VC USD G2 (A041)"}, {"CC 4C 50 68 14 14 4B 06", "Sigma 50-100mm f/1.8 DC HSM | A"}, {"CD 3D 2D 70 2E 3C 4B 0E", "Sigma 18-125mm f/3.8-5.6 DC OS HSM"}, {"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"}, From 4aed2ab1039598694d4602c0bf62c9f44024f32e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 21:55:47 +0100 Subject: [PATCH 270/348] generateTranslationDiffs --- rtdata/languages/Catala | 1 + rtdata/languages/Chinese (Simplified) | 1 + rtdata/languages/Chinese (Traditional) | 1 + rtdata/languages/Czech | 1 + rtdata/languages/Dansk | 1 + rtdata/languages/Deutsch | 5 +++++ rtdata/languages/English (UK) | 1 + rtdata/languages/English (US) | 1 + rtdata/languages/Espanol | 1 + rtdata/languages/Euskara | 1 + rtdata/languages/Francais | 1 + rtdata/languages/Greek | 1 + rtdata/languages/Hebrew | 1 + rtdata/languages/Italiano | 1 + rtdata/languages/Japanese | 5 +++++ rtdata/languages/Latvian | 1 + rtdata/languages/Magyar | 1 + rtdata/languages/Nederlands | 1 + rtdata/languages/Norsk BM | 1 + rtdata/languages/Polish | 1 + rtdata/languages/Polish (Latin Characters) | 1 + rtdata/languages/Portugues (Brasil) | 1 + rtdata/languages/Russian | 1 + rtdata/languages/Serbian (Cyrilic Characters) | 1 + rtdata/languages/Serbian (Latin Characters) | 1 + rtdata/languages/Slovak | 1 + rtdata/languages/Suomi | 1 + rtdata/languages/Swedish | 1 + rtdata/languages/Turkish | 1 + 29 files changed, 37 insertions(+) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index bf1a12876..97a973c02 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1001,6 +1001,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 38c4a37fe..fcbaa3275 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1016,6 +1016,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 4c4e727c1..2f04282e4 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 51873b391..0d23d40c4 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2168,6 +2168,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !DYNPROFILEEDITOR_IMGTYPE_STD;Standard !FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles !FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index beb4f2711..acc41f01d 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -568,6 +568,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 8cc1bc000..a53ab991e 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2405,3 +2405,8 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!GENERAL_CURRENT;Current diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 648eca675..76103b42c 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -339,6 +339,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !GENERAL_BEFORE;Before !GENERAL_CANCEL;Cancel !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_DISABLE;Disable !GENERAL_DISABLED;Disabled !GENERAL_ENABLE;Enable diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index ead6f7abb..cbeccac41 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -224,6 +224,7 @@ !GENERAL_BEFORE;Before !GENERAL_CANCEL;Cancel !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_DISABLE;Disable !GENERAL_DISABLED;Disabled !GENERAL_ENABLE;Enable diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index dfd0bc84b..079f87c1d 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1493,6 +1493,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 33cb478a3..f1c1b3a3c 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 94f0f3fc9..50fb21046 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2298,6 +2298,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!GENERAL_CURRENT;Current !HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel !HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur !HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index d930c3948..1d5ee7fee 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -568,6 +568,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 64b29759a..2bb35e982 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 6b3e6ef4d..14ac71ae7 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1328,6 +1328,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index abc8ae4e7..3681fca15 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2336,3 +2336,8 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: + ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!GENERAL_CURRENT;Current diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 45d06fdd8..2b56c2937 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 9a459d5be..a2a9afd96 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -927,6 +927,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index e9b05ab7f..24d50791d 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2058,6 +2058,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !EXIFPANEL_SHOWALL;Show all !FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles !FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 3db05ead0..aec6c8256 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -568,6 +568,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 1026e9bd1..72d35b7db 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1450,6 +1450,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 7f3271885..909154913 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1450,6 +1450,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index b8d85ed59..ccabad796 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2225,6 +2225,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !DYNPROFILEEDITOR_IMGTYPE_STD;Standard !FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles !FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!GENERAL_CURRENT;Current !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index c930b43d8..6c211244c 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1447,6 +1447,7 @@ 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. !FILECHOOSER_FILTER_PP;Processing profiles !FILECHOOSER_FILTER_SAME;Same format as current photo +!GENERAL_CURRENT;Current !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_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_235;B&W - CM - Auto diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index fe64675c8..accfb139e 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1301,6 +1301,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 9cffebc2f..f0ce781c3 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1301,6 +1301,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 09c4d83db..66debb12b 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -641,6 +641,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 9e05dc05b..8f6ebdc15 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -570,6 +570,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index a063f0516..626afc38b 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1826,6 +1826,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles !FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 36e5033c4..a62704a92 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;Isı !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open From e7923aa5e8ef2a72b6473344765148f0a9483e48 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 2 Dec 2018 22:13:48 +0100 Subject: [PATCH 271/348] Update Deutsch locale --- rtdata/languages/Deutsch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index a53ab991e..09736d74f 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -73,6 +73,7 @@ #72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5 #73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5 #74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5 +#75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -2409,4 +2410,4 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!GENERAL_CURRENT;Current +!GENERAL_CURRENT;Aktuell From 07867aa53b8cd01f72f0c54bb0341ea4c487752a Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 22:21:50 +0100 Subject: [PATCH 272/348] Added missing semicolon to bundled processing profiles --- rtdata/profiles/Auto-Matched Curve - ISO High.pp3 | 4 ++-- rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 | 4 ++-- rtdata/profiles/Standard Film Curve - ISO High.pp3 | 4 ++-- rtdata/profiles/Standard Film Curve - ISO Medium.pp3 | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 index 36dd66908..a3075cfe3 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 @@ -37,8 +37,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 index a391a7d2c..620fdc582 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 @@ -38,8 +38,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto diff --git a/rtdata/profiles/Standard Film Curve - ISO High.pp3 b/rtdata/profiles/Standard Film Curve - ISO High.pp3 index bedc931ee..c3480ec19 100644 --- a/rtdata/profiles/Standard Film Curve - ISO High.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO High.pp3 @@ -38,8 +38,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto diff --git a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 index 6e00d6705..7fad5b3e8 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 @@ -38,8 +38,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto From 05547d0348cd0088f5282dd60863922994063ee8 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 22:22:54 +0100 Subject: [PATCH 273/348] Preparing for release 5.5-rc1 --- RELEASE_NOTES.txt | 66 +++++++++++++++++++----- rtdata/images/non-themed/png/splash.png | Bin 78155 -> 79260 bytes rtdata/images/non-themed/rt-splash.svg | 20 +++---- 3 files changed, 64 insertions(+), 22 deletions(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index c320e61f0..5a6109eb6 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,18 +1,10 @@ -RAWTHERAPEE 5.4-dev RELEASE NOTES +RAWTHERAPEE 5.5-RC1 RELEASE NOTES -This is a development version of RawTherapee. We update the code almost daily. Every few months, once enough changes have accumulated and the code is stabilized, we make a new official release. Every code change between these releases is known as a "development" version, and this is one of them. +This is RawTherapee 5.5 Release Candidate 1, released on 2018-12-03. Start by reading the "Getting Started" article on RawPedia: http://rawpedia.rawtherapee.com/ -While we only commit tested and relatively stable code and so the development versions should be fairly stable, you should be aware that: -- Development versions only had limited testing, so there may be bugs unknown to us. -- You should report these bugs so that they get fixed for the next stable release. See - www.rawpedia.rawtherapee.com/How_to_write_useful_bug_reports -- The way new tools work in the development versions is likely to change as we tweak and tune them, so your processing profiles may produce different results when used in a future stable version. -- Bugs present in the stable versions get fixed in the development versions, and make it into the next stable version when we make a new official release. That means that in some ways the development versions can be "more stable" than the latest stable release. At the same time, new features may introduce new bugs. This is a trade-off you should be aware of. - - NEWS RELEVANT TO PHOTOGRAPHERS RawTherapee supports most raw formats, including Pentax and Sony Pixel Shift, Canon Dual-Pixel, and those from Foveon and X-Trans sensors. @@ -26,7 +18,52 @@ In order to use RawTherapee efficiently you should know that: - There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control. Make sure you familiarize yourself with them on RawPedia's "Keyboard Shortcuts" page! New features since 5.4: -- TODO. +- Filter to remove striping and banding artifacts caused by Phase Detection Auto Focus (PDAF), available for any camera which has a PDAF entry in camconst.json, currently: + - Nikon Z 6 + - Nikon Z 7 + - Sony DSC-RX1RM2 + - Sony ILCE-6000 + - Sony ILCE-6300 + - Sony ILCE-6500 + - Sony ILCE-7M3 + - Sony ILCE-7RM2 + - Sony ILCE-7RM3 + - Sony ILCE-9 +- Out-of-gamut warning compatible with ICC v2 and v4 profiles. +- Ability to specify custom working color spaces through workingspaces.json file. +- Unbounded processing - allows you to decide whether out-of-gamut colors should get clipped. +- Improved support for Canon mRaw format variants. +- New Shadows/Highlights tool (replaced previous one). +- Contrast threshold mask which divides an image into areas of high and low detail, allowing the effect of certain tools to be focused where it matters most and to mitigate the effect on areas where it would be undesirable, for example having the Sharpening tool affect only the in-focus subject without affecting the out-of-focus background. Available for: + - Sharpening + - Post-Resize Sharpening + - Microcontrast + - Demosaicing +- Dual-demosaic algorithms, making use of the new contrast threshold mask, allowing one to use a combination of demosaicing algorithms where one is best for details and the other best for plain areas. +- New color toning methods: + - Grid, allowing you to separately tone the shadows and highlights using two points on a simple color grid. + - Regions, allowing you to tone based on any number of masks. Supports functions from the American Society of Cinematographers Color Decision List (ASC CDL). +- Resizable main histogram with scaling modes: + - Linear + - Log + - Log-log +- Support for Blackmagic and Canon Magic Lantern lj92 encoded files. +- Allows you to specify how many border rows/columns to discard during demosaicing - those who shoot raw video at a standard resolution such as 1920x1080 will appreciate being able to preserve the dimensions. +- New Soft Light tool which enhances contrast and saturation by emulating the effect of blending an image with a copy of itself in "soft light" blending mode in GIMP. +- New Haze Removal tool to reduce the effects of haze or fog. +- The Resize tool allows you to specify whether you want it to upscale or only downscale. +- New icon and cursor theme. +- ICC profile generator. +- The bundled profiles have been re-generated, and now include ICC v2 and v4 variants. +- If your screen's resolution is such that not all icons fit in a toolbar, you can now scroll the toolbar using the mouse scroll-wheel. +- New tone curve type. One of the characteristics of the "Custom" cubic spline curve used in all previous versions was that editing one node could have a huge impact on what happens to the curve in relation to the other nodes. This curve was replaced by the new centripetal Catmull–Rom spline which allows you to make adjustments to one part of the curve without affecting the other segments as much. +- Allow saving both floating-point and integer type files at both 16-bit and 32-bit precision from RawTherapee GUI and CLI. +- Improves lensfun chromatic aberration correction. +- The raw chromatic aberration correction tool can now run in several iterations, and gained a feature to avoid introducing a color shift which could result from correcting chromatic aberration before demosaicing. +- Certain sliders now operate on a logarithmic scale, allowing for a meaningful response over large ranges. +- Dedicated "Reset" button in Crop tool. +- Support for new cameras, and new input color profiles. +- Speed enhancements and bug fixes, for a total of over 1300 commits. RawTherapee and other open-source projects require access to sample raw files from various camera makes and models in order to support those raw formats correctly. You can help by submitting raw files to RPU: @@ -46,7 +83,12 @@ In general: - For development builds and release-candidates use -DCACHE_NAME_SUFFIX="5-dev" Changes since 5.4: -- TODO. +- Requires libtiff >= 4.0.4. +- Requires CMake >= 2.8.8. +- Optional codesigning commands have been added to the CMakeLists.txt and macosx_bundle.sh scripts. If you wish to codesign the built packages (.app and .dmg), add your details to your CMake command flags: + -DCODESIGNID:STRING="Developer ID Application: Firstname Lastname (xxx)" + + diff --git a/rtdata/images/non-themed/png/splash.png b/rtdata/images/non-themed/png/splash.png index 14e3ddc9b10674e8dd60bee1ad5bb088019552b5..899b72270de4f73af48b883e09909aa1711e9f27 100644 GIT binary patch delta 34899 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 delta 33785 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 diff --git a/rtdata/images/non-themed/rt-splash.svg b/rtdata/images/non-themed/rt-splash.svg index 3e419fcbf..da32012c3 100644 --- a/rtdata/images/non-themed/rt-splash.svg +++ b/rtdata/images/non-themed/rt-splash.svg @@ -15,9 +15,9 @@ viewBox="0 0 146.05 91.545836" version="1.1" id="svg783" - inkscape:version="0.92.2 5c3e80d, 2017-08-06" - sodipodi:docname="rt_splash.svg" - inkscape:export-filename="/tmp/splash.png" + inkscape:version="0.92.2 2405546, 2018-03-11" + sodipodi:docname="rt-splash.svg" + inkscape:export-filename="/home/morgan/programs/code-rawtherapee/rtdata/images/non-themed/png/splash.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96"> @@ -902,7 +902,7 @@ y="2.2370076" x="283.85016" id="tspan3664" - sodipodi:role="line">. 4 + sodipodi:role="line">. 5 Date: Sun, 2 Dec 2018 22:13:48 +0100 Subject: [PATCH 274/348] Update Deutsch locale --- rtdata/languages/Deutsch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index a53ab991e..09736d74f 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -73,6 +73,7 @@ #72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5 #73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5 #74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5 +#75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -2409,4 +2410,4 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!GENERAL_CURRENT;Current +!GENERAL_CURRENT;Aktuell From eb24230d0840b44bd5658501f498ab5dde959645 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 2 Dec 2018 22:32:18 +0100 Subject: [PATCH 275/348] Update Deutsch (Forgot to remove the "!" sign --- rtdata/languages/Deutsch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 09736d74f..462fe922a 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2410,4 +2410,4 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!GENERAL_CURRENT;Aktuell +GENERAL_CURRENT;Aktuell From 4e79d688074410184f95b4641e4a8bc967a6d4c3 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 2 Dec 2018 23:00:29 +0100 Subject: [PATCH 276/348] CMake file cleanup --- CMakeLists.txt | 52 ++++++++++++++++++------------------ UpdateInfo.cmake | 58 ++++++++++++++++++++--------------------- rtengine/CMakeLists.txt | 2 +- win.cmake | 2 +- 4 files changed, 57 insertions(+), 57 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f2739c4da..9dab10f0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,11 @@ if(APPLE) cmake_minimum_required(VERSION 3.3) - CMAKE_POLICY(SET CMP0025 NEW) + cmake_policy(SET CMP0025 NEW) else() cmake_minimum_required(VERSION 2.8.8) endif() -# Must stay before the PROJECT() command: +# Must stay before the project() command: if(${CMAKE_EXTRA_GENERATOR} MATCHES "Eclipse CDT4") set(CMAKE_CXX_COMPILER_ARG1 "-std=c++11" CACHE STRING "C++ version for eclipse" FORCE) # Users building with Eclipse should set CMAKE_ECLIPSE_VERSION through the @@ -13,18 +13,18 @@ if(${CMAKE_EXTRA_GENERATOR} MATCHES "Eclipse CDT4") #set(CMAKE_ECLIPSE_VERSION "4.6.0" CACHE STRING "Eclipse version" FORCE) endif() -PROJECT(RawTherapee) +project(RawTherapee) # The default target is Debug: if(CMAKE_BUILD_TYPE STREQUAL "") - set (CMAKE_BUILD_TYPE Debug CACHE STRING "One of: None Debug Release RelWithDebInfo MinSizeRel" FORCE) + set(CMAKE_BUILD_TYPE Debug CACHE STRING "One of: None Debug Release RelWithDebInfo MinSizeRel" FORCE) endif() string(TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE) # Set required C and C++ standards and check GCC version: -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9") message(FATAL_ERROR "Building RawTherapee requires using GCC version 4.9 or higher!") @@ -32,14 +32,14 @@ endif() # We might want to build using the old C++ ABI, even when using a new GCC version: if(USE_OLD_CXX_ABI) - add_definitions (-D_GLIBCXX_USE_CXX11_ABI=0) + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) endif() if(UPPER_CMAKE_BUILD_TYPE STREQUAL "DEBUG") - add_definitions (-D_DEBUG) + add_definitions(-D_DEBUG) else() - add_definitions (-DNDEBUG) - add_definitions (-D_DNDEBUG) + add_definitions(-DNDEBUG) + add_definitions(-D_DNDEBUG) endif() message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") @@ -141,7 +141,7 @@ if(WIN32 OR APPLE) if(BUILD_BUNDLE) message(STATUS "You have set BUILD_BUNDLE=ON but this is not necessary - the option is forced to ON for Windows and macOS.") endif() - set (BUILD_BUNDLE ON FORCE) + set(BUILD_BUNDLE ON FORCE) endif() if(NOT DEFINED BUNDLE_BASE_INSTALL_DIR) @@ -262,7 +262,7 @@ endif() if(NOT BUILD_BUNDLE) foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR) if(NOT (IS_ABSOLUTE "${${path}}")) - message (FATAL_ERROR "The ${path} path has to be absolute when using -DBUILD_BUNDLE=OFF") + message(FATAL_ERROR "The ${path} path has to be absolute when using -DBUILD_BUNDLE=OFF") endif() endforeach() endif() @@ -342,35 +342,35 @@ endif() if(WITH_LTO) # Using LTO with older versions of binutils requires setting extra flags - SET(BINUTILS_VERSION_MININUM "2.29") + set(BINUTILS_VERSION_MININUM "2.29") execute_process(COMMAND ar --version OUTPUT_VARIABLE BINUTILS_VERSION_DETECTED) string(REGEX REPLACE ".* ([0-9.]+)\n.*" "\\1" BINUTILS_VERSION_DETECTED "${BINUTILS_VERSION_DETECTED}") if("${BINUTILS_VERSION_DETECTED}" VERSION_LESS "${BINUTILS_VERSION_MININUM}") if(APPLE) - SET(CMAKE_AR "/opt/local/bin/ar") - SET(CMAKE_RANLIB "/opt/local/bin/ranlib") + set(CMAKE_AR "/opt/local/bin/ar") + set(CMAKE_RANLIB "/opt/local/bin/ranlib") else() - SET(CMAKE_AR "/usr/bin/gcc-ar") - SET(CMAKE_RANLIB "/usr/bin/gcc-ranlib") + set(CMAKE_AR "/usr/bin/gcc-ar") + set(CMAKE_RANLIB "/usr/bin/gcc-ranlib") endif() message(STATUS "Binutils version detected as less than " ${BINUTILS_VERSION_MININUM} " - setting CMake parameters to enable LTO linking:\n CMAKE_AR=\"" ${CMAKE_AR} "\"\n CMAKE_RANLIB=\"" ${CMAKE_RANLIB} "\"") endif() - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") endif() if(WITH_SAN) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=${WITH_SAN}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${WITH_SAN}") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${WITH_SAN}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=${WITH_SAN}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${WITH_SAN}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${WITH_SAN}") endif() if(WITH_PROF) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") endif() if(OPTION_OMP) diff --git a/UpdateInfo.cmake b/UpdateInfo.cmake index 8ffaf0636..d1f532506 100644 --- a/UpdateInfo.cmake +++ b/UpdateInfo.cmake @@ -2,25 +2,25 @@ # If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH) -if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +if(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) # we look for the git command in this paths by order of preference - if (WIN32) + if(WIN32) find_program(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../) - elseif (APPLE) + elseif(APPLE) find_program(GIT_CMD git PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin") find_program(GIT_CMD git) - set (SHELL "/bin/bash") - else (WIN32) # Linux + set(SHELL "/bin/bash") + else(WIN32) # Linux find_program(GIT_CMD git) - set (SHELL "/bin/bash") - endif (WIN32) + set(SHELL "/bin/bash") + endif(WIN32) # Fail if Git is not installed - if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND) + if(GIT_CMD STREQUAL GIT_CMD-NOTFOUND) message(FATAL_ERROR "git command not found!") - else () + else() message(STATUS "git command found: ${GIT_CMD}") - endif () + endif() # Get version description. # Depending on whether you checked out a branch (dev) or a tag (release), @@ -50,19 +50,19 @@ if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD --not --tags OUTPUT_VARIABLE GIT_COMMITS_SINCE_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") # If user checked-out something which is not a branch, use the description as branch name. - if (GIT_BRANCH STREQUAL "") - set (GIT_BRANCH "${GIT_DESCRIBE}") + if(GIT_BRANCH STREQUAL "") + set(GIT_BRANCH "${GIT_DESCRIBE}") endif() # Create numeric version. # This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion. # Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS). - if (GIT_COMMITS_SINCE_TAG STREQUAL "") - set (GIT_NUMERIC_VERSION_BS "0.0.0") - else () + if(GIT_COMMITS_SINCE_TAG STREQUAL "") + set(GIT_NUMERIC_VERSION_BS "0.0.0") + else() string(REGEX REPLACE "-.*" "" GIT_NUMERIC_VERSION_BS ${GIT_DESCRIBE}) set(GIT_NUMERIC_VERSION_BS "${GIT_NUMERIC_VERSION_BS}.${GIT_COMMITS_SINCE_TAG}") - endif () + endif() message(STATUS "Git checkout information:") message(STATUS " Commit description: ${GIT_DESCRIBE}") @@ -73,38 +73,38 @@ if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) message(STATUS " Commits since branch: ${GIT_COMMITS_SINCE_BRANCH}") message(STATUS " Version (unreliable): ${GIT_NUMERIC_VERSION_BS}") - if (NOT DEFINED CACHE_NAME_SUFFIX) + if(NOT DEFINED CACHE_NAME_SUFFIX) set(CACHE_NAME_SUFFIX "${GIT_DESCRIBE}") message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"") - else () + else() message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"") - endif () + endif() -else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +else(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake") -endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +endif(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) -if (WIN32) - if (BIT_DEPTH EQUAL 4) +if(WIN32) + if(BIT_DEPTH EQUAL 4) set(BUILD_BIT_DEPTH 32) # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. set(ARCHITECTURE_ALLOWED "x86 x64 ia64") # installing in 32 bits mode even on 64 bits OS and architecture set(INSTALL_MODE "") - elseif (BIT_DEPTH EQUAL 8) + elseif(BIT_DEPTH EQUAL 8) set(BUILD_BIT_DEPTH 64) # Restricting the 64 bits builds to 64 bits systems only set(ARCHITECTURE_ALLOWED "x64 ia64") # installing in 64 bits mode for all 64 bits processors, even for itanium architecture set(INSTALL_MODE "x64 ia64") - endif (BIT_DEPTH EQUAL 4) + endif(BIT_DEPTH EQUAL 4) # set part of the output archive name set(SYSTEM_NAME "WinVista") - configure_file ("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss") -endif (WIN32) + configure_file("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss") +endif(WIN32) # build version.h from template -configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h") +configure_file("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h") # build AboutThisBuild.txt from template -configure_file ("${PROJECT_SOURCE_DIR}/AboutThisBuild.txt.in" "${CMAKE_BINARY_DIR}/AboutThisBuild.txt") +configure_file("${PROJECT_SOURCE_DIR}/AboutThisBuild.txt.in" "${CMAKE_BINARY_DIR}/AboutThisBuild.txt") diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 7bb35ad01..4ffad24a1 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -164,7 +164,7 @@ add_dependencies(rtengine UpdateInfo) # It may be nice to store library version too if(BUILD_SHARED_LIBS) - install (TARGETS rtengine DESTINATION ${LIBDIR}) + install(TARGETS rtengine DESTINATION ${LIBDIR}) endif() set_target_properties(rtengine PROPERTIES COMPILE_FLAGS "${RTENGINE_CXX_FLAGS}") diff --git a/win.cmake b/win.cmake index 3b330ebe0..9c292b2df 100644 --- a/win.cmake +++ b/win.cmake @@ -24,7 +24,7 @@ set(PROC_TARGET_NUMBER 0 CACHE STRING "Target Processor") # If you want to force the target processor name when PROC_TARGET_NUMBER = 0 or 2, # uncomment the next line and replace labelWithoutQuotes by its value -#set (PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label") +#set(PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label") # Important: MinGW-w64 user may need to specify the -m32 or -m64 flag in CMAKE_CXX_FLAGS, # CMAKE_C_FLAGS and CMAKE_EXE_LINKER_FLAGS to select between 32/64bit build From e2490e5381ce97cc1d77034b65ea15cd1c73dc1c Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 3 Dec 2018 01:56:10 +0100 Subject: [PATCH 277/348] Updated French translation --- rtdata/languages/Francais | 154 +++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 79 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 50fb21046..9779e4145 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -221,6 +221,7 @@ GENERAL_AUTO;Automatique GENERAL_BEFORE;Avant GENERAL_CANCEL;Annuler GENERAL_CLOSE;Fermer +GENERAL_CURRENT;Actuel GENERAL_DISABLE;Désactiver GENERAL_DISABLED;Désactivé GENERAL_ENABLE;Activer @@ -509,33 +510,33 @@ HISTORY_MSG_254;CpND - Teinte chair HISTORY_MSG_255;Réd. de bruit - Filtre médian 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é -HISTORY_MSG_260;Virage Partiel - Opacité 'a[b]' -HISTORY_MSG_261;Virage Partiel - Méthode -HISTORY_MSG_262;Virage Partiel - Opacité 'b' -HISTORY_MSG_263;Virage Partiel - Ombres - Rouge -HISTORY_MSG_264;Virage Partiel - Ombres - Vert -HISTORY_MSG_265;Virage Partiel - Ombres - Bleu -HISTORY_MSG_266;Virage Partiel - Moyen - Rouge -HISTORY_MSG_267;Virage Partiel - Moyen - Vert -HISTORY_MSG_268;Virage Partiel - Moyen - Bleu -HISTORY_MSG_269;Virage Partiel - HL - Rouge -HISTORY_MSG_270;Virage Partiel - HL - Vert -HISTORY_MSG_271;Virage Partiel - HL - Bleu -HISTORY_MSG_272;Virage Partiel - Balance -HISTORY_MSG_273;Virage Partiel - Balance Couleur O/TM/HL -HISTORY_MSG_274;Virage Partiel - Saturation des ombres -HISTORY_MSG_275;Virage Partiel - Saturation des HL -HISTORY_MSG_276;Virage Partiel - Opacité +HISTORY_MSG_258;VP - Couleur +HISTORY_MSG_259;VP - Opacité +HISTORY_MSG_260;VP - Opacité 'a[b]' +HISTORY_MSG_261;VP - Méthode +HISTORY_MSG_262;VP - Opacité 'b' +HISTORY_MSG_263;VP - Ombres - Rouge +HISTORY_MSG_264;VP - Ombres - Vert +HISTORY_MSG_265;VP - Ombres - Bleu +HISTORY_MSG_266;VP - Moyen - Rouge +HISTORY_MSG_267;VP - Moyen - Vert +HISTORY_MSG_268;VP - Moyen - Bleu +HISTORY_MSG_269;VP - HL - Rouge +HISTORY_MSG_270;VP - HL - Vert +HISTORY_MSG_271;VP - HL - Bleu +HISTORY_MSG_272;VP - Balance +HISTORY_MSG_273;VP - Balance Couleur O/TM/HL +HISTORY_MSG_274;VP - Saturation des ombres +HISTORY_MSG_275;VP - Saturation des HL +HISTORY_MSG_276;VP - Opacité HISTORY_MSG_277;--inutilisé-- -HISTORY_MSG_278;Virage Partiel - Préserver luminance -HISTORY_MSG_279;Virage partiel - Ombres -HISTORY_MSG_280;Virage partiel - Hautes lumières -HISTORY_MSG_281;Virage partiel - Protect. Saturé -HISTORY_MSG_282;Virage partiel - Seuil de protection -HISTORY_MSG_283;Virage partiel - Force -HISTORY_MSG_284;Virage partiel - Protect. saturé auto +HISTORY_MSG_278;VP - Préserver luminance +HISTORY_MSG_279;VP - Ombres +HISTORY_MSG_280;VP - Hautes lumières +HISTORY_MSG_281;VP - Protect. Saturé +HISTORY_MSG_282;VP - Seuil de protection +HISTORY_MSG_283;VP - Force +HISTORY_MSG_284;VP - Protect. saturé auto HISTORY_MSG_285;Réd. de bruit - Médiane - Méthode HISTORY_MSG_286;Réd. de bruit - Médiane - Type HISTORY_MSG_287;Réd. de bruit - Médiane - Itérations @@ -730,15 +731,20 @@ HISTORY_MSG_491;Balances des Blancs HISTORY_MSG_492;Courbes RVB HISTORY_MSG_493;Ajustements L*a*b* HISTORY_MSG_CLAMPOOG;Tronquer les couleurs hors gamut -HISTORY_MSG_COLORTONING_LABGRID_VALUE;Virage Partiel - Correction couleur -HISTORY_MSG_COLORTONING_LABREGION_AB;Virage Partiel - Correction couleur -HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;Virage Partiel - Masque C -HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;Virage Partiel - Masque T -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;Virage Partiel - Luminosité -HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;Virage Partiel - Masque L -HISTORY_MSG_COLORTONING_LABREGION_LIST;Virage Partiel - Liste -HISTORY_MSG_COLORTONING_LABREGION_SATURATION;Virage Partiel - Saturation -HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;Virage Partiel - Montrer le masque +HISTORY_MSG_COLORTONING_LABGRID_VALUE;VP - Correction couleur +HISTORY_MSG_COLORTONING_LABREGION_AB;VP - Correction couleur +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;VP - Canal +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;VP - Masque C +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;VP - Masque T +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;VP - Luminosité +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;VP - Masque L +HISTORY_MSG_COLORTONING_LABREGION_LIST;VP - Liste +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;VP - Masque flou local +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;VP - Offset local +HISTORY_MSG_COLORTONING_LABREGION_POWER;VP - Puissance locale +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;VP - Saturation +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;VP - Montrer le masque +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;VP - Pente locale HISTORY_MSG_DEHAZE_DEPTH;EB - Profondeur HISTORY_MSG_DEHAZE_ENABLED;Élimination de la Brume HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;EB - Montrer carte de profondeur @@ -1036,9 +1042,15 @@ PARTIALPASTE_VIGNETTING;Correction du vignettage PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette PARTIALPASTE_WHITEBALANCE;Balance des blancs PREFERENCES_ADD;Ajoute +PREFERENCES_APPEARANCE;Apparence +PREFERENCES_APPEARANCE_COLORPICKERFONT;Police des ancres de vérification couleur +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Couleur du masque de recadrage +PREFERENCES_APPEARANCE_MAINFONT;Police principale PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Couleur du cadre dans le Navigateur +PREFERENCES_APPEARANCE_THEME;Thème PREFERENCES_APPLNEXTSTARTUP;appliqué au prochain lancement PREFERENCES_AUTOMONPROFILE;Utiliser automatiquement le profil de l'écran principal +PREFERENCES_AUTOSAVE_TP_OPEN;Sauvegarder l'état ouvert/fermé des outils en quittant PREFERENCES_BATCH_PROCESSING;Traitement par lot PREFERENCES_BEHADDALL;Tout à 'Ajoute' PREFERENCES_BEHADDALLHINT;Règle tous les paramètres sur le mode Ajoute.\nLa modification des paramètres dans le panneau d'édition en par lot sera des deltas par-rapport aux valeurs existantes @@ -1097,6 +1109,7 @@ PREFERENCES_EDITORCMDLINE;Ligne de commande personnelle PREFERENCES_EDITORLAYOUT;Disposition de l'éditeur PREFERENCES_EXTERNALEDITOR;Éditeur externe PREFERENCES_FBROWSEROPTS;Options du navigateur de fichiers et de vignettes +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barre d'outil compact dans le Navigateur de Fichiers PREFERENCES_FILEFORMAT;Format du fichier PREFERENCES_FLATFIELDFOUND;Trouvé PREFERENCES_FLATFIELDSDIR;Dossier des images de Champ Uniforme @@ -1379,6 +1392,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Symétriser / axe vertical TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotation vers la gauche\nRaccourci: [\n\nRaccourci en mode Éditeur unique: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotation vers la droite\nRaccourci: ]\n\nRaccourci en mode Éditeur unique: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;Symétriser / axe horizontal +TP_COLORAPP_ABSOLUTELUMINANCE;Luminance absolue TP_COLORAPP_ALGO;Algorithme TP_COLORAPP_ALGO_ALL;Tout TP_COLORAPP_ALGO_JC;Luminosité + Chroma (JC) @@ -1389,6 +1403,7 @@ TP_COLORAPP_BADPIXSL;Filtrer les pixels chauds/morts TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression des pixels chauds/morts (colorés de manière intense).\n0=Aucun effet 1=Médian 2=Gaussien.\n\nCes artefacts sont dus aux limitations de CIECAM02. Vous pouvez également adjuster l'image afin d'éviter les ombres très sombres. TP_COLORAPP_BRIGHT;Brillance (Q) TP_COLORAPP_BRIGHT_TOOLTIP;Brillance dans CIECAM02 est différent de Lab et RVB, prend en compte la luminosité du blanc +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Lorsque réglé manuellement, les valeurs au-dessus de 65 sont recommandées. TP_COLORAPP_CHROMA;Chroma (C) TP_COLORAPP_CHROMA_M;Niveau de couleurs (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Niveau de couleurs dans CIECAM02 est différent de Lab et RVB @@ -1419,6 +1434,7 @@ TP_COLORAPP_LABEL_SCENE;Conditions de la scène TP_COLORAPP_LABEL_VIEWING;Conditions de visionnage TP_COLORAPP_LIGHT;Luminosité (J) TP_COLORAPP_LIGHT_TOOLTIP;Luminosité dans CIECAM02 est différent de celui de Lab et RVB +TP_COLORAPP_MEANLUMINANCE;Luminance moyenne (Yb%) TP_COLORAPP_MODEL;Modèle de Point Blanc TP_COLORAPP_MODEL_TOOLTIP;Modèle de Point Blanc\n\nBB [RT] + [sortie]:\nLa BB de RT est utilisée pour la scène, CIECAM est réglé sur D50, le blanc du périphérique de sortie utilise la valeur réglée dans Préférences\n\nBB [RT+CAT02] + [sortie]:\nLes réglages de BB de RT sont utilisés par CAT02 et le blanc du périphérique de sortie utilise la valeur réglée dans Préférences TP_COLORAPP_NEUTRAL;Résinitialiser @@ -1462,14 +1478,23 @@ 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_LABREGIONS;Régions de correction L*a*b* TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Canal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Tous +TP_COLORTONING_LABREGION_CHANNEL_B;Bleu +TP_COLORTONING_LABREGION_CHANNEL_G;Vert +TP_COLORTONING_LABREGION_CHANNEL_R;Rouge TP_COLORTONING_LABREGION_CHROMATICITYMASK;C TP_COLORTONING_LABREGION_HUEMASK;T TP_COLORTONING_LABREGION_LIGHTNESS;Luminosité TP_COLORTONING_LABREGION_LIGHTNESSMASK;L TP_COLORTONING_LABREGION_LIST_TITLE;Correction TP_COLORTONING_LABREGION_MASK;Masque +TP_COLORTONING_LABREGION_MASKBLUR;Masque Flou +TP_COLORTONING_LABREGION_OFFSET;Décalage +TP_COLORTONING_LABREGION_POWER;Puissance TP_COLORTONING_LABREGION_SATURATION;Saturation TP_COLORTONING_LABREGION_SHOWMASK;Montrer le masque +TP_COLORTONING_LABREGION_SLOPE;Pente 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é @@ -1509,6 +1534,8 @@ TP_CROP_GUIDETYPE;Type de guide: TP_CROP_H;H TP_CROP_LABEL;Recadrage TP_CROP_PPI;PPI= +TP_CROP_RESETCROP;Réinitialiser +TP_CROP_SELECTCROP;Sélectionner TP_CROP_W;L TP_CROP_X;X TP_CROP_Y;Y @@ -1760,7 +1787,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Peut être utilisé avec le curseur Chromaticité et TP_LENSGEOM_AUTOCROP;Recadrage auto TP_LENSGEOM_FILL;Remplir TP_LENSGEOM_LABEL;Objectif / Géométrie +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatiquement +TP_LENSPROFILE_CORRECTION_LCPFILE;Fichier LCP +TP_LENSPROFILE_CORRECTION_MANUAL;Manuellement TP_LENSPROFILE_LABEL;Profil de correction d'objectif +TP_LENSPROFILE_LENS_WARNING;Attention: le facteur de recadrage utilisé pour la caractérisation d'un objectif est plus grand que le facteur de recadrage de l'appareil photo, les résultats pourraient être faux. +TP_LENSPROFILE_MODE_HEADER;Sélectionner le profil d'objectif: +TP_LENSPROFILE_USE_CA;Aberration chromatique +TP_LENSPROFILE_USE_GEOMETRIC;Géometrique +TP_LENSPROFILE_USE_HEADER;Sélectionner les distortions à corriger: +TP_LENSPROFILE_USE_VIGNETTING;Vignetage TP_LOCALCONTRAST_AMOUNT;Quantité TP_LOCALCONTRAST_DARKNESS;Niveau des ombres TP_LOCALCONTRAST_LABEL;Contraste Local @@ -1803,6 +1839,7 @@ TP_PRSHARPENING_LABEL;Netteté post-redimensionnement TP_PRSHARPENING_TOOLTIP;Augmente la netteté de l'image après le redimentionnement. Ne fonctionne que si la méthode de redimensionnement "Lanczos" est utilisé. Il est impossible de prévisualiser les effets de cet outil. Cf. RawPedia pour les instructions d'utilisation. TP_RAWCACORR_AUTO;Correction automatique TP_RAWCACORR_AUTOIT;Itérations +TP_RAWCACORR_AUTOIT_TOOLTIP;Ce réglage est disponible si "Correction-auto" est activé.\nCorrection-auto est conservatif, signifiant qu'il ne corrige souvent pas toute l'aberration chromatique.\nPour corriger l'aberration restante, vous pouvez uttiliser jusqu'à cinq itérations de de la correction automatique de l'aberration chromatique.\nChaque itération réduira l'aberration restante de l'itération précédente avec un prix d'un temps de traitement plus long. TP_RAWCACORR_AVOIDCOLORSHIFT;Éviter les dérives couleurs TP_RAWCACORR_CABLUE;Bleu TP_RAWCACORR_CARED;Rouge @@ -1926,6 +1963,7 @@ TP_RESIZE_WIDTH;Largeur TP_RETINEX_CONTEDIT_HSL;Égaliseur d'histogramme TSV TP_RETINEX_CONTEDIT_LAB;Égaliseur d'histogramme L*a*b* TP_RETINEX_CONTEDIT_LH;Égaliseur de teinte +TP_RETINEX_CONTEDIT_MAP;Égaliseur TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance en fonction de la luminance L=f(L)\nCorrige les données raw pour réduire halos et artéfacts. TP_RETINEX_CURVEEDITOR_LH;Force=f(T) @@ -1963,6 +2001,7 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Masque TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Bas +TP_RETINEX_MAP;Méthode TP_RETINEX_MAP_GAUS;Masque gaussien TP_RETINEX_MAP_MAPP;Masque pointu (ondelettes partielles) TP_RETINEX_MAP_MAPT;Masque pointu (ondelettes totales) @@ -2272,6 +2311,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Méthode +TP_WBALANCE_PICKER;Sélectionner TP_WBALANCE_SHADE;Ombre TP_WBALANCE_SIZE;Taille: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2294,47 +2334,3 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: Alt-f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!GENERAL_CURRENT;Current -!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel -!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur -!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset -!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope -!PREFERENCES_APPEARANCE;Appearance -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser -!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance -!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. -!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORTONING_LABREGION_CHANNEL;Channel -!TP_COLORTONING_LABREGION_CHANNEL_ALL;All -!TP_COLORTONING_LABREGION_CHANNEL_B;Blue -!TP_COLORTONING_LABREGION_CHANNEL_G;Green -!TP_COLORTONING_LABREGION_CHANNEL_R;Red -!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur -!TP_COLORTONING_LABREGION_OFFSET;Offset -!TP_COLORTONING_LABREGION_POWER;Power -!TP_COLORTONING_LABREGION_SLOPE;Slope -!TP_CROP_RESETCROP;Reset -!TP_CROP_SELECTCROP;Select -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically -!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually -!TP_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. -!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -!TP_LENSPROFILE_USE_CA;Chromatic aberration -!TP_LENSPROFILE_USE_GEOMETRIC;Geometric -!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: -!TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. -!TP_RETINEX_CONTEDIT_MAP;Equalizer -!TP_RETINEX_MAP;Method -!TP_WBALANCE_PICKER;Pick From 7cfd9dc8f4269a2bf774385275161839e708fd77 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 3 Dec 2018 00:55:54 +0100 Subject: [PATCH 278/348] colortoning: fixed bug in setting method in batch mode --- rtgui/colortoning.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index ec89118df..effd76eca 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -640,7 +640,7 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) labgrid->setParams(pp->colorToning.labgridALow / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridBLow / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridAHigh / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridBHigh / ColorToningParams::LABGRID_CORR_MAX, false); if (pedited && !pedited->colorToning.method) { - method->set_active (5); + method->set_active (7); } else if (pp->colorToning.method == "Lab") { method->set_active (0); } else if (pp->colorToning.method == "RGBSliders") { From 2ec094b1ce3fec7965dd2f8938171038578b29e2 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 3 Dec 2018 13:30:51 +0100 Subject: [PATCH 279/348] remove special windows code, #5058 --- rtgui/thumbbrowserbase.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index 5f75967e6..6c15411a1 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -1009,9 +1009,6 @@ void ThumbBrowserBase::zoomChanged (bool zoomIn) } redraw (); -#ifdef WIN32 - gdk_window_process_updates (get_window()->gobj(), true); -#endif } void ThumbBrowserBase::refreshThumbImages () From bd665e7133110d8c6ab27ff48f480c97dfaffa44 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 3 Dec 2018 16:18:16 +0100 Subject: [PATCH 280/348] Updated language keys in Preferences, closes #5061 Commit bba0f7 cleaned up some language keys. Two of them were consolidated into one as they had an identical label but belonged to a different section of the CIECAM02 tool. As a result, Preferences needed to be updated. --- rtgui/preferences.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 19fa41d2b..4151eacd4 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -268,17 +268,17 @@ Gtk::Widget* Preferences::getBatchProcPanel () mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_COLORAPP_LABEL")); - appendBehavList (mi, M ("TP_COLORAPP_ADAPTSCENE"), ADDSET_CAT_ADAPTSCENE, true); + appendBehavList (mi, M("TP_COLORAPP_LABEL_SCENE") + " - " + M("TP_COLORAPP_ABSOLUTELUMINANCE"), ADDSET_CAT_ADAPTSCENE, true); + appendBehavList (mi, M("TP_COLORAPP_LABEL_VIEWING") + " - " + M("TP_COLORAPP_ABSOLUTELUMINANCE"), ADDSET_CAT_ADAPTVIEWING, true); appendBehavList (mi, M ("TP_COLORAPP_LIGHT"), ADDSET_CAT_LIGHT, true); appendBehavList (mi, M ("TP_COLORAPP_BRIGHT"), ADDSET_CAT_BRIGHT, true); appendBehavList (mi, M ("TP_COLORAPP_CHROMA"), ADDSET_CAT_CHROMA, true); + appendBehavList (mi, M ("TP_COLORAPP_CHROMA_S"), ADDSET_CAT_CHROMA_S, true); + appendBehavList (mi, M ("TP_COLORAPP_CHROMA_M"), ADDSET_CAT_CHROMA_M, true); appendBehavList (mi, M ("TP_COLORAPP_RSTPRO"), ADDSET_CAT_RSTPRO, true); appendBehavList (mi, M ("TP_COLORAPP_CONTRAST"), ADDSET_CAT_CONTRAST, true); appendBehavList (mi, M ("TP_COLORAPP_CONTRAST_Q"), ADDSET_CAT_CONTRAST_Q, true); - appendBehavList (mi, M ("TP_COLORAPP_CHROMA_S"), ADDSET_CAT_CHROMA_S, true); - appendBehavList (mi, M ("TP_COLORAPP_CHROMA_M"), ADDSET_CAT_CHROMA_M, true); appendBehavList (mi, M ("TP_COLORAPP_HUE"), ADDSET_CAT_HUE, true); - appendBehavList (mi, M ("TP_COLORAPP_ADAPTVIEWING"), ADDSET_CAT_ADAPTVIEWING, true); appendBehavList (mi, M ("TP_COLORAPP_BADPIXSL"), ADDSET_CAT_BADPIX, true); mi = behModel->append (); From 4a949685ca64422ad64af3213689ad14dbeb82c5 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 3 Dec 2018 16:24:41 +0100 Subject: [PATCH 281/348] generateTranslationDiffs --- rtdata/languages/Deutsch | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 462fe922a..33bec128f 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -296,6 +296,7 @@ GENERAL_AUTO;Automatisch GENERAL_BEFORE;Vorher GENERAL_CANCEL;Abbrechen GENERAL_CLOSE;Schließen +GENERAL_CURRENT;Aktuell GENERAL_DISABLE;Deaktivieren GENERAL_DISABLED;Deaktiviert GENERAL_ENABLE;Aktivieren @@ -2406,8 +2407,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -GENERAL_CURRENT;Aktuell From 75a34ef87ee1f5faa5286dc7817d14b0cfc1a7b9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 4 Dec 2018 14:51:13 +0100 Subject: [PATCH 282/348] Improve caclulation of dual demosaic contrast threshold --- rtengine/rt_algo.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index 3925fc1ec..4552593cc 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -207,15 +207,16 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr if (autoContrast) { for (int pass = 0; pass < 2; ++pass) { const int tilesize = 80 / (pass + 1); - const int numTilesW = W / tilesize; - const int numTilesH = H / tilesize; + const int skip = pass < 1 ? tilesize : tilesize / 4; + const int numTilesW = W / skip - 3 * pass; + const int numTilesH = H / skip - 3 * pass; std::vector>> variances(numTilesH, std::vector>(numTilesW)); #pragma omp parallel for for (int i = 0; i < numTilesH; ++i) { - int tileY = i * tilesize; + int tileY = i * skip; for (int j = 0; j < numTilesW; ++j) { - int tileX = j * tilesize; + int tileX = j * skip; #ifdef __SSE2__ vfloat avgv = ZEROV; for (int y = tileY; y < tileY + tilesize; ++y) { @@ -268,10 +269,9 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } - const int minY = tilesize * minI; - const int minX = tilesize * minJ; + const int minY = skip * minI; + const int minX = skip * minJ; -// std::cout << pass << ": minvar : " << minvar << std::endl; if (minvar <= 1.f || pass == 1) { // a variance <= 1 means we already found a flat region and can skip second pass // in second pass we allow a variance of 2 From a5c52c86928d750314ed36162cefee26f238fd34 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 4 Dec 2018 18:00:53 +0100 Subject: [PATCH 283/348] TWB-theme fix csd --- rtdata/themes/TooWaBlue-GTK3-20_.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index d4565829a..c0bfd207c 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-2018 TooWaBoo - Version 2.98 + Version 2.99 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1191,7 +1191,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /*** end ***************************************************************************************/ /*** Context & popups menus *****************************************************************************/ -.popup > decoration { +.csd.popup > decoration { background-image: none; border-radius: 0; border: none; @@ -2042,7 +2042,7 @@ entry:focus > selection { /*** end ***************************************************************************************/ /*** Window Layout *****************************************************************************/ -:not(.popup):not(tooltip) > decoration { +.csd:not(.popup):not(tooltip) > decoration { background-color: @winHeaderbar; background-image: none; border-radius: 0.416666666666666666em 0.416666666666666666em 0 0; @@ -2076,7 +2076,7 @@ headerbar .title{ /**/ /* Window in background */ -:not(.popup):not(tooltip) > decoration:backdrop { +.csd:not(.popup):not(tooltip) > decoration:backdrop { box-shadow: 0 0.25em 0.75em 0.083333333333333333em rgba(0, 0, 0, 0.3), 0 0 0 0.083333333333333333em @bg-dark-grey; } headerbar:backdrop { From 09c55ca6eccae42892139791cc560643f7368c25 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 4 Dec 2018 23:13:20 +0100 Subject: [PATCH 284/348] Small speedup and code cleanup for autocontrast calculation --- rtengine/rt_algo.cc | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index 4552593cc..a258287bf 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -203,20 +203,19 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } } else { - constexpr float scale = 0.0625f / 327.68f; if (autoContrast) { for (int pass = 0; pass < 2; ++pass) { const int tilesize = 80 / (pass + 1); const int skip = pass < 1 ? tilesize : tilesize / 4; const int numTilesW = W / skip - 3 * pass; const int numTilesH = H / skip - 3 * pass; - std::vector>> variances(numTilesH, std::vector>(numTilesW)); + std::vector> variances(numTilesH, std::vector(numTilesW)); - #pragma omp parallel for + #pragma omp parallel for schedule(dynamic) for (int i = 0; i < numTilesH; ++i) { - int tileY = i * skip; + const int tileY = i * skip; for (int j = 0; j < numTilesW; ++j) { - int tileX = j * skip; + const int tileX = j * skip; #ifdef __SSE2__ vfloat avgv = ZEROV; for (int y = tileY; y < tileY + tilesize; ++y) { @@ -226,7 +225,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } float avg = vhadd(avgv); #else - float avg = 0.; + float avg = 0.f; for (int y = tileY; y < tileY + tilesize; ++y) { for (int x = tileX; x < tileX + tilesize; ++x) { avg += luminance[y][x]; @@ -234,6 +233,11 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } #endif avg /= SQR(tilesize); + if (avg < 2000.f || avg > 20000.f) { + // too dark or too bright => skip the tile + variances[i][j] = RT_INFINITY_F; + continue; + } #ifdef __SSE2__ vfloat varv = ZEROV; avgv = F2V(avg); @@ -244,16 +248,15 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } float var = vhadd(varv); #else - float var = 0.0; + float var = 0.f; for (int y = tileY; y < tileY + tilesize; ++y) { for (int x = tileX; x < tileX + tilesize; ++x) { var += SQR(luminance[y][x] - avg); } } - #endif +#endif var /= (SQR(tilesize) * avg); - variances[i][j].first = var; - variances[i][j].second = avg; + variances[i][j] = var; } } @@ -261,8 +264,8 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr int minI = 0, minJ = 0; for (int i = 0; i < numTilesH; ++i) { for (int j = 0; j < numTilesW; ++j) { - if (variances[i][j].first < minvar && variances[i][j].second > 2000.f && variances[i][j].second < 20000.f) { - minvar = variances[i][j].first; + if (variances[i][j] < minvar) { + minvar = variances[i][j]; minI = i; minJ = j; } @@ -295,6 +298,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } } else { + constexpr float scale = 0.0625f / 327.68f; #ifdef _OPENMP #pragma omp parallel #endif From 1b0baf78ff8fb2e4830a76444128066736df23a3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 5 Dec 2018 15:17:12 +0100 Subject: [PATCH 285/348] buildBlendMask() cleanup --- rtengine/rt_algo.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index a258287bf..af2083d8e 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -22,8 +22,6 @@ #include #include #include -#include -#include #ifdef _OPENMP #include #endif @@ -206,12 +204,14 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr if (autoContrast) { for (int pass = 0; pass < 2; ++pass) { const int tilesize = 80 / (pass + 1); - const int skip = pass < 1 ? tilesize : tilesize / 4; + const int skip = pass == 0 ? tilesize : tilesize / 4; const int numTilesW = W / skip - 3 * pass; const int numTilesH = H / skip - 3 * pass; std::vector> variances(numTilesH, std::vector(numTilesW)); +#ifdef _OPENMP #pragma omp parallel for schedule(dynamic) +#endif for (int i = 0; i < numTilesH; ++i) { const int tileY = i * skip; for (int j = 0; j < numTilesW; ++j) { From feb718adb522cfe1f3a37a27ab05da2ae9e4e8d5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 5 Dec 2018 15:40:14 +0100 Subject: [PATCH 286/348] Some changes to CMakeLists.txt, closes #5066 --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9dab10f0b..ff221ffef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -373,10 +373,11 @@ if(WITH_PROF) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Wno-deprecated-declarations") if(OPTION_OMP) find_package(OpenMP) if(OPENMP_FOUND) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Werror=unknown-pragmas -Wall -Wno-unused-result -Wno-deprecated-declarations") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Werror=unknown-pragmas") endif() endif() From d51e9b9bd46b40f525aeb9ab4834053fe623ab05 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 5 Dec 2018 19:20:57 +0100 Subject: [PATCH 287/348] Remove obsolete MSR() in imagesource.h --- rtengine/dcrop.cc | 2 +- rtengine/imagesource.h | 1 - rtengine/improccoordinator.cc | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 778f29fe8..e49e03329 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -869,7 +869,7 @@ void Crop::update(int todo) bool cclutili = parent->cclutili; LUTu dummy; - // parent->ipf.MSR(labnCrop, labnCrop->W, labnCrop->H, 1); + parent->ipf.chromiLuminanceCurve(this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); parent->ipf.vibrance(labnCrop); parent->ipf.labColorCorrectionRegions(labnCrop); diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index c87ce4b0d..6c39d8d42 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -76,7 +76,6 @@ public: virtual void flushRGB () {}; virtual void HLRecovery_Global (const ToneCurveParams &hrp) {}; virtual void HLRecovery_inpaint (float** red, float** green, float** blue) {}; - virtual void MSR (LabImage* lab, LUTf & mapcurve, bool &mapcontlutili, int width, int height, int skip, RetinexParams deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) {}; virtual bool isRGBSourceModified () const = 0; // tracks whether cached rgb output of demosaic has been modified diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 851f78ed8..24107ea1f 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -706,7 +706,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) nprevl->CopyFrom(oprevl); progress("Applying Color Boost...", 100 * readyphase / numofphases); - // ipf.MSR(nprevl, nprevl->W, nprevl->H, 1); + histCCurve.clear(); histLCurve.clear(); ipf.chromiLuminanceCurve(nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve); From fd48b34cd52d6275e46403ba11ae3c530264ff1f Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 6 Dec 2018 14:11:49 +0100 Subject: [PATCH 288/348] curves: restored the old DCT_Spline implementation (cubic splines), and added new DCT_CatumullRom curve type --- rtdata/languages/default | 3 +- rtengine/diagonalcurves.cc | 29 +++++++------- rtengine/histmatching.cc | 54 ++----------------------- rtgui/curveeditor.cc | 59 ++++++++++++++++++++++++++-- rtgui/curveeditor.h | 2 + rtgui/diagonalcurveeditorsubgroup.cc | 45 +++++++++++++++++++-- rtgui/mydiagonalcurve.cc | 7 +++- rtgui/mydiagonalcurve.h | 1 + rtgui/popupcommon.cc | 13 +++--- rtgui/popupcommon.h | 5 ++- 10 files changed, 138 insertions(+), 80 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index da79ec3ac..e53550a0d 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -17,9 +17,10 @@ CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_LEFT_TAN;LT: CURVEEDITOR_AXIS_OUT;O: CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;Flexible CURVEEDITOR_CURVE;Curve CURVEEDITOR_CURVES;Curves -CURVEEDITOR_CUSTOM;Custom +CURVEEDITOR_CUSTOM;Standard CURVEEDITOR_DARKS;Darks 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. CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index f478ba719..c81d48f16 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -48,7 +48,7 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) bool identity = true; kind = (DiagonalCurveType)p[0]; - if (kind == DCT_Linear || kind == DCT_Spline || kind == DCT_NURBS) { + if (kind == DCT_Linear || kind == DCT_Spline || kind == DCT_NURBS || kind == DCT_CatumullRom) { N = (p.size() - 1) / 2; x = new double[N]; y = new double[N]; @@ -86,11 +86,12 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) if (!identity) { if (kind == DCT_Spline && N > 2) { - //spline_cubic_set (); - catmull_rom_set(); + spline_cubic_set (); } else if (kind == DCT_NURBS && N > 2) { NURBS_set (); fillHash(); + } else if (kind == DCT_CatumullRom && N > 2) { + catmull_rom_set(); } else { kind = DCT_Linear; } @@ -459,7 +460,7 @@ double DiagonalCurve::getVal (double t) const } case DCT_Linear : - // case DCT_Spline : + case DCT_Spline : { // values under and over the first and last point if (t > x[N - 1]) { @@ -484,21 +485,21 @@ double DiagonalCurve::getVal (double t) const double h = x[k_hi] - x[k_lo]; // linear - // if (kind == DCT_Linear) { + if (kind == DCT_Linear) { return y[k_lo] + (t - x[k_lo]) * ( y[k_hi] - y[k_lo] ) / h; - // } - // // spline curve - // else { // if (kind==Spline) { - // double a = (x[k_hi] - t) / h; - // double b = (t - x[k_lo]) / h; - // double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; - // return CLIPD(r); - // } + } + // spline curve + else { // if (kind==Spline) { + double a = (x[k_hi] - t) / h; + double b = (t - x[k_lo]) / h; + double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; + return CLIPD(r); + } break; } - case DCT_Spline: { + case DCT_CatumullRom: { auto it = std::lower_bound(poly_x.begin(), poly_x.end(), t); if (it == poly_x.end()) { return poly_y.back(); diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index da95946e7..1b6dd133f 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -97,55 +97,6 @@ int findMatch(int val, const std::vector &cdf, int j) } -class CubicSplineCurve: public DiagonalCurve { -public: - CubicSplineCurve(const std::vector &points): - DiagonalCurve({DCT_Linear}) - { - N = points.size() / 2; - x = new double[N]; - y = new double[N]; - - for (int i = 0; i < N; ++i) { - x[i] = points[2*i]; - y[i] = points[2*i+1]; - } - kind = DCT_Spline; - spline_cubic_set(); - } - - double getVal(double t) const override - { - // values under and over the first and last point - if (t > x[N - 1]) { - return y[N - 1]; - } else if (t < x[0]) { - return y[0]; - } - - // do a binary search for the right interval: - unsigned int k_lo = 0, k_hi = N - 1; - - while (k_hi > 1 + k_lo) { - unsigned int k = (k_hi + k_lo) / 2; - - if (x[k] > t) { - k_hi = k; - } else { - k_lo = k; - } - } - - double h = x[k_hi] - x[k_lo]; - - double a = (x[k_hi] - t) / h; - double b = (t - x[k_lo]) / h; - double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; - return LIM01(r); - } -}; - - void mappingToCurve(const std::vector &mapping, std::vector &curve) { curve.clear(); @@ -259,10 +210,11 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) if (curve.size() < 4) { curve = { DCT_Linear }; // not enough points, fall back to linear } else { - CubicSplineCurve c(curve); + curve.insert(curve.begin(), DCT_Spline); + DiagonalCurve c(curve); double gap = 0.05; double x = 0.0; - curve = { DCT_Spline }; + curve = { DCT_CatumullRom }; while (x < 1.0) { curve.push_back(x); curve.push_back(c.getVal(x)); diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index 995dafa4e..3d1223bdf 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -25,6 +25,47 @@ #include +namespace { + +class CurveTypePopUpButton: public PopUpToggleButton { +public: + CurveTypePopUpButton(const Glib::ustring &label=""): + PopUpToggleButton(label) {} + + void setPosIndexMap(const std::vector &pmap) + { + posidxmap_ = pmap; + } + +protected: + int posToIndex(int pos) const override + { + if (pos < 0 || size_t(pos) >= posidxmap_.size()) { + return pos; + } + return posidxmap_[pos]; + } + + int indexToPos(int index) const override + { + if (index < 0 || size_t(index) >= posidxmap_.size()) { + return index; + } + for (int i = 0, n = int(posidxmap_.size()); i < n; ++i) { + if (posidxmap_[i] == index) { + return i; + } + } + return -1; + } + +private: + std::vector posidxmap_; +}; + +} // namespace + + bool CurveEditor::reset() { return subGroup->curveReset(this); @@ -33,12 +74,14 @@ bool CurveEditor::reset() DiagonalCurveEditor::DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup) : CurveEditor::CurveEditor(text, static_cast(ceGroup), ceSubGroup) { - // Order set in the same order than "enum DiagonalCurveType". Shouldn't change, for compatibility reason curveType->addEntry("curve-linear-small.png", M("CURVEEDITOR_LINEAR")); // 0 Linear curveType->addEntry("curve-spline-small.png", M("CURVEEDITOR_CUSTOM")); // 1 Spline + curveType->addEntry("curve-catmullrom-small.png", M("CURVEEDITOR_CATMULLROM")); // 4 CatmullRom curveType->addEntry("curve-parametric-small.png", M("CURVEEDITOR_PARAMETRIC")); // 2 Parametric curveType->addEntry("curve-nurbs-small.png", M("CURVEEDITOR_NURBS")); // 3 NURBS + static_cast(curveType)->setPosIndexMap({ 0, 1, 4, 2, 3 }); curveType->setSelected(DCT_Linear); + curveType->show(); rangeLabels[0] = M("CURVEEDITOR_SHADOWS"); @@ -65,6 +108,9 @@ std::vector DiagonalCurveEditor::getCurve () case (DCT_NURBS): return curve = NURBSCurveEd; + case (DCT_CatumullRom): + return curve = catmullRomCurveEd; + default: // returning Linear or Unchanged curve.push_back((double)(selected)); @@ -96,6 +142,13 @@ void DiagonalCurveEditor::setResetCurve(DiagonalCurveType cType, const std::vect break; + case (DCT_CatumullRom): + if (resetCurve.size() && DiagonalCurveType(resetCurve.at(0)) == cType) { + catmullRomResetCurve = resetCurve; + } + + break; + default: break; } @@ -209,9 +262,9 @@ CurveEditor::CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEd subGroup = ceSubGroup; if (group && text.size()) { - curveType = new PopUpToggleButton(text + ":"); + curveType = new CurveTypePopUpButton(text + ":"); } else { - curveType = new PopUpToggleButton(); + curveType = new CurveTypePopUpButton(); } curveType->set_tooltip_text(M("CURVEEDITOR_TYPE")); diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index 14699b42a..4cf49a377 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -156,6 +156,8 @@ protected: std::vector paramResetCurve; std::vector NURBSCurveEd; std::vector NURBSResetCurve; + std::vector catmullRomCurveEd; + std::vector catmullRomResetCurve; Glib::ustring rangeLabels[4]; double rangeMilestones[3]; diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index 4cbde55cc..e8b92062a 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -393,6 +393,7 @@ DiagonalCurveEditor* DiagonalCurveEditorSubGroup::addCurve(Glib::ustring curveLa storeCurveValues(newCE, getCurveFromGUI(DCT_Spline)); storeCurveValues(newCE, getCurveFromGUI(DCT_Parametric)); storeCurveValues(newCE, getCurveFromGUI(DCT_NURBS)); + storeCurveValues(newCE, getCurveFromGUI(DCT_CatumullRom)); return newCE; } @@ -437,6 +438,7 @@ void DiagonalCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, i switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->pipetteMouseOver(curveEditor, provider, modifierKey); customCurve->setDirty(true); break; @@ -511,6 +513,7 @@ bool DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provid switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): isDragging = customCurve->pipetteButton1Pressed(provider, modifierKey); break; @@ -539,6 +542,7 @@ void DiagonalCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provi switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->pipetteButton1Released(provider); break; @@ -562,6 +566,7 @@ void DiagonalCurveEditorSubGroup::pipetteDrag(EditDataProvider *provider, int mo switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->pipetteDrag(provider, modifierKey); break; @@ -615,6 +620,7 @@ void DiagonalCurveEditorSubGroup::refresh(CurveEditor *curveToRefresh) if (curveToRefresh != nullptr && curveToRefresh == static_cast(parent->displayedCurve)) { switch((DiagonalCurveType)(curveToRefresh->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->refresh(); break; @@ -703,9 +709,10 @@ void DiagonalCurveEditorSubGroup::switchGUI() } } - switch((DiagonalCurveType)(dCurve->curveType->getSelected())) { + switch(auto tp = (DiagonalCurveType)(dCurve->curveType->getSelected())) { case (DCT_Spline): - customCurve->setPoints (dCurve->customCurveEd); + case (DCT_CatumullRom): + customCurve->setPoints(tp == DCT_Spline ? dCurve->customCurveEd : dCurve->catmullRomCurveEd); customCurve->setColorProvider(dCurve->getCurveColorProvider(), dCurve->getCurveCallerId()); customCurve->setColoredBar(leftBar, bottomBar); customCurve->queue_resize_no_redraw(); @@ -776,6 +783,7 @@ void DiagonalCurveEditorSubGroup::savePressed () switch (parent->displayedCurve->selected) { case DCT_Spline: // custom + case DCT_CatumullRom: p = customCurve->getPoints (); break; @@ -797,6 +805,8 @@ void DiagonalCurveEditorSubGroup::savePressed () f << "Linear" << std::endl; } else if (p[ix] == (double)(DCT_Spline)) { f << "Spline" << std::endl; + } else if (p[ix] == (double)(DCT_CatumullRom)) { + f << "CatmullRom" << std::endl; } else if (p[ix] == (double)(DCT_NURBS)) { f << "NURBS" << std::endl; } else if (p[ix] == (double)(DCT_Parametric)) { @@ -838,6 +848,8 @@ void DiagonalCurveEditorSubGroup::loadPressed () p.push_back ((double)(DCT_Linear)); } else if (s == "Spline") { p.push_back ((double)(DCT_Spline)); + } else if (s == "CatmullRom") { + p.push_back ((double)(DCT_CatumullRom)); } else if (s == "NURBS") { p.push_back ((double)(DCT_NURBS)); } else if (s == "Parametric") { @@ -858,7 +870,7 @@ void DiagonalCurveEditorSubGroup::loadPressed () rtengine::sanitizeCurve(p); - if (p[0] == (double)(DCT_Spline)) { + if (p[0] == (double)(DCT_Spline) || p[0] == (double)(DCT_CatumullRom)) { customCurve->setPoints (p); customCurve->queue_draw (); customCurve->notifyListener (); @@ -903,6 +915,12 @@ void DiagonalCurveEditorSubGroup::copyPressed () clipboard.setDiagonalCurveData (curve, DCT_NURBS); break; + case DCT_CatumullRom: + curve = customCurve->getPoints (); + curve[0] = DCT_CatumullRom; + clipboard.setDiagonalCurveData (curve, DCT_CatumullRom); + break; + default: // (DCT_Linear, DCT_Unchanged) // ... do nothing break; @@ -923,6 +941,7 @@ void DiagonalCurveEditorSubGroup::pastePressed () switch (type) { case DCT_Spline: // custom + case DCT_CatumullRom: customCurve->setPoints (curve); customCurve->queue_draw (); customCurve->notifyListener (); @@ -1060,6 +1079,10 @@ void DiagonalCurveEditorSubGroup::storeDisplayedCurve() storeCurveValues(parent->displayedCurve, getCurveFromGUI(DCT_NURBS)); break; + case (DCT_CatumullRom): + storeCurveValues(parent->displayedCurve, getCurveFromGUI(DCT_CatumullRom)); + break; + default: break; } @@ -1097,6 +1120,10 @@ void DiagonalCurveEditorSubGroup::storeCurveValues (CurveEditor* ce, const std:: (static_cast(ce))->NURBSCurveEd = p; break; + case (DCT_CatumullRom): + (static_cast(ce))->catmullRomCurveEd = p; + break; + default: break; } @@ -1126,6 +1153,14 @@ const std::vector DiagonalCurveEditorSubGroup::getCurveFromGUI (int type case (DCT_NURBS): return NURBSCurve->getPoints (); + case (DCT_CatumullRom): { + auto ret = customCurve->getPoints(); + if (!ret.empty()) { + ret[0] = DCT_CatumullRom; + } + return ret; + } + default: { // linear and other solutions std::vector lcurve (1); @@ -1162,6 +1197,10 @@ bool DiagonalCurveEditorSubGroup::curveReset(CurveEditor *ce) customCurve->reset (dce->customResetCurve, dce->getIdentityValue()); return true; + case (DCT_CatumullRom) : + customCurve->reset (dce->catmullRomResetCurve, dce->getIdentityValue()); + return true; + case (DCT_Parametric) : { DiagonalCurveEditor* dCurve = static_cast(parent->displayedCurve); double mileStone[3]; diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index 5eacdcc46..f70f4af0f 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -775,7 +775,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) case GDK_MOTION_NOTIFY: snapToElmt = -100; - if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS) { + if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS || curve.type == DCT_CatumullRom) { snapToMinDistY = snapToMinDistX = 10.; snapToValY = snapToValX = 0.; @@ -1026,7 +1026,7 @@ void MyDiagonalCurve::pipetteMouseOver (CurveEditor *ce, EditDataProvider *provi double minDistanceX = double(MIN_DISTANCE) / double(graphW - 1); - if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS) { + if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS || curve.type == DCT_CatumullRom) { // get the pointer position getCursorPositionFromCurve(pipetteVal); @@ -1415,6 +1415,8 @@ std::vector MyDiagonalCurve::getPoints () result.push_back (double(DCT_Spline)); } else if (curve.type == DCT_NURBS) { result.push_back (double(DCT_NURBS)); + } else if (curve.type == DCT_CatumullRom) { + result.push_back (double(DCT_CatumullRom)); } // then we push all the points coordinate @@ -1552,6 +1554,7 @@ void MyDiagonalCurve::reset(const std::vector &resetCurve, double identi switch (curve.type) { case DCT_Spline : case DCT_NURBS : + case DCT_CatumullRom: curve.x.resize(2); curve.y.resize(2); curve.x.at(0) = 0.; diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index 9433c42b5..5b0f6f01e 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -34,6 +34,7 @@ enum DiagonalCurveType { DCT_Spline, // 1 DCT_Parametric, // 2 DCT_NURBS, // 3 + DCT_CatumullRom, // 4 // Insert new curve type above this line DCT_Unchanged // Must remain the last of the enum }; diff --git a/rtgui/popupcommon.cc b/rtgui/popupcommon.cc index b7d08721e..c5a5a03e3 100644 --- a/rtgui/popupcommon.cc +++ b/rtgui/popupcommon.cc @@ -103,17 +103,18 @@ bool PopUpCommon::addEntry (const Glib::ustring& fileName, const Glib::ustring& void PopUpCommon::entrySelected (int i) { // Emit a signal if the selected item has changed - if (setSelected (i)) - messageChanged (selected); + if (setSelected (posToIndex(i))) + messageChanged (posToIndex(selected)); // Emit a signal in all case (i.e. propagate the signal_activate event) - messageItemSelected (selected); + messageItemSelected (posToIndex(selected)); } void PopUpCommon::setItemSensitivity (int index, bool isSensitive) { const auto items = menu->get_children (); - if (size_t(index) < items.size ()) { - items[size_t(index)]->set_sensitive (isSensitive); + size_t pos = indexToPos(index); + if (pos < items.size ()) { + items[pos]->set_sensitive (isSensitive); } } @@ -123,6 +124,8 @@ void PopUpCommon::setItemSensitivity (int index, bool isSensitive) { */ bool PopUpCommon::setSelected (int entryNum) { + entryNum = indexToPos(entryNum); + if (entryNum < 0 || entryNum > ((int)images.size() - 1) || (int)entryNum == selected) { return false; } else { diff --git a/rtgui/popupcommon.h b/rtgui/popupcommon.h index f4bdb581f..f939dbe96 100644 --- a/rtgui/popupcommon.h +++ b/rtgui/popupcommon.h @@ -75,6 +75,9 @@ private: void showMenu(GdkEventButton* event); protected: + virtual int posToIndex(int p) const { return p; } + virtual int indexToPos(int i) const { return i; } + void entrySelected (int i); }; @@ -96,7 +99,7 @@ inline int PopUpCommon::getEntryCount () const inline int PopUpCommon::getSelected () const { - return selected; + return posToIndex(selected); } #endif From 72ee9918587bb69efc3de935768d21ab61d5a498 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 7 Dec 2018 00:39:41 +0100 Subject: [PATCH 289/348] Improve detection of flat regions for calculation of dual demosaic contrast threshold --- rtengine/rt_algo.cc | 159 +++++++++++++++++++++++++++++++------------- 1 file changed, 113 insertions(+), 46 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index af2083d8e..bd45819d9 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -51,6 +51,49 @@ vfloat calcBlendFactor(vfloat valv, vfloat thresholdv) { return onev / (onev + xexpf(c16v - c16v * valv / thresholdv)); } #endif + +float tileAverage(float **data, size_t tileY, size_t tileX, size_t tilesize) { + +#ifdef __SSE2__ + vfloat avgv = ZEROV; + for (size_t y = tileY; y < tileY + tilesize; ++y) { + for (size_t x = tileX; x < tileX + tilesize; x += 4) { + avgv += LVFU(data[y][x]); + } + } + const float avg = vhadd(avgv); +#else + float avg = 0.f; + for (size_t y = tileY; y < tileY + tilesize; ++y) { + for (size_t x = tileX; x < tileX + tilesize; ++x) { + avg += data[y][x]; + } + } +#endif + return avg / rtengine::SQR(tilesize); +} + +float tileVariance(float **data, size_t tileY, size_t tileX, size_t tilesize, float avg) { + +#ifdef __SSE2__ + vfloat varv = ZEROV; + const vfloat avgv = F2V(avg); + for (size_t y = tileY; y < tileY + tilesize; ++y) { + for (size_t x = tileX; x < tileX + tilesize; x +=4) { + varv += SQRV(LVFU(data[y][x]) - avgv); + } + } + const float var = vhadd(varv); +#else + float var = 0.f; + for (size_t y = tileY; y < tileY + tilesize; ++y) { + for (size_t x = tileX;; x < tileX + tilesize; ++x) { + var += rtengine::SQR(data[y][x] - avg); + } + } +#endif + return var / (rtengine::SQR(tilesize) * avg); +} } namespace rtengine @@ -202,6 +245,8 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } else { if (autoContrast) { + constexpr float minLuminance = 2000.f; + constexpr float maxLuminance = 20000.f; for (int pass = 0; pass < 2; ++pass) { const int tilesize = 80 / (pass + 1); const int skip = pass == 0 ? tilesize : tilesize / 4; @@ -216,47 +261,14 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr const int tileY = i * skip; for (int j = 0; j < numTilesW; ++j) { const int tileX = j * skip; -#ifdef __SSE2__ - vfloat avgv = ZEROV; - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; x += 4) { - avgv += LVFU(luminance[y][x]); - } - } - float avg = vhadd(avgv); -#else - float avg = 0.f; - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; ++x) { - avg += luminance[y][x]; - } - } -#endif - avg /= SQR(tilesize); - if (avg < 2000.f || avg > 20000.f) { + const float avg = tileAverage(luminance, tileY, tileX, tilesize); + if (avg < minLuminance || avg > maxLuminance) { // too dark or too bright => skip the tile variances[i][j] = RT_INFINITY_F; continue; + } else { + variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); } -#ifdef __SSE2__ - vfloat varv = ZEROV; - avgv = F2V(avg); - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; x +=4) { - varv += SQRV(LVFU(luminance[y][x]) - avgv); - } - } - float var = vhadd(varv); -#else - float var = 0.f; - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; ++x) { - var += SQR(luminance[y][x] - avg); - } - } -#endif - var /= (SQR(tilesize) * avg); - variances[i][j] = var; } } @@ -276,17 +288,72 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr const int minX = skip * minJ; if (minvar <= 1.f || pass == 1) { - // a variance <= 1 means we already found a flat region and can skip second pass - // in second pass we allow a variance of 2 - JaggedArray Lum(tilesize, tilesize); - JaggedArray Blend(tilesize, tilesize); - for (int i = 0; i < tilesize; ++i) { - for (int j = 0; j < tilesize; ++j) { - Lum[i][j] = luminance[i + minY][j + minX]; + if (pass == 0) { + // a variance <= 1 means we already found a flat region and can skip second pass + JaggedArray Lum(tilesize, tilesize); + JaggedArray Blend(tilesize, tilesize); + for (int i = 0; i < tilesize; ++i) { + for (int j = 0; j < tilesize; ++j) { + Lum[i][j] = luminance[i + minY][j + minX]; + } + } + contrastThreshold = calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f; + break; + } else { + // in second pass we allow a variance of 4 + // we additionally scan the tiles +-skip pixels around the best tile from pass 2 + // Means we scan (2 * skip + 1)^2 tiles in this step to get a better hit rate + // fortunately the scan is quite fast, so we use only one core and don't parallelize + const int topLeftYStart = std::max(minY - skip, 0); + const int topLeftXStart = std::max(minX - skip, 0); + const int topLeftYEnd = std::min(minY + skip, H - tilesize); + const int topLeftXEnd = std::min(minX + skip, W - tilesize); + const int numTilesH = topLeftYEnd - topLeftYStart + 1; + const int numTilesW = topLeftXEnd - topLeftXStart + 1; + + std::vector> variances(numTilesH, std::vector(numTilesW)); + for (int i = 0; i < numTilesH; ++i) { + const int tileY = topLeftYStart + i; + for (int j = 0; j < numTilesW; ++j) { + const int tileX = topLeftXStart + j; + const float avg = tileAverage(luminance, tileY, tileX, tilesize); + + if (avg < minLuminance || avg > maxLuminance) { + // too dark or too bright => skip the tile + variances[i][j] = RT_INFINITY_F; + continue; + } else { + variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + } + } + } + + float minvar = RT_INFINITY_F; + int minI = 0, minJ = 0; + for (int i = 0; i < numTilesH; ++i) { + for (int j = 0; j < numTilesW; ++j) { + if (variances[i][j] < minvar) { + minvar = variances[i][j]; + minI = i; + minJ = j; + } + } + } + if (minvar <= 4.f) { + JaggedArray Lum(tilesize, tilesize); + JaggedArray Blend(tilesize, tilesize); + const int minY = topLeftYStart + minI; + const int minX = topLeftXStart + minJ; + for (int i = 0; i < tilesize; ++i) { + for (int j = 0; j < tilesize; ++j) { + Lum[i][j] = luminance[i + minY][j + minX]; + } + } + contrastThreshold = calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f; + } else { + contrastThreshold = 0.f; } } - contrastThreshold = (pass == 0 || minvar <= 4.f) ? calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f : 0.f; - break; } } } From d9d8005706cb400cb7afdde3f89eb291ead130e7 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 7 Dec 2018 16:22:24 +0100 Subject: [PATCH 290/348] Some changes as suggested by @Floessie, #5070 --- rtengine/rt_algo.cc | 472 +++++++++++++++++++++----------------------- rtengine/rt_algo.h | 1 - 2 files changed, 225 insertions(+), 248 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index bd45819d9..a2ca3cac4 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #ifdef _OPENMP @@ -31,7 +32,6 @@ #include "rt_algo.h" #include "rt_math.h" #include "sleef.c" -#include "jaggedarray.h" namespace { float calcBlendFactor(float val, float threshold) { @@ -54,46 +54,110 @@ vfloat calcBlendFactor(vfloat valv, vfloat thresholdv) { float tileAverage(float **data, size_t tileY, size_t tileX, size_t tilesize) { + float avg = 0.f; #ifdef __SSE2__ vfloat avgv = ZEROV; - for (size_t y = tileY; y < tileY + tilesize; ++y) { - for (size_t x = tileX; x < tileX + tilesize; x += 4) { +#endif + for (std::size_t y = tileY; y < tileY + tilesize; ++y) { + std::size_t x = tileX; +#ifdef __SSE2__ + for (; x < tileX + tilesize - 3; x += 4) { avgv += LVFU(data[y][x]); } - } - const float avg = vhadd(avgv); -#else - float avg = 0.f; - for (size_t y = tileY; y < tileY + tilesize; ++y) { - for (size_t x = tileX; x < tileX + tilesize; ++x) { +#endif + for (; x < tileX + tilesize; ++x) { avg += data[y][x]; } } +#ifdef __SSE2__ + avg += vhadd(avgv); #endif return avg / rtengine::SQR(tilesize); } float tileVariance(float **data, size_t tileY, size_t tileX, size_t tilesize, float avg) { + float var = 0.f; #ifdef __SSE2__ vfloat varv = ZEROV; const vfloat avgv = F2V(avg); - for (size_t y = tileY; y < tileY + tilesize; ++y) { - for (size_t x = tileX; x < tileX + tilesize; x +=4) { +#endif + for (std::size_t y = tileY; y < tileY + tilesize; ++y) { + std::size_t x = tileX; +#ifdef __SSE2__ + for (; x < tileX + tilesize - 3; x += 4) { varv += SQRV(LVFU(data[y][x]) - avgv); } - } - const float var = vhadd(varv); -#else - float var = 0.f; - for (size_t y = tileY; y < tileY + tilesize; ++y) { - for (size_t x = tileX;; x < tileX + tilesize; ++x) { +#endif + for (; x < tileX + tilesize; ++x) { var += rtengine::SQR(data[y][x] - avg); } } +#ifdef __SSE2__ + var += vhadd(varv); #endif return var / (rtengine::SQR(tilesize) * avg); } + +float calcContrastThreshold(float** luminance, int tileY, int tileX, int tilesize) { + + constexpr float scale = 0.0625f / 327.68f; + std::vector> blend(tilesize - 4, std::vector(tilesize - 4)); + +#ifdef __SSE2__ + const vfloat scalev = F2V(scale); +#endif + + for(int j = tileY + 2; j < tileY + tilesize - 2; ++j) { + int i = tileX + 2; +#ifdef __SSE2__ + for(; i < tileX + tilesize - 5; i += 4) { + vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + + SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; + STVFU(blend[j - tileY - 2][i - tileX - 2], contrastv); + } +#endif + for(; i < tileX + tilesize - 2; ++i) { + + float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + + rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; + + blend[j - tileY - 2][i - tileX - 2] = contrast; + } + } + + const float limit = rtengine::SQR(tilesize - 4) / 100.f; + + int c; + for (c = 1; c < 100; ++c) { + const float contrastThreshold = c / 100.f; + float sum = 0.f; +#ifdef __SSE2__ + const vfloat contrastThresholdv = F2V(contrastThreshold); + vfloat sumv = ZEROV; +#endif + + for(int j = 0; j < tilesize - 4; ++j) { + int i = 0; +#ifdef __SSE2__ + for(; i < tilesize - 7; i += 4) { + sumv += calcBlendFactor(LVFU(blend[j][i]), contrastThresholdv); + } +#endif + for(; i < tilesize - 4; ++i) { + sum += calcBlendFactor(blend[j][i], contrastThreshold); + } + } +#ifdef __SSE2__ + sum += vhadd(sumv); +#endif + if (sum <= limit) { + break; + } + } + + return c / 100.f; +} } namespace rtengine @@ -237,254 +301,168 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& void buildBlendMask(float** luminance, float **blend, int W, int H, float &contrastThreshold, float amount, bool autoContrast) { - if(contrastThreshold == 0.f && !autoContrast) { + if (autoContrast) { + constexpr float minLuminance = 2000.f; + constexpr float maxLuminance = 20000.f; + for (int pass = 0; pass < 2; ++pass) { + const int tilesize = 80 / (pass + 1); + const int skip = pass == 0 ? tilesize : tilesize / 4; + const int numTilesW = W / skip - 3 * pass; + const int numTilesH = H / skip - 3 * pass; + std::vector> variances(numTilesH, std::vector(numTilesW)); + +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic) +#endif + for (int i = 0; i < numTilesH; ++i) { + const int tileY = i * skip; + for (int j = 0; j < numTilesW; ++j) { + const int tileX = j * skip; + const float avg = tileAverage(luminance, tileY, tileX, tilesize); + if (avg < minLuminance || avg > maxLuminance) { + // too dark or too bright => skip the tile + variances[i][j] = RT_INFINITY_F; + continue; + } else { + variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + } + } + } + + float minvar = RT_INFINITY_F; + int minI = 0, minJ = 0; + for (int i = 0; i < numTilesH; ++i) { + for (int j = 0; j < numTilesW; ++j) { + if (variances[i][j] < minvar) { + minvar = variances[i][j]; + minI = i; + minJ = j; + } + } + } + + const int minY = skip * minI; + const int minX = skip * minJ; + + if (minvar <= 1.f || pass == 1) { + if (pass == 0) { + // a variance <= 1 means we already found a flat region and can skip second pass + contrastThreshold = calcContrastThreshold(luminance, minY, minX, tilesize); + break; + } else { + // in second pass we allow a variance of 4 + // we additionally scan the tiles +-skip pixels around the best tile from pass 2 + // Means we scan (2 * skip + 1)^2 tiles in this step to get a better hit rate + // fortunately the scan is quite fast, so we use only one core and don't parallelize + const int topLeftYStart = std::max(minY - skip, 0); + const int topLeftXStart = std::max(minX - skip, 0); + const int topLeftYEnd = std::min(minY + skip, H - tilesize); + const int topLeftXEnd = std::min(minX + skip, W - tilesize); + const int numTilesH = topLeftYEnd - topLeftYStart + 1; + const int numTilesW = topLeftXEnd - topLeftXStart + 1; + + std::vector> variances(numTilesH, std::vector(numTilesW)); + for (int i = 0; i < numTilesH; ++i) { + const int tileY = topLeftYStart + i; + for (int j = 0; j < numTilesW; ++j) { + const int tileX = topLeftXStart + j; + const float avg = tileAverage(luminance, tileY, tileX, tilesize); + + if (avg < minLuminance || avg > maxLuminance) { + // too dark or too bright => skip the tile + variances[i][j] = RT_INFINITY_F; + continue; + } else { + variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + } + } + } + + float minvar = RT_INFINITY_F; + int minI = 0, minJ = 0; + for (int i = 0; i < numTilesH; ++i) { + for (int j = 0; j < numTilesW; ++j) { + if (variances[i][j] < minvar) { + minvar = variances[i][j]; + minI = i; + minJ = j; + } + } + } + contrastThreshold = minvar <= 4.f ? calcContrastThreshold(luminance, topLeftYStart + minI, topLeftXStart + minJ, tilesize) : 0.f; + } + } + } + } + + if(contrastThreshold == 0.f) { for(int j = 0; j < H; ++j) { for(int i = 0; i < W; ++i) { blend[j][i] = amount; } } } else { - if (autoContrast) { - constexpr float minLuminance = 2000.f; - constexpr float maxLuminance = 20000.f; - for (int pass = 0; pass < 2; ++pass) { - const int tilesize = 80 / (pass + 1); - const int skip = pass == 0 ? tilesize : tilesize / 4; - const int numTilesW = W / skip - 3 * pass; - const int numTilesH = H / skip - 3 * pass; - std::vector> variances(numTilesH, std::vector(numTilesW)); - + constexpr float scale = 0.0625f / 327.68f; #ifdef _OPENMP - #pragma omp parallel for schedule(dynamic) + #pragma omp parallel +#endif + { +#ifdef __SSE2__ + const vfloat contrastThresholdv = F2V(contrastThreshold); + const vfloat scalev = F2V(scale); + const vfloat amountv = F2V(amount); #endif - for (int i = 0; i < numTilesH; ++i) { - const int tileY = i * skip; - for (int j = 0; j < numTilesW; ++j) { - const int tileX = j * skip; - const float avg = tileAverage(luminance, tileY, tileX, tilesize); - if (avg < minLuminance || avg > maxLuminance) { - // too dark or too bright => skip the tile - variances[i][j] = RT_INFINITY_F; - continue; - } else { - variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); - } - } - } - - float minvar = RT_INFINITY_F; - int minI = 0, minJ = 0; - for (int i = 0; i < numTilesH; ++i) { - for (int j = 0; j < numTilesW; ++j) { - if (variances[i][j] < minvar) { - minvar = variances[i][j]; - minI = i; - minJ = j; - } - } - } - - const int minY = skip * minI; - const int minX = skip * minJ; - - if (minvar <= 1.f || pass == 1) { - if (pass == 0) { - // a variance <= 1 means we already found a flat region and can skip second pass - JaggedArray Lum(tilesize, tilesize); - JaggedArray Blend(tilesize, tilesize); - for (int i = 0; i < tilesize; ++i) { - for (int j = 0; j < tilesize; ++j) { - Lum[i][j] = luminance[i + minY][j + minX]; - } - } - contrastThreshold = calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f; - break; - } else { - // in second pass we allow a variance of 4 - // we additionally scan the tiles +-skip pixels around the best tile from pass 2 - // Means we scan (2 * skip + 1)^2 tiles in this step to get a better hit rate - // fortunately the scan is quite fast, so we use only one core and don't parallelize - const int topLeftYStart = std::max(minY - skip, 0); - const int topLeftXStart = std::max(minX - skip, 0); - const int topLeftYEnd = std::min(minY + skip, H - tilesize); - const int topLeftXEnd = std::min(minX + skip, W - tilesize); - const int numTilesH = topLeftYEnd - topLeftYStart + 1; - const int numTilesW = topLeftXEnd - topLeftXStart + 1; - - std::vector> variances(numTilesH, std::vector(numTilesW)); - for (int i = 0; i < numTilesH; ++i) { - const int tileY = topLeftYStart + i; - for (int j = 0; j < numTilesW; ++j) { - const int tileX = topLeftXStart + j; - const float avg = tileAverage(luminance, tileY, tileX, tilesize); - - if (avg < minLuminance || avg > maxLuminance) { - // too dark or too bright => skip the tile - variances[i][j] = RT_INFINITY_F; - continue; - } else { - variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); - } - } - } - - float minvar = RT_INFINITY_F; - int minI = 0, minJ = 0; - for (int i = 0; i < numTilesH; ++i) { - for (int j = 0; j < numTilesW; ++j) { - if (variances[i][j] < minvar) { - minvar = variances[i][j]; - minI = i; - minJ = j; - } - } - } - if (minvar <= 4.f) { - JaggedArray Lum(tilesize, tilesize); - JaggedArray Blend(tilesize, tilesize); - const int minY = topLeftYStart + minI; - const int minX = topLeftXStart + minJ; - for (int i = 0; i < tilesize; ++i) { - for (int j = 0; j < tilesize; ++j) { - Lum[i][j] = luminance[i + minY][j + minX]; - } - } - contrastThreshold = calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f; - } else { - contrastThreshold = 0.f; - } - } - } - } - } - - if(contrastThreshold == 0.f) { - for(int j = 0; j < H; ++j) { - for(int i = 0; i < W; ++i) { - blend[j][i] = amount; - } - } - } else { - constexpr float scale = 0.0625f / 327.68f; #ifdef _OPENMP - #pragma omp parallel + #pragma omp for schedule(dynamic,16) +#endif + + for(int j = 2; j < H - 2; ++j) { + int i = 2; +#ifdef __SSE2__ + for(; i < W - 5; i += 4) { + vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + + SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; + + STVFU(blend[j][i], amountv * calcBlendFactor(contrastv, contrastThresholdv)); + } +#endif + for(; i < W - 2; ++i) { + + float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + + rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; + + blend[j][i] = amount * calcBlendFactor(contrast, contrastThreshold); + } + } + +#ifdef _OPENMP + #pragma omp single #endif { -#ifdef __SSE2__ - const vfloat contrastThresholdv = F2V(contrastThreshold); - const vfloat scalev = F2V(scale); - const vfloat amountv = F2V(amount); -#endif -#ifdef _OPENMP - #pragma omp for schedule(dynamic,16) -#endif - - for(int j = 2; j < H - 2; ++j) { - int i = 2; -#ifdef __SSE2__ - for(; i < W - 5; i += 4) { - vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + - SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; - - STVFU(blend[j][i], amountv * calcBlendFactor(contrastv, contrastThresholdv)); - } -#endif - for(; i < W - 2; ++i) { - - float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + - rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; - - blend[j][i] = amount * calcBlendFactor(contrast, contrastThreshold); + // upper border + for(int j = 0; j < 2; ++j) { + for(int i = 2; i < W - 2; ++i) { + blend[j][i] = blend[2][i]; } } - -#ifdef _OPENMP - #pragma omp single -#endif - { - // upper border - for(int j = 0; j < 2; ++j) { - for(int i = 2; i < W - 2; ++i) { - blend[j][i] = blend[2][i]; - } - } - // lower border - for(int j = H - 2; j < H; ++j) { - for(int i = 2; i < W - 2; ++i) { - blend[j][i] = blend[H-3][i]; - } - } - for(int j = 0; j < H; ++j) { - // left border - blend[j][0] = blend[j][1] = blend[j][2]; - // right border - blend[j][W - 2] = blend[j][W - 1] = blend[j][W - 3]; + // lower border + for(int j = H - 2; j < H; ++j) { + for(int i = 2; i < W - 2; ++i) { + blend[j][i] = blend[H-3][i]; } } - - // blur blend mask to smooth transitions - gaussianBlur(blend, blend, W, H, 2.0); + for(int j = 0; j < H; ++j) { + // left border + blend[j][0] = blend[j][1] = blend[j][2]; + // right border + blend[j][W - 2] = blend[j][W - 1] = blend[j][W - 3]; + } } + + // blur blend mask to smooth transitions + gaussianBlur(blend, blend, W, H, 2.0); } } } -int calcContrastThreshold(float** luminance, float **blend, int W, int H) { - - constexpr float scale = 0.0625f / 327.68f; - -#ifdef __SSE2__ - const vfloat scalev = F2V(scale); -#endif - - for(int j = 2; j < H - 2; ++j) { - int i = 2; -#ifdef __SSE2__ - for(; i < W - 5; i += 4) { - vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + - SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; - STVFU(blend[j -2 ][i - 2], contrastv); - } -#endif - for(; i < W - 2; ++i) { - - float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + - rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; - - blend[j -2][i- 2] = contrast; - } - } - - const float limit = (W - 4) * (H - 4) / 100.f; - - int c; - for (c = 1; c < 100; ++c) { - const float contrastThreshold = c / 100.f; - float sum = 0.f; -#ifdef __SSE2__ - const vfloat contrastThresholdv = F2V(contrastThreshold); - vfloat sumv = ZEROV; -#endif - - for(int j = 0; j < H - 4; ++j) { - int i = 0; -#ifdef __SSE2__ - for(; i < W - 7; i += 4) { - sumv += calcBlendFactor(LVFU(blend[j][i]), contrastThresholdv); - } -#endif - for(; i < W - 4; ++i) { - sum += calcBlendFactor(blend[j][i], contrastThreshold); - } - } -#ifdef __SSE2__ - sum += vhadd(sumv); -#endif - if (sum <= limit) { - break; - } - } - - return c; -} } diff --git a/rtengine/rt_algo.h b/rtengine/rt_algo.h index 0207e6f57..a8e2e3e23 100644 --- a/rtengine/rt_algo.h +++ b/rtengine/rt_algo.h @@ -25,5 +25,4 @@ namespace rtengine { void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& minOut, float maxPrct, float& maxOut, bool multiThread = true); void buildBlendMask(float** luminance, float **blend, int W, int H, float &contrastThreshold, float amount = 1.f, bool autoContrast = false); -int calcContrastThreshold(float** luminance, float **blend, int W, int H); } From 3f606c776a06a42f6851bec4142d4a7da6e9d09d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 7 Dec 2018 22:07:56 +0100 Subject: [PATCH 291/348] exclude tiles with too low variance from calculation of dual demosaic contrast threshold --- rtengine/rt_algo.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index a2ca3cac4..a304b654f 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -304,6 +304,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr if (autoContrast) { constexpr float minLuminance = 2000.f; constexpr float maxLuminance = 20000.f; + constexpr float minTileVariance = 0.5f; for (int pass = 0; pass < 2; ++pass) { const int tilesize = 80 / (pass + 1); const int skip = pass == 0 ? tilesize : tilesize / 4; @@ -325,6 +326,8 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr continue; } else { variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + // exclude tiles with a variance less than minTileVariance + variances[i][j] = variances[i][j] < minTileVariance ? RT_INFINITY_F : variances[i][j]; } } } @@ -341,10 +344,9 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } - const int minY = skip * minI; - const int minX = skip * minJ; - if (minvar <= 1.f || pass == 1) { + const int minY = skip * minI; + const int minX = skip * minJ; if (pass == 0) { // a variance <= 1 means we already found a flat region and can skip second pass contrastThreshold = calcContrastThreshold(luminance, minY, minX, tilesize); @@ -374,6 +376,8 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr continue; } else { variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + // exclude tiles with a variance less than minTileVariance + variances[i][j] = variances[i][j] < minTileVariance ? RT_INFINITY_F : variances[i][j]; } } } From 04d5ba3f918f49b89b5b1f4bf95fa190e48e3bcc Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 8 Dec 2018 01:30:09 +0100 Subject: [PATCH 292/348] reduce silencing of warnings for dcraw code --- rtengine/dcraw.cc | 6 ++---- rtengine/dcraw.h | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 7d4ec4376..180eed1c0 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1,12 +1,9 @@ #ifdef __GNUC__ #pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Warray-bounds" #pragma GCC diagnostic ignored "-Wsign-compare" -#pragma GCC diagnostic ignored "-Wparentheses" #if (__GNUC__ >= 6) #pragma GCC diagnostic ignored "-Wmisleading-indentation" #if (__GNUC__ >= 7) -#pragma GCC diagnostic ignored "-Wdangling-else" #endif #endif #endif @@ -1045,10 +1042,11 @@ void CLASS canon_sraw_load_raw() for (row=0; row < height; row++, ip+=width) { if (row & (jh.sraw >> 1)) for (col=0; col < width; col+=2) - for (c=1; c < 3; c++) + for (c=1; c < 3; c++) { if (row == height-1) ip[col][c] = ip[col-width][c]; else ip[col][c] = (ip[col-width][c] + ip[col+width][c] + 1) >> 1; + } for (col=1; col < width; col+=2) for (c=1; c < 3; c++) if (col == width-1) diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index 923d6190f..96d778815 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -343,7 +343,7 @@ void parse_qt (int end); // ph1_bithuff(int nbits, ushort *huff); class ph1_bithuff_t { public: - ph1_bithuff_t(DCraw *p, IMFILE *i, short &o):parent(p),order(o),ifp(i),bitbuf(0),vbits(0){} + ph1_bithuff_t(DCraw *p, IMFILE *i, short &o):order(o),ifp(i),bitbuf(0),vbits(0){} unsigned operator()(int nbits, ushort *huff); unsigned operator()(int nbits); unsigned operator()(); @@ -376,7 +376,6 @@ private: } } - DCraw *parent; short ℴ IMFILE* const ifp; UINT64 bitbuf; From 033b021b9b04997d1fe228fc85ff076997cd5a6b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 8 Dec 2018 01:45:55 +0100 Subject: [PATCH 293/348] removed useless #if --- rtengine/dcraw.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 180eed1c0..660d65385 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -3,8 +3,6 @@ #pragma GCC diagnostic ignored "-Wsign-compare" #if (__GNUC__ >= 6) #pragma GCC diagnostic ignored "-Wmisleading-indentation" -#if (__GNUC__ >= 7) -#endif #endif #endif From 8995f839cc4673f2ff3ac2bd3698de0ffccf95e1 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sat, 8 Dec 2018 09:58:55 +0100 Subject: [PATCH 294/348] TWB-theme, cosmetic changes --- rtdata/themes/TooWaBlue-GTK3-20_.css | 34 ++++++++++++---------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index c0bfd207c..164e5431d 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-2018 TooWaBoo - Version 2.99 + Version 3.00 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1245,47 +1245,47 @@ menu image:not(.dummy), } /*** Selection popup list (used in filechooser) ***/ -entry > window > frame { +entry > window > frame:not(.dummy) { background-color: @bg-dark-grey; + padding: 0; } -entry > window > frame > border { +entry > window > frame > border:not(.dummy) { background-color: @bg-dark-grey; padding: 0.083333333333333333em; - border: 0.083333333333333333em solid @accent-color; -} -entry > window > frame > border { margin: 0.083333333333333333em; + border: 0.083333333333333333em solid @accent-color; } /* end */ /*** end ***************************************************************************************/ /*** Popover *** Context menu filechooser ******************************************************/ - -popover.background { +.csd popover { + box-shadow: 0 1px 6px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; +} +popover { background-color: @bg-dark-grey; border: 0.083333333333333333em solid @accent-color; border-radius: 0; padding: 0; margin: 0; - box-shadow: 0 1px 6px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; } -popover.background > box { +popover > box { padding: 0; margin: -9px; } -popover.background modelbutton { +popover modelbutton { min-height: 2em; padding: 0 0.416666666666666666em; margin: 0; border-radius: 0; } -popover.background label { +popover label { margin-right: 0.5em; } -popover.background modelbutton:hover label, -popover.background modelbutton:hover { +popover modelbutton:hover label, +popover modelbutton:hover { background-color: @accent-color; color: @text-hl-color; } @@ -2057,14 +2057,10 @@ headerbar { background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86)); border-bottom: 0.083333333333333333em solid @bg-dark-grey; border-radius: 0.416666666666666666em 0.416666666666666666em 0 0; - min-height: 2.333333333333333333em; + min-height: 2em; padding: 0.083333333333333333em 0.416666666666666666em 0; margin: 0; } -messagedialog headerbar { - min-height: 2em; - -} headerbar .title{ color: @winTitle; } From 1d010029538833bd21af3b3d9ae1d19211ec9474 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 8 Dec 2018 17:42:31 +0100 Subject: [PATCH 295/348] Added console output, #5070 --- rtengine/rt_algo.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index a304b654f..60042cba4 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -32,7 +32,7 @@ #include "rt_algo.h" #include "rt_math.h" #include "sleef.c" - +#include namespace { float calcBlendFactor(float val, float threshold) { // sigmoid function @@ -343,7 +343,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } } - + std::cout << pass + 1 << " : " << minvar << std::endl; if (minvar <= 1.f || pass == 1) { const int minY = skip * minI; const int minX = skip * minJ; @@ -393,6 +393,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } } + std::cout << 3 << " : " << minvar << std::endl; contrastThreshold = minvar <= 4.f ? calcContrastThreshold(luminance, topLeftYStart + minI, topLeftXStart + minJ, tilesize) : 0.f; } } From 3a95922c7c0b2193a1924ee4cb0acf520d019cde Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sat, 8 Dec 2018 19:10:07 +0100 Subject: [PATCH 296/348] Cosmetic changes --- rtdata/themes/TooWaBlue-GTK3-20_.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index 164e5431d..33017626a 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -1260,7 +1260,7 @@ entry > window > frame > border:not(.dummy) { /*** end ***************************************************************************************/ /*** Popover *** Context menu filechooser ******************************************************/ -.csd popover { +popover { box-shadow: 0 1px 6px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; } popover { From 5162484517b9711dc4e274f8bae8f514bc617f0b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 8 Dec 2018 21:57:56 +0100 Subject: [PATCH 297/348] First quick&dirty version of flat region blur, #5075 --- rtdata/languages/default | 2 ++ rtengine/ipsharpen.cc | 42 ++++++++++++++++++++++++++++++++++++++-- rtengine/procparams.cc | 4 ++++ rtengine/procparams.h | 1 + rtgui/paramsedited.cc | 6 ++++++ rtgui/paramsedited.h | 1 + rtgui/sharpening.cc | 20 +++++++++++++++++-- rtgui/sharpening.h | 2 ++ 8 files changed, 74 insertions(+), 4 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index da79ec3ac..ae75bc343 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -774,6 +774,7 @@ HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift HISTORY_MSG_RAW_BORDER;Raw border HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling +HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light @@ -2034,6 +2035,7 @@ TP_SHARPENEDGE_LABEL;Edges TP_SHARPENEDGE_PASSES;Iterations TP_SHARPENEDGE_THREE;Luminance only TP_SHARPENING_AMOUNT;Amount +TP_SHARPENING_BLUR;Blur radius TP_SHARPENING_CONTRAST;Contrast threshold TP_SHARPENING_EDRADIUS;Radius TP_SHARPENING_EDTOLERANCE;Edge tolerance diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 321dd635f..002337b2f 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -159,7 +159,7 @@ extern const Settings* settings; void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, int W, int H, const SharpeningParams &sharpenParam) { - if (sharpenParam.deconvamount < 1) { + if (sharpenParam.deconvamount == 0) { return; } BENCHFUN @@ -178,7 +178,14 @@ BENCHFUN JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; buildBlendMask(luminance, blend, W, H, contrast, sharpenParam.deconvamount / 100.f); + JaggedArray blur(W, H); + if(sharpenParam.blurradius > 0) { + #pragma omp parallel + { + gaussianBlur(tmpI, blur, W, H, sharpenParam.blurradius); + } + } const float damping = sharpenParam.deconvdamping / 5.0; const bool needdamp = sharpenParam.deconvdamping > 0; const double sigma = sharpenParam.deconvradius / scale; @@ -208,6 +215,17 @@ BENCHFUN luminance[i][j] = intp(blend[i][j], max(tmpI[i][j], 0.0f), luminance[i][j]); } } + + if(sharpenParam.blurradius > 0) { +#ifdef _OPENMP + #pragma omp for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + luminance[i][j] = intp(blend[i][j], luminance[i][j], max(blur[i][j], 0.0f)); + } + } + } } // end parallel } @@ -224,7 +242,7 @@ void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpen // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; - buildBlendMask(lab->L, blend, W, H, contrast, sharpenParam.method == "rld" ? sharpenParam.deconvamount / 100.f : 1.f); + buildBlendMask(lab->L, blend, W, H, contrast, sharpenParam.method == "rld" ? 1.f : 1.f); #ifdef _OPENMP #pragma omp parallel for #endif @@ -256,6 +274,15 @@ BENCHFUN } } + JaggedArray blur(W, H); + + if(sharpenParam.blurradius > 0) { + #pragma omp parallel + { + gaussianBlur(lab->L, blur, W, H, sharpenParam.blurradius); + } + } + // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; @@ -322,6 +349,17 @@ BENCHFUN delete [] b3; } + if(sharpenParam.blurradius > 0) { +#ifdef _OPENMP + #pragma omp parallel for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + lab->L[i][j] = intp(blend[i][j], lab->L[i][j], max(blur[i][j], 0.0f)); + } + } + } + } // To the extent possible under law, Manuel Llorens diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 9addfdce9..7ce7b8608 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1079,6 +1079,7 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv SharpeningParams::SharpeningParams() : enabled(false), contrast(20.0), + blurradius(0.2), radius(0.5), amount(200), threshold(20, 80, 2000, 1200, false), @@ -1100,6 +1101,7 @@ bool SharpeningParams::operator ==(const SharpeningParams& other) const return enabled == other.enabled && contrast == other.contrast + && blurradius == other.blurradius && radius == other.radius && amount == other.amount && threshold == other.threshold @@ -3022,6 +3024,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->sharpening.contrast, "Sharpening", "Contrast", sharpening.contrast, keyFile); saveToKeyfile(!pedited || pedited->sharpening.method, "Sharpening", "Method", sharpening.method, keyFile); saveToKeyfile(!pedited || pedited->sharpening.radius, "Sharpening", "Radius", sharpening.radius, keyFile); + saveToKeyfile(!pedited || pedited->sharpening.blurradius, "Sharpening", "BlurRadius", sharpening.blurradius, keyFile); saveToKeyfile(!pedited || pedited->sharpening.amount, "Sharpening", "Amount", sharpening.amount, keyFile); saveToKeyfile(!pedited || pedited->sharpening.threshold, "Sharpening", "Threshold", sharpening.threshold.toVector(), keyFile); saveToKeyfile(!pedited || pedited->sharpening.edgesonly, "Sharpening", "OnlyEdges", sharpening.edgesonly, keyFile); @@ -3908,6 +3911,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } assignFromKeyfile(keyFile, "Sharpening", "Radius", pedited, sharpening.radius, pedited->sharpening.radius); + assignFromKeyfile(keyFile, "Sharpening", "BlurRadius", pedited, sharpening.blurradius, pedited->sharpening.blurradius); assignFromKeyfile(keyFile, "Sharpening", "Amount", pedited, sharpening.amount, pedited->sharpening.amount); if (keyFile.has_key("Sharpening", "Threshold")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 79f3fc7ec..d1b70b9c2 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -493,6 +493,7 @@ struct ColorToningParams { struct SharpeningParams { bool enabled; double contrast; + double blurradius; double radius; int amount; Threshold threshold; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 27b06c4f7..7f44c7738 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -147,6 +147,7 @@ void ParamsEdited::set(bool v) sharpening.enabled = v; sharpening.contrast = v; sharpening.radius = v; + sharpening.blurradius = v; sharpening.amount = v; sharpening.threshold = v; sharpening.edgesonly = v; @@ -719,6 +720,7 @@ void ParamsEdited::initFrom(const std::vector& sharpening.enabled = sharpening.enabled && p.sharpening.enabled == other.sharpening.enabled; sharpening.contrast = sharpening.contrast && p.sharpening.contrast == other.sharpening.contrast; sharpening.radius = sharpening.radius && p.sharpening.radius == other.sharpening.radius; + sharpening.blurradius = sharpening.blurradius && p.sharpening.blurradius == other.sharpening.blurradius; sharpening.amount = sharpening.amount && p.sharpening.amount == other.sharpening.amount; sharpening.threshold = sharpening.threshold && p.sharpening.threshold == other.sharpening.threshold; sharpening.edgesonly = sharpening.edgesonly && p.sharpening.edgesonly == other.sharpening.edgesonly; @@ -1639,6 +1641,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.sharpening.radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.radius + mods.sharpening.radius : mods.sharpening.radius; } + if (sharpening.blurradius) { + toEdit.sharpening.blurradius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.blurradius + mods.sharpening.blurradius : mods.sharpening.blurradius; + } + if (sharpening.amount) { toEdit.sharpening.amount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.amount + mods.sharpening.amount : mods.sharpening.amount; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 7b4b9c061..3e77fcf56 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -209,6 +209,7 @@ class SharpeningParamsEdited public: bool enabled; bool contrast; + bool blurradius; bool radius; bool amount; bool threshold; diff --git a/rtgui/sharpening.cc b/rtgui/sharpening.cc index 3614594ea..8a7b8e591 100644 --- a/rtgui/sharpening.cc +++ b/rtgui/sharpening.cc @@ -27,6 +27,7 @@ Sharpening::Sharpening () : FoldableToolPanel(this, "sharpening", M("TP_SHARPENI { auto m = ProcEventMapper::getInstance(); EvSharpenContrast = m->newEvent(SHARPENING, "HISTORY_MSG_SHARPENING_CONTRAST"); + EvSharpenBlur = m->newEvent(SHARPENING, "HISTORY_MSG_SHARPENING_BLUR"); Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ()); hb->show (); @@ -34,6 +35,10 @@ Sharpening::Sharpening () : FoldableToolPanel(this, "sharpening", M("TP_SHARPENI contrast->setAdjusterListener (this); pack_start(*contrast); contrast->show(); + blur = Gtk::manage(new Adjuster (M("TP_SHARPENING_BLUR"), 0.2, 2.0, 0.05, 0.2)); + blur->setAdjusterListener (this); + pack_start(*blur); + blur->show(); Gtk::Label* ml = Gtk::manage (new Gtk::Label (M("TP_SHARPENING_METHOD") + ":")); ml->show (); @@ -152,7 +157,8 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited) disableListener (); if (pedited) { - contrast->setEditedState (pedited->sharpening.contrast ? Edited : UnEdited); + contrast->setEditedState (pedited->sharpening.contrast ? Edited : UnEdited); + blur->setEditedState (pedited->sharpening.blurradius ? Edited : UnEdited); amount->setEditedState (pedited->sharpening.amount ? Edited : UnEdited); radius->setEditedState (pedited->sharpening.radius ? Edited : UnEdited); threshold->setEditedState (pedited->sharpening.threshold ? Edited : UnEdited); @@ -182,6 +188,7 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited) lastHaloControl = pp->sharpening.halocontrol; contrast->setValue (pp->sharpening.contrast); + blur->setValue (pp->sharpening.blurradius); amount->setValue (pp->sharpening.amount); radius->setValue (pp->sharpening.radius); threshold->setValue(pp->sharpening.threshold); @@ -224,6 +231,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited) { pp->sharpening.contrast = contrast->getValue (); + pp->sharpening.blurradius = blur->getValue (); pp->sharpening.amount = (int)amount->getValue(); pp->sharpening.enabled = getEnabled (); pp->sharpening.radius = radius->getValue (); @@ -246,6 +254,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited) if (pedited) { pedited->sharpening.contrast = contrast->getEditedState (); + pedited->sharpening.blurradius = blur->getEditedState (); pedited->sharpening.amount = amount->getEditedState (); pedited->sharpening.radius = radius->getEditedState (); pedited->sharpening.threshold = threshold->getEditedState (); @@ -266,6 +275,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited) void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) { contrast->setDefault (defParams->sharpening.contrast); + blur->setDefault (defParams->sharpening.blurradius); amount->setDefault (defParams->sharpening.amount); radius->setDefault (defParams->sharpening.radius); threshold->setDefault (defParams->sharpening.threshold); @@ -279,6 +289,7 @@ void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* p if (pedited) { contrast->setDefaultEditedState (pedited->sharpening.contrast ? Edited : UnEdited); + blur->setDefaultEditedState (pedited->sharpening.blurradius ? Edited : UnEdited); amount->setDefaultEditedState (pedited->sharpening.amount ? Edited : UnEdited); radius->setDefaultEditedState (pedited->sharpening.radius ? Edited : UnEdited); threshold->setDefaultEditedState (pedited->sharpening.threshold ? Edited : UnEdited); @@ -291,6 +302,7 @@ void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* p ddamping->setDefaultEditedState (pedited->sharpening.deconvdamping ? Edited : UnEdited); } else { contrast->setDefaultEditedState (Irrelevant); + blur->setDefaultEditedState (Irrelevant); amount->setDefaultEditedState (Irrelevant); radius->setDefaultEditedState (Irrelevant); threshold->setDefaultEditedState (Irrelevant); @@ -310,7 +322,7 @@ void Sharpening::adjusterChanged(Adjuster* a, double newval) Glib::ustring costr; - if (a == radius || a == dradius) { + if (a == radius || a == dradius || a == blur) { costr = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), a->getValue()); } else if (a == eradius) { costr = Glib::ustring::format (std::setw(2), std::fixed, std::setprecision(1), a->getValue()); @@ -324,6 +336,8 @@ void Sharpening::adjusterChanged(Adjuster* a, double newval) listener->panelChanged (EvShrAmount, costr); } else if (a == radius) { listener->panelChanged (EvShrRadius, costr); + } else if (a == blur) { + listener->panelChanged (EvSharpenBlur, costr); } else if (a == eradius) { listener->panelChanged (EvShrEdgeRadius, costr); } else if (a == etolerance) { @@ -487,6 +501,7 @@ void Sharpening::setBatchMode (bool batchMode) pack_start (*rld); contrast->showEditedCB (); + blur->showEditedCB (); radius->showEditedCB (); amount->showEditedCB (); threshold->showEditedCB (); @@ -518,6 +533,7 @@ void Sharpening::setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amo void Sharpening::trimValues (rtengine::procparams::ProcParams* pp) { contrast->trimValue(pp->sharpening.contrast); + blur->trimValue(pp->sharpening.blurradius); radius->trimValue(pp->sharpening.radius); dradius->trimValue(pp->sharpening.deconvradius); amount->trimValue(pp->sharpening.amount); diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h index fa5c956da..75ea083c9 100644 --- a/rtgui/sharpening.h +++ b/rtgui/sharpening.h @@ -29,6 +29,7 @@ class Sharpening : public ToolParamBlock, public ThresholdAdjusterListener, publ protected: Adjuster* contrast; + Adjuster* blur; MyComboBoxText* method; Adjuster* dradius; Adjuster* damount; @@ -55,6 +56,7 @@ protected: sigc::connection hcConn; rtengine::ProcEvent EvSharpenContrast; + rtengine::ProcEvent EvSharpenBlur; public: Sharpening (); From 7d17b2ef277c68c1eba9629af1ee518ba5fed2d6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 8 Dec 2018 22:01:37 +0100 Subject: [PATCH 298/348] bugfix for last commit --- rtengine/ipsharpen.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 002337b2f..e72c665d5 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -242,7 +242,7 @@ void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpen // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; - buildBlendMask(lab->L, blend, W, H, contrast, sharpenParam.method == "rld" ? 1.f : 1.f); + buildBlendMask(lab->L, blend, W, H, contrast, sharpenParam.method == "rld" ? sharpenParam.deconvamount / 100.f : 1.f); #ifdef _OPENMP #pragma omp parallel for #endif From ef4160a7ceefb37bfeb5d7f06fba2e5e3392481c Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 9 Dec 2018 10:03:30 +0100 Subject: [PATCH 299/348] Make "Save Profile" dialog act like other save dialogs --- rtgui/profilepanel.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index 64f10ca0e..eb835c648 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -307,8 +307,6 @@ void ProfilePanel::save_clicked (GdkEventButton* event) do { if (dialog.run() == Gtk::RESPONSE_OK) { - dialog.hide(); - std::string fname = dialog.get_filename(); Glib::ustring ext = getExtension (fname); From 1a0a2f4eaa05a7a2fe951d1136b505871f257ec7 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 9 Dec 2018 21:40:35 +0100 Subject: [PATCH 300/348] Spanish translation updated by Faber777 Closes #5079 --- rtdata/languages/Espanol | 1580 ++++++++++++++++++++------------------ 1 file changed, 833 insertions(+), 747 deletions(-) diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 079f87c1d..54995f678 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -60,20 +60,29 @@ #60 2013-01-03 OdeLama, translation for v4.0.12 of untranslated/changed strings #61 2014-01-14 mapelo, bug correction and small enhancements. #62 2014-10-10 fotger +#63 2018-12-09 Faber777 +;PREFERENCES_D50_OLD;5000K ABOUT_TAB_BUILD;Versión ABOUT_TAB_CREDITS;Créditos ABOUT_TAB_LICENSE;Licencia 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 +BATCHQUEUE_STARTSTOPHINT;Iniciar o detener el procesamiento de las imágenes en la cola.\nAtajo: Ctrl + s BATCH_PROCESSING;Proceso por lotes +CURVEEDITOR_AXIS_IN;I: +CURVEEDITOR_AXIS_LEFT_TAN;LT: +CURVEEDITOR_AXIS_OUT;O: +CURVEEDITOR_AXIS_RIGHT_TAN;RT: CURVEEDITOR_CURVE;Curva CURVEEDITOR_CURVES;Curvas CURVEEDITOR_CUSTOM;Personalizado CURVEEDITOR_DARKS;Oscuros +CURVEEDITOR_EDITPOINT_HINT;Active la edición de los valores de entrada / salida del nodo. \nHaga clic con el botón derecho en un nodo para seleccionarlo. \nHaga clic con el botón derecho en el espacio vacío para anular la selección del nodo. CURVEEDITOR_HIGHLIGHTS;Luces altas CURVEEDITOR_LIGHTS;Luces CURVEEDITOR_LINEAR;Lineal @@ -90,6 +99,16 @@ CURVEEDITOR_TOOLTIPPASTE;Pegar curva desde el portapapeles CURVEEDITOR_TOOLTIPSAVE;Guardar curva actual CURVEEDITOR_TYPE;Tipo: DIRBROWSER_FOLDERS;Carpetas +DONT_SHOW_AGAIN;No muestres este mensaje otra vez. +DYNPROFILEEDITOR_DELETE;Borrar +DYNPROFILEEDITOR_EDIT;Editar +DYNPROFILEEDITOR_EDIT_RULE;Editar regla de perfil dinámico +DYNPROFILEEDITOR_ENTRY_TOOLTIP;La coincidencia no distingue entre mayúsculas y minúsculas. \nUtilice el prefijo "re:" para ingresar \nUna expresión regular. +DYNPROFILEEDITOR_MOVE_DOWN;Mover hacia abajo +DYNPROFILEEDITOR_MOVE_UP;Mover hacia arriba +DYNPROFILEEDITOR_NEW;Nuevo +DYNPROFILEEDITOR_NEW_RULE;Nueva regla de perfil dinámico +DYNPROFILEEDITOR_PROFILE;Perfil de procesamiento EDITWINDOW_TITLE;Edición de imagen EDIT_OBJECT_TOOLTIP;Muestra un instrumento en la ventana de previo, el cual le permitirá ajustar esta herramienta. EDIT_PIPETTE_TOOLTIP;Para agregar un punto de ajuste en la curva , mantenga presionada la tecla Ctrl mientras oprime el botón izquierdo del ratón sobre el punto deseado en el previo de la imagen.\nPara ajustar el punto, mantenga presionada la tecla Ctrl mientras oprime el botón izquierdo del ratón sobre la correspondiente area en el previo y muevase hacia arriba y/o hacia abajo, logrando un ajuste fino del punto en la curva. Si desea un ajuste mayor, libere la tecla Ctrl. @@ -115,11 +134,14 @@ EXIFPANEL_RESET;Restablecer EXIFPANEL_RESETALL;Restablecer todo EXIFPANEL_RESETALLHINT;Restablecer todos los atributos a los valores predeterminados EXIFPANEL_RESETHINT;Restablecer atributos seleccionados a los valores predeterminados +EXIFPANEL_SHOWALL;Mostrar todo EXIFPANEL_SUBDIRECTORY;Subcarpeta +EXPORT_BYPASS;Procesamiento de pasos a bypass EXPORT_BYPASS_ALL;Seleccionar / Deseleccionar todo EXPORT_BYPASS_DEFRINGE;Saltar Quitar borde púrpura EXPORT_BYPASS_DIRPYRDENOISE;Saltar Reducción de ruido EXPORT_BYPASS_DIRPYREQUALIZER;Saltar Contraste por niveles de detalle +EXPORT_BYPASS_EQUALIZER;Bypass Wavelet niveles EXPORT_BYPASS_RAW_CA;Saltar [raw] Corrección de aberración cromática EXPORT_BYPASS_RAW_CCSTEPS;Saltar [raw] Supresión de falso color EXPORT_BYPASS_RAW_DCB_ENHANCE;Saltar [raw] Aplicar pasos de mejora DCB @@ -137,8 +159,12 @@ EXPORT_FASTEXPORTOPTIONS;Opciones de Exportación Rápida EXPORT_INSTRUCTIONS;Las opciones de Exportación Rápida proporcionan la posibilidad de saltarse pasos de revelado que consumen mucho tiempo y recursos, ejecutando en su lugar el procesamiento de la cola utilizando los ajustes de Exportación Rápida. Se recomienda este método para generar más rápidamente imágenes de menor resolución: cuando la velocidad es prioritaria, o cuando se desea cambiar el tamaño de una o muchas imágenes de salida sin modificar sus parámetros de revelado. EXPORT_MAXHEIGHT;Altura máxima: EXPORT_MAXWIDTH;Anchura máxima: +EXPORT_PIPELINE;Fuente de procesamiento EXPORT_PUTTOQUEUEFAST; Poner en la cola de Exportación Rápida EXPORT_RAW_DMETHOD;Método de interpolado +EXPORT_USE_FAST_PIPELINE;Dedicado (procesamiento completo en imagen redimensionada) +EXPORT_USE_FAST_PIPELINE_TIP;Usar un conducto de procesamiento dedicado para las imágenes en el modo Exportación rápida, que cambia la velocidad por la calidad. El cambio de tamaño de la imagen se realiza lo antes posible, en lugar de hacerlo al final como en el conducto normal. La aceleración puede ser importante, pero prepárese para ver elementos extraños y una degradación general de la calidad de salida. +EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) EXTPROGTARGET_1;Raw EXTPROGTARGET_2;procesado en cola FILEBROWSER_ADDDELTEMPLATE;Añadir/Borrar plantillas... @@ -149,6 +175,8 @@ FILEBROWSER_AUTOFLATFIELD;Campo plano automático FILEBROWSER_BROWSEPATHBUTTONHINT;Pulsar para examinar la carpeta seleccionada FILEBROWSER_BROWSEPATHHINT;Ingrese la ruta a examinar \nCtrl-O poner el foco en campo con la ruta\nEnter / Ctrl-Enter para examinar allí;\nEscPara quitar los cambios.\nShift-Esc Para quitar el foco.\n\n\nAbreviaturas de ruta:\n ~ - Carpeta hogar del usuario\n ! - Carpeta de imágenes del usuario FILEBROWSER_CACHE;Caché +FILEBROWSER_CACHECLEARFROMFULL;Limpiar del caché - Total +FILEBROWSER_CACHECLEARFROMPARTIAL;Limpiar del caché - Parcial FILEBROWSER_CLEARPROFILE;Borrar perfil FILEBROWSER_COLORLABEL_TOOLTIP;Etiquetar con color\n\nUse menú desplegable o atajos de teclado:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Rojo\nShift-Ctrl-2 Amarillo\nShift-Ctrl-3 Verde\nShift-Ctrl-4 Azul\nShift-Ctrl-5 Púrpura FILEBROWSER_COPYPROFILE;Copiar perfil @@ -169,6 +197,7 @@ FILEBROWSER_PARTIALPASTEPROFILE;Pegar perfil parcialmente FILEBROWSER_PASTEPROFILE;Pegar perfil FILEBROWSER_POPUPCANCELJOB;Cancelar trabajo FILEBROWSER_POPUPCOLORLABEL;Etiquetar con un color +FILEBROWSER_POPUPCOLORLABEL0;Etiqueta: Ninguna FILEBROWSER_POPUPCOLORLABEL1;Etiqueta: Rojo FILEBROWSER_POPUPCOLORLABEL2;Etiqueta: Amarillo FILEBROWSER_POPUPCOLORLABEL3;Etiqueta: Verde @@ -207,6 +236,7 @@ FILEBROWSER_RANK3_TOOLTIP;Rango 3 ***\nAtajoShift-3 FILEBROWSER_RANK4_TOOLTIP;Rango 4 ****\nAtajoShift-4 FILEBROWSER_RANK5_TOOLTIP;Rango 5 *****\nAtajoShift-5 FILEBROWSER_RENAMEDLGLABEL;Renombrar archivo +FILEBROWSER_RESETDEFAULTPROFILE;Restablecen a los predeterminados FILEBROWSER_SELECTDARKFRAME;Seleccionar Toma Negra… FILEBROWSER_SELECTFLATFIELD;Seleccionar Campo Plano… FILEBROWSER_SHOWCOLORLABEL1HINT;Mostrar imágenes etiquetadas con Rojo Alt-1 @@ -218,6 +248,8 @@ FILEBROWSER_SHOWDIRHINT;Quitar todos los filtros.\nAtajo: d FILEBROWSER_SHOWEDITEDHINT;Mostrar imágenes editadas.\nAtajo: 7 FILEBROWSER_SHOWEDITEDNOTHINT;Mostrar imágenes no editadas.\nAtajo: 6 FILEBROWSER_SHOWEXIFINFO;Mostrar datos Exif.\nAtajo: i\n\nAtajo en modo editor simple: Alt-I +FILEBROWSER_SHOWNOTTRASHHINT;Mostrar solo las imágenes no borradas. +FILEBROWSER_SHOWORIGINALHINT;Muestre solo imágenes originales. \nCuando existen varias imágenes con el mismo nombre de archivo pero con diferentes extensiones, la que se considera original es aquella cuya extensión está más cerca de la parte superior de la lista de extensiones analizadas en Preferencias> Explorador de archivos> Extensiones analizadas. FILEBROWSER_SHOWRANK1HINT;Mostrar imágenes con 1 estrella.\nAtajo: 1 FILEBROWSER_SHOWRANK2HINT;Mostrar imágenes con 2 estrellas.\nAtajo: 2 FILEBROWSER_SHOWRANK3HINT;Mostrar imágenes con 3 estrellas.\nAtajo: 3 @@ -232,8 +264,17 @@ FILEBROWSER_THUMBSIZE;Tamaño miniatura 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-- +FILECHOOSER_FILTER_ANY;Todos los archivos +FILECHOOSER_FILTER_COLPROF;Perfiles de color +FILECHOOSER_FILTER_CURVE;Archivos de curva +FILECHOOSER_FILTER_LCP;Perfiles de corrección de lentes. +FILECHOOSER_FILTER_PP;Processing profiles +FILECHOOSER_FILTER_SAME;Same format as current photo +FILECHOOSER_FILTER_TIFF;Archivos TIFF GENERAL_ABOUT;Acerca de GENERAL_AFTER;Después +GENERAL_APPLY;Aplicar +GENERAL_ASIMAGE;Como imagen GENERAL_AUTO;Automático GENERAL_BEFORE;Antes GENERAL_CANCEL;Cancelar @@ -248,10 +289,13 @@ GENERAL_NA;n/a GENERAL_NO;No GENERAL_NONE;Ninguno GENERAL_OK;Aceptar +GENERAL_OPEN;Abrir GENERAL_PORTRAIT;Retrato GENERAL_SAVE;Guardar +GENERAL_SLIDER;Deslizador GENERAL_UNCHANGED;(Sin cambios) GENERAL_WARNING;Advertencia +GIMP_PLUGIN_INFO;¡Bienvenido al complemento GIMP de RawTherapee! \nUna vez que haya terminado de editar, simplemente cierre la ventana principal de RawTherapee y la imagen se importará automáticamente en GIMP. HISTOGRAM_TOOLTIP_B;Mostrar/Ocultar Histograma Azul HISTOGRAM_TOOLTIP_BAR;Mostrar/Ocultar barra indicadora RGB\nHacer clic con el botón derecho del ratón en la previsualización para congelar/descongelar HISTOGRAM_TOOLTIP_CHRO;Mostrar/Ocultar Histograma de cromaticidad @@ -358,7 +402,7 @@ HISTORY_MSG_91;RR - Crominancia Maestra HISTORY_MSG_92;RR - Gamma HISTORY_MSG_93;Contraste/niveles de detalle - Valor HISTORY_MSG_94;Contraste por niveles de detalle -HISTORY_MSG_95;Lab - Cromaticidad +HISTORY_MSG_95;Lab - Cromaticidad (saturación) HISTORY_MSG_96;Curva 'a' HISTORY_MSG_97;Curva 'b' HISTORY_MSG_98;Método de Interpolación @@ -413,7 +457,7 @@ HISTORY_MSG_146;Enfoque de bordes (EB) HISTORY_MSG_147;EB - Sólo luminancia HISTORY_MSG_148;Micro-contraste HISTORY_MSG_149;Micro-contraste - matriz 3×3 -HISTORY_MSG_150;Reducción artefactos/ruido post interpolado +HISTORY_MSG_150;Reducción elementos extraños/ruido post interpolado HISTORY_MSG_151;Vibranza (Vib) HISTORY_MSG_152;Vib - Tonos pastel HISTORY_MSG_153;Vib - Tonos saturados @@ -429,12 +473,14 @@ HISTORY_MSG_162;Mapeo tonal (MT) HISTORY_MSG_163;Curvas RGB - Rojo HISTORY_MSG_164;Curvas RGB - Verde HISTORY_MSG_165;Curvas RGB - Azul +HISTORY_MSG_166;Exposición - Restablecer HISTORY_MSG_167;Método de Interpolación HISTORY_MSG_168;Curva 'CC' HISTORY_MSG_169;Curva 'CM' HISTORY_MSG_170;Vib - Curva HISTORY_MSG_171;Curva 'LC' HISTORY_MSG_172;Lab - Restringe 'LC' +HISTORY_MSG_173;NR - Recuperación del detalle HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Adaptación CAT02 HISTORY_MSG_176;CAM02 - Entorno de visualización @@ -464,6 +510,7 @@ 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;NR - Espacio de color HISTORY_MSG_204;Pasos de mejora LMMSE HISTORY_MSG_205;CAM02 - Píxel caliente/muerto HISTORY_MSG_206;CAT02 - Luz de escena auto. @@ -494,7 +541,9 @@ HISTORY_MSG_231;B&N - Curva 'Antes' HISTORY_MSG_232;B&N - Tipo de curva 'Antes' HISTORY_MSG_233;B&N - Curva 'Después' HISTORY_MSG_234;B&N - Tipo de curva 'Después' +HISTORY_MSG_235;B&N - Mezcla canales Auto. HISTORY_MSG_236;--Sin uso-- +HISTORY_MSG_237;B&N - Mezclador HISTORY_MSG_238;FG - Difuminado HISTORY_MSG_239;FG - Intensidad HISTORY_MSG_240;FG - Centro @@ -513,6 +562,7 @@ 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;NR - La mediana - Tipo HISTORY_MSG_257;Tonificación de Color HISTORY_MSG_258;TC - Color HISTORY_MSG_259;TC - Opacidad @@ -529,6 +579,7 @@ HISTORY_MSG_269;TC - Altas Luces - Rojo HISTORY_MSG_270;TC - Altas Luces - Verde HISTORY_MSG_271;TC - Altas Luces - Azul HISTORY_MSG_272;TC - Balance +HISTORY_MSG_273;TC - Restablecer HISTORY_MSG_274;TC - Sat. de Sombras HISTORY_MSG_275;TC - Sat. de Altas Luces HISTORY_MSG_276;TC - Opacidad @@ -552,28 +603,246 @@ 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;NR - Modo HISTORY_MSG_298;Filtro Pixel Muerto +HISTORY_MSG_299;NR - Curva de crominancia +HISTORY_MSG_300;- +HISTORY_MSG_301;NR - Luma control +HISTORY_MSG_302;NR - Método crominancia(color) +HISTORY_MSG_303;NR - Método crominancia(color) +HISTORY_MSG_304;W - Niveles de contraste +HISTORY_MSG_305;Wavelet niveles +HISTORY_MSG_306;W - Proceso +HISTORY_MSG_307;W - Proceso +HISTORY_MSG_308;W - dirección del Proceso +HISTORY_MSG_309;W - ES - Detalle +HISTORY_MSG_310;W - Residual - cielo tar/prot +HISTORY_MSG_311;W - Wavelet niveles +HISTORY_MSG_312;W - Residual - Umbral de sombras +HISTORY_MSG_313;W - Cromaticidad(color) - Saturados/pastel +HISTORY_MSG_314;W - Gamut - Reduce elementos extraños +HISTORY_MSG_315;W - Residual - Contraste +HISTORY_MSG_316;W - Gamut- Piel tar/prot +HISTORY_MSG_317;W - Gamut - Tono de piel +HISTORY_MSG_318;W - Contraste - Niveles luces altas +HISTORY_MSG_319;W - Contraste - Rango de luces altas +HISTORY_MSG_320;W - Contraste - Rango de las sombras +HISTORY_MSG_321;W - Contraste - Niveles de sombra +HISTORY_MSG_322;W - Gamut - Evita el cambio de color. +HISTORY_MSG_323;W - ES - Contraste local +HISTORY_MSG_324;W - Cromaticidad(colores) - Pastel +HISTORY_MSG_325;W - Cromaticidad(color) - Saturado +HISTORY_MSG_326;W - Cromaticidad(color) - Método +HISTORY_MSG_327;W - Contraste - Aplicar a +HISTORY_MSG_328;W - Cromaticidad - Fuerza de enlace +HISTORY_MSG_329;W - Tonificación - Opacidad RG +HISTORY_MSG_330;W - Tonificación - Opacidad BY +HISTORY_MSG_331;W - Niveles de contraste - Extra +HISTORY_MSG_332;W - Método de mosaico +HISTORY_MSG_333;W - Sombras-Residual +HISTORY_MSG_334;W - Cromaticidad(color)-Residual +HISTORY_MSG_335;W - Umbral de luces-Residual +HISTORY_MSG_336;W - Umbral de luces altas-Residual +HISTORY_MSG_337;W - Tono del cielo-Residual +HISTORY_MSG_338;W - ES - Radio +HISTORY_MSG_339;W - ES - Fuerza +HISTORY_MSG_340;W - Fuerza +HISTORY_MSG_341;W - Rendimiento del enfoque +HISTORY_MSG_342;W - ES-Primer nivel +HISTORY_MSG_343;W - Niveles de crominancia(color) +HISTORY_MSG_344;W - Método de crominancia (color)sl/cur +HISTORY_MSG_345;W - ES - Contraste local +HISTORY_MSG_346;W - ES - Método de contraste local +HISTORY_MSG_347;W - Quitar ruido - Nivel 1 +HISTORY_MSG_348;W - Quitar ruido - Nivel 2 +HISTORY_MSG_349;W - Quitar ruido - Nivel 3 +HISTORY_MSG_350;W - ES - Edge detection +HISTORY_MSG_351;W - Residual-curva HH +HISTORY_MSG_352;W - Fondo +HISTORY_MSG_353;W - ES - Sensibilidad del gradiente +HISTORY_MSG_354;W - ES - Mejorado +HISTORY_MSG_355;W - ES - Umbral bajo +HISTORY_MSG_356;W - ES - Umbral alto +HISTORY_MSG_357;W - Quitar ruido -Enlace con ES +HISTORY_MSG_358;W - Gamut - CH +HISTORY_MSG_359;Vivo/Muerto - Umbral +HISTORY_MSG_360;TM - gamma +HISTORY_MSG_361;W - Final - Balance del cromaticidad(color) +HISTORY_MSG_362;W - Residual - Método de compresión +HISTORY_MSG_363;W - Residual - Fuerza comprensiva +HISTORY_MSG_364;W - Final - Balance del contraste +HISTORY_MSG_365;W - Final - balance Delta +HISTORY_MSG_366;W - Residual - Compresión gamma +HISTORY_MSG_367;W - Final - curva de contraste 'Después' +HISTORY_MSG_368;W - Final - Balance de contraste +HISTORY_MSG_369;W - Final - Método de balance +HISTORY_MSG_370;W - Final - Curva de contraste local +HISTORY_MSG_371;Enfocar después del cambio de tamaño +HISTORY_MSG_372;PRS USM - Radio +HISTORY_MSG_373;PRS USM - Cantidad +HISTORY_MSG_374;PRS USM - Límite +HISTORY_MSG_375;PRS USM - Enfocar solo los bordes +HISTORY_MSG_376;PRS USM - Radio de detección de bordes +HISTORY_MSG_377;PRS USM - Tolerancia del borde +HISTORY_MSG_378;PRS USM - Control del halo +HISTORY_MSG_379;PRS USM - Cantidad de control del halo +HISTORY_MSG_380;PRS - Método +HISTORY_MSG_381;PRS RLD - Radio +HISTORY_MSG_382;PRS RLD - Cantidad +HISTORY_MSG_383;PRS RLD - Amortiguador +HISTORY_MSG_384;PRS RLD - Iteraciones +HISTORY_MSG_385;W - Residual - Balance del color +HISTORY_MSG_386;W - Residual - CB Verde Alto +HISTORY_MSG_387;W - Residual - CB Azul Alto +HISTORY_MSG_388;W - Residual - CB Verde medio +HISTORY_MSG_389;W - Residual - CB Azul medio +HISTORY_MSG_390;W - Residual - CB Verde Bajo +HISTORY_MSG_391;W - Residual - CB Azul Bajo +HISTORY_MSG_392;W - Residual - CB Reiniciar +HISTORY_MSG_393;DCP - revisar tabla +HISTORY_MSG_394;DCP - Punto de partida en la exposición +HISTORY_MSG_395;DCP - Tabla base +HISTORY_MSG_396;W - Contraste sub-herramienta +HISTORY_MSG_397;W - Cromaticidad(color) sub-herramienta +HISTORY_MSG_398;W - ES sub-herramienta +HISTORY_MSG_399;W - Residual sub-herramienta +HISTORY_MSG_400;W - Final sub-herramienta +HISTORY_MSG_401;W - Viraje sub-herramienta +HISTORY_MSG_402;W - Quitar ruido sub-herramienta +HISTORY_MSG_403;W - ES - Edge sensitivity +HISTORY_MSG_404;W - ES - Amplificación de base +HISTORY_MSG_405;W - Quitar ruido - Nivel 4 +HISTORY_MSG_406;W - ES - Píxeles vecinos +HISTORY_MSG_407;Retinex - Método +HISTORY_MSG_408;Retinex - Radio +HISTORY_MSG_409;Retinex - Contraste +HISTORY_MSG_410;Retinex - Offset +HISTORY_MSG_411;Retinex - Fuerza +HISTORY_MSG_412;Retinex - Gradiente gaussiano +HISTORY_MSG_413;Retinex - Contraste +HISTORY_MSG_414;Retinex - Histograma - Lab +HISTORY_MSG_415;Retinex - Transmisión +HISTORY_MSG_416;Retinex +HISTORY_MSG_417;Retinex - Transmisión mediana +HISTORY_MSG_418;Retinex - Límite +HISTORY_MSG_419;Retinex - Espacio de color +HISTORY_MSG_420;Retinex - Histograma - HSL +HISTORY_MSG_421;Retinex - Gamma +HISTORY_MSG_422;Retinex - Gamma +HISTORY_MSG_423;Retinex - Gamma slope +HISTORY_MSG_424;Retinex - HL Límite +HISTORY_MSG_425;Retinex - Base del registro +HISTORY_MSG_426;Retinex - Ecualizador(ajuste) de tono +HISTORY_MSG_427;Intento de reproducción de salida +HISTORY_MSG_428;Monitoreo del intento de representación +HISTORY_MSG_429;Retinex - Iteraciones +HISTORY_MSG_430;Retinex - Transmisión gradiente +HISTORY_MSG_431;Retinex - Fuerza del gradiente +HISTORY_MSG_432;Retinex - M - Luces altas +HISTORY_MSG_433;Retinex - M - Luces altas TW +HISTORY_MSG_434;Retinex - M - Sombras +HISTORY_MSG_435;Retinex - M - Sombras TW +HISTORY_MSG_436;Retinex - M - Radio +HISTORY_MSG_437;Retinex - M - Método +HISTORY_MSG_438;Retinex - M - Equalizer +HISTORY_MSG_439;Retinex - Proceso +HISTORY_MSG_440;CbDL - Método +HISTORY_MSG_441;Retinex - Ganancia de la transmisión +HISTORY_MSG_442;Retinex - Escala +HISTORY_MSG_443;Compensación del punto negro de salida +HISTORY_MSG_444;WB - Sesgo temporal +HISTORY_MSG_445;Raw sub-imágen +HISTORY_MSG_449;PS - ISO adaptación +HISTORY_MSG_452;PS - Mostrar movimiento +HISTORY_MSG_453;PS - Mostrar máscara solamente +HISTORY_MSG_457;PS - Verificar rojo/azul +HISTORY_MSG_462;PS - Verificar verde +HISTORY_MSG_464;PS - Máscara de desenfoque del movimiento +HISTORY_MSG_465;PS - Radio de desenfoque +HISTORY_MSG_468;PS - Rellenar fallos +HISTORY_MSG_469;PS - Mediano/a +HISTORY_MSG_471;PS - Corrección del movimiento +HISTORY_MSG_472;PS - Transiciones suaves +HISTORY_MSG_473;PS - Utilizar LMMSE +HISTORY_MSG_474;PS - Ecualizar (ajustar) +HISTORY_MSG_475;PS - Equalizar(ajustar) el canal +HISTORY_MSG_476;CAM02 - Fuera de tempera +HISTORY_MSG_477;CAM02 - Fuera del verde +HISTORY_MSG_478;CAM02 - Yb Fuera +HISTORY_MSG_479;CAM02 - CAT02 adaptación incorrecta +HISTORY_MSG_480;CAM02 - Salida automática CAT02 +HISTORY_MSG_481;CAM02 - Temperatura de la scena +HISTORY_MSG_482;CAM02 - Escena verde +HISTORY_MSG_483;CAM02 - Yb escena +HISTORY_MSG_484;CAM02 - Auto Yb escena +HISTORY_MSG_485;Corrección de lentes +HISTORY_MSG_486;Corrección de lente - Cámara +HISTORY_MSG_487;Lente Corrección - Lente +HISTORY_MSG_488;HDR Mapeo de tonos +HISTORY_MSG_489;HDR TM - Límite +HISTORY_MSG_490;HDR TM - Cantidad +HISTORY_MSG_491;Balance de Blancos +HISTORY_MSG_492;RGB Curvas +HISTORY_MSG_493;L*a*b* Ajustes +HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Corrección del color +HISTORY_MSG_HISTMATCHING;Curva de tono auto-emparejado +HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste cantidad-local +HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Oscuridad-local +HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste local +HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste luminosidad-local +HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste radio-local +HISTORY_MSG_METADATA_MODE;Modo de copia de metadatos +HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Ancla HISTORY_NEWSNAPSHOT;Agregar HISTORY_NEWSNAPSHOT_TOOLTIP;Atajo: Alt-s HISTORY_SNAPSHOT;Instantánea HISTORY_SNAPSHOTS;Instantáneas IPTCPANEL_CATEGORY;Categoría +IPTCPANEL_CATEGORYHINT;Identifica el tema de la imagen en la opinión del proveedor. IPTCPANEL_CITY;Ciudad +IPTCPANEL_CITYHINT;Ingrese el nombre de la ciudad representada en esta imagen. IPTCPANEL_COPYHINT;Copiar ajustes IPTC al portapapeles +IPTCPANEL_COPYRIGHT;aviso de copyright +IPTCPANEL_COPYRIGHTHINT;Ingrese un Aviso sobre el propietario actual de los derechos de autor de esta imagen, como © 2008 Jane Doe. IPTCPANEL_COUNTRY;País +IPTCPANEL_COUNTRYHINT;Ingrese el nombre del país representado en esta imagen. +IPTCPANEL_CREATOR;Creador +IPTCPANEL_CREATORHINT;Ingrese el nombre de la persona que creó esta imagen. +IPTCPANEL_CREATORJOBTITLE;Título del trabajo del creador +IPTCPANEL_CREATORJOBTITLEHINT;Ingrese el título de trabajo de la persona que aparece en el campo Creador. IPTCPANEL_CREDIT;Créditos IPTCPANEL_CREDITHINT;Identifica el proveedor de la imagen, que no necesariamente el dueño o creador. IPTCPANEL_DATECREATED;Fecha de creación +IPTCPANEL_DATECREATEDHINT;Ingrese la fecha en que se tomó la imagen. +IPTCPANEL_DESCRIPTION;Descripción +IPTCPANEL_DESCRIPTIONHINT;Ingrese una "leyenda" que describa quién, qué y por qué de lo que está sucediendo en esta imagen, esto podría incluir nombres de personas y / o su rol en la acción que se lleva a cabo dentro de la imagen. +IPTCPANEL_DESCRIPTIONWRITER;Descripción del escritor +IPTCPANEL_DESCRIPTIONWRITERHINT;Ingrese el nombre de la persona involucrada en escribir, editar o corregir la descripción de la imagen. IPTCPANEL_EMBEDDED;Incrustado IPTCPANEL_EMBEDDEDHINT;Restablecer a los datos IPTC incrustados en el archivo de la imagen IPTCPANEL_HEADLINE;Encabezado +IPTCPANEL_HEADLINEHINT;Ingrese un breve resumen publicable o resumen de los contenidos de la imagen. IPTCPANEL_INSTRUCTIONS;Instrucciones +IPTCPANEL_INSTRUCTIONSHINT;Ingrese información sobre embargos u otras restricciones no cubiertas por el campo de Copyright. IPTCPANEL_KEYWORDS;Palabras clave +IPTCPANEL_KEYWORDSHINT;Ingrese cualquier número de palabras clave, términos o frases utilizadas para expresar el tema en la imagen. IPTCPANEL_PASTEHINT;Pegar ajustes IPTC desde el portapapeles +IPTCPANEL_PROVINCE;Provincia o Estado +IPTCPANEL_PROVINCEHINT;Ingrese el nombre de la provincia o estado que se muestra en esta imagen. IPTCPANEL_RESET;Restablecer IPTCPANEL_RESETHINT;Restablecer a los ajustes predeterminados del perfil. IPTCPANEL_SOURCE;Fuente +IPTCPANEL_SOURCEHINT;Ingrese o edite el nombre de una persona o parte que tiene un rol en la cadena de suministro de contenido, como una persona o entidad de la que recibió esta imagen. +IPTCPANEL_SUPPCATEGORIES;Categorias suplementarias +IPTCPANEL_SUPPCATEGORIESHINT;Además purifica el tema de la imagen. IPTCPANEL_TITLE;Título +IPTCPANEL_TITLEHINT;Ingrese un nombre corto legible y humano para la imagen, este puede ser el nombre del archivo. +IPTCPANEL_TRANSREFERENCE;Identificación del trabajo +IPTCPANEL_TRANSREFERENCEHINT;Ingrese un número o identificador necesario para el control o seguimiento del flujo de trabajo. +LENSPROFILE_CORRECTION_AUTOMATCH;Parámetros de corrección auto-emparejados +LENSPROFILE_CORRECTION_LCPFILE;LCP archivo +LENSPROFILE_CORRECTION_MANUAL;Parámetros de corrección manual +LENSPROFILE_LENS_WARNING;Advertencia: el factor de recorte utilizado para el perfilado de la lente es mayor que el factor de recorte de la cámara, los resultados pueden ser incorrectos. MAIN_BUTTON_FULLSCREEN;Pantalla completa MAIN_BUTTON_NAVNEXT_TOOLTIP;Navegar hasta la imagen Siguiente a la que está abierta en el editor:\nShift-F4\n\nPara navegar hasta la imagen Siguiente a aquella cuya miniatura está seleccionada en el Explorador de Archivos:\nF4 MAIN_BUTTON_NAVPREV_TOOLTIP;Navegar hasta la imagen Anterior a la que está abierta en el editor:\nShift-F3\n\nPara navegar hasta la imagen Anterior a aquella cuya miniatura está seleccionada en el Explorador de Archivos:\nF3 @@ -609,7 +878,10 @@ MAIN_MSG_OPERATIONCANCELLED;Operación cancelada MAIN_MSG_PATHDOESNTEXIST;La ruta\n\n%1\n\nno existe. Por favor, establezca una ruta correcta en la ventana de Preferencias. MAIN_MSG_QOVERWRITE;¿Quiere sobre-escribirlo? MAIN_MSG_SETPATHFIRST;Para poder usar esta función, primero tiene que establecer una \nruta objetivo en la ventana de Preferencias! +MAIN_MSG_TOOMANYOPENEDITORS;Demasiados editores abiertos.\nPor favor cierre un editor para continuar. MAIN_MSG_WRITEFAILED;Falla al escribir\n\n"%1"\n\nAsegurese de que el folder exista y que usted tenga permiso de escritura sobre él. +MAIN_TAB_ADVANCED;Avanzado +MAIN_TAB_ADVANCED_TOOLTIP;Método rápido: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Atajo: Alt-C MAIN_TAB_DETAIL;Detalle @@ -620,6 +892,7 @@ MAIN_TAB_EXPORT; Exportación Rápida MAIN_TAB_EXPOSURE;Exposición MAIN_TAB_EXPOSURE_TOOLTIP;Atajo: Alt-E MAIN_TAB_FILTER;Filtro +MAIN_TAB_INSPECT; Inspeccionar MAIN_TAB_IPTC;IPTC MAIN_TAB_METADATA;Metadatos MAIN_TAB_METADATA_TOOLTIP;Atajo: Alt-M @@ -630,6 +903,7 @@ MAIN_TAB_TRANSFORM_TOOLTIP;Atajo: Alt-T MAIN_TOOLTIP_BACKCOLOR0;Color de fondo de la previsualización: Color del tema\nAtajo: 8 MAIN_TOOLTIP_BACKCOLOR1;Color de fondo de la previsualización: Negro\nAtajo: 9 MAIN_TOOLTIP_BACKCOLOR2;Color de fondo de la previsualización: Blanco\nAtajo: 0 +MAIN_TOOLTIP_BACKCOLOR3;Color de fondo de la vista previa: Medio gris \nMétodo rápido: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Bloquear / Desbloquear la vista Antes\n\nBloquear: la vista Antes permanece inalterada - \nútil para evaluar el efecto acumulativo de varias herramientas.\nAdemás, se puede hacer una comparación con cualquier estado en el Historial\n\nDesbloquear: la vista Antes seguirá a la vista Después un paso por detrás, mostrando la imagen antes del efecto de la herramienta que se está usando MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar panel izquierdo (incluyendo historial).\nAtajo: i MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nAtajo: < @@ -645,9 +919,23 @@ MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/ocultar el panel derecho.\nAtajo: Alt-L MAIN_TOOLTIP_SHOWHIDETP1;Mostrar/ocultar el panel superior.\nAtajo: Shift-L MAIN_TOOLTIP_THRESHOLD;Umbral MAIN_TOOLTIP_TOGGLE;Cambiar vista antes/después.\nAtajo: Shift-B +MONITOR_PROFILE_SYSTEM;Sistema por defecto +NAVIGATOR_B;B: +NAVIGATOR_G;G: +NAVIGATOR_H;H: +NAVIGATOR_LAB_A;a*: +NAVIGATOR_LAB_B;b*: +NAVIGATOR_LAB_L;L*: NAVIGATOR_NA; -- +NAVIGATOR_R;R: +NAVIGATOR_S;S: +NAVIGATOR_V;V: NAVIGATOR_XY_FULL;Ancho = %1, Alto = %2 NAVIGATOR_XY_NA;x = n/a, y = n/a +OPTIONS_BUNDLED_MISSING;No se pudo encontrar el perfil "% 1 " incluido. \nSe podría dañar su instalación. \nnLos valores internos predeterminados se usarán en su lugar. +OPTIONS_DEFIMG_MISSING;No se pudo encontrar el perfil predeterminado para fotos sin formato o no está establecido. \nPor favor, compruebe el directorio de sus perfiles, puede que falte o esté dañado. \n "% 1 "se utilizará en su lugar +OPTIONS_DEFRAW_MISSING;No se pudo encontrar el perfil predeterminado para fotos sin procesar o no está configurado. \nPor favor, compruebe el directorio de sus perfiles, puede que falte o esté dañado. \n "% 1 < / b> "será usado en su lugar. +PARTIALPASTE_ADVANCEDGROUP;Ajustes avanzados PARTIALPASTE_BASICGROUP;Ajustes básicos PARTIALPASTE_CACORRECTION;Corrección de aberraciones cromáticas PARTIALPASTE_CHANNELMIXER;Mezclador de canales @@ -668,6 +956,7 @@ PARTIALPASTE_DIRPYRDENOISE;Reducción de ruido PARTIALPASTE_DIRPYREQUALIZER;Contraste por niveles de detalle PARTIALPASTE_DISTORTION;Corrección de Distorsión PARTIALPASTE_EPD;Mapeo tonal +PARTIALPASTE_EQUALIZER;Niveles Wavelet PARTIALPASTE_EVERYTHING;Todo PARTIALPASTE_EXIFCHANGES;Cambio en datos Exif PARTIALPASTE_EXPOSURE;Exposición @@ -677,6 +966,7 @@ PARTIALPASTE_FLATFIELDBLURRADIUS;Radio de difuminado de campo plano PARTIALPASTE_FLATFIELDBLURTYPE;Tipo de difuminado de campo plano PARTIALPASTE_FLATFIELDCLIPCONTROL;Control de recorte de Campo Plano PARTIALPASTE_FLATFIELDFILE;Archivo de campo plano +PARTIALPASTE_GRADIENT;Graduar filtro PARTIALPASTE_HSVEQUALIZER;Ecualizador HSV PARTIALPASTE_ICMSETTINGS;Ajustes de Gestión de Color PARTIALPASTE_IMPULSEDENOISE;Impulsar Reducción de ruido @@ -684,6 +974,8 @@ PARTIALPASTE_IPTCINFO;Información IPTC PARTIALPASTE_LABCURVE;Ajustes Lab PARTIALPASTE_LENSGROUP;Ajustes relativos al lente PARTIALPASTE_LENSPROFILE;Perfil de corrección de lente +PARTIALPASTE_LOCALCONTRAST;Contraste local +PARTIALPASTE_METADATA;Modo de metadatos PARTIALPASTE_METAGROUP;Ajustes de metadatos PARTIALPASTE_PCVIGNETTE;Filtro quitar viñeteado PARTIALPASTE_PERSPECTIVE;Perspectiva @@ -691,7 +983,9 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Aplicar filtro Pixel Muerto PARTIALPASTE_PREPROCESS_GREENEQUIL;Equilibrio del verde PARTIALPASTE_PREPROCESS_HOTPIXFILT;Aplicar filtro Pixel Caliente PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtro de ruido de línea +PARTIALPASTE_PRSHARPENING;Enfocar después del cambio de tamaño PARTIALPASTE_RAWCACORR_AUTO;Auto corrección de Aberración Cromática +PARTIALPASTE_RAWCACORR_CAREDBLUE;CA Rojo & Azul PARTIALPASTE_RAWEXPOS_BLACK;Nivel de negro PARTIALPASTE_RAWEXPOS_LINEAR;Corrección de punto blanco PARTIALPASTE_RAWEXPOS_PRESER;Preservar Luces Altas @@ -700,21 +994,31 @@ PARTIALPASTE_RAW_DCBENHANCE;Aplicar paso de mejora DCB PARTIALPASTE_RAW_DCBITERATIONS;Número de iteraciones DCB PARTIALPASTE_RAW_DMETHOD;Método de interpolado PARTIALPASTE_RAW_FALSECOLOR;Pasos de supresión de falso color de interpolado +PARTIALPASTE_RAW_IMAGENUM;Sub-imagen PARTIALPASTE_RAW_LMMSEITERATIONS;Pasos de mejora LMMSE +PARTIALPASTE_RAW_PIXELSHIFT;Cambio de píxel PARTIALPASTE_RESIZE;Cambiar tamaño +PARTIALPASTE_RETINEX;Retinex PARTIALPASTE_RGBCURVES;Curvas RGB PARTIALPASTE_ROTATION;Rotar PARTIALPASTE_SHADOWSHIGHLIGHTS;Sombras/Luces altas PARTIALPASTE_SHARPENEDGE;Bordes PARTIALPASTE_SHARPENING;Enfoque PARTIALPASTE_SHARPENMICRO;Micro-contraste +PARTIALPASTE_TM_FATTAL;Mapeo de tonos HDR PARTIALPASTE_VIBRANCE;Vibranza PARTIALPASTE_VIGNETTING;Corrección de viñeteo PARTIALPASTE_WHITEBALANCE;Equilibrio de blancos PREFERENCES_ADD;Añadir -PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Color de la guía del navegador PREFERENCES_APPLNEXTSTARTUP;requiere reinicio +PREFERENCES_AUTLISLOW;Bajo +PREFERENCES_AUTLISMAX;Max - Promedio de todos los mosaicos +PREFERENCES_AUTLISSTD;Alto +PREFERENCES_AUTLISVLOW;Ninguno +PREFERENCES_AUTLOW;Bajo PREFERENCES_AUTOMONPROFILE;Usar perfil de color del monitor principal en el sistema operativo +PREFERENCES_AUTOSAVE_TP_OPEN;Guardar automáticamente las herramientas contraídas/expandidas \nEstado antes de salir +PREFERENCES_AUTSTD;Estandar PREFERENCES_BATCH_PROCESSING;Procesamiento por lotes PREFERENCES_BEHADDALL;Todo para 'Agregar' PREFERENCES_BEHADDALLHINT;Establezca todos los parámetros del modo Agregar.\nLos ajustes de parámetros en el panel de la herramienta de lotes serán deltas de los valores guardados @@ -722,17 +1026,39 @@ PREFERENCES_BEHAVIOR;Comportamiento PREFERENCES_BEHSETALL;Todo para 'Establecer' PREFERENCES_BEHSETALLHINT;Todos los parámetros para el modo Establecer.\nLos ajustes de parámetros en el panel de la herramienta de lotes serán serán absolutos, se mostrarán los valores vigentes PREFERENCES_BLACKBODY;Tungsteno +PREFERENCES_CACHECLEARALL;Borrar todo +PREFERENCES_CACHECLEARPROFILES;Borrar perfiles +PREFERENCES_CACHECLEARTHUMBS;Borrar miniaturas PREFERENCES_CACHEMAXENTRIES;Cantidad máxima de entradas en la memoria intermedia PREFERENCES_CACHEOPTS;Opciones de memoria intermedia PREFERENCES_CACHETHUMBHEIGHT;Altura máxima de las miniaturas +PREFERENCES_CIEART;Optimización CIECAM02 +PREFERENCES_CIEART_FRAME;Configuración específica de CIECAM02 +PREFERENCES_CIEART_LABEL;Usar precisión flotante simple en lugar de doble. +PREFERENCES_CIEART_TOOLTIP;Si se habilita, los cálculos CIECAM02 se realizan con precisión flotante simple en lugar de doble. Esto provee un pequeño aumento en la velocidad de cálculo a expensas de una casi imperceptible pérdida de calidad PREFERENCES_CLIPPINGIND;Indicación de recortes +PREFERENCES_CLUTSCACHE;HaldCLUT Cache +PREFERENCES_CLUTSCACHE_LABEL;Número máximo de CLUTs en caché PREFERENCES_CLUTSDIR;Directorio HaldCLUT +PREFERENCES_CMMBPC;Compensación de punto negro +PREFERENCES_CROP;Edición del corte +PREFERENCES_CROP_AUTO_FIT;Zoom automático para adaptarse al área de recorte +PREFERENCES_CROP_GUIDES;Guías mostradas al no editar el recorte. +PREFERENCES_CROP_GUIDES_FRAME;Cuadro +PREFERENCES_CROP_GUIDES_FULL;Original +PREFERENCES_CROP_GUIDES_NONE;Ninguno +PREFERENCES_CURVEBBOXPOS;Posición de la curva copiar y pegar nodos +PREFERENCES_CURVEBBOXPOS_ABOVE;Encima +PREFERENCES_CURVEBBOXPOS_BELOW;Abajo +PREFERENCES_CURVEBBOXPOS_LEFT;Izquierda +PREFERENCES_CURVEBBOXPOS_RIGHT;Derecha PREFERENCES_CUSTPROFBUILD;Programa generador de perfiles de procesamiento de imagen del usuario PREFERENCES_CUSTPROFBUILDHINT;Archivo ejecutable (o script) invocado un nuevo perfil de procesamiento inicial debe ser generado para una imagen.\n\nLa ruta del archivo de comunicación (estilo .ini) es agregado como parámetro de comando en línea. Éste contiene diversos parámetros requeridos y metadatos Exif de la imagen para permitir la generación de perfiles de procesamientos basados en reglas.\n\nADVERTENCIA:Usted es responsable de colocar comillas donde se requieren cuando se usan rutas conteniendo espacios en blanco. PREFERENCES_CUSTPROFBUILDKEYFORMAT;Clave de formato PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nombre PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID Etiqueta PREFERENCES_CUSTPROFBUILDPATH;Ruta al programa ejecutable +PREFERENCES_CUTOVERLAYBRUSH;Recortar máscara de color/transparencia PREFERENCES_D50;5000ºK PREFERENCES_D55;5500ºK PREFERENCES_D60;6000ºK @@ -742,15 +1068,21 @@ PREFERENCES_DARKFRAMESHOTS;disparos PREFERENCES_DARKFRAMETEMPLATES;plantillas PREFERENCES_DATEFORMAT;Formato de fecha PREFERENCES_DATEFORMATHINT;Puede usar las siguientes variables :\n%y : año\n%m : mes\n%d : dia\n\nPor ejemplo, la fecha en formato Húngaro es: \n%y/%m/%d +PREFERENCES_DAUB_LABEL;Use las wavelets D6 de Daubechies en lugar de D4 +PREFERENCES_DAUB_TOOLTIP;Las herramientas de reducción de ruido y niveles de wavelet utilizan una wavelet madre de Debauchies. Si elige D6 en lugar de D4, aumenta el número de coeficientes de Daubechies ortogonales y probablemente aumenta la calidad de los niveles de pequeña escala. \nNo hay diferencia entre los dos, en el uso de memoria o de tiempo de procesamiento. PREFERENCES_DIRDARKFRAMES;Carpeta con las Tomas Negras +PREFERENCES_DIRECTORIES;Directorios PREFERENCES_DIRHOME;Carpeta de usuario 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;Línea de comando personalizada PREFERENCES_EDITORLAYOUT;Disposición del editor +PREFERENCES_EXPAUT;Experto PREFERENCES_EXTERNALEDITOR;Editor externo PREFERENCES_FBROWSEROPTS;Opciones del explorador de archivos/Miniaturas +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de herramientas del explorador en una sola fila (deseleccionar para pantallas de baja resolución) PREFERENCES_FILEFORMAT;Formato de archivo PREFERENCES_FLATFIELDFOUND;Encontrado PREFERENCES_FLATFIELDSDIR;Carpeta de archivos de campo plano @@ -761,27 +1093,44 @@ PREFERENCES_FLUOF7;Fluorescente F7 PREFERENCES_FLUOF11;Fluorescente F11 PREFERENCES_FORIMAGE;Para fotos de tipo diferente a raw PREFERENCES_FORRAW;Para fotos Raw +PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;La misma altura en miniatura entre la tira de película y el explorador de archivos +PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Tener un tamaño separado,en las miniaturas, requerirá más tiempo de procesamiento cada vez que alterne entre la única pestaña Editor y el Explorador de archivos. PREFERENCES_GIMPPATH;Carpeta de instalación de GIMP PREFERENCES_GREY;Luminancia (%) Yb del dispositivo de salida 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_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 +PREFERENCES_GREYSC;Escena Yb luminancia (%) +PREFERENCES_GREYSC18;Yb=18 CIE L#50 +PREFERENCES_GREYSCA;Automático PREFERENCES_HISTOGRAMPOSITIONLEFT;Histograma en panel izquierdo PREFERENCES_HISTOGRAMWORKING;Usar perfil de trabajo para el histograma principal y el navegador PREFERENCES_HISTOGRAM_TOOLTIP;Si está activado, el perfil de trabajo se utiliza para renderizar el histograma principal y el panel navegador, de lo contrario se utiliza el perfil de Gamma Corregida de salida. PREFERENCES_HLTHRESHOLD;Umbral de luces altas cortadas PREFERENCES_ICCDIR;Carpeta con perfiles de color ICC +PREFERENCES_IMG_RELOAD_NEEDED;Estos cambios requieren que la imagen se vuelva a cargar (o que se abra una nueva imagen) para que tenga efecto. PREFERENCES_IMPROCPARAMS;Parámetros de procesamiento de imágenes predeterminados +PREFERENCES_INSPECT_LABEL;Inspeccionar +PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Número máximo de imágenes en caché +PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Establezca el número máximo de imágenes almacenadas en la memoria caché cuando se desplaza sobre ellas en el explorador de archivos;\nLos sistemas con poca RAM (2 GB) deben mantener este valor establecido en 1 o 2. PREFERENCES_INTENT_ABSOLUTE;Colorimétrico absoluto PREFERENCES_INTENT_PERCEPTUAL;Perceptual PREFERENCES_INTENT_RELATIVE;Colorimétrico relativo PREFERENCES_INTENT_SATURATION;Saturación PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Mostrar miniatura JPEG incrustada si foto Raw no se ha editado +PREFERENCES_LANG;Idioma PREFERENCES_LANGAUTODETECT;Usar idioma del sistema +PREFERENCES_LEVAUTDN;Nivel de supresión de ruido +PREFERENCES_LEVDN;Tamaño de celda +PREFERENCES_LISS;Suavizado automático multizona +PREFERENCES_MAX;Maxi (baldoza) +PREFERENCES_MAXRECENTFOLDERS;Número máximo de carpetas recientes +PREFERENCES_MED;Medio(Tile/2) PREFERENCES_MENUGROUPEXTPROGS;Grupo "Abrir con" PREFERENCES_MENUGROUPFILEOPERATIONS;Grupo "Operaciones de archivo" PREFERENCES_MENUGROUPLABEL;Grupo "Etiquetado con color" @@ -789,50 +1138,97 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Grupo "Operaciones de Perfil de Procesami PREFERENCES_MENUGROUPRANK;Grupo "Asignar Rango" PREFERENCES_MENUOPTIONS;Opciones de menú de contexto PREFERENCES_METADATA;Metadatos +PREFERENCES_MONINTENT;Intento de representación predeterminado +PREFERENCES_MONITOR;Monitor +PREFERENCES_MONPROFILE;Perfil de color predeterminado +PREFERENCES_MONPROFILE_WARNOSX;Debido a las limitaciones de MacOS, solo se admite sRGB. PREFERENCES_MULTITAB;Modo Editor de varias pestañas PREFERENCES_MULTITABDUALMON;Modo Editor de varias pestañas, si está disponible en segundo monitor +PREFERENCES_NAVGUIDEBRUSH;Color de la guía del navegador +PREFERENCES_NAVIGATIONFRAME;Navegación +PREFERENCES_NOISE;Reducción de ruido PREFERENCES_OUTDIR;Carpeta de salida PREFERENCES_OUTDIRFOLDER;Guardar en carpeta PREFERENCES_OUTDIRFOLDERHINT;Guardar las imágenes creadas en una carpeta elegida PREFERENCES_OUTDIRTEMPLATE;Usar plantilla PREFERENCES_OUTDIRTEMPLATEHINT;Se pueden usar las variables siguientes:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nEstas variables son referencias a las carpetas y subrutas de las rutas del lugar donde se encuentra la imagen raw.\n\nPor ejemplo, si abres /home/tom/image/02-09-2006/dsc0012.nef, los valores de las variables son:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, p3=/home/tom, ...\n\nSi quieres guardar la imagen de salida en el lugar original, usa:\n%p1/%f\n\nSi quieres guardar la imagen de salida en una carpeta 'convertida' dentro de la carpeta original, usa:\n%p1/convertida/%f\n\nSi quieres guardar la imagen de salida en la carpeta '/home/tom/convertida' conservando la misma subcarpeta de fechas, usa:\n%p2/convertida/%d1/%f PREFERENCES_OVERLAY_FILENAMES;Superponer nombres de archivo en miniaturas +PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Superponer los nombres de archivo en las miniaturas en el panel del editor PREFERENCES_OVERWRITEOUTPUTFILE;Sobreescribir archivos de salida existentes PREFERENCES_PANFACTORLABEL;Factor PREFERENCES_PARSEDEXT;Extensiones analizadas PREFERENCES_PARSEDEXTADD;Agregar extensión PREFERENCES_PARSEDEXTADDHINT;Ingrese una extensión y pulse este botón para agregarla a la lista PREFERENCES_PARSEDEXTDELHINT;Borrar de la lista las extensiones seleccionadas +PREFERENCES_PARSEDEXTDOWNHINT;Mueve la extensión seleccionada hacia abajo en la lista. +PREFERENCES_PARSEDEXTUPHINT;Mueve la extensión seleccionada hacia arriba en la lista. +PREFERENCES_PREVDEMO;Vista previa del método Desmosaicado +PREFERENCES_PREVDEMO_FAST;Rápido +PREFERENCES_PREVDEMO_LABEL;Método de desmosaicado utilizado para la vista previa al <100% de zoom: +PREFERENCES_PREVDEMO_SIDECAR;Como en PP3 +PREFERENCES_PRINTER;Impresora(tenue-corregir) PREFERENCES_PROFILEHANDLING;Tratamiento de perfiles de procesamiento PREFERENCES_PROFILELOADPR;Prioridad de perfiles cuando se abre imagen PREFERENCES_PROFILEPRCACHE;Perfil en memoria intermedia PREFERENCES_PROFILEPRFILE;Perfil junto a imagen de entrada +PREFERENCES_PROFILESAVEBOTH;Guarda el perfil de procesamiento tanto en la memoria caché como junto al archivo de entrada PREFERENCES_PROFILESAVECACHE;Guardar perfiles de procesamiento en memoria intermedia PREFERENCES_PROFILESAVEINPUT;Guardar perfiles de procesamiento junto con imagen de entrada +PREFERENCES_PROFILESAVELOCATION;Ubicación del lugar donde se guardo el perfil de procesamiento +PREFERENCES_PROFILE_NONE;Ninguno PREFERENCES_PROPERTY;Propiedad +PREFERENCES_PRTINTENT;Intento de representación +PREFERENCES_PRTPROFILE;Perfil de color PREFERENCES_PSPATH;Carpeta de instalación de Adobe Photoshop +PREFERENCES_REMEMBERZOOMPAN;Recuerde el % de zoom y el desplazamiento del paneo +PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Recuerde que el% de zoom y el desplazamiento de la panorámica de la imagen actual al abrir una nueva imagen. \nEsta opción solo funciona en el "Modo de pestaña Editor único" y cuando el "Método de demostración utilizado para la vista previa a <100% de zoom" está configurado en " Como en PP3 " +PREFERENCES_RGBDTL_LABEL;Número máximo de hilos para reducción de ruido +PREFERENCES_RGBDTL_TOOLTIP;La Reducción de Ruido requiere como base 128MB de RAM para una imagen de 10MPix o 512MB para una imagen de 40MPix; más 128MB RAM por hilo de proceso.\nMientras más hilos corren en paralelo, más rápido es el procesamiento. Coloque “0” para que automáticamente se use tantos hilos como sea posible según la capacidad de su equipo. +PREFERENCES_SAVE_TP_OPEN_NOW;Guardar herramientas colapsadas/expandidas ahora +PREFERENCES_SELECTFONT;Seleccionar fuente +PREFERENCES_SELECTFONT_COLPICKER;Seleccione la fuente del Selector de color PREFERENCES_SELECTLANG;Seleccionar idioma +PREFERENCES_SELECTTHEME;Seleccionar tema +PREFERENCES_SERIALIZE_TIFF_READ;Configuración de lectura Tiff +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializar la lectura de archivos tiff +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Cuando trabaje con carpetas llenas de archivos tiff sin comprimir, habilitar esta opción puede aumentar el rendimiento en la generación de la miniatura. PREFERENCES_SET;Establecer PREFERENCES_SHOWBASICEXIF;Mostrar datos Exif básicos PREFERENCES_SHOWDATETIME;Mostrar fecha y hora PREFERENCES_SHOWEXPOSURECOMPENSATION;Mostrar compensación de exposición +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Mostrar barra de herramientas estilo tira de película PREFERENCES_SHTHRESHOLD;Umbral de sombras cortadas +PREFERENCES_SIMPLAUT;Modo de herramienta PREFERENCES_SINGLETAB;Modo Editor de pestaña única PREFERENCES_SINGLETABVERTAB;Modo Editor de pestaña única, pestañas verticales +PREFERENCES_SMA;A una escala pequeña(250x287) PREFERENCES_SND_BATCHQUEUEDONE;Trabajos en cola finalizados PREFERENCES_SND_HELP;Introducir el path o dejar en blanco (sin sonido). En Windows, usar "SystemDefault", "SystemAsterisk" etc. para los sonidos del sistema\nEn Linux use "complete", "window-attention" etc. para los sonidos del sistema. PREFERENCES_SND_LNGEDITPROCDONE;Procesado del editor terminado -PREFERENCES_SND_THRESHOLDSECS;después de seg. +PREFERENCES_SND_TRESHOLDSECS;después de seg. PREFERENCES_STARTUPIMDIR;Carpeta de imágenes en el arranque +PREFERENCES_STDAUT;Estándar PREFERENCES_TAB_BROWSER;Explorador de archivos PREFERENCES_TAB_COLORMGR;Gestión del color +PREFERENCES_TAB_DYNAMICPROFILE;Reglas de perfil dinámico PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_IMPROC;Procesamiento de imágenes +PREFERENCES_TAB_PERFORMANCE;Rendimiento PREFERENCES_TAB_SOUND;Sonidos +PREFERENCES_THEME;Tema +PREFERENCES_TIMAX;Alto +PREFERENCES_TINB;Número de mosaicos +PREFERENCES_TISTD;Estándar PREFERENCES_TP_LABEL;Panel de herramientas: +PREFERENCES_TP_USEICONORTEXT;Usar iconos de pestaña en lugar de texto PREFERENCES_TP_VSCROLLBAR;Ocultar barra de desplazamiento vertical del panel de herramientas +PREFERENCES_TUNNELMETADATA;Copie Exif / IPTC / XMP sin cambios en el archivo de salida PREFERENCES_USEBUNDLEDPROFILES;Usar perfiles empaquetados PREFERENCES_VIEW;Balance de blancos en el dispositivo de salida (monitor, TV, proyector...) +PREFERENCES_WAVLEV;Aumentar el nivel de wavelet en calidad 'alta' +PREFERENCES_WLONE;Un nivel +PREFERENCES_WLTWO;Dos niveles +PREFERENCES_WLZER;No PREFERENCES_WORKFLOW;Disposición PROFILEPANEL_COPYPPASTE;Parámetros a copiar PROFILEPANEL_GLOBALPROFILES;Perfiles empaquetados @@ -843,6 +1239,7 @@ PROFILEPANEL_MODE_TIP;Modo de procesamiento de perfiles.\n\nBotón Presionado: l PROFILEPANEL_MYPROFILES;Mis perfiles PROFILEPANEL_PASTEPPASTE;Parámetros PROFILEPANEL_PCUSTOM;A medida +PROFILEPANEL_PDYNAMIC;Dinámico PROFILEPANEL_PFILE;Desde archivo PROFILEPANEL_PINTERNAL;Neutro PROFILEPANEL_PLASTSAVED;Último guardado @@ -866,8 +1263,15 @@ PROGRESSBAR_SAVEPNG;Guardando archivo PNG... PROGRESSBAR_SAVETIFF;Guardando archivo TIFF... PROGRESSBAR_SNAPSHOT_ADDED;Se añadió instantánea PROGRESSDLG_PROFILECHANGEDINBROWSER;Perfil de procesamiento cambiado en explorador +QINFO_FRAMECOUNT;%2 cuadro +QINFO_HDR;HDR / %2 cuadro(s) QINFO_ISO;ISO QINFO_NOEXIF;No hay datos EXIF. +QINFO_PIXELSHIFT;Pixel variación /% 2 cuadro(s) +SAMPLEFORMAT_0;Formato de datos desconocido +SAMPLEFORMAT_1;Sin firma 8 bits +SAMPLEFORMAT_2;Sin firma 16 bits +SAMPLEFORMAT_16;Punto flotante de 32 bits SAVEDLG_AUTOSUFFIX;Automáticamente añade un sufijo cuando el archivo ya existe SAVEDLG_FILEFORMAT;Formato de archivo SAVEDLG_FORCEFORMATOPTS;Opciones de guardar forzado @@ -882,9 +1286,12 @@ SAVEDLG_SUBSAMP;Submuestreo SAVEDLG_SUBSAMP_1;Máxima compresión SAVEDLG_SUBSAMP_2;Balanceado SAVEDLG_SUBSAMP_3;Máxima calidad +SAVEDLG_SUBSAMP_TOOLTIP;Mejor compresión: \nJ: a: b 4: 2: 0 \nh / v 2/2 \nColor reducido a la mitad horizontal y verticalmente. \n Equilibrado: \nJ: a: b 4: 2: 2 \nh / v 2 / 1 \nColor dividido a la mitad horizontalmente. \nMejor calidad: \ nJ: a: b 4: 4: 4 \nh / v 1/1 \nNo hay submuestreo del color. SAVEDLG_TIFFUNCOMPRESSED;TIFF sin compresión SAVEDLG_WARNFILENAME;Se asignará nombre al archivo SHCSELECTOR_TOOLTIP;Pulsar el botón derecho del ratón para restablecer la posición de los tres controles deslizantes +SOFTPROOF_GAMUTCHECK_TOOLTIP;Resalta los píxeles con colores fuera de gamma con respecto a: \n-El perfil de la impresora, si se establece uno y la prueba evaluacion de la correspondencia con el perfil está habilitada, \n-El perfil de salida, si el perfil de la impresora no está configurado y la prueba de la evaluacion de la saturación del perfil está habilitada \n-El perfil del monitor, si la prueba de evaluacion de la correspondencia con el perfil está deshabilitada. +SOFTPROOF_TOOLTIP;La prueba evaluacion de la correspondencia con el perfil simula la apariencia de la imagen: \n-Cuando se imprime, si un perfil de impresora está configurado en Preferencias-> Administración de color, \n-Cuando se ve en una pantalla que usa el perfil de salida actual, si no se configura un perfil de impresora . THRESHOLDSELECTOR_B;Inferior THRESHOLDSELECTOR_BL;Inferior izquierdo THRESHOLDSELECTOR_BR;Inferior derecho @@ -892,6 +1299,7 @@ THRESHOLDSELECTOR_HINT;Mantenga la tecla Mayús presionada para mover pun THRESHOLDSELECTOR_T;Superior THRESHOLDSELECTOR_TL;Superior izquierdo THRESHOLDSELECTOR_TR;Superior derecho +TOOLBAR_TOOLTIP_COLORPICKER;Selector de color bloqueable \nCuando esté habilitado: \nHaga clic en la vista previa con el botón izquierdo del ratón para agregar un selector de color \nArrastre alrededor mientras presiona el botón izquierdo del mouse \ nElimine el selector de color con el botón derecho del mouse haga clic en \nEliminar todos los selectores de color con Mayús + clic con el botón derecho del mouse \nHaz clic derecho para alejarse de cualquier selector de color y volver a la herramienta Mano TOOLBAR_TOOLTIP_CROP;Selección de recorte.\nAtajo: c TOOLBAR_TOOLTIP_HAND;Herramienta mano.\nAtajo: h TOOLBAR_TOOLTIP_STRAIGHTEN;Enderezado / Rotación Fina.\nAtajo: s\n\nIndique la vertical u horizontal trazando una línea guía sobre la vista previa de la imagen. El ángulo de rotación será mostrado al continuación de la línea guía. El centro de la imagen es el centro de rotación. @@ -901,6 +1309,7 @@ TP_BWMIX_ALGO_LI;Lineal TP_BWMIX_ALGO_SP;Efectos especiales TP_BWMIX_ALGO_TOOLTIP;Lineal: producirá una respuesta lineal normal.\nEfectos especiales: producirá efectos especiales por mezclar no linealmente los canales. TP_BWMIX_AUTOCH;Auto +TP_BWMIX_AUTOCH_TIP;Calcular valores óptimos para el Mezclador de Canales TP_BWMIX_CC_ENABLED;Ajustar color complementario TP_BWMIX_CC_TOOLTIP;Permite el ajuste automático de colores complementarios en modo RNAmVCAzPM TP_BWMIX_CHANNEL;Ecualizador de luminancia @@ -927,6 +1336,9 @@ TP_BWMIX_MET;Método TP_BWMIX_MET_CHANMIX;Mezclador de canales TP_BWMIX_MET_DESAT;Des-saturación TP_BWMIX_MET_LUMEQUAL;Ecualizador de Luminancia +TP_BWMIX_MIXC;Mezclador +TP_BWMIX_NEUTRAL;Restablece el mezclador +TP_BWMIX_NEUTRAL_TIP;Restablece todos los parámetros (filtro, mezclador de canales) a sus valores predeterminados. TP_BWMIX_RGBLABEL;R: %1%% V: %2%% A: %3%% Total: %4%% TP_BWMIX_RGBLABEL_HINT;Factores finales RGB tomando en cuenta todas las opciones del mezclador\nTotal muestra la suma de los valores RGB actualmente aplicados:\n- En modo relativo Siempre 100% \n- En modo absoluto mayor (más claro) o menor (más oscuro) que 100% TP_BWMIX_RGB_TOOLTIP;Mezcla de canales RGB. Use como guía valores pre-establecidos.\nTenga en cuenta que valores negativos pueden introducir elementos extraños (artifacts) o resultados erráticos. @@ -955,6 +1367,10 @@ TP_BWMIX_VAL;L TP_CACORRECTION_BLUE;Azul TP_CACORRECTION_LABEL;Corrección de aberraciones cromáticas TP_CACORRECTION_RED;Rojo +TP_CBDL_AFT;Después de blanco y negro +TP_CBDL_BEF;Antes de blanco y negro +TP_CBDL_METHOD;Proceso localizado +TP_CBDL_METHOD_TOOLTIP;Elija si la herramienta Contraste por niveles de detalle se colocará después de la herramienta Blanco y negro, que la hace funcionar en el espacio L * a * b *, o antes, que la hace funcionar en el espacio RGB. TP_CHMIXER_BLUE;Canal Azul TP_CHMIXER_GREEN;Canal Verde TP_CHMIXER_LABEL;Mezclador de canales @@ -964,6 +1380,11 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nAtajo: '[' TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nAtajo: ']' TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotar a la derecha TP_COARSETRAF_TOOLTIP_VFLIP;Voltear verticalmente +TP_COLORAPP_ADAPTSCENE;Adaptación a la luminosidad de la escena +TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminancia absoluta del entorno de la escena (cd/m²).\n1) Calculado en base a datos Exif: \nTiempo de Exposición - Velocidad ISO - Número F de apertura - Corrección de exposición\n2) Calculado a partir del Punto Blanco raw y Compensación de Exposición RT. +TP_COLORAPP_ADAPTVIEWING;Luminosidad de visualización (cd/m²) +TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminancia absoluta del entorno de visualización\n(usualmente 16cd/m²) +TP_COLORAPP_ADAP_AUTO_TOOLTIP;Si la casilla está seleccionada (como se recomienda) RT calcula el valor óptimo a partir de los datos Exif.\nPara establecer el valor manualmente, primero desmarque la casilla TP_COLORAPP_ALGO;Algoritmo TP_COLORAPP_ALGO_ALL;Todo TP_COLORAPP_ALGO_JC;Claridad + Crominancia (JC) @@ -993,6 +1414,9 @@ TP_COLORAPP_CURVEEDITOR3;Curva de color TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ajusta Crominancia, Saturación o Colorido.\n\nMuestra el histograma de Cromaticidad (Lab) antes de los ajustes CIECAM02.\nSi la casilla "Muestra en las curvas histogramas de salida CIECAM02" está seleccionada, muestra el histograma de C, s o M después de CIECAM02.\n\nC, s y M no se muestran en el histograma del panel principal.\n\nVea el histograma de salida final en el panel principal TP_COLORAPP_DATACIE;Curvas con histogramas de salida CIECAM02 TP_COLORAPP_DATACIE_TOOLTIP;Si está seleccionada, los histogramas en las curvas CIECAM02 muestran aproximadamente valores/rangos de J o Q, y C, s o M después de los ajustes CIECAM02.\nEsta selección no influye en el histograma del panel principal.\n\nCuando no está seleccionada, los histogramas en las curvas CIECAM02 muestran valores Lab antes de los ajustes CIECAM02 +TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Si la casilla está seleccionada (como se recomienda), RT calcula el valor óptimo, que es usado por CAT02, y también por todo CIECAM02.\nPara establecer manualmente el valor, primero desmarque la casilla (se recomienda usar valores mayores a 65) +TP_COLORAPP_DEGREE_TOOLTIP;Cantidad de transformación de adaptación cromática CIE 2002 +TP_COLORAPP_FREE;Libre tempera+verde + CAT02 + [output] TP_COLORAPP_GAMUT;Control de Gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Permite control de gamut en modo Lab TP_COLORAPP_HUE;Matiz (h) @@ -1005,8 +1429,12 @@ TP_COLORAPP_LIGHT;Claridad (J) TP_COLORAPP_LIGHT_TOOLTIP;Claridad en CIECAM02 es diferente a la de Lab y a la de RGB TP_COLORAPP_MODEL;Modelo de Punto Blanco TP_COLORAPP_MODEL_TOOLTIP;Modelo de Punto Blanco\n\nWB [RT] + [salida]:\nEl Balance de Blancos de RT es usado para la escena, CIECAM02 es establecido a D50, y el Balance de Blancos del dispositivo de salida es el establecido en Preferencias > Gestión de Color\n\nWB [RT+CAT02] + [salida]:\nEl Balance de Blancos de RT es usado por CAT02 y el del dispositivo de salida es el establecido en preferencias +TP_COLORAPP_NEUTRAL;Restablecer +TP_COLORAPP_NEUTRAL_TIP;Restablecer todos los controles deslizantes y las curvas a sus valores predeterminados TP_COLORAPP_RSTPRO; Protección de tonos rojos y color piel TP_COLORAPP_RSTPRO_TOOLTIP;Intensidad de protección de tonos rojos y color piel (en curvas y en controles deslizantes) +TP_COLORAPP_SHARPCIE;Enfoque, Contraste por niveles de detalle, Micro-contraste & Eliminación de AC con Q/C +TP_COLORAPP_SHARPCIE_TOOLTIP;Si se selecciona, Enfoque, Contraste por niveles de detalle, Micro-contraste & Eliminación de AC usarán CIECAM02 TP_COLORAPP_SURROUND;Entorno TP_COLORAPP_SURROUND_AVER;Promedio TP_COLORAPP_SURROUND_DARK;Oscuro @@ -1023,11 +1451,14 @@ TP_COLORAPP_TCMODE_LABEL2;Curve modo 2 TP_COLORAPP_TCMODE_LABEL3;Curva en modo crominancia TP_COLORAPP_TCMODE_LIGHTNESS;Claridad TP_COLORAPP_TCMODE_SATUR;Saturación +TP_COLORAPP_TEMP_TOOLTIP;Para seleccionar un iluminante, configure siempre Tinte = 1. \nA temperatura = 2856 \nD50 temperatura = 5003 \nD55 temperatura = 5503 \nD65 temperatura = 6504 \nD75 temperatura = 7504 TP_COLORAPP_TONECIE;Mapeo tonal usando Brillo (Q) CIECAM02. TP_COLORAPP_TONECIE_TOOLTIP;Si esta opción no está seleccionada, el mapeo tonal se hace usando el espacio de color Lab.\nSi esta opción está seleccionada, el mapeo tonal se hace usando CIECAM02.\nLa herramienta de mapeo tonal debe de estar habilitada para que esta selección tenga efecto -TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminancia absoluta del entorno de visualización\n(usualmente 16cd/m²) TP_COLORAPP_WBCAM;BalBlanco [RT+CAT02] + [salida] TP_COLORAPP_WBRT;BalBlanco [RT] + [salida] +TP_COLORAPP_YB;Yb% (luminancia media) +TP_COLORAPP_YBSCENE;Yb% (luminancia media) +TP_COLORAPP_YBSCENE_TOOLTIP;Si está habilitado el modo automático, Yb se calcula a partir del valor medio de la luminancia de la imagen real TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automático TP_COLORTONING_BALANCE;Balance @@ -1039,6 +1470,8 @@ TP_COLORTONING_HIGHLIGHT;Luces Altas TP_COLORTONING_HUE;Matiz TP_COLORTONING_LAB;Mezcla Lab TP_COLORTONING_LABEL;Tonificación de Color +TP_COLORTONING_LABGRID;L*a*b* cuadrícula de corrección del color +TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 TP_COLORTONING_LUMA;Luminancia TP_COLORTONING_LUMAMODE;Preservar luminancia TP_COLORTONING_LUMAMODE_TOOLTIP;Si está activado, cuando se cambia el color(rojo, verde, cian, azul, etc.) la luminancia de cada pixel es preservada. @@ -1062,19 +1495,23 @@ TP_COLORTONING_STRENGTH;Intensidad TP_COLORTONING_TWO2;Crominancia especial '2 colores' TP_COLORTONING_TWOALL;Crominancia especial TP_COLORTONING_TWOBY;Especial 'a' y 'b' -TP_COLORTONING_TWOCOLOR_TOOLTIP;Crominancia estándar:\nRespuesta lineal, a* = b*.\n\nCrominancia especial:\nRespuesta lineal, a* = b*, pero no unidas - intentar debajo de la diagonal.\n\nEspecial a* and b*:\nRespuesta lineal no unida con curvas separadas para a* y b*. Previsto para efectos especiales.\n\nCrominancia especial 2 colores:\nMás predecible. +TP_COLORTONING_TWOCOLOR_TOOLTIP;Crominancia estándar:\nRespuesta lineal, a* = b*.\n\nCrominancia especial:\nRespuesta lineal, a* = b*, pero no unidas - intentar debajo de la diagonal.\n\nEspecial a* and b*:\nRespuesta lineal no unida con curvas separadas para a* y b*. Previsto para efectos especiales.\nCrominancia especial 2 colores:\nMás predecible. TP_COLORTONING_TWOSTD;Crominancia estándar TP_CROP_FIXRATIO;Fijar proporciones: TP_CROP_GTDIAGONALS;Regla de las diagonales TP_CROP_GTEPASSPORT;Pasaporte biométrico TP_CROP_GTFRAME;Marco TP_CROP_GTGRID;Rejilla +TP_CROP_GTHARMMEANS;Proporciones Armónicas TP_CROP_GTNONE;Ninguna TP_CROP_GTRULETHIRDS;Regla de los tercios +TP_CROP_GTTRIANGLE1;Triángulos de oro(áureo)1 +TP_CROP_GTTRIANGLE2;Triángulos de oro(áureo)2 TP_CROP_GUIDETYPE;Clase de guía: TP_CROP_H;Al TP_CROP_LABEL;Recortar TP_CROP_PPI;Ptos/Pulgada= +TP_CROP_SELECTCROP;Seleccionar recorte TP_CROP_W;Ancho TP_CROP_X;x TP_CROP_Y;y @@ -1083,15 +1520,36 @@ TP_DARKFRAME_LABEL;Toma Negra TP_DEFRINGE_LABEL;Quitar borde púrpura TP_DEFRINGE_RADIUS;Radio TP_DEFRINGE_THRESHOLD;Umbral +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Control automático de multi-zonas +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Control automático global +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Trate de evaluar el ruido del color \nTenga cuidado, este cálculo es promedio y es bastante subjetivo. TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Crominancia: Azul-Amarillo +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Curva de Crominancia +TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Aumente (multiplique) el valor de todos los controles deslizantes de crominancia. \nEsta curva le permite ajustar la intensidad de la reducción de ruido cromático en función de la cromaticidad, por ejemplo, para aumentar la acción en áreas de baja saturación y para disminuirla en aquellas de alta saturación. +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Crominancia +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Crominancia: Maestra +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Método +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual \nActos en la imagen completa. \nUsted controla la configuración de reducción de ruido manualmente. \nAutomático global \ nAcciones en la imagen completa. \n9 zonas se utilizan para calcular una configuración de reducción de ruido de crominancia global. \nVista previa \nAcciones activadas en la totalidad de la imagen. \ nLa parte de la imagen visible en la vista previa se utiliza para calcular la configuración global de reducción de ruido de crominancia. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual \nAcciones en la imagen completa. \nUsted controla las configuraciones de reducción de ruido manualmente. \nAutomático global \nAcciones en la imagen completa. \n9 zonas se utilizan para calcular una configuración global de reducción de ruido de crominancia. \nMúltiples zonas automáticas \ nNo hay vista previa: funciona solo durante el guardado, pero al usar el método de "Vista previa" al hacer coincidir el tamaño y centro del mosaico con el centro y el tamaño de la vista previa, puede obtener una idea de los resultados esperados. \ nLa imagen se divide en mosaicos (aproximadamente 10 a 70 dependiendo del tamaño de la imagen) y cada ficha recibe su propia configuración de reducción de ruido de crominancia. \nPrevisión \nAcciones en toda la imagen. \nLa parte de la imagen visible en la vista previa se utiliza para calcular la configuración global de reducción de ruido de crominancia. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Vista previa de múltiples zonas +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Vista previa +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Muestra los niveles de ruido restantes de la parte de la imagen visible en la vista previa después de wavelet. \n> 300 Muy ruidoso \n100-300 Ruidoso \n50-100 Un poco ruidoso \n <50 Muy bajo ruido \n Cuidado, los valores diferirán entre los modos RGB y L * a * b *. Los valores RGB son menos precisos porque el modo RGB no separa completamente la luminancia y la crominancia. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Tamaño de la vista previa =% 1, Centro: Px =% 2 Py =% 3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Previsualización de ruido: Media =% 1 Alta =% 2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Previsualización del ruido: Media = - Alta = - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tamaño del mosaico =% 1, Centro: Tx =% 2 Ty =% 3 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_LABEL;Reducción del ruido +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Control de luminancia TP_DIRPYRDENOISE_LUMINANCE_CURVE;Curva de Luminancia TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detalle en luminancia +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminancia TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminancia TP_DIRPYRDENOISE_MAIN_COLORSPACE;Método +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* 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. @@ -1102,15 +1560,27 @@ 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_CHROMINANCE;Solo croma(color) +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* 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_METHOD_WEIGHTED;Ponderado L * (pequeño) + a * b * (normal) TP_DIRPYRDENOISE_MEDIAN_PASSES;Iteracciones Median +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;La aplicación de tres iteraciones de filtro de mediana con un tamaño de ventana de 3 × 3 a menudo conduce a mejores resultados que el uso de una iteración de filtro de mediana con un tamaño de ventana de 7 × 7. TP_DIRPYRDENOISE_MEDIAN_TYPE;Tipo Median +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Aplica un filtro de mediana para el tamaño de la ventana deseada. Cuanto mayor sea el tamaño de la ventana, más tiempo tardará. \n3 × 3 soft: trata 5 píxeles en una ventana de 3 × 3 píxeles. \n3 × 3: trata 9 píxeles en una ventana de 3 × 3 píxeles. \n5 × 5 suave: trata 13 píxeles en una ventana de 5 × 5 píxeles. \n5 × 5: trata 25 píxeles en una ventana de 5 × 5 píxeles. \n7 × 7: trata 49 píxeles en una ventana de 7 × 7 píxeles. \n9 × 9: trata 81 píxeles en una ventana de 9 × 9 píxeles. \nA veces es posible lograr una mayor calidad ejecutando varias iteraciones con un tamaño de ventana más pequeño que una iteración con una más grande. +TP_DIRPYRDENOISE_SLI;Deslizador +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 suavisado +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 suavisado +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 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_ARTIF;Reduce elementos extraños TP_DIRPYREQUALIZER_HUESKIN;Matiz de la piel TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;En la parte superior se selecciona la zona con los valores máximos.\nEn la parte inferior se ajusta la transición.\nSi necesita para mover el área de manera significativa a la izquierda o a la derecha - o si hay elementos extraños:.. El balance de blancos es incorrecto \nPuedes reducir ligeramente la zona para evitar que el resto de la imagen se vea afectada. TP_DIRPYREQUALIZER_LABEL;Contraste por niveles de detalle @@ -1124,8 +1594,10 @@ TP_DIRPYREQUALIZER_SKIN_TOOLTIP;A -100 se focalizan los tonos de piel.\nA 0 todo TP_DIRPYREQUALIZER_THRESHOLD;Umbral TP_DIRPYREQUALIZER_TOOLTIP;Reduce los elementos extraños producidos en la transición entre los colores de piel (matiz, crominancia, luminancia) y el resto de la imagen. TP_DISTORTION_AMOUNT;Cantidad +TP_DISTORTION_AUTO_TIP;Corrige automáticamente la distorsión de la lente en archivos sin procesar al compararla con la imagen JPEG incrustada, si existe, y la cámara ha corregido automáticamente la distorsión de la lente. TP_DISTORTION_LABEL;Corrección de Distorsión TP_EPD_EDGESTOPPING;Parada en los bordes +TP_EPD_GAMMA;Gamma TP_EPD_LABEL;Mapeo tonal TP_EPD_REWEIGHTINGITERATES;Iteraciones de reponderación TP_EPD_SCALE;Escala @@ -1145,17 +1617,22 @@ TP_EXPOSURE_CURVEEDITOR1;Curva tonal 1 TP_EXPOSURE_CURVEEDITOR2;Curva tonal 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Por favor, consulte RawPedia para aprender cómo obtener mejores resultados usando dos curvas tonales TP_EXPOSURE_EXPCOMP;Compensación de exposición +TP_EXPOSURE_HISTMATCHING;Curva de tono auto-balanceada +TP_EXPOSURE_HISTMATCHING_TOOLTIP;Ajuste automáticamente los controles deslizantes y las curvas (excepto la compensación de exposición) para que coincidan con el aspecto de la miniatura JPEG incrustada. TP_EXPOSURE_LABEL;Exposición TP_EXPOSURE_SATURATION;Saturación TP_EXPOSURE_TCMODE_FILMLIKE;Similar a película TP_EXPOSURE_TCMODE_LABEL1;Curva modo 1 TP_EXPOSURE_TCMODE_LABEL2;Curva modo 2 +TP_EXPOSURE_TCMODE_LUMINANCE;Luminancia +TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Mezcla de saturación y valor TP_EXPOSURE_TCMODE_STANDARD;Estándar TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Estándar ponderado TP_EXPOS_BLACKPOINT_LABEL;Raw - Puntos Negros TP_EXPOS_WHITEPOINT_LABEL;Raw - Puntos Blancos TP_FILMSIMULATION_LABEL;Simulación de Fílmico +TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee está configurado para buscar imágenes Hald CLUT, que se usan para la herramienta Simulación de película, en una carpeta que tarda demasiado en cargarse. \nVaya a Preferencias> Procesamiento de imagen> Simulación de película \npara ver qué carpeta se está utilizando. Debería apuntar RawTherapee a una carpeta que contenga solo imágenes de Hald CLUT y nada más, o a una carpeta vacía si no desea usar la herramienta Simulación de película. \nLea el artículo de Simulación de película en RawPedia para obtener más información. \n¿Desea cancelar el escaneo ahora? TP_FILMSIMULATION_STRENGTH;Intensidad TP_FILMSIMULATION_ZEROCLUTSFOUND;Seleccionar el directorio HaldCLUT en Preferencias TP_FLATFIELD_AUTOSELECT;Auto selección @@ -1197,8 +1674,15 @@ TP_HSVEQUALIZER_HUE;H TP_HSVEQUALIZER_LABEL;Ecualizador HSV TP_HSVEQUALIZER_SAT;S TP_HSVEQUALIZER_VAL;V +TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Exposición, punto de partida +TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Emplear el desplazamiento de la línea de base de DCP incrustado. La configuración solo está disponible si el DCP seleccionado tiene uno. +TP_ICM_APPLYHUESATMAP;Tabla base +TP_ICM_APPLYHUESATMAP_TOOLTIP;Emplear la tabla base DCP incrustada (Mapa Hue Sat). La configuración solo está disponible si el DCP seleccionado tiene unoloy the embedded DCP base table (HueSatMap). The setting is only available if the selected DCP has one. +TP_ICM_APPLYLOOKTABLE;Revisar tabla +TP_ICM_APPLYLOOKTABLE_TOOLTIP;Emplear la tabla de apariencia DCP incrustada. La configuración solo está disponible si el DCP seleccionado tiene uno. TP_ICM_BLENDCMSMATRIX;Mezclar las luces altas ICC con matriz TP_ICM_BLENDCMSMATRIX_TOOLTIP;Permite recuperar luces altas quemadas cuando se usan perfiles ICC basados en LUT +TP_ICM_BPC;Compensación de punto negro TP_ICM_DCPILLUMINANT;Iluminante TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado TP_ICM_DCPILLUMINANT_TOOLTIP;Seleccione el Iluminante a emplear. El valor predeterminado es "interpolado", que es una mezcla entre dos basados en el Balance de Blancos. Este ajuste es posible solo si un Iluminante dual DCP con soporte de interpolación es seleccionado. @@ -1217,6 +1701,10 @@ TP_ICM_INPUTPROFILE;Perfil de entrada TP_ICM_LABEL;Gestión de color TP_ICM_NOICM;Sin ICM: Salida sRGB TP_ICM_OUTPUTPROFILE;Perfil de salida +TP_ICM_PROFILEINTENT;Iintento de interpretación. +TP_ICM_SAVEREFERENCE;Guardar imagen de referencia +TP_ICM_SAVEREFERENCE_APPLYWB;Aplicar balance de blancos +TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;En general, aplique el balance de blancos cuando guarde imágenes para crear perfiles ICC, y no aplique el balance de blancos para crear perfiles DCP. TP_ICM_SAVEREFERENCE_TOOLTIP;Guardar la imagen TIFF lineal antes de aplicar el perfil de entrada. El resultado puede ser utilizado para fines de calibración y la generación de un perfil de cámara. TP_ICM_TONECURVE;Usar la curva tonal en DCP TP_ICM_TONECURVE_TOOLTIP;Activa el uso de las curvas de tono que pueden contener los perfiles DCP. Este ajuste es posible solo si el DCP seleccionado contiene una curva tonal. @@ -1224,9 +1712,9 @@ TP_ICM_WORKINGPROFILE;Perfil de trabajo TP_IMPULSEDENOISE_LABEL;Impulsar Reducc. ruido TP_IMPULSEDENOISE_THRESH;Umbral TP_LABCURVE_AVOIDCOLORSHIFT;Evitar desplazamiento de colores -TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Encaja los colores dentro de la gama del espacio de color de trabajo y aplica la corrección de Munsell +TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Encaja los colores dentro de la gamma del espacio de color de trabajo y aplica la corrección de Munsell TP_LABCURVE_BRIGHTNESS;Brillo -TP_LABCURVE_CHROMATICITY;Cromaticidad +TP_LABCURVE_CHROMATICITY;Cromaticidad (Saturación) TP_LABCURVE_CHROMA_TOOLTIP;Para aplicar mapeo tonal en blanco y negro, establezca la Cromaticidad a -100 TP_LABCURVE_CONTRAST;Contraste TP_LABCURVE_CURVEEDITOR;Curva de luminancia @@ -1238,6 +1726,7 @@ TP_LABCURVE_CURVEEDITOR_B_RANGE1;Azul saturado TP_LABCURVE_CURVEEDITOR_B_RANGE2;Azul pastel TP_LABCURVE_CURVEEDITOR_B_RANGE3;Amarillo pastel TP_LABCURVE_CURVEEDITOR_B_RANGE4;Amarillo saturado +TP_LABCURVE_CURVEEDITOR_CC;CC TP_LABCURVE_CURVEEDITOR_CC_RANGE1;Neutros TP_LABCURVE_CURVEEDITOR_CC_RANGE2;Mates TP_LABCURVE_CURVEEDITOR_CC_RANGE3;Pastel @@ -1263,6 +1752,19 @@ TP_LENSGEOM_AUTOCROP;Auto recorte TP_LENSGEOM_FILL;Auto relleno TP_LENSGEOM_LABEL;Lente / Geometría TP_LENSPROFILE_LABEL;Perfil de corrección de lente +TP_LENSPROFILE_USECA;Corrección de AC +TP_LENSPROFILE_USEDIST;Corrección de distorsión +TP_LENSPROFILE_USEVIGN;Corrección de viñeteo +TP_LOCALCONTRAST_AMOUNT;Cantidad +TP_LOCALCONTRAST_DARKNESS;Nivel de sombras +TP_LOCALCONTRAST_LABEL;Contraste local +TP_LOCALCONTRAST_LIGHTNESS;Nivel de luminosidad +TP_LOCALCONTRAST_RADIUS;Radio +TP_METADATA_EDIT;Aplicar modificaciones +TP_METADATA_MODE;Modo de copia de metadatos +TP_METADATA_STRIP;Eliminar todos los metadatos +TP_METADATA_TUNNEL;Copiar sin cambios +TP_NEUTRAL;Reiniciar TP_NEUTRAL_TIP;Restablecer controles de exposición a valores neutros\nAplica a los mismos controles que son afectados por Niveles Automáticos, sin importar si usa o no Niveles Automáticos TP_PCVIGNETTE_FEATHER;Difuminado TP_PCVIGNETTE_FEATHER_TOOLTIP;Difuminación: \n0=Solo Esquinas\n50=Hasta medio camino al centro\n100=Hasta el Centro @@ -1284,9 +1786,12 @@ TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Trata de eliminar los píxeles calientes. TP_PREPROCESS_LABEL;Preprocesado TP_PREPROCESS_LINEDENOISE;Filtro de ruido de línea TP_PREPROCESS_NO_FOUND;No encontrado +TP_PRSHARPENING_LABEL;Enfocar después del cambio de tamaño +TP_PRSHARPENING_TOOLTIP;Enfoca la imagen después de cambiar el tamaño. Solo funciona cuando se utiliza el método de cambio de tamaño "Lanczos". Es imposible previsualizar los efectos de esta herramienta. Ver RawPedia para instrucciones de uso. TP_RAWCACORR_AUTO;Auto corrección TP_RAWCACORR_CABLUE;Azul TP_RAWCACORR_CARED;Rojo +TP_RAWCACORR_CASTR;Fuerza TP_RAWEXPOS_BLACKS;Niveles de negro TP_RAWEXPOS_BLACK_0;Verde 1 (principal) TP_RAWEXPOS_BLACK_1;Rojo @@ -1299,19 +1804,85 @@ TP_RAWEXPOS_LINEAR;Corrección de punto blanco TP_RAWEXPOS_PRESER;Preservación de Luces Altas TP_RAWEXPOS_RGB;Rojo, Verde, Azul TP_RAWEXPOS_TWOGREEN;Vincular verdes +TP_RAW_1PASSMEDIUM;1-pasaje (medio) +TP_RAW_3PASSBEST;3-Pasaje (Mejor) +TP_RAW_AHD;AHD +TP_RAW_AMAZE;AMaZE +TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Aplicar paso de mejora DCB TP_RAW_DCBITERATIONS;Número de iteraciones DCB TP_RAW_DMETHOD;Método TP_RAW_DMETHOD_PROGRESSBAR;%1 interpolando mosaico... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Refinando la interpolación del mosaico... TP_RAW_DMETHOD_TOOLTIP;Nota: IGV y LMMSE están dedicados a imágenes tomadas con grandes velocidades ISO +TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Pasos de supresión de color falso +TP_RAW_FAST;Fast +TP_RAW_HD;Límite +TP_RAW_HD_TOOLTIP;Los valores más bajos hacen que la detección de píxeles muertos/vivos sea más agresiva, pero los falsos positivos pueden llevar a producir elementos extraños. Si observa que aparecen elementos extraños al habilitar los filtros de píxeles calientes/muertos, aumente gradualmente el valor del umbral hasta que desaparezcan. +TP_RAW_HPHD;HPHD +TP_RAW_IGV;IGV +TP_RAW_IMAGENUM;Sub-imagen +TP_RAW_IMAGENUM_TOOLTIP;Algunos archivos en bruto constan de varias sub-imágenes (Pentax / Sony Pixel Shift, Pentax 3-en-1 HDR, Canon Dual Pixel). \nAl usar cualquier método de demostración que no sea Pixel Shift, esto selecciona qué sub-imagen se usa . \nCuando se usa el método de demostración Pixel Shift en un Pixel Shift sin procesar, se usan todas las subimágenes, y esto selecciona qué subimagen se debe usar para mover partes. TP_RAW_LABEL;Desmosaicado +TP_RAW_LMMSE;LMMSE TP_RAW_LMMSEITERATIONS;Pasos de mejora LMMSE TP_RAW_LMMSE_TOOLTIP;Agregar gamma (paso 1)\n Agregar mediana (pasos 2,3,4)\nAgregar refinamientos (pasos 5,6) para reducir objetos espurios y mejorar la relación señal a ruido +TP_RAW_MONO;Mono +TP_RAW_NONE;Ninguno (muestra el patrón del sensor) +TP_RAW_PIXELSHIFT;Cambio de píxel +TP_RAW_PIXELSHIFTADAPTIVE;Detección adaptativa +TP_RAW_PIXELSHIFTBLUR;Máscara de movimiento de desenfoque +TP_RAW_PIXELSHIFTEPERISO;ISO adaptación +TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;El valor predeterminado de 0 debería funcionar bien para la base ISO. \nAumente el valor para mejorar la detección del movimiento para una ISO más alta. \nAumente en pequeños pasos y observe la máscara de movimiento mientras aumenta. +TP_RAW_PIXELSHIFTEQUALBRIGHT;Ecualiza el brillo de los cuadros. +TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Igualar por canal +TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Activado: ecualice los canales RGB individualmente. \nDeshabilitado: use el mismo factor de ecualización para todos los canales. +TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Ecualice el brillo de los cuadros con el brillo del cuadro seleccionado. \nSi hay áreas sobreexpuestas en los cuadros, seleccione el cuadro más brillante para evitar la aparición de colores magenta en áreas sobreexpuestas o habilite la corrección de movimiento. +TP_RAW_PIXELSHIFTEXP0;Experimental +TP_RAW_PIXELSHIFTGREEN;Compruebe el canal verde para el movimiento +TP_RAW_PIXELSHIFTHOLEFILL;Rellene los fallos en la máscara de movimiento +TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Rellene los fallos en la máscara de movimiento +TP_RAW_PIXELSHIFTLMMSE;Utilice LMMSE para regiones móviles +TP_RAW_PIXELSHIFTLMMSE_TOOLTIP;Use LMMSE en lugar de AMaZE para las áreas de movimiento. \nÚtil para imágenes de alta ISO. +TP_RAW_PIXELSHIFTMASKTHRESHOLD;3x3 nuevo umbral +TP_RAW_PIXELSHIFTMEDIAN;Usa la mediana pa3x3 nuevo umbral parara las regiones móviles. +TP_RAW_PIXELSHIFTMEDIAN3;Excluir el cuadro seleccionado de la mediana +TP_RAW_PIXELSHIFTMEDIAN3_TOOLTIP;Excluye el cuadro seleccionado de la mediana. \nUtilícelo si los objetos en movimiento se superponen en el cuadro 2 y 3 +TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use la mediana de todos los cuadros en lugar del cuadro seleccionado para las regiones con movimiento. \nElimina los objetos que se encuentran en diferentes lugares en todos los cuadros. \nBrinda efecto de movimiento en objetos de movimiento lento (superpuestos). +TP_RAW_PIXELSHIFTMM_AUTO;Automático +TP_RAW_PIXELSHIFTMM_CUSTOM;Personalizado +TP_RAW_PIXELSHIFTMM_OFF;Apagado +TP_RAW_PIXELSHIFTMOTION;Nivel de detección de movimiento (en desuso) +TP_RAW_PIXELSHIFTMOTIONCORRECTION;Magnitudo de la corrección del movimiento verde +TP_RAW_PIXELSHIFTMOTIONMETHOD;Corrección del movimiento +TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 significa que no hay detección de movimiento. \n1 - 99 significa que el movimiento se detectará de acuerdo con este valor. Aumente el valor para aumentar la tasa de detección. \n100 significa que se utilizará el marco de demostración AMaZE.ción de movimiento. \n1 - 99 significa que el movimiento se detectará de acuerdo con este valor. Aumente el valor para aumentar la tasa de detección. \n100 significa que se utilizará el marco de demostración AMaZE.no motion detection.\n1 - 99 means motion will be detected according to this value. Increase value to increase detection rate.\n100 means the AMaZE-demosaiced frame will be used. +TP_RAW_PIXELSHIFTNONGREENAMAZE;Compruebe AMaZE rojo / azul +TP_RAW_PIXELSHIFTNONGREENCROSS;Compruebe los canales rojos/azules para el movimiento +TP_RAW_PIXELSHIFTNONGREENCROSS2;Compruebe verde AMaZE +TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Compruebe rojo/azul horizontal +TP_RAW_PIXELSHIFTNONGREENVERTICAL;Compruebe rojo/azul vertical +TP_RAW_PIXELSHIFTNREADISO;nLeer +TP_RAW_PIXELSHIFTONEGREEN;Utilice un verde en lugar de media +TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use un verde en lugar de promediar dos verdes para regiones sin movimiento. +TP_RAW_PIXELSHIFTPRNU;PRNU (%) +TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Fuerza Rojo&Azul +TP_RAW_PIXELSHIFTSHOWMOTION;Mostrar máscara de movimiento +TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Mostrar solo máscara de movimiento +TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Muestra la máscara de movimiento sin la imagen. +TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Superpone la imagen con una máscara que muestra las regiones con movimiento. +TP_RAW_PIXELSHIFTSIGMA;Radio de desenfoque +TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;El radio predeterminado de 1.0 por lo general se ajusta bien a la base ISO. \nAumente el valor para tomas con ISO alto, 5.0 es un buen punto de partida. \nMire la máscara de movimiento mientras cambia el valor. +TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions +TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Transiciones suaves entre áreas con movimiento y áreas sin movimiento. \nConfigure en 0 para deshabilitar el suavizado en la transición. \nConfigure en 1 para obtener el resultado AMaZE / LMMSE del marco seleccionado (dependiendo de si se selecciona "Usar LMMSE") o la mediana de los cuatro cuadros si se selecciona "Usar mediana". +TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;Factor de StdDev Azul +TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;Factor de StdDev Verde +TP_RAW_PIXELSHIFTSTDDEVFACTORRED;Factor de StdDev Rojo +TP_RAW_RCD;RCD TP_RAW_SENSOR_BAYER_LABEL;Sensor con matriz Bayer TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pases da mejores resultados (recomendado para imágenes de ISO bajo).\n1-pase es más rápido y es casi indistinguible del modo 3-pases para imágenes de ISO altas. TP_RAW_SENSOR_XTRANS_LABEL;Sensor con matriz X-Trans +TP_RAW_VNG4;VNG4 TP_RESIZE_APPLIESTO;Aplica a: TP_RESIZE_CROPPEDAREA;Área recortada TP_RESIZE_FITBOX;Rectángulo límite @@ -1326,6 +1897,86 @@ TP_RESIZE_SCALE;Escala TP_RESIZE_SPECIFY;Especificar: TP_RESIZE_W;An: TP_RESIZE_WIDTH;Anchura +TP_RETINEX_CONTEDIT_HSL;Ecualizador HSL del histograma +TP_RETINEX_CONTEDIT_LAB;Ecualizador L * a * b * del histograma +TP_RETINEX_CONTEDIT_LH;Ecualizador de tono +TP_RETINEX_CONTEDIT_MAP;Ecualizador de máscara +TP_RETINEX_CURVEEDITOR_CD;L=f(L) +TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminancia según luminancia L = f (L) \nCorregir datos sin procesar para reducir halos y elementos extraños. +TP_RETINEX_CURVEEDITOR_LH;Fuerza=f(H) +TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Fuerza según el tono Fuerza = f (H) \nEsta curva también actúa sobre el croma cuando se usa el método 'Resaltar' retinex. +TP_RETINEX_CURVEEDITOR_MAP;L=f(L) +TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;Esta curva se puede aplicar sola o con una máscara gaussiana o una máscara wavelet. \n¡Cuidado con los elementos extraños! +TP_RETINEX_EQUAL;Equalizador +TP_RETINEX_FREEGAMMA;Gamma libre +TP_RETINEX_GAIN;Aumentar +TP_RETINEX_GAINOFFS;Aumentar y Offset (brillo) +TP_RETINEX_GAINTRANSMISSION;Aumentar transmisión +TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplifique o reduzca el mapa de transmisión para lograr la luminancia. \nAbscisa: transmisión -min desde 0, media y valores (máx.). \nOrdena: ganancia. +TP_RETINEX_GAIN_TOOLTIP;Actúa sobre la imagen restaurada. \nÉsta es muy diferente de las otras configuraciones. Se utiliza para píxeles blancos o negros, y para ayudar a equilibrar el histograma. +TP_RETINEX_GAMMA;Gamma +TP_RETINEX_GAMMA_FREE;Libre +TP_RETINEX_GAMMA_HIGH;Alta +TP_RETINEX_GAMMA_LOW;Baja +TP_RETINEX_GAMMA_MID;Media +TP_RETINEX_GAMMA_NONE;Ninguna +TP_RETINEX_GAMMA_TOOLTIP;Restaura los tonos aplicando gamma antes y después de Retinex. Diferente de las curvas de Retinex u otras curvas (Lab, Exposición, etc.). +TP_RETINEX_GRAD;Gradiente de transmisión +TP_RETINEX_GRADS;Fuerza del Gradiente +TP_RETINEX_GRADS_TOOLTIP;Si el control deslizante está en 0, todas las iteraciones son idénticas. \nSi es mayor a 0, la fuerza se reduce cuando las iteraciones aumentan, y viceversa. +TP_RETINEX_GRAD_TOOLTIP;Si el control deslizante está en 0, todas las iteraciones son idénticas. \nSi es mayor a 0, la variación y el umbral se reducen cuando las iteraciones aumentan, y viceversa. +TP_RETINEX_HIGH;Alto +TP_RETINEX_HIGHLIG;Luces Altas +TP_RETINEX_HIGHLIGHT;Umbral de resaltado +TP_RETINEX_HIGHLIGHT_TOOLTIP;Aumente la acción del algoritmo alto. \nPuede requerir que vuelva a ajustar "Píxeles adyacentes" y aumentar la "Corrección de punto blanco" en la pestaña Sin formato -> Herramienta Puntos blancos sin procesar. +TP_RETINEX_HSLSPACE_LIN;HSL-Lineal +TP_RETINEX_HSLSPACE_LOG;HSL-Logarítmica +TP_RETINEX_ITER;Iteracciones (mapeo-tonos) +TP_RETINEX_ITERF;Mapeo de tonos +TP_RETINEX_ITER_TOOLTIP;Simule un operador de mapeo de tonos. \nLos valores altos aumentan el tiempo de procesamiento. +TP_RETINEX_LABEL;Retinex +TP_RETINEX_LABEL_MASK;Máscara +TP_RETINEX_LABSPACE;L*a*b* +TP_RETINEX_LOW;Bajo +TP_RETINEX_MAP;Método de máscara +TP_RETINEX_MAP_GAUS;Máscara Gaussian +TP_RETINEX_MAP_MAPP;Máscara de enfoque (wavelet partial) +TP_RETINEX_MAP_MAPT;Máscara de enfoque(wavelet total) +TP_RETINEX_MAP_METHOD_TOOLTIP;Use la máscara generada por la función gaussiana anterior (Radio, Método) para reducir los halos y los elementos extraños. \nCortar solo: aplique una curva de contraste diagonal en la máscara. \n¡Cuidado con los elementos extraños! \nMáscara gaussiana: genere y use un Desenfoque gaussiano de la máscara original. \nRápido. \nMáscara de corte: genere y use un wavelet en la máscara original. \nBajo. +TP_RETINEX_MAP_NONE;Ninguno +TP_RETINEX_MEDIAN;filtro de transmision mediana +TP_RETINEX_METHOD;Método +TP_RETINEX_METHOD_TOOLTIP;Baja = Reforzar la luz baja. \nUniforme = Ecualizar la acción. \nAlta = Reforzar la luz alta. \nLuces Altas = Eliminar magenta en las partes altas +TP_RETINEX_MLABEL;Restaurado sin turbidez Min. =% 1 Max =% 2. +TP_RETINEX_MLABEL_TOOLTIP;Debe estar cerca del mín = 0 máx = 32768 \nImagen restaurada sin mezcla. +TP_RETINEX_NEIGHBOR;Radio +TP_RETINEX_NEUTRAL;Restablecer +TP_RETINEX_NEUTRAL_TIP;Restablecer todos los controles deslizantes y curvas a sus valores predeterminados. +TP_RETINEX_OFFSET;compensar(brillo) +TP_RETINEX_SCALES;Gradiente gaussiano +TP_RETINEX_SCALES_TOOLTIP;Si el control deslizante está en 0, todas las iteraciones son idénticas. \nSi es mayor a 0 la escala y el radio se reducen cuando aumentan las iteraciones, y viceversa. +TP_RETINEX_SETTINGS;Ajustes +TP_RETINEX_SKAL;Escala +TP_RETINEX_SLOPE;Gamma Libre al bajarla +TP_RETINEX_STRENGTH;Fuerza +TP_RETINEX_THRESHOLD;Límite +TP_RETINEX_THRESHOLD_TOOLTIP; Límites de entrada/salida. \nEn = fuente de imagen,\nhacia afuera = imagen gauss. +TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4 +TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2 +TP_RETINEX_TLABEL_TOOLTIP;Resultado del mapa de transmisión. \nMin y Max son utilizados por diferencia.\nMean y Sigma. \nTm = Min TM = Max de mapa de transmisión. +TP_RETINEX_TRANF;transmisión +TP_RETINEX_TRANSMISSION;Mapa de transmisión +TP_RETINEX_TRANSMISSION_TOOLTIP;Transmisión según la transmisión. \nAbscisa: transmisión desde valores negativos (mín.), Media y valores positivos (máx.). \nDerecha: amplificación o reducción. +TP_RETINEX_UNIFORM;Uniforme +TP_RETINEX_VARIANCE;Contraste +TP_RETINEX_VARIANCE_TOOLTIP;La varianza baja aumenta el contraste y la saturación locales, pero puede producir elementos extraños. +TP_RETINEX_VIEW;Proceso +TP_RETINEX_VIEW_MASK;Máscara +TP_RETINEX_VIEW_METHOD_TOOLTIP;Estándar - Visualización normal. \nMascara - Muestra la máscara. \nUna máscara de enfoque - Muestra la imagen con una máscara de desenfoque de radio alto. \nTransmisión - Automática \nFija - Muestra el mapa de transmisión del archivo, antes de cualquier acción sobre contraste y brillo. \nAtención: la máscara no corresponde a la realidad, pero se amplifica para hacerla más visible. +TP_RETINEX_VIEW_NONE;Estandard +TP_RETINEX_VIEW_TRAN;Transmisión - Auto +TP_RETINEX_VIEW_TRAN2;Transmisión - Fija +TP_RETINEX_VIEW_UNSHARP;Máscara de enfoque TP_RGBCURVES_BLUE;B TP_RGBCURVES_CHANNEL;Canal TP_RGBCURVES_GREEN;G @@ -1368,6 +2019,10 @@ TP_SHARPENMICRO_AMOUNT;Cantidad TP_SHARPENMICRO_LABEL;Microcontraste TP_SHARPENMICRO_MATRIX;Matriz 3×3 en lugar de 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformidad +TP_TM_FATTAL_AMOUNT;Cantidad +TP_TM_FATTAL_ANCHORAncla +TP_TM_FATTAL_LABEL;HDR Mapeo de tonos +TP_TM_FATTAL_THRESHOLD;Límite TP_VIBRANCE_AVOIDCOLORSHIFT;Evitar desplazamiento de color TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tonos de piel @@ -1392,6 +2047,169 @@ TP_VIGNETTING_CENTER_Y;Centro Y TP_VIGNETTING_LABEL;Corrección de viñeteo TP_VIGNETTING_RADIUS;Radio TP_VIGNETTING_STRENGTH;Intensidad +TP_WAVELET_1;Nivel 1 +TP_WAVELET_2;Nivel 2 +TP_WAVELET_3;Nivel 3 +TP_WAVELET_4;Nivel 4 +TP_WAVELET_5;Nivel 5 +TP_WAVELET_6;Nivel 6 +TP_WAVELET_7;Nivel 7 +TP_WAVELET_8;Nivel 8 +TP_WAVELET_9;Nivel 9 +TP_WAVELET_APPLYTO;Aplicar para +TP_WAVELET_AVOID;Evitar el cambio de color +TP_WAVELET_B0;negro +TP_WAVELET_B1;Gris +TP_WAVELET_B2;Residual +TP_WAVELET_BACKGROUND;Fondo +TP_WAVELET_BACUR;Curva +TP_WAVELET_BALANCE;Balance de contraste d/v-h +TP_WAVELET_BALANCE_TOOLTIP;Altera el balance entre las direcciones wavelet: vertical-horizontal y diagonal. \nSi se activa el contraste, en el color o el mapeo de tonos residuales, el efecto debido al balance se amplifica. +TP_WAVELET_BALCHRO;Balance del color +TP_WAVELET_BALCHRO_TOOLTIP;Si está habilitado, la curva o el control deslizante 'Balance de contraste' también modifica el balance del color. +TP_WAVELET_BANONE;Ninguno +TP_WAVELET_BASLI;Deslizador +TP_WAVELET_BATYPE;Método de balance de contraste +TP_WAVELET_CBENAB;Tonificación y balance de color +TP_WAVELET_CB_TOOLTIP;Para valores fuertes, el tono del color del producto se combina o no con la descomposición de niveles 'tonificación' \nPara valores bajos, puede cambiar el balance de blancos del fondo (cielo, ...) sin cambiar el del plano frontal, generalmente más contrastado +TP_WAVELET_CCURVE;Contraste local +TP_WAVELET_CH1;gamma completa del color +TP_WAVELET_CH2;Saturado/pastel +TP_WAVELET_CH3;Enlazar con los niveles de contraste +TP_WAVELET_CHCU;Curva +TP_WAVELET_CHR;Fuerza de enlace con el contraste del color +TP_WAVELET_CHRO;Umbral saturado/pastel +TP_WAVELET_CHRO_TOOLTIP;Establece el nivel de wavelet que será el umbral entre los colores saturados y pastel. \n1-x: saturado \nx-9: pastel \nSi el valor supera la cantidad de niveles de wavelet que está utilizando, se ignorará. +TP_WAVELET_CHR_TOOLTIP;Ajusta el color en función de los "niveles de contraste" y la "fuerza de enlace del contraste de croma" +TP_WAVELET_CHSL;Deslizadores +TP_WAVELET_CHTYPE;Método de crominancia +TP_WAVELET_COLORT;Opacidad rojo-verde +TP_WAVELET_COMPCONT;Contraste +TP_WAVELET_COMPGAMMA;Gamma de compresión +TP_WAVELET_COMPGAMMA_TOOLTIP;Ajustar la gamma de la imagen residual le permite equilibrar los datos y el histograma. +TP_WAVELET_COMPTM;Mapeo de tonos +TP_WAVELET_CONTEDIT;'Después',Curva de contraste +TP_WAVELET_CONTR;Gamma +TP_WAVELET_CONTRA;Contraste +TP_WAVELET_CONTRAST_MINUS;Contraste - +TP_WAVELET_CONTRAST_PLUS;Contraste + +TP_WAVELET_CONTRA_TOOLTIP;Cambia el contraste de la imagen residual. +TP_WAVELET_CTYPE;Control de crominancia +TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifica el contraste local como una función del contraste local original (abscisa). \nLos valores bajos de abscisa representan un contraste local pequeño (valores reales aproximadamente 10 ... 20). \n50% de abscisa representa el contraste local promedio (valor real aproximadamente 100..300) . \n66% de abscisas representa la desviación estándar del contraste local (valor real de aproximadamente 300 ... 800). \n100% de abscisa representa el máximo contraste local (valor real de aproximadamente 3000 ... 8000). +TP_WAVELET_CURVEEDITOR_CH;Niveles de contrate=f(Matiz) +TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifica el contraste de cada nivel en función del tono. \nTenga cuidado de no sobrescribir los cambios realizados con los controles de tono de la subherramienta Gamut. \nLa curva solo tendrá efecto cuando los controles deslizantes del nivel de contraste de wavelets no sean cero. +TP_WAVELET_CURVEEDITOR_CL;L +TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Aplica una curva de luminancia de contraste definitiva al final del tratamiento con wavelets. +TP_WAVELET_CURVEEDITOR_HH;HH +TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifica el matiz de la imagen residual en función del matiz. +TP_WAVELET_DALL;Todas las direcciones +TP_WAVELET_DAUB;Cualidad del borde +TP_WAVELET_DAUB2;D2 - bajo +TP_WAVELET_DAUB4;D4 - estandar +TP_WAVELET_DAUB6;D6 - estándar mayor +TP_WAVELET_DAUB10;D10 - medio +TP_WAVELET_DAUB14;D14 - alto +TP_WAVELET_DAUB_TOOLTIP;Cambios en los coeficientes de Daubechies: \nD4 = Estándar, \nD14 = A menudo, el mejor rendimiento, un 10% más de tiempo. \nAfecta la detección de bordes, así como la calidad general de los primeros niveles. Sin embargo, la calidad no está estrictamente relacionada con este coeficiente y puede variar con las imágenes y los usos. +TP_WAVELET_DONE;Vertical +TP_WAVELET_DTHR;Diagonal +TP_WAVELET_DTWO;Horizontal +TP_WAVELET_EDCU;Curva +TP_WAVELET_EDGCONT;Contraste local +TP_WAVELET_EDGCONT_TOOLTIP;El ajuste de los puntos a la izquierda disminuye el contraste, y a la derecha lo aumenta. \nAbajo-izquierda, Arriba-Izquierda, Arriba-Derecha, Abajo-derecha \nRepresenta respectivamente el contraste local para valores bajos, media, mean + stdev, máxima +TP_WAVELET_EDGE;Nitidez del borde +TP_WAVELET_EDGEAMPLI;Amplificación de base +TP_WAVELET_EDGEDETECT;Sensibilidad de gradiente +TP_WAVELET_EDGEDETECTTHR;Umbral bajo (ruido) +TP_WAVELET_EDGEDETECTTHR2;Umbral alto (detección) +TP_WAVELET_EDGEDETECTTHR_TOOLTIP;Este ajustador le permite trabajar la detección de bordes, por ejemplo, para evitar aplicar la nitidez de los bordes a detalles finos, como el ruido en el cielo. +TP_WAVELET_EDGEDETECT_TOOLTIP;Al mover el control deslizante hacia la derecha aumenta la sensibilidad del borde. Esto afecta el contraste local, la configuración de borde y el ruido. +TP_WAVELET_EDGESENSI;Sensibilidad del borde +TP_WAVELET_EDGREINF_TOOLTIP;Refuerza o reduce la acción del primer nivel, hace lo contrario con el segundo nivel y deja el resto sin cambios. +TP_WAVELET_EDGTHRESH;Detalle +TP_WAVELET_EDGTHRESH_TOOLTIP;Cambiar el reparto entre los primeros niveles y los demás. Cuanto más alto sea el umbral, más se centrará la acción en los primeros niveles. Tenga cuidado con los valores negativos, aumentan la acción de los niveles altos y pueden producir elementos extraños +TP_WAVELET_EDRAD;Radio +TP_WAVELET_EDRAD_TOOLTIP;Este ajuste de radio es muy diferente de aquellos en otras herramientas de enfoque. Su valor se compara con cada nivel a través de una función compleja. En este sentido, un valor de cero todavía tiene un efecto +TP_WAVELET_EDSL;Deslizadores de umbral +TP_WAVELET_EDTYPE;Método de contraste local +TP_WAVELET_EDVAL;Fuerza +TP_WAVELET_FINAL;Retoque final +TP_WAVELET_FINEST;Mejor +TP_WAVELET_HIGHLIGHT;Rango de luminancia +TP_WAVELET_HS1;Rango de luminancia total +TP_WAVELET_HS2;Sombras/Luces altas +TP_WAVELET_HUESKIN;Tono de piel +TP_WAVELET_HUESKIN_TOOLTIP;Los puntos inferiores establecen el comienzo de la zona de transición, y los puntos superiores el final de la misma, donde el efecto es máximo.\nSi necesita mover el área significativamente, o si hay elementos extraños, es porque el balance de blancos es incorrecto +TP_WAVELET_HUESKY;Tono del cielo +TP_WAVELET_HUESKY_TOOLTIP;Los puntos inferiores establecen el comienzo de la zona de transición, y los puntos superiores el final de la misma, donde el efecto es máximo. \nSi necesita mover el área significativamente, o si hay elementos extraños, entonces el balance de blancos es incorrecto . +TP_WAVELET_ITER;Niveles de equilibrio delta +TP_WAVELET_ITER_TOOLTIP;Izquierda: aumenta los niveles bajos y reduce los niveles altos, \nDerecha: reduce los niveles bajos y aumenta los niveles altos. +TP_WAVELET_LABEL;Niveles wavelet +TP_WAVELET_LARGEST;Más grueso +TP_WAVELET_LEVCH;Cromaticidad(Color): saturación ó pureza +TP_WAVELET_LEVDIR_ALL;Todos los nivels en todas las direcciones. +TP_WAVELET_LEVDIR_INF;Por debajo o igual al nivel +TP_WAVELET_LEVDIR_ONE;Un solo nivel +TP_WAVELET_LEVDIR_SUP;Por encima del nivel +TP_WAVELET_LEVELS;Niveles wavelet +TP_WAVELET_LEVELS_TOOLTIP;Elija la cantidad de niveles de detalle en que se descompondrá la imagen. Más niveles requieren más RAM y más tiempo de procesamiento. +TP_WAVELET_LEVF;Contraste +TP_WAVELET_LEVLABEL;Vista previa de los niveles máximos posibles = %1 +TP_WAVELET_LEVONE;Nivel 2 +TP_WAVELET_LEVTHRE;Nivel 4 +TP_WAVELET_LEVTWO;Nivel 3 +TP_WAVELET_LEVZERO;Nivel 1 +TP_WAVELET_LINKEDG;Enlaza con la fuerza de la nitidez de los bordes +TP_WAVELET_LIPST;Algoritmo mejorado +TP_WAVELET_LOWLIGHT;Rango de luminancia de la sombra +TP_WAVELET_MEDGREINF;Primer nivel +TP_WAVELET_MEDI;Reduce los elementos extraños en el cielo azul +TP_WAVELET_MEDILEV;Detección de bordes +TP_WAVELET_MEDILEV_TOOLTIP;Cuando habilita la detección de bordes, se recomienda: \nTener los niveles de bajo contraste deshabilitados para evitar elementos extraños, \nusar para valores altos de sensibilidad de gradiente. \nPuede modular la fuerza con 'enfocar' desde quitar ruido y enfocar. +TP_WAVELET_NEUTRAL;Neutral +TP_WAVELET_NOIS;Quitar ruido +TP_WAVELET_NOISE;Quitar ruido y clarificar +TP_WAVELET_NPHIGH;Alto +TP_WAVELET_NPLOW;Bajo +TP_WAVELET_NPNONE;Ninguno +TP_WAVELET_NPTYPE;Píxeles vecinos +TP_WAVELET_NPTYPE_TOOLTIP;Este algoritmo utiliza la proximidad de un píxel y ocho de sus vecinos. Si hay una diferencia menor, los bordes se refuerzan. +TP_WAVELET_OPACITY;Opacidad Azul-Amarillo +TP_WAVELET_OPACITYW; Curva de balance d/v-h para contrast +TP_WAVELET_OPACITYWL;Contraste local final +TP_WAVELET_OPACITYWL_TOOLTIP;Modifica el contraste local definitivo al final del tratamiento wavelet \ nEl lado izquierdo representa el contraste local más pequeño, avanzando hacia la derecha el contraste local más grande +TP_WAVELET_PASTEL;Cromaticidad(colores) pastel +TP_WAVELET_PROC;Proceso +TP_WAVELET_RE1;Reforzado +TP_WAVELET_RE2;Sin alterar +TP_WAVELET_RE3;Reducir +TP_WAVELET_RESCHRO;Cromaticidad(aquí saturación) +TP_WAVELET_RESCON;Sombras +TP_WAVELET_RESCONH;Luces altas(Reflejos) +TP_WAVELET_RESID;Imagen residual +TP_WAVELET_SAT;Saturar la cromaticidad(color) +TP_WAVELET_SETTINGS;Configuraciones Wavelet +TP_WAVELET_SKIN;Enfocar piel/proteción +TP_WAVELET_SKIN_TOOLTIP;A (menos)-100 los tonos de piel están afectados. \nA 0 todos los tonos se tratan por igual. \nA +100 los tonos de piel están protegidos, mientras que todos los demás tonos están afectados. +TP_WAVELET_SKY;protección del cielo al enfocar +TP_WAVELET_SKY_TOOLTIPEn (menos)-100se afecta a los tonos del cielo. \nEn 0 todos los tonos se tratan por igual. \nen +100 los tonos del cielo están protegidos, mientras que todos los demás tonos están afectados. +TP_WAVELET_STREN;Fuerza +TP_WAVELET_STRENGTH;Fuerza +TP_WAVELET_SUPE;Extra +TP_WAVELET_THR;Límite de la sombra +TP_WAVELET_THRESHOLD;Niveles de luces altas +TP_WAVELET_THRESHOLD2;Niveles de sombra +TP_WAVELET_THRESHOLD2_TOOLTIP;Solo los niveles entre 9 y 9 menos el valor se verán afectados por el rango de luminancia de la sombra. Otros niveles serán tratados completamente. El nivel más alto posible está limitado por el valor del nivel de resaltado (9 menos el valor del nivel de resaltado) +TP_WAVELET_THRESHOLD_TOOLTIP;Solo los niveles más allá del valor elegido se verán afectados por el rango de luminancia de resaltado. Otros niveles serán tratados completamente. El valor elegido aquí limita el valor más alto posible de la sombra.niveles +TP_WAVELET_THRH;Umbral de luces altas +TP_WAVELET_TILESBIG;Mosaicos grandes +TP_WAVELET_TILESFULL;Imagen completa +TP_WAVELET_TILESIZE;Método de mosaico +TP_WAVELET_TILESLIT;Mosaicos pequeños +TP_WAVELET_TILES_TOOLTIP;El procesamiento de la imagen completa conduce a una mejor calidad y es la opción recomendada, mientras que el uso de mosaicos es una solución alternativa para los usuarios con poca memoria RAM. Consulte RawPedia para los requisitos de memoria. +TP_WAVELET_TMSTRENGTH;Fuerza comprensiva +TP_WAVELET_TMSTRENGTH_TOOLTIP;Controle la intensidad del mapeo de tonos o la compresión de contraste de la imagen residual. Cuando el valor es diferente de 0 , los controles deslizantes Fuerza y ​​Gamma de la herramienta de asignación de tonos en la pestaña Exposición se atenuarán. +TP_WAVELET_TMTYPE;Método de compresión +TP_WAVELET_TON;Viraje TP_WBALANCE_AUTO;Auto TP_WBALANCE_CAMERA;Cámara TP_WBALANCE_CLOUDY;Nublado @@ -1433,6 +2251,8 @@ TP_WBALANCE_SOLUX41;Solux 4100K TP_WBALANCE_SOLUX47;Solux 4700K (proveedor) TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) TP_WBALANCE_SPOTWB;Muestra bal. blancos +TP_WBALANCE_TEMPBIAS;Sesgo de temperatura AWB +TP_WBALANCE_TEMPBIAS_TOOLTIP;Permite alterar el cálculo del "balance de blancos automático" \ndirigiéndolo hacia temperaturas más cálidas o más bajas. \nEl sesgo se expresa como un porcentaje de la temperatura calculada, por lo que el resultado viene dado por "computedTemp + computedTemp * bias". TP_WBALANCE_TEMPERATURE;Temperatura TP_WBALANCE_TUNGSTEN;Tungsteno TP_WBALANCE_WATER1;Subacuático 1 @@ -1441,6 +2261,7 @@ TP_WBALANCE_WATER_HEADER;Subacuático ZOOMPANEL_100;(100%) ZOOMPANEL_NEWCROPWINDOW;Abrir (nueva) ventana de detalle ZOOMPANEL_ZOOM100;Zoom al 100%\nAtajo: z +ZOOMPANEL_ZOOMFITCROPSCREEN;Ajustar el recorte a la pantalla \nCorte corto: f ZOOMPANEL_ZOOMFITSCREEN;Ajustar a pantalla\nAtajo: Alt-f ZOOMPANEL_ZOOMIN;Aumentar Zoom\nAtajo: + ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - @@ -1449,246 +2270,16 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!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: -!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. -!DONT_SHOW_AGAIN;Don't show this message again. -!DYNPROFILEEDITOR_DELETE;Delete -!DYNPROFILEEDITOR_EDIT;Edit -!DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule -!DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. !DYNPROFILEEDITOR_IMGTYPE_ANY;Any !DYNPROFILEEDITOR_IMGTYPE_HDR;HDR !DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift !DYNPROFILEEDITOR_IMGTYPE_STD;Standard -!DYNPROFILEEDITOR_MOVE_DOWN;Move Down -!DYNPROFILEEDITOR_MOVE_UP;Move Up -!DYNPROFILEEDITOR_NEW;New -!DYNPROFILEEDITOR_NEW_RULE;New Dynamic Profile Rule -!DYNPROFILEEDITOR_PROFILE;Processing Profile !EXIFFILTER_IMAGETYPE;Image type -!EXIFPANEL_SHOWALL;Show all -!EXPORT_BYPASS;Processing steps to bypass -!EXPORT_BYPASS_EQUALIZER;Bypass Wavelet Levels -!EXPORT_PIPELINE;Processing pipeline -!EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) -!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_CACHECLEARFROMFULL;Clear all including cached profiles -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles -!FILEBROWSER_POPUPCOLORLABEL0;Label: None -!FILEBROWSER_RESETDEFAULTPROFILE;Reset to default -!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images. -!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. -!FILECHOOSER_FILTER_ANY;All files -!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc) -!FILECHOOSER_FILTER_CURVE;Curve files -!FILECHOOSER_FILTER_LCP;Lens correction profiles -!FILECHOOSER_FILTER_PP;Processing profiles -!FILECHOOSER_FILTER_SAME;Same format as current photo -!FILECHOOSER_FILTER_TIFF;TIFF files -!GENERAL_APPLY;Apply -!GENERAL_ASIMAGE;As Image !GENERAL_CURRENT;Current -!GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... -!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_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_166;Exposure - Reset -!HISTORY_MSG_173;NR - Detail recovery -!HISTORY_MSG_203;NR - Color space -!HISTORY_MSG_235;B&W - CM - Auto -!HISTORY_MSG_237;B&W - CM -!HISTORY_MSG_256;NR - Median - Type -!HISTORY_MSG_273;CT - Color Balance SMH -!HISTORY_MSG_297;NR - Mode -!HISTORY_MSG_299;NR - Chrominance curve -!HISTORY_MSG_300;- -!HISTORY_MSG_301;NR - Luma control -!HISTORY_MSG_302;NR - Chroma method -!HISTORY_MSG_303;NR - Chroma method -!HISTORY_MSG_304;W - Contrast levels -!HISTORY_MSG_305;Wavelet Levels -!HISTORY_MSG_306;W - Process -!HISTORY_MSG_307;W - Process -!HISTORY_MSG_308;W - Process direction -!HISTORY_MSG_309;W - ES - Detail -!HISTORY_MSG_310;W - Residual - Sky tar/prot -!HISTORY_MSG_311;W - Wavelet levels -!HISTORY_MSG_312;W - Residual - Shadows threshold -!HISTORY_MSG_313;W - Chroma - Sat/past -!HISTORY_MSG_314;W - Gamut - Reduce artifacts -!HISTORY_MSG_315;W - Residual - Contrast -!HISTORY_MSG_316;W - Gamut - Skin tar/prot -!HISTORY_MSG_317;W - Gamut - Skin hue -!HISTORY_MSG_318;W - Contrast - Highlight levels -!HISTORY_MSG_319;W - Contrast - Highlight range -!HISTORY_MSG_320;W - Contrast - Shadow range -!HISTORY_MSG_321;W - Contrast - Shadow levels -!HISTORY_MSG_322;W - Gamut - Avoid color shift -!HISTORY_MSG_323;W - ES - Local contrast -!HISTORY_MSG_324;W - Chroma - Pastel -!HISTORY_MSG_325;W - Chroma - Saturated -!HISTORY_MSG_326;W - Chroma - Method -!HISTORY_MSG_327;W - Contrast - Apply to -!HISTORY_MSG_328;W - Chroma - Link strength -!HISTORY_MSG_329;W - Toning - Opacity RG -!HISTORY_MSG_330;W - Toning - Opacity BY -!HISTORY_MSG_331;W - Contrast levels - Extra -!HISTORY_MSG_332;W - Tiling method -!HISTORY_MSG_333;W - Residual - Shadows -!HISTORY_MSG_334;W - Residual - Chroma -!HISTORY_MSG_335;W - Residual - Highlights -!HISTORY_MSG_336;W - Residual - Highlights threshold -!HISTORY_MSG_337;W - Residual - Sky hue -!HISTORY_MSG_338;W - ES - Radius -!HISTORY_MSG_339;W - ES - Strength -!HISTORY_MSG_340;W - Strength -!HISTORY_MSG_341;W - Edge performance -!HISTORY_MSG_342;W - ES - First level -!HISTORY_MSG_343;W - Chroma levels -!HISTORY_MSG_344;W - Meth chroma sl/cur -!HISTORY_MSG_345;W - ES - Local contrast -!HISTORY_MSG_346;W - ES - Local contrast method -!HISTORY_MSG_347;W - Denoise - Level 1 -!HISTORY_MSG_348;W - Denoise - Level 2 -!HISTORY_MSG_349;W - Denoise - Level 3 -!HISTORY_MSG_350;W - ES - Edge detection -!HISTORY_MSG_351;W - Residual - HH curve -!HISTORY_MSG_352;W - Background -!HISTORY_MSG_353;W - ES - Gradient sensitivity -!HISTORY_MSG_354;W - ES - Enhanced -!HISTORY_MSG_355;W - ES - Threshold low -!HISTORY_MSG_356;W - ES - Threshold high -!HISTORY_MSG_357;W - Denoise - Link with ES -!HISTORY_MSG_358;W - Gamut - CH -!HISTORY_MSG_359;Hot/Dead - Threshold -!HISTORY_MSG_360;TM - Gamma -!HISTORY_MSG_361;W - Final - Chroma balance -!HISTORY_MSG_362;W - Residual - Compression method -!HISTORY_MSG_363;W - Residual - Compression strength -!HISTORY_MSG_364;W - Final - Contrast balance -!HISTORY_MSG_365;W - Final - Delta balance -!HISTORY_MSG_366;W - Residual - Compression gamma -!HISTORY_MSG_367;W - Final - 'After' contrast curve -!HISTORY_MSG_368;W - Final - Contrast balance -!HISTORY_MSG_369;W - Final - Balance method -!HISTORY_MSG_370;W - Final - Local contrast curve -!HISTORY_MSG_371;Post-Resize Sharpening -!HISTORY_MSG_372;PRS USM - Radius -!HISTORY_MSG_373;PRS USM - Amount -!HISTORY_MSG_374;PRS USM - Threshold -!HISTORY_MSG_375;PRS USM - Sharpen only edges -!HISTORY_MSG_376;PRS USM - Edge detection radius -!HISTORY_MSG_377;PRS USM - Edge tolerance -!HISTORY_MSG_378;PRS USM - Halo control -!HISTORY_MSG_379;PRS USM - Halo control amount -!HISTORY_MSG_380;PRS - Method -!HISTORY_MSG_381;PRS RLD - Radius -!HISTORY_MSG_382;PRS RLD - Amount -!HISTORY_MSG_383;PRS RLD - Damping -!HISTORY_MSG_384;PRS RLD - Iterations -!HISTORY_MSG_385;W - Residual - Color Balance -!HISTORY_MSG_386;W - Residual - CB green high -!HISTORY_MSG_387;W - Residual - CB blue high -!HISTORY_MSG_388;W - Residual - CB green mid -!HISTORY_MSG_389;W - Residual - CB blue mid -!HISTORY_MSG_390;W - Residual - CB green low -!HISTORY_MSG_391;W - Residual - CB blue low -!HISTORY_MSG_392;W - Residual - Color Balance -!HISTORY_MSG_393;DCP - Look table -!HISTORY_MSG_394;DCP - Baseline exposure -!HISTORY_MSG_395;DCP - Base table -!HISTORY_MSG_396;W - Contrast sub-tool -!HISTORY_MSG_397;W - Chroma sub-tool -!HISTORY_MSG_398;W - ES sub-tool -!HISTORY_MSG_399;W - Residual sub-tool -!HISTORY_MSG_400;W - Final sub-tool -!HISTORY_MSG_401;W - Toning sub-tool -!HISTORY_MSG_402;W - Denoise sub-tool -!HISTORY_MSG_403;W - ES - Edge sensitivity -!HISTORY_MSG_404;W - ES - Base amplification -!HISTORY_MSG_405;W - Denoise - Level 4 -!HISTORY_MSG_406;W - ES - Neighboring pixels -!HISTORY_MSG_407;Retinex - Method -!HISTORY_MSG_408;Retinex - Radius -!HISTORY_MSG_409;Retinex - Contrast -!HISTORY_MSG_410;Retinex - Offset -!HISTORY_MSG_411;Retinex - Strength -!HISTORY_MSG_412;Retinex - Gaussian gradient -!HISTORY_MSG_413;Retinex - Contrast -!HISTORY_MSG_414;Retinex - Histogram - Lab -!HISTORY_MSG_415;Retinex - Transmission -!HISTORY_MSG_416;Retinex -!HISTORY_MSG_417;Retinex - Transmission median -!HISTORY_MSG_418;Retinex - Threshold -!HISTORY_MSG_419;Retinex - Color space -!HISTORY_MSG_420;Retinex - Histogram - HSL -!HISTORY_MSG_421;Retinex - Gamma -!HISTORY_MSG_422;Retinex - Gamma -!HISTORY_MSG_423;Retinex - Gamma slope -!HISTORY_MSG_424;Retinex - HL threshold -!HISTORY_MSG_425;Retinex - Log base -!HISTORY_MSG_426;Retinex - Hue equalizer -!HISTORY_MSG_427;Output rendering intent -!HISTORY_MSG_428;Monitor rendering intent -!HISTORY_MSG_429;Retinex - Iterations -!HISTORY_MSG_430;Retinex - Transmission gradient -!HISTORY_MSG_431;Retinex - Strength gradient -!HISTORY_MSG_432;Retinex - M - Highlights -!HISTORY_MSG_433;Retinex - M - Highlights TW -!HISTORY_MSG_434;Retinex - M - Shadows -!HISTORY_MSG_435;Retinex - M - Shadows TW -!HISTORY_MSG_436;Retinex - M - Radius -!HISTORY_MSG_437;Retinex - M - Method -!HISTORY_MSG_438;Retinex - M - Equalizer -!HISTORY_MSG_439;Retinex - Process -!HISTORY_MSG_440;CbDL - Method -!HISTORY_MSG_441;Retinex - Gain transmission -!HISTORY_MSG_442;Retinex - Scale -!HISTORY_MSG_443;Output black point compensation -!HISTORY_MSG_444;WB - Temp bias -!HISTORY_MSG_445;Raw sub-image -!HISTORY_MSG_449;PS - ISO adaption -!HISTORY_MSG_452;PS - Show motion -!HISTORY_MSG_453;PS - Show mask only -!HISTORY_MSG_457;PS - Check red/blue -!HISTORY_MSG_462;PS - Check green -!HISTORY_MSG_464;PS - Blur motion mask -!HISTORY_MSG_465;PS - Blur radius -!HISTORY_MSG_468;PS - Fill holes -!HISTORY_MSG_469;PS - Median -!HISTORY_MSG_471;PS - Motion correction -!HISTORY_MSG_472;PS - Smooth transitions -!HISTORY_MSG_473;PS - Use LMMSE -!HISTORY_MSG_474;PS - Equalize -!HISTORY_MSG_475;PS - Equalize channel -!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;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Detail -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_491;White Balance -!HISTORY_MSG_492;RGB Curves -!HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors -!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel !HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask @@ -1708,19 +2299,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength !HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold !HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold -!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D !HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type !HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma !HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope !HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method -!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_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction @@ -1734,7 +2318,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor !ICCPROFCREATOR_COPYRIGHT;Copyright: !ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" !ICCPROFCREATOR_CUSTOM;Custom @@ -1776,174 +2359,41 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: -!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 -!IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. -!IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. -!IPTCPANEL_CREATOR;Creator -!IPTCPANEL_CREATORHINT;Enter the name of the person that created this image. -!IPTCPANEL_CREATORJOBTITLE;Creator's job title -!IPTCPANEL_CREATORJOBTITLEHINT;Enter the Job Title of the person listed in the Creator field. -!IPTCPANEL_DATECREATEDHINT;Enter the Date the image was taken. -!IPTCPANEL_DESCRIPTION;Description -!IPTCPANEL_DESCRIPTIONHINT;Enter a "caption" describing the who, what, and why of what is happening in this image, this might include names of people, and/or their role in the action that is taking place within the image. -!IPTCPANEL_DESCRIPTIONWRITER;Description writer -!IPTCPANEL_DESCRIPTIONWRITERHINT;Enter the name of the person involved in writing, editing or correcting the description of the image. -!IPTCPANEL_HEADLINEHINT;Enter a brief publishable synopsis or summary of the contents of the image. -!IPTCPANEL_INSTRUCTIONSHINT;Enter information about embargoes, or other restrictions not covered by the Copyright field. -!IPTCPANEL_KEYWORDSHINT;Enter any number of keywords, terms or phrases used to express the subject matter in the image. -!IPTCPANEL_PROVINCE;Province or state -!IPTCPANEL_PROVINCEHINT;Enter the name of the province or state pictured in this image. -!IPTCPANEL_SOURCEHINT;Enter or edit the name of a person or party who has a role in the content supply chain, such as a person or entity from whom you received this image from. -!IPTCPANEL_SUPPCATEGORIES;Supplemental categories -!IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image. -!IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. -!IPTCPANEL_TRANSREFERENCE;Job ID -!IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator -!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. -!MAIN_TAB_ADVANCED;Advanced -!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w -!MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. -!MONITOR_PROFILE_SYSTEM;System default -!NAVIGATOR_B;B: -!NAVIGATOR_G;G: -!NAVIGATOR_H;H: -!NAVIGATOR_LAB_A;a*: -!NAVIGATOR_LAB_B;b*: -!NAVIGATOR_LAB_L;L*: -!NAVIGATOR_R;R: -!NAVIGATOR_S;S: -!NAVIGATOR_V;V: -!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. -!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\n"%1" will be used instead. -!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\n"%1" will be used instead. -!PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_DEHAZE;Haze removal -!PARTIALPASTE_EQUALIZER;Wavelet levels -!PARTIALPASTE_GRADIENT;Graduated filter -!PARTIALPASTE_LOCALCONTRAST;Local contrast -!PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_RAW_IMAGENUM;Sub-image -!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift -!PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_APPEARANCE;Appearance !PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font !PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color !PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color !PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!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 -!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 -!PREFERENCES_CURVEBBOXPOS_LEFT;Left -!PREFERENCES_CURVEBBOXPOS_RIGHT;Right !PREFERENCES_D50_OLD;5000K -!PREFERENCES_DIRECTORIES;Directories -!PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser -!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. -!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 -!PREFERENCES_GREYSC;Scene Yb luminance (%) -!PREFERENCES_GREYSC18;Yb=18 CIE L#50 -!PREFERENCES_GREYSCA;Automatic -!PREFERENCES_IMG_RELOAD_NEEDED;These changes require the image to be reloaded (or a new image to be opened) to take effect. -!PREFERENCES_INSPECT_LABEL;Inspect -!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images -!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 -!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders -!PREFERENCES_MONINTENT;Default rendering intent -!PREFERENCES_MONITOR;Monitor -!PREFERENCES_MONPROFILE;Default color profile -!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVIGATIONFRAME;Navigation -!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel -!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. -!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list. !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_PREVDEMO;Preview Demosaic Method -!PREFERENCES_PREVDEMO_FAST;Fast -!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom: -!PREFERENCES_PREVDEMO_SIDECAR;As in PP3 -!PREFERENCES_PRINTER;Printer (Soft-Proofing) -!PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file -!PREFERENCES_PROFILESAVELOCATION;Processing profile saving location -!PREFERENCES_PROFILE_NONE;None -!PREFERENCES_PRTINTENT;Rendering intent -!PREFERENCES_PRTPROFILE;Color profile -!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset -!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now -!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar -!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules -!PREFERENCES_TAB_PERFORMANCE;Performance +!PREFERENCES_SND_THRESHOLDSECS;After seconds !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file -!PROFILEPANEL_PDYNAMIC;Dynamic -!QINFO_FRAMECOUNT;%2 frames -!QINFO_HDR;HDR / %2 frame(s) -!QINFO_PIXELSHIFT;Pixel Shift / %2 frame(s) -!SAMPLEFORMAT_0;Unknown data format -!SAMPLEFORMAT_1;8-bit unsigned -!SAMPLEFORMAT_2;16-bit unsigned !SAMPLEFORMAT_4;24-bit LogLuv !SAMPLEFORMAT_8;32-bit LogLuv -!SAMPLEFORMAT_16;16-bit floating-point !SAMPLEFORMAT_32;24-bit floating-point !SAMPLEFORMAT_64;32-bit floating-point !SAVEDLG_FILEFORMAT_FLOAT; floating-point -!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. -!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. -!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset -!TP_CBDL_AFT;After Black-and-White -!TP_CBDL_BEF;Before Black-and-White -!TP_CBDL_METHOD;Process located -!TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. -!TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!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_COLORTONING_LABGRID;L*a*b* color correction grid -!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 !TP_COLORTONING_LABREGION_CHANNEL;Channel @@ -1963,74 +2413,18 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_COLORTONING_LABREGION_SATURATION;Saturation !TP_COLORTONING_LABREGION_SHOWMASK;Show mask !TP_COLORTONING_LABREGION_SLOPE;Slope -!TP_CROP_GTHARMMEANS;Harmonic Means -!TP_CROP_GTTRIANGLE1;Golden Triangles 1 -!TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_RESETCROP;Reset -!TP_CROP_SELECTCROP;Select !TP_DEHAZE_DEPTH;Depth !TP_DEHAZE_LABEL;Haze Removal !TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map !TP_DEHAZE_STRENGTH;Strength -!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_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 !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors -!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_TCMODE_LUMINANCE;Luminance -!TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual -!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_APPLYBASELINEEXPOSUREOFFSET;Baseline exposure -!TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Employ the embedded DCP baseline exposure offset. The setting is only available if the selected DCP has one. -!TP_ICM_APPLYHUESATMAP;Base table -!TP_ICM_APPLYHUESATMAP_TOOLTIP;Employ the embedded DCP base table (HueSatMap). The setting is only available if the selected DCP has one. -!TP_ICM_APPLYLOOKTABLE;Look table -!TP_ICM_APPLYLOOKTABLE_TOOLTIP;Employ the embedded DCP look table. The setting is only available if the selected DCP has one. -!TP_ICM_BPC;Black Point Compensation -!TP_ICM_PROFILEINTENT;Rendering Intent -!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_ICM_WORKING_TRC;Tone response curve: !TP_ICM_WORKING_TRC_CUSTOM;Custom !TP_ICM_WORKING_TRC_GAMMA;Gamma !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. -!TP_LABCURVE_CURVEEDITOR_CC;CC !TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically !TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file !TP_LENSPROFILE_CORRECTION_MANUAL;Manually @@ -2040,16 +2434,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_LENSPROFILE_USE_GEOMETRIC;Geometric !TP_LENSPROFILE_USE_HEADER;Select distortions to correct: !TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!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_LINEDENOISE_DIRECTION;Direction !TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both !TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal @@ -2057,322 +2441,24 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!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. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAWCACORR_CASTR;Strength -!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast -!TP_RAW_3PASSBEST;3-pass (Markesteijn) !TP_RAW_4PASS;3-pass+fast -!TP_RAW_AHD;AHD -!TP_RAW_AMAZE;AMaZE !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border -!TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 !TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold !TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_EAHD;EAHD -!TP_RAW_FAST;Fast -!TP_RAW_HD;Threshold -!TP_RAW_HD_TOOLTIP;Lower values make hot/dead pixel detection more aggressive, but false positives may lead to artifacts. If you notice any artifacts appearing when enabling the Hot/Dead Pixel Filters, gradually increase the threshold value until they disappear. -!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/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) -!TP_RAW_PIXELSHIFT;Pixel Shift -!TP_RAW_PIXELSHIFTBLUR;Blur motion mask !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_PIXELSHIFTEPERISO;Sensitivity -!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. -!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames -!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_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Equalize the brightness of the frames to the brightness of the selected frame.\nIf there are overexposed areas in the frames select the brightest frame to avoid magenta color cast in overexposed areas or enable motion correction. -!TP_RAW_PIXELSHIFTGREEN;Check green channel for motion -!TP_RAW_PIXELSHIFTHOLEFILL;Fill holes in motion mask -!TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Fill holes in motion mask -!TP_RAW_PIXELSHIFTLMMSE;Use LMMSE for moving parts -!TP_RAW_PIXELSHIFTLMMSE_TOOLTIP;Use LMMSE instead of AMaZE for areas of motion.\nUseful for high ISO images. -!TP_RAW_PIXELSHIFTMEDIAN;Use median for moving parts -!TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use median of all frames instead of selected frame for regions with motion.\nRemoves objects which are at different places in all frames.\nGives motion effect on slow moving (overlapping) objects. -!TP_RAW_PIXELSHIFTMM_AUTO;Automatic -!TP_RAW_PIXELSHIFTMM_CUSTOM;Custom -!TP_RAW_PIXELSHIFTMM_OFF;Off -!TP_RAW_PIXELSHIFTMOTIONMETHOD;Motion Correction -!TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 means no motion detection.\n1 - 99 means motion will be detected according to this value. Increase value to increase detection rate.\n100 means the AMaZE-demosaiced frame will be used. -!TP_RAW_PIXELSHIFTNONGREENCROSS;Check red/blue channels for motion -!TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask -!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Show only motion mask -!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Shows the motion mask without the image. -!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. -!TP_RAW_PIXELSHIFTSIGMA;Blur radius -!TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value. -!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions -!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. -!TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_HSL;HSL histogram -!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram -!TP_RETINEX_CONTEDIT_LH;Hue -!TP_RETINEX_CONTEDIT_MAP;Equalizer -!TP_RETINEX_CURVEEDITOR_CD;L=f(L) -!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. -!TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) -!TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method. -!TP_RETINEX_CURVEEDITOR_MAP;L=f(L) -!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! -!TP_RETINEX_EQUAL;Equalizer -!TP_RETINEX_FREEGAMMA;Free gamma -!TP_RETINEX_GAIN;Gain -!TP_RETINEX_GAINOFFS;Gain and Offset (brightness) -!TP_RETINEX_GAINTRANSMISSION;Gain transmission -!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. -!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram. -!TP_RETINEX_GAMMA;Gamma -!TP_RETINEX_GAMMA_FREE;Free -!TP_RETINEX_GAMMA_HIGH;High -!TP_RETINEX_GAMMA_LOW;Low -!TP_RETINEX_GAMMA_MID;Middle -!TP_RETINEX_GAMMA_NONE;None -!TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). -!TP_RETINEX_GRAD;Transmission gradient -!TP_RETINEX_GRADS;Strength gradient -!TP_RETINEX_GRADS_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Strength is reduced when iterations increase, and conversely. -!TP_RETINEX_GRAD_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Variance and Threshold are reduced when iterations increase, and conversely. -!TP_RETINEX_HIGH;High -!TP_RETINEX_HIGHLIG;Highlight -!TP_RETINEX_HIGHLIGHT;Highlight threshold -!TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool. -!TP_RETINEX_HSLSPACE_LIN;HSL-Linear -!TP_RETINEX_HSLSPACE_LOG;HSL-Logarithmic -!TP_RETINEX_ITER;Iterations (Tone-mapping) -!TP_RETINEX_ITERF;Tone mapping -!TP_RETINEX_ITER_TOOLTIP;Simulate a tone-mapping operator.\nHigh values increase the processing time. -!TP_RETINEX_LABEL;Retinex -!TP_RETINEX_LABEL_MASK;Mask -!TP_RETINEX_LABSPACE;L*a*b* -!TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Method -!TP_RETINEX_MAP_GAUS;Gaussian mask -!TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) -!TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) -!TP_RETINEX_MAP_METHOD_TOOLTIP;Use the mask generated by the Gaussian function above (Radius, Method) to reduce halos and artifacts.\n\nCurve only: apply a diagonal contrast curve on the mask.\nBeware of artifacts!\n\nGaussian mask: generate and use a Gaussian blur of the original mask.\nQuick.\n\nSharp mask: generate and use a wavelet on the original mask.\nSlow. -!TP_RETINEX_MAP_NONE;None -!TP_RETINEX_MEDIAN;Transmission median filter -!TP_RETINEX_METHOD;Method -!TP_RETINEX_METHOD_TOOLTIP;Low = Reinforce low light.\nUniform = Equalize action.\nHigh = Reinforce high light.\nHighlights = Remove magenta in highlights. -!TP_RETINEX_MLABEL;Restored haze-free Min=%1 Max=%2 -!TP_RETINEX_MLABEL_TOOLTIP;Should be near min=0 max=32768\nRestored image with no mixture. -!TP_RETINEX_NEIGHBOR;Radius -!TP_RETINEX_NEUTRAL;Reset -!TP_RETINEX_NEUTRAL_TIP;Reset all sliders and curves to their default values. -!TP_RETINEX_OFFSET;Offset (brightness) -!TP_RETINEX_SCALES;Gaussian gradient -!TP_RETINEX_SCALES_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Scale and radius are reduced when iterations increase, and conversely. -!TP_RETINEX_SETTINGS;Settings -!TP_RETINEX_SKAL;Scale -!TP_RETINEX_SLOPE;Free gamma slope -!TP_RETINEX_STRENGTH;Strength -!TP_RETINEX_THRESHOLD;Threshold -!TP_RETINEX_THRESHOLD_TOOLTIP;Limits in/out.\nIn = image source,\nOut = image gauss. -!TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4 -!TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2 -!TP_RETINEX_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nMean and Sigma.\nTm=Min TM=Max of transmission map. -!TP_RETINEX_TRANF;Transmission -!TP_RETINEX_TRANSMISSION;Transmission map -!TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction. -!TP_RETINEX_UNIFORM;Uniform -!TP_RETINEX_VARIANCE;Contrast -!TP_RETINEX_VARIANCE_TOOLTIP;Low variance increase local contrast and saturation, but can lead to artifacts. -!TP_RETINEX_VIEW;Process -!TP_RETINEX_VIEW_MASK;Mask -!TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible. -!TP_RETINEX_VIEW_NONE;Standard -!TP_RETINEX_VIEW_TRAN;Transmission - Auto -!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed -!TP_RETINEX_VIEW_UNSHARP;Unsharp mask !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_SOFTLIGHT_LABEL;Soft Light !TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Detail -!TP_WAVELET_1;Level 1 -!TP_WAVELET_2;Level 2 -!TP_WAVELET_3;Level 3 -!TP_WAVELET_4;Level 4 -!TP_WAVELET_5;Level 5 -!TP_WAVELET_6;Level 6 -!TP_WAVELET_7;Level 7 -!TP_WAVELET_8;Level 8 -!TP_WAVELET_9;Level 9 -!TP_WAVELET_APPLYTO;Apply To -!TP_WAVELET_AVOID;Avoid color shift -!TP_WAVELET_B0;Black -!TP_WAVELET_B1;Grey -!TP_WAVELET_B2;Residual -!TP_WAVELET_BACKGROUND;Background -!TP_WAVELET_BACUR;Curve -!TP_WAVELET_BALANCE;Contrast balance d/v-h -!TP_WAVELET_BALANCE_TOOLTIP;Alters the balance between the wavelet directions: vertical-horizontal and diagonal.\nIf contrast, chroma or residual tone mapping are activated, the effect due to balance is amplified. -!TP_WAVELET_BALCHRO;Chroma balance -!TP_WAVELET_BALCHRO_TOOLTIP;If enabled, the 'Contrast balance' curve or slider also modifies chroma balance. -!TP_WAVELET_BANONE;None -!TP_WAVELET_BASLI;Slider -!TP_WAVELET_BATYPE;Contrast balance method -!TP_WAVELET_CBENAB;Toning and Color Balance -!TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted -!TP_WAVELET_CCURVE;Local contrast -!TP_WAVELET_CH1;Whole chroma range -!TP_WAVELET_CH2;Saturated/pastel -!TP_WAVELET_CH3;Link contrast levels -!TP_WAVELET_CHCU;Curve -!TP_WAVELET_CHR;Chroma-contrast link strength -!TP_WAVELET_CHRO;Saturated/pastel threshold -!TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. -!TP_WAVELET_CHR_TOOLTIP;Adjusts chroma as a function of "contrast levels" and "chroma-contrast link strength" -!TP_WAVELET_CHSL;Sliders -!TP_WAVELET_CHTYPE;Chrominance method -!TP_WAVELET_COLORT;Opacity Red-Green -!TP_WAVELET_COMPCONT;Contrast -!TP_WAVELET_COMPGAMMA;Compression gamma -!TP_WAVELET_COMPGAMMA_TOOLTIP;Adjusting the gamma of the residual image allows you to equilibrate the data and histogram. -!TP_WAVELET_COMPTM;Tone mapping -!TP_WAVELET_CONTEDIT;'After' contrast curve -!TP_WAVELET_CONTR;Gamut -!TP_WAVELET_CONTRA;Contrast -!TP_WAVELET_CONTRAST_MINUS;Contrast - -!TP_WAVELET_CONTRAST_PLUS;Contrast + -!TP_WAVELET_CONTRA_TOOLTIP;Changes contrast of the residual image. -!TP_WAVELET_CTYPE;Chrominance control -!TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifies local contrast as a function of the original local contrast (abscissa).\nLow abscissa values represent small local contrast (real values about 10..20).\n50% abscissa represents average local contrast (real value about 100..300).\n66% abscissa represents standard deviation of local contrast (real value about 300..800).\n100% abscissa represents maximum local contrast (real value about 3000..8000). -!TP_WAVELET_CURVEEDITOR_CH;Contrast levels=f(Hue) -!TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifies each level's contrast as a function of hue.\nTake care not to overwrite changes made with the Gamut sub-tool's hue controls.\nThe curve will only have an effect when wavelet contrast level sliders are non-zero. -!TP_WAVELET_CURVEEDITOR_CL;L -!TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Applies a final contrast luminance curve at the end of the wavelet treatment. -!TP_WAVELET_CURVEEDITOR_HH;HH -!TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifies the residual image's hue as a function of hue. -!TP_WAVELET_DALL;All directions -!TP_WAVELET_DAUB;Edge performance -!TP_WAVELET_DAUB2;D2 - low -!TP_WAVELET_DAUB4;D4 - standard -!TP_WAVELET_DAUB6;D6 - standard plus -!TP_WAVELET_DAUB10;D10 - medium -!TP_WAVELET_DAUB14;D14 - high -!TP_WAVELET_DAUB_TOOLTIP;Changes Daubechies coefficients:\nD4 = Standard,\nD14 = Often best performance, 10% more time-intensive.\n\nAffects edge detection as well as the general quality of the firsts levels. However the quality is not strictly related to this coefficient and can vary with images and uses. -!TP_WAVELET_DONE;Vertical -!TP_WAVELET_DTHR;Diagonal -!TP_WAVELET_DTWO;Horizontal -!TP_WAVELET_EDCU;Curve -!TP_WAVELET_EDGCONT;Local contrast -!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima. -!TP_WAVELET_EDGE;Edge Sharpness -!TP_WAVELET_EDGEAMPLI;Base amplification -!TP_WAVELET_EDGEDETECT;Gradient sensitivity -!TP_WAVELET_EDGEDETECTTHR;Threshold low (noise) -!TP_WAVELET_EDGEDETECTTHR2;Threshold high (detection) -!TP_WAVELET_EDGEDETECTTHR_TOOLTIP;This adjuster lets you target edge detection for example to avoid applying edge sharpness to fine details, such as noise in the sky. -!TP_WAVELET_EDGEDETECT_TOOLTIP;Moving the slider to the right increases edge sensitivity. This affects local contrast, edge settings and noise. -!TP_WAVELET_EDGESENSI;Edge sensitivity -!TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged. -!TP_WAVELET_EDGTHRESH;Detail -!TP_WAVELET_EDGTHRESH_TOOLTIP;Change the repartition between the first levels and the others. The higher the threshold the more the action is centered on the first levels. Be careful with negative values, they increase the action of high levels and can introduce artifacts. -!TP_WAVELET_EDRAD;Radius -!TP_WAVELET_EDRAD_TOOLTIP;This radius adjustment is very different from those in other sharpening tools. Its value is compared to each level through a complex function. In this sense, a value of zero still has an effect. -!TP_WAVELET_EDSL;Threshold Sliders -!TP_WAVELET_EDTYPE;Local contrast method -!TP_WAVELET_EDVAL;Strength -!TP_WAVELET_FINAL;Final Touchup -!TP_WAVELET_FINEST;Finest -!TP_WAVELET_HIGHLIGHT;Highlight luminance range -!TP_WAVELET_HS1;Whole luminance range -!TP_WAVELET_HS2;Shadows/Highlights -!TP_WAVELET_HUESKIN;Skin hue -!TP_WAVELET_HUESKIN_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. -!TP_WAVELET_HUESKY;Sky hue -!TP_WAVELET_HUESKY_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. -!TP_WAVELET_ITER;Delta balance levels -!TP_WAVELET_ITER_TOOLTIP;Left: increase low levels and reduce high levels,\nRight: reduce low levels and increase high levels. -!TP_WAVELET_LABEL;Wavelet Levels -!TP_WAVELET_LARGEST;Coarsest -!TP_WAVELET_LEVCH;Chroma -!TP_WAVELET_LEVDIR_ALL;All levels in all directions -!TP_WAVELET_LEVDIR_INF;Below or equal the level -!TP_WAVELET_LEVDIR_ONE;One level -!TP_WAVELET_LEVDIR_SUP;Above the level -!TP_WAVELET_LEVELS;Wavelet levels -!TP_WAVELET_LEVELS_TOOLTIP;Choose the number of detail levels the image is to be decomposed into. More levels require more RAM and require a longer processing time. -!TP_WAVELET_LEVF;Contrast -!TP_WAVELET_LEVLABEL;Preview maximum possible levels = %1 -!TP_WAVELET_LEVONE;Level 2 -!TP_WAVELET_LEVTHRE;Level 4 -!TP_WAVELET_LEVTWO;Level 3 -!TP_WAVELET_LEVZERO;Level 1 -!TP_WAVELET_LINKEDG;Link with Edge Sharpness' Strength -!TP_WAVELET_LIPST;Enhanced algoritm -!TP_WAVELET_LOWLIGHT;Shadow luminance range -!TP_WAVELET_MEDGREINF;First level -!TP_WAVELET_MEDI;Reduce artifacts in blue sky -!TP_WAVELET_MEDILEV;Edge detection -!TP_WAVELET_MEDILEV_TOOLTIP;When you enable Edge Detection, it is recommanded:\n- to disabled low contrast levels to avoid artifacts,\n- to use high values of gradient sensitivity.\n\nYou can modulate the strength with 'refine' from Denoise and Refine. -!TP_WAVELET_NEUTRAL;Neutral -!TP_WAVELET_NOIS;Denoise -!TP_WAVELET_NOISE;Denoise and Refine -!TP_WAVELET_NPHIGH;High -!TP_WAVELET_NPLOW;Low -!TP_WAVELET_NPNONE;None -!TP_WAVELET_NPTYPE;Neighboring pixels -!TP_WAVELET_NPTYPE_TOOLTIP;This algorithm uses the proximity of a pixel and eight of its neighbors. If less difference, edges are reinforced. -!TP_WAVELET_OPACITY;Opacity Blue-Yellow -!TP_WAVELET_OPACITYW;Contrast balance d/v-h curve -!TP_WAVELET_OPACITYWL;Final local contrast -!TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right. -!TP_WAVELET_PASTEL;Pastel chroma -!TP_WAVELET_PROC;Process -!TP_WAVELET_RE1;Reinforced -!TP_WAVELET_RE2;Unchanged -!TP_WAVELET_RE3;Reduced -!TP_WAVELET_RESCHRO;Chroma -!TP_WAVELET_RESCON;Shadows -!TP_WAVELET_RESCONH;Highlights -!TP_WAVELET_RESID;Residual Image -!TP_WAVELET_SAT;Saturated chroma -!TP_WAVELET_SETTINGS;Wavelet Settings -!TP_WAVELET_SKIN;Skin targetting/protection -!TP_WAVELET_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. -!TP_WAVELET_SKY;Sky targetting/protection !TP_WAVELET_SKY_TOOLTIP;At -100 sky-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 sky-tones are protected while all other tones are affected. -!TP_WAVELET_STREN;Strength -!TP_WAVELET_STRENGTH;Strength -!TP_WAVELET_SUPE;Extra -!TP_WAVELET_THR;Shadows threshold -!TP_WAVELET_THRESHOLD;Highlight levels -!TP_WAVELET_THRESHOLD2;Shadow levels -!TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels between 9 and 9 minus the value will be affected by the shadow luminance range. Other levels will be fully treated. The highest level possible is limited by the highlight level value (9 minus highlight level value). -!TP_WAVELET_THRESHOLD_TOOLTIP;Only levels beyond the chosen value will be affected by the highlight luminance range. Other levels will be fully treated. The chosen value here limits the highest possible value of the shadow levels. -!TP_WAVELET_THRH;Highlights threshold -!TP_WAVELET_TILESBIG;Big tiles -!TP_WAVELET_TILESFULL;Full image -!TP_WAVELET_TILESIZE;Tiling method -!TP_WAVELET_TILESLIT;Little tiles -!TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements. -!TP_WAVELET_TMSTRENGTH;Compression strength -!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. -!TP_WAVELET_TMTYPE;Compression method -!TP_WAVELET_TON;Toning !TP_WBALANCE_PICKER;Pick -!TP_WBALANCE_TEMPBIAS;AWB temperature bias -!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". -!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f From 5eed91fec812ab6cc0cd70a646332954fa61ea4c Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 9 Dec 2018 21:45:27 +0100 Subject: [PATCH 301/348] Small fix for Espanol locale translation --- rtdata/languages/Espanol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 54995f678..042d92966 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -62,7 +62,6 @@ #62 2014-10-10 fotger #63 2018-12-09 Faber777 -;PREFERENCES_D50_OLD;5000K ABOUT_TAB_BUILD;Versión ABOUT_TAB_CREDITS;Créditos ABOUT_TAB_LICENSE;Licencia @@ -1060,6 +1059,7 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID Etiqueta PREFERENCES_CUSTPROFBUILDPATH;Ruta al programa ejecutable PREFERENCES_CUTOVERLAYBRUSH;Recortar máscara de color/transparencia PREFERENCES_D50;5000ºK +PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500ºK PREFERENCES_D60;6000ºK PREFERENCES_D65;6500ºK @@ -2377,7 +2377,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_D50_OLD;5000K !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_SND_THRESHOLDSECS;After seconds From 872279ae97a34a9290d42f080007e7c3c34f0cff Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 9 Dec 2018 22:39:00 +0100 Subject: [PATCH 302/348] Remove some console output before merge --- rtengine/rt_algo.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index 60042cba4..1011ae7b7 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -32,7 +32,7 @@ #include "rt_algo.h" #include "rt_math.h" #include "sleef.c" -#include + namespace { float calcBlendFactor(float val, float threshold) { // sigmoid function @@ -343,7 +343,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } } - std::cout << pass + 1 << " : " << minvar << std::endl; + if (minvar <= 1.f || pass == 1) { const int minY = skip * minI; const int minX = skip * minJ; @@ -393,7 +393,7 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } } - std::cout << 3 << " : " << minvar << std::endl; + contrastThreshold = minvar <= 4.f ? calcContrastThreshold(luminance, topLeftYStart + minI, topLeftXStart + minJ, tilesize) : 0.f; } } From 91f68e5e3102e193cd339a00667361eb1bd84c87 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 9 Dec 2018 22:45:19 +0100 Subject: [PATCH 303/348] Added centripetal Catmull-Rom spline curve icons #5068 --- .../png/dark/curve-catmullrom-small.png | Bin 0 -> 430 bytes .../themed/png/dark/curve-catmullrom.png | Bin 0 -> 463 bytes .../png/light/curve-catmullrom-small.png | Bin 0 -> 437 bytes .../themed/png/light/curve-catmullrom.png | Bin 0 -> 490 bytes .../themed/svg/curve-catmullrom-small.svg | 159 ++++++++++++++++++ rtdata/images/themed/svg/curve-catmullrom.svg | 131 +++++++++++++++ 6 files changed, 290 insertions(+) create mode 100644 rtdata/images/themed/png/dark/curve-catmullrom-small.png create mode 100644 rtdata/images/themed/png/dark/curve-catmullrom.png create mode 100644 rtdata/images/themed/png/light/curve-catmullrom-small.png create mode 100644 rtdata/images/themed/png/light/curve-catmullrom.png create mode 100644 rtdata/images/themed/svg/curve-catmullrom-small.svg create mode 100644 rtdata/images/themed/svg/curve-catmullrom.svg diff --git a/rtdata/images/themed/png/dark/curve-catmullrom-small.png b/rtdata/images/themed/png/dark/curve-catmullrom-small.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fb3188dd14ff427ef21861b4b8f0bd37a44089 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE+Dshb{an3KOEXqvJC}D7RR&XpS zDauSLEy>K!(+$o@EJ}6E$;?hw$S5f(u+rC0E=o--$t+7v&d<%w&nwo;FG|!*UQYy zE=~rT19HLacQ#T$MVtj5k;M!Qd`Cc-ajG_-G*D13z$e7@%$YOp1wKF$2+o~5clz{c z2>as2i)YWCb+|g;4XBc|u)^Si}HDLp)s^LpZJ{3$!q?aZFvu zk!CT|*g=AeXHIWI8)NfAg%A~iLmUQ0EXFE4GK#m3&RFn_W22*lADftf8-ugrjE8JS rtS1DL5)uMfjD40f`8M9x)8Js3yOme*ERK!`}5n0T@z;^_M8K-LVNdpB{0(?ST-3xrqAc3=B02DxGv@O@4 z094OY666=musL@AvL44ee$B$*tgk+jK=E8p7sn8Z%gG4`_?C$&+<4o>SYS4Lu|Uts z6d{d!439Oqx>OE`N^)@-Cp_2S;!-SZ5uGr_*I|RD>x7s?x~)eNMV%j+cqtSLO_Vt! z&{4oWxszkl*Ps)8&8JJ!I1gE_X>wpFR$cx2mFF?8h(qiQtsFcToKH=C3AC8O)78&q Iol`;+06)v9T>t<8 literal 0 HcmV?d00001 diff --git a/rtdata/images/themed/png/light/curve-catmullrom-small.png b/rtdata/images/themed/png/light/curve-catmullrom-small.png new file mode 100644 index 0000000000000000000000000000000000000000..1654d10eaa8cffce10894eace37620053734a6be GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE+Dshb{an3KOEXqvJC}D7RR&XpS zDauSLEy>K!(+$o@EJ}6E$;?hw$S5f(u+rC0E=o--$t+7v&d<%w&nwo;FG|!*UQYy zE=~rT19HLacQ#T$MVtj5k;M!Qd`Cc-ajG_-G*D0_z$e62RaMo!zz0YIfr^R>grNoo zGBPp{LARKnlYr`ZN`m}?H#4-X7OwA}>dYBtvOCUh6Hq+Z)5S4_<9f0{3lkg1)>y$a z1xD!&1|kwW6oS}z+L{6;I&dgAoD@7W!K9!iV|qfERK!`}5n0T@z;^_M8K-LVNdpCS1AIbURaI5p3w%_-0LV5oGXs)p zU;q>Y(m*Z{C@Co^D=Ry^$hQP)JB!zh?O)m(CXJ-29KXdVx|ko-U3d z5|@(&T$p$Yre!>JWKnNsJUFqmfUBjb$;Yff<{1CEhvtK--bX0)bBBM8!G6DNKeuX95!*IQ+QM(8zksGyXV3 tnQDjfSq2s#gTD0Oi5s=5UNA5+Ok + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/curve-catmullrom.svg b/rtdata/images/themed/svg/curve-catmullrom.svg new file mode 100644 index 000000000..b59954885 --- /dev/null +++ b/rtdata/images/themed/svg/curve-catmullrom.svg @@ -0,0 +1,131 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + From 8bdec7c2de0fcb8757b19a534eadff9755d5d837 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 10 Dec 2018 14:29:23 +0100 Subject: [PATCH 304/348] Change blend between sharpened, original and blurred, #5075 --- rtengine/ipsharpen.cc | 64 +++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index e72c665d5..d722ddfdf 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -180,11 +180,21 @@ BENCHFUN buildBlendMask(luminance, blend, W, H, contrast, sharpenParam.deconvamount / 100.f); JaggedArray blur(W, H); - if(sharpenParam.blurradius > 0) { - #pragma omp parallel - { - gaussianBlur(tmpI, blur, W, H, sharpenParam.blurradius); - } + if (sharpenParam.blurradius >= 0.25f) { +#ifdef _OPENMP + #pragma omp parallel +#endif + { + gaussianBlur(tmpI, blur, W, H, sharpenParam.blurradius); +#ifdef _OPENMP + #pragma omp for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + blur[i][j] = intp(blend[i][j], luminance[i][j], std::max(blur[i][j], 0.0f)); + } + } + } } const float damping = sharpenParam.deconvdamping / 5.0; const bool needdamp = sharpenParam.deconvdamping > 0; @@ -216,7 +226,7 @@ BENCHFUN } } - if(sharpenParam.blurradius > 0) { + if (sharpenParam.blurradius >= 0.25f) { #ifdef _OPENMP #pragma omp for #endif @@ -274,20 +284,31 @@ BENCHFUN } } - JaggedArray blur(W, H); - - if(sharpenParam.blurradius > 0) { - #pragma omp parallel - { - gaussianBlur(lab->L, blur, W, H, sharpenParam.blurradius); - } - } - // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; buildBlendMask(lab->L, blend, W, H, contrast); + JaggedArray blur(W, H); + + if (sharpenParam.blurradius >= 0.25f) { +#ifdef _OPENMP + #pragma omp parallel +#endif + { + gaussianBlur(lab->L, blur, W, H, sharpenParam.blurradius); +#ifdef _OPENMP + #pragma omp for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + blur[i][j] = intp(blend[i][j], lab->L[i][j], std::max(blur[i][j], 0.0f)); + } + } + } + } + + #ifdef _OPENMP #pragma omp parallel #endif @@ -349,16 +370,17 @@ BENCHFUN delete [] b3; } - if(sharpenParam.blurradius > 0) { + + if (sharpenParam.blurradius >= 0.25f) { #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel for #endif - for (int i = 0; i < H; ++i) { - for (int j = 0; j < W; ++j) { - lab->L[i][j] = intp(blend[i][j], lab->L[i][j], max(blur[i][j], 0.0f)); - } + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + lab->L[i][j] = intp(blend[i][j], lab->L[i][j], max(blur[i][j], 0.0f)); } } + } } From 7a918fa373af0392f6dde1eee79f2377f0c9f4cf Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 10 Dec 2018 17:26:22 +0100 Subject: [PATCH 305/348] Fixed bug in evaluating catmull-rom curves with straight segments at 0 or 1 Fixes #5072 --- rtengine/diagonalcurves.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index c81d48f16..b4c88fd68 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -326,6 +326,9 @@ inline void catmull_rom_spline(int n_points, if (p1_y == p2_y && (p1_y == 0 || p1_y == 1)) { for (i = 1; i < n_points-1; ++i) { t = p1_x + space * i; + if (t >= p2_x) { + break; + } res_x.push_back(t); res_y.push_back(p1_y); } From 773b55b35ec96f63a1bcf822264c5dc033f9d41d Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Mon, 10 Dec 2018 17:29:21 +0100 Subject: [PATCH 306/348] restored old behaviour of the WB tint slider Fixes #5077 --- rtgui/whitebalance.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 50cfdbc29..6cbca5637 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -322,7 +322,6 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR)); - green->setLogScale(10, 1, true); equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0, iblueredL, iblueredR)); tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0, itempbiasL, itempbiasR)); cache_customTemp (0); @@ -701,7 +700,6 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) set_inconsistent(multiImage && !pedited->wb.enabled); } - green->setLogScale(10, green->getValue(), true); methconn.block (false); enableListener (); @@ -809,7 +807,6 @@ void WhiteBalance::setWB (int vtemp, double vgreen) listener->panelChanged (EvWBTemp, Glib::ustring::compose("%1, %2", (int)temp->getValue(), Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), green->getValue()))); } - green->setLogScale(10, vgreen, true); } void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd) From 516be46550ace065a96aee0a4f76214b5ecf8e29 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 11 Dec 2018 00:09:36 +0100 Subject: [PATCH 307/348] Reintroduce silencing of unused-result warnings --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff221ffef..72c6a510b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -373,7 +373,7 @@ if(WITH_PROF) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") endif() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Wno-deprecated-declarations") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Wno-deprecated-declarations -Wno-unused-result") if(OPTION_OMP) find_package(OpenMP) if(OPENMP_FOUND) From c9213a49a0a4db4e893b268868f5f06f76289055 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 09:21:12 +0100 Subject: [PATCH 308/348] Spanish translation updated by Faber777, closes #5085 --- rtdata/languages/Espanol | 518 +++++++++++++++++++-------------------- 1 file changed, 259 insertions(+), 259 deletions(-) diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 042d92966..c899922b6 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -71,7 +71,7 @@ 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 -BATCHQUEUE_STARTSTOPHINT;Iniciar o detener el procesamiento de las imágenes en la cola.\nAtajo: Ctrl + s +BATCHQUEUE_STARTSTOPHINT;Iniciar o detener el procesamiento de las imágenes en la cola.\nTecla de Atajo: Ctrl + s BATCH_PROCESSING;Proceso por lotes CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_LEFT_TAN;LT: @@ -103,6 +103,10 @@ DYNPROFILEEDITOR_DELETE;Borrar DYNPROFILEEDITOR_EDIT;Editar DYNPROFILEEDITOR_EDIT_RULE;Editar regla de perfil dinámico DYNPROFILEEDITOR_ENTRY_TOOLTIP;La coincidencia no distingue entre mayúsculas y minúsculas. \nUtilice el prefijo "re:" para ingresar \nUna expresión regular. +DYNPROFILEEDITOR_IMGTYPE_ANY;Cualquier +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Cambio de píxel +DYNPROFILEEDITOR_IMGTYPE_STD;Estándar DYNPROFILEEDITOR_MOVE_DOWN;Mover hacia abajo DYNPROFILEEDITOR_MOVE_UP;Mover hacia arriba DYNPROFILEEDITOR_NEW;Nuevo @@ -116,6 +120,7 @@ EXIFFILTER_CAMERA;Cámara EXIFFILTER_EXPOSURECOMPENSATION;Compensación de exposición (EV) EXIFFILTER_FILETYPE;Tipo de archivo EXIFFILTER_FOCALLEN;Distancia focal +EXIFFILTER_IMAGETYPE;Tipo de imagen EXIFFILTER_ISO;ISO EXIFFILTER_LENS;Lente EXIFFILTER_METADATAFILTER;Activar filtros de metadatos @@ -229,11 +234,11 @@ FILEBROWSER_POPUPUNTRASH;Sacar de la papelera FILEBROWSER_QUERYBUTTONHINT;Borrar la búsqueda FILEBROWSER_QUERYHINT;Escriba parte del nombre del archivo a buscar, o una lista separada con comas.\nP.ej. 1001,1004,1199\n\nCtrl-F Para poner el foco en el campo Buscar.\nEnter Para iniciar la búsqueda.\nEsc Para limpiar.\nShift-Esc Para quitar el foco. FILEBROWSER_QUERYLABEL; Buscar: -FILEBROWSER_RANK1_TOOLTIP;Rango 1 *\nAtajoShift-1 -FILEBROWSER_RANK2_TOOLTIP;Rango 2 **\nAtajoShift-2 -FILEBROWSER_RANK3_TOOLTIP;Rango 3 ***\nAtajoShift-3 -FILEBROWSER_RANK4_TOOLTIP;Rango 4 ****\nAtajoShift-4 -FILEBROWSER_RANK5_TOOLTIP;Rango 5 *****\nAtajoShift-5 +FILEBROWSER_RANK1_TOOLTIP;Rango 1 *\nTecla de AtajoShift-1 +FILEBROWSER_RANK2_TOOLTIP;Rango 2 **\nTecla de AtajoShift-2 +FILEBROWSER_RANK3_TOOLTIP;Rango 3 ***\nTecla de AtajoShift-3 +FILEBROWSER_RANK4_TOOLTIP;Rango 4 ****\nTecla de AtajoShift-4 +FILEBROWSER_RANK5_TOOLTIP;Rango 5 *****\nTecla de AtajoShift-5 FILEBROWSER_RENAMEDLGLABEL;Renombrar archivo FILEBROWSER_RESETDEFAULTPROFILE;Restablecen a los predeterminados FILEBROWSER_SELECTDARKFRAME;Seleccionar Toma Negra… @@ -243,26 +248,26 @@ FILEBROWSER_SHOWCOLORLABEL2HINT;Mostrar imágenes etiquetadas con Amarillo Al FILEBROWSER_SHOWCOLORLABEL3HINT;Mostrar imágenes etiquetadas con Verde Alt-3 FILEBROWSER_SHOWCOLORLABEL4HINT;Mostrar imágenes etiquetadas con Azul Alt-4 FILEBROWSER_SHOWCOLORLABEL5HINT;Mostrar imágenes etiquetadas con Púrpura Alt-5 -FILEBROWSER_SHOWDIRHINT;Quitar todos los filtros.\nAtajo: d -FILEBROWSER_SHOWEDITEDHINT;Mostrar imágenes editadas.\nAtajo: 7 -FILEBROWSER_SHOWEDITEDNOTHINT;Mostrar imágenes no editadas.\nAtajo: 6 -FILEBROWSER_SHOWEXIFINFO;Mostrar datos Exif.\nAtajo: i\n\nAtajo en modo editor simple: Alt-I +FILEBROWSER_SHOWDIRHINT;Quitar todos los filtros.\nTecla de Atajo: d +FILEBROWSER_SHOWEDITEDHINT;Mostrar imágenes editadas.\nTecla de Atajo: 7 +FILEBROWSER_SHOWEDITEDNOTHINT;Mostrar imágenes no editadas.\nTecla de Atajo: 6 +FILEBROWSER_SHOWEXIFINFO;Mostrar datos Exif.\nTecla de Atajo: i\n\nTecla de Atajo en modo editor simple: Alt-I FILEBROWSER_SHOWNOTTRASHHINT;Mostrar solo las imágenes no borradas. FILEBROWSER_SHOWORIGINALHINT;Muestre solo imágenes originales. \nCuando existen varias imágenes con el mismo nombre de archivo pero con diferentes extensiones, la que se considera original es aquella cuya extensión está más cerca de la parte superior de la lista de extensiones analizadas en Preferencias> Explorador de archivos> Extensiones analizadas. -FILEBROWSER_SHOWRANK1HINT;Mostrar imágenes con 1 estrella.\nAtajo: 1 -FILEBROWSER_SHOWRANK2HINT;Mostrar imágenes con 2 estrellas.\nAtajo: 2 -FILEBROWSER_SHOWRANK3HINT;Mostrar imágenes con 3 estrellas.\nAtajo: 3 -FILEBROWSER_SHOWRANK4HINT;Mostrar imágenes con 4 estrellas.\nAtajo: 4 -FILEBROWSER_SHOWRANK5HINT;Mostrar imágenes con 5 estrellas.\nAtajo: 5 -FILEBROWSER_SHOWRECENTLYSAVEDHINT;Mostrar imágenes guardadas recientemente.\nAtajo: Alt-7 -FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostrar imágenes no guardadas recientemente.\nAtajo: Alt-6 -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_SHOWRANK1HINT;Mostrar imágenes con 1 estrella.\nTecla de Atajo: 1 +FILEBROWSER_SHOWRANK2HINT;Mostrar imágenes con 2 estrellas.\nTecla de Atajo: 2 +FILEBROWSER_SHOWRANK3HINT;Mostrar imágenes con 3 estrellas.\nTecla de Atajo: 3 +FILEBROWSER_SHOWRANK4HINT;Mostrar imágenes con 4 estrellas.\nTecla de Atajo: 4 +FILEBROWSER_SHOWRANK5HINT;Mostrar imágenes con 5 estrellas.\nTecla de Atajo: 5 +FILEBROWSER_SHOWRECENTLYSAVEDHINT;Mostrar imágenes guardadas recientemente.\nTecla de Atajo: Alt-7 +FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostrar imágenes no guardadas recientemente.\nTecla de Atajo: Alt-6 +FILEBROWSER_SHOWTRASHHINT;Mostrar el contenido de la papelera.\nTecla de Atajo: Ctrl-t +FILEBROWSER_SHOWUNCOLORHINT;Mostrar imágenes sin etiqueta de color.\nTecla de Atajo: Alt-0 +FILEBROWSER_SHOWUNRANKHINT;Mostrar imágenes sin rango.\nTecla de Atajo: 0 FILEBROWSER_THUMBSIZE;Tamaño miniatura -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-- +FILEBROWSER_UNRANK_TOOLTIP;Sin Rango\nTecla de AtajoShift - 0 +FILEBROWSER_ZOOMINHINT;Agrandar miniatura.\nTecla de Atajo: +\n\nTecla de Atajo en modo editor simple: Alt-+ +FILEBROWSER_ZOOMOUTHINT;Reducir miniatura.\nTecla de Atajo: -\n\nTecla de Atajo en modo editor simple: Alt-- FILECHOOSER_FILTER_ANY;Todos los archivos FILECHOOSER_FILTER_COLPROF;Perfiles de color FILECHOOSER_FILTER_CURVE;Archivos de curva @@ -278,6 +283,7 @@ GENERAL_AUTO;Automático GENERAL_BEFORE;Antes GENERAL_CANCEL;Cancelar GENERAL_CLOSE;Cerrar +GENERAL_CURRENT;Actual GENERAL_DISABLE;Desactivar GENERAL_DISABLED;Desactivado GENERAL_ENABLE;Activar @@ -290,7 +296,9 @@ GENERAL_NONE;Ninguno GENERAL_OK;Aceptar GENERAL_OPEN;Abrir GENERAL_PORTRAIT;Retrato +GENERAL_RESET;Reiniciar GENERAL_SAVE;Guardar +GENERAL_SAVE_AS;Guardar como... GENERAL_SLIDER;Deslizador GENERAL_UNCHANGED;(Sin cambios) GENERAL_WARNING;Advertencia @@ -301,6 +309,7 @@ HISTOGRAM_TOOLTIP_CHRO;Mostrar/Ocultar Histograma de cromaticidad HISTOGRAM_TOOLTIP_FULL;Cambiar entre Histograma completo o escalado HISTOGRAM_TOOLTIP_G;Mostrar/Ocultar Histograma Verde HISTOGRAM_TOOLTIP_L;Mostrar/Ocultar Histograma de Luminancia CIELAB +HISTOGRAM_TOOLTIP_MODE;Alterne entre la escala lineal, log-linear y log-log del histograma. HISTOGRAM_TOOLTIP_R;Mostrar/Ocultar Histograma Rojo HISTOGRAM_TOOLTIP_RAW;Mostrar/ocultar Histograma Raw HISTORY_CHANGED;Cambiado @@ -442,7 +451,7 @@ HISTORY_MSG_132;Reducción de ruido de crominancia HISTORY_MSG_133;Gamma de salida HISTORY_MSG_134;Gamma libre HISTORY_MSG_135;Gamma libre -HISTORY_MSG_136;Pendiente de gamma +HISTORY_MSG_136;Pendiente de (la curva) gamma HISTORY_MSG_137;Nivel de negro - Verde 1 HISTORY_MSG_138;Nivel de negro - Rojo HISTORY_MSG_139;Nivel de negro - Azul @@ -783,19 +792,99 @@ HISTORY_MSG_490;HDR TM - Cantidad HISTORY_MSG_491;Balance de Blancos HISTORY_MSG_492;RGB Curvas HISTORY_MSG_493;L*a*b* Ajustes +HISTORY_MSG_CLAMPOOG;Recortar la gama de colores HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Corrección del color +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Corrección de color +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Canal +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - máscara de región C +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - Mascara h +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - luminosidad +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L máscara +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - Lista +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - desenfoque la máscara de región +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - Compensar la region +HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - Poder de la región +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturacion +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT -Muetra la máscara de región +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - Región de la pendiente +HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Profundidad +HISTORY_MSG_DEHAZE_ENABLED;Haze Eliminación +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Mostrar mapa de profundidad +HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Fuerza +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Doble demosaicado - Umbral automático +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Doble demosaicado - Umbral de contraste HISTORY_MSG_HISTMATCHING;Curva de tono auto-emparejado +HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Salida - Primaria +HISTORY_MSG_ICM_OUTPUT_TEMP;Salida - ICC-v4 iluminante D +HISTORY_MSG_ICM_OUTPUT_TYPE;Salida - Tipo +HISTORY_MSG_ICM_WORKING_GAMMA;Trabajando - Gamma +HISTORY_MSG_ICM_WORKING_SLOPE;Trabajando - pendiente +HISTORY_MSG_ICM_WORKING_TRC_METHOD;Trabajando - TRC método HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste cantidad-local HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Oscuridad-local HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste local HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste luminosidad-local HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste radio-local HISTORY_MSG_METADATA_MODE;Modo de copia de metadatos +HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Umbral de contraste +HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaicado método para el movimiento. +HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Dirección del filtro de ruido de línea +HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF filtro de líneas +HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Umbral de contraste +HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Corrección - Iteraciones +HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw Corrección de CA bruta - Evite el cambio de color +HISTORY_MSG_RAW_BORDER;Raw margen/borde +HISTORY_MSG_RESIZE_ALLOWUPSCALING;Redimensionar - Permitir escalado +HISTORY_MSG_SHARPENING_CONTRAST;Enfoque - Umbral de contraste +HISTORY_MSG_SH_COLORSPACE;S/H - Espacio de color +HISTORY_MSG_SOFTLIGHT_ENABLED;Luz tenue +HISTORY_MSG_SOFTLIGHT_STRENGTH;Luz tenue - Fuerza HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Ancla HISTORY_NEWSNAPSHOT;Agregar -HISTORY_NEWSNAPSHOT_TOOLTIP;Atajo: Alt-s +HISTORY_NEWSNAPSHOT_TOOLTIP;Tecla de Atajo: Alt-s HISTORY_SNAPSHOT;Instantánea HISTORY_SNAPSHOTS;Instantáneas +ICCPROFCREATOR_COPYRIGHT;Copyright: +ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Restablecer los derechos de autor predeterminados, otorgados a "RawTherapee, CC0" +ICCPROFCREATOR_CUSTOM;Personalizado +ICCPROFCREATOR_DESCRIPTION;Descripción: +ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Anexar los valores de gamma y pendiente a la descripción. +ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Deje vacío para establecer la descripción por defecto. +ICCPROFCREATOR_GAMMA;Gamma (curva) +ICCPROFCREATOR_ICCVERSION;ICC versión: +ICCPROFCREATOR_ILL;Illuminante: +ICCPROFCREATOR_ILL_41;D41 +ICCPROFCREATOR_ILL_50;D50 +ICCPROFCREATOR_ILL_55;D55 +ICCPROFCREATOR_ILL_60;D60 +ICCPROFCREATOR_ILL_65;D65 +ICCPROFCREATOR_ILL_80;D80 +ICCPROFCREATOR_ILL_DEF;Valor por defecto +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;Solo se puede configurar el iluminante para los perfiles ICC v4. +ICCPROFCREATOR_PRIMARIES;Primarios: +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) +ICCPROFCREATOR_PRIM_BEST;MejorRGB +ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BLUX;Azul X +ICCPROFCREATOR_PRIM_BLUY;Azul Y +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Verde X +ICCPROFCREATOR_PRIM_GREY;Verde Y +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Rojo X +ICCPROFCREATOR_PRIM_REDY;Rojo Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_TOOLTIP;Solo puede establecer (colores) primarios personalizados para los perfiles ICC v4. +ICCPROFCREATOR_PRIM_WIDEG;Gamma Amplia +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 +ICCPROFCREATOR_SAVEDIALOG_TITLE;Guardar el perfil ICC como ... +ICCPROFCREATOR_SLOPE;Pendiente de la curva gamma +ICCPROFCREATOR_TRC_PRESET;Curva de respuesta de tono: IPTCPANEL_CATEGORY;Categoría IPTCPANEL_CATEGORYHINT;Identifica el tema de la imagen en la opinión del proveedor. IPTCPANEL_CITY;Ciudad @@ -843,24 +932,25 @@ LENSPROFILE_CORRECTION_LCPFILE;LCP archivo LENSPROFILE_CORRECTION_MANUAL;Parámetros de corrección manual LENSPROFILE_LENS_WARNING;Advertencia: el factor de recorte utilizado para el perfilado de la lente es mayor que el factor de recorte de la cámara, los resultados pueden ser incorrectos. MAIN_BUTTON_FULLSCREEN;Pantalla completa +MAIN_BUTTON_ICCPROFCREATOR;Creador de perfiles ICC MAIN_BUTTON_NAVNEXT_TOOLTIP;Navegar hasta la imagen Siguiente a la que está abierta en el editor:\nShift-F4\n\nPara navegar hasta la imagen Siguiente a aquella cuya miniatura está seleccionada en el Explorador de Archivos:\nF4 MAIN_BUTTON_NAVPREV_TOOLTIP;Navegar hasta la imagen Anterior a la que está abierta en el editor:\nShift-F3\n\nPara navegar hasta la imagen Anterior a aquella cuya miniatura está seleccionada en el Explorador de Archivos:\nF3 MAIN_BUTTON_NAVSYNC_TOOLTIP;Sincronizar el Navegador de Archivos con el Editor para mostrar la miniatura de la imagen actualmente abierta y quitar los filtros en el Navegador de Archivos:\nx\n\nPara hacer lo dicho anteriormente, pero sin quitar los filtros en el Navegador de Archivos:\ny\n(Note que la miniatura del archivo abierto no será mostrada si los filtros la excluyen). MAIN_BUTTON_PREFERENCES;Preferencias MAIN_BUTTON_PUTTOQUEUE;Poner en la cola -MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Añadir imagen actual a la cola de procesamiento.\nAtajo: Ctrl+B +MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Añadir imagen actual a la cola de procesamiento.\nTecla de Atajo: Ctrl+B MAIN_BUTTON_SAVE;Guardar imagen -MAIN_BUTTON_SAVE_TOOLTIP;Guardar imagen actual.\nAtajo: Ctrl+S +MAIN_BUTTON_SAVE_TOOLTIP;Guardar imagen actual.\nTecla de Atajo: Ctrl+S MAIN_BUTTON_SENDTOEDITOR;Abrir con editor -MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Editar imagen actual en editor externo.\nAtajo: Ctrl+E -MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Mostrar/ocultar todos los paneles laterales.\nAtajo: m +MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Editar imagen actual en editor externo.\nTecla de Atajo: Ctrl+E +MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Mostrar/ocultar todos los paneles laterales.\nTecla de Atajo: m MAIN_BUTTON_UNFULLSCREEN;Salir de Pantalla completa MAIN_FRAME_BATCHQUEUE;Cola de lotes -MAIN_FRAME_BATCHQUEUE_TOOLTIP; Cola de lotes.\nAtajo: Ctrl-F3 +MAIN_FRAME_BATCHQUEUE_TOOLTIP; Cola de lotes.\nTecla de Atajo: Ctrl-F3 MAIN_FRAME_EDITOR;Editor -MAIN_FRAME_EDITOR_TOOLTIP; Editor.\nAtajo: Ctrl-F4 +MAIN_FRAME_EDITOR_TOOLTIP; Editor.\nTecla de Atajo: Ctrl-F4 MAIN_FRAME_FILEBROWSER;Explorador de archivos -MAIN_FRAME_FILEBROWSER_TOOLTIP; Explorador de archivos.\nAtajo: Ctrl-F2 +MAIN_FRAME_FILEBROWSER_TOOLTIP; Explorador de archivos.\nTecla de Atajo: Ctrl-F2 MAIN_FRAME_PLACES;Ubicaciones MAIN_FRAME_PLACES_ADD;Añadir MAIN_FRAME_PLACES_DEL;Borrar @@ -880,44 +970,45 @@ MAIN_MSG_SETPATHFIRST;Para poder usar esta función, primero tiene que establece MAIN_MSG_TOOMANYOPENEDITORS;Demasiados editores abiertos.\nPor favor cierre un editor para continuar. MAIN_MSG_WRITEFAILED;Falla al escribir\n\n"%1"\n\nAsegurese de que el folder exista y que usted tenga permiso de escritura sobre él. MAIN_TAB_ADVANCED;Avanzado -MAIN_TAB_ADVANCED_TOOLTIP;Método rápido: Alt-w +MAIN_TAB_ADVANCED_TOOLTIP;Tecla de Atajo: Alt-w MAIN_TAB_COLOR;Color -MAIN_TAB_COLOR_TOOLTIP;Atajo: Alt-C +MAIN_TAB_COLOR_TOOLTIP;Tecla de Atajo: Alt-C MAIN_TAB_DETAIL;Detalle -MAIN_TAB_DETAIL_TOOLTIP;Atajo: Alt-D +MAIN_TAB_DETAIL_TOOLTIP;Tecla de Atajo: Alt-D MAIN_TAB_DEVELOP;Revelar MAIN_TAB_EXIF;Exif MAIN_TAB_EXPORT; Exportación Rápida MAIN_TAB_EXPOSURE;Exposición -MAIN_TAB_EXPOSURE_TOOLTIP;Atajo: Alt-E +MAIN_TAB_EXPOSURE_TOOLTIP;Tecla de Atajo: Alt-E MAIN_TAB_FILTER;Filtro MAIN_TAB_INSPECT; Inspeccionar MAIN_TAB_IPTC;IPTC MAIN_TAB_METADATA;Metadatos -MAIN_TAB_METADATA_TOOLTIP;Atajo: Alt-M +MAIN_TAB_METADATA_TOOLTIP;Tecla de Atajo: Alt-M MAIN_TAB_RAW;Raw -MAIN_TAB_RAW_TOOLTIP;Atajo: Alt-R +MAIN_TAB_RAW_TOOLTIP;Tecla de Atajo: Alt-R MAIN_TAB_TRANSFORM;Transformar -MAIN_TAB_TRANSFORM_TOOLTIP;Atajo: Alt-T -MAIN_TOOLTIP_BACKCOLOR0;Color de fondo de la previsualización: Color del tema\nAtajo: 8 -MAIN_TOOLTIP_BACKCOLOR1;Color de fondo de la previsualización: Negro\nAtajo: 9 -MAIN_TOOLTIP_BACKCOLOR2;Color de fondo de la previsualización: Blanco\nAtajo: 0 +MAIN_TAB_TRANSFORM_TOOLTIP;Tecla de Atajo: Alt-T +MAIN_TOOLTIP_BACKCOLOR0;Color de fondo de la previsualización: Color del tema\nTecla de Atajo: 8 +MAIN_TOOLTIP_BACKCOLOR1;Color de fondo de la previsualización: Negro\nTecla de Atajo: 9 +MAIN_TOOLTIP_BACKCOLOR2;Color de fondo de la previsualización: Blanco\nTecla de Atajo: 0 MAIN_TOOLTIP_BACKCOLOR3;Color de fondo de la vista previa: Medio gris \nMétodo rápido: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Bloquear / Desbloquear la vista Antes\n\nBloquear: la vista Antes permanece inalterada - \nútil para evaluar el efecto acumulativo de varias herramientas.\nAdemás, se puede hacer una comparación con cualquier estado en el Historial\n\nDesbloquear: la vista Antes seguirá a la vista Después un paso por detrás, mostrando la imagen antes del efecto de la herramienta que se está usando -MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar panel izquierdo (incluyendo historial).\nAtajo: i -MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nAtajo: < -MAIN_TOOLTIP_INDCLIPPEDS;Indicación de sombras recortadas.\nAtajo: > -MAIN_TOOLTIP_PREVIEWB;Previsualización Canal azul.\nAtajo: b -MAIN_TOOLTIP_PREVIEWFOCUSMASK;Previsualización Máscara de Foco.\nAtajo: Shift-F\n\nMás preciso en imágenes con poca profundidad de campo, bajo ruido y a mayores niveles de aumento\n\nPara mejorar la precisión en imágenes con ruido evalúe usando menor aumento (10%-30%)\n\nPreview es realizada más lentamente cuando la Máscara de Foco esta activa. -MAIN_TOOLTIP_PREVIEWG;Previsualización Canal verde.\nAtajo: g -MAIN_TOOLTIP_PREVIEWL;Previsualización Luminosidad.\nAtajo: v\n\n0.299*R + 0.587*G + 0.114*B -MAIN_TOOLTIP_PREVIEWR;Previsualización Canal rojo.\nAtajo: r -MAIN_TOOLTIP_QINFO; Información breve de la imagen.\nAtajo: i -MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/ocultar el panel izquierdo.\nAtajo: l -MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/ocultar el panel derecho.\nAtajo: Alt-L -MAIN_TOOLTIP_SHOWHIDETP1;Mostrar/ocultar el panel superior.\nAtajo: Shift-L +MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar panel izquierdo (incluyendo historial).\nTecla de Atajo: i +MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nTecla de Atajo: < +MAIN_TOOLTIP_INDCLIPPEDS;Indicación de sombras recortadas.\nTecla de Atajo: > +MAIN_TOOLTIP_PREVIEWB;Previsualización Canal azul.\nTecla de Atajo: b +MAIN_TOOLTIP_PREVIEWFOCUSMASK;Previsualización Máscara de Foco.\nTecla de Atajo: Shift-F\n\nMás preciso en imágenes con poca profundidad de campo, bajo ruido y a mayores niveles de aumento\n\nPara mejorar la precisión en imágenes con ruido evalúe usando menor aumento (10%-30%)\n\nLa vista previa es realizada más lentamente cuando la Máscara de Foco esta activa. +MAIN_TOOLTIP_PREVIEWG;Previsualización Canal verde.\nTecla de Atajo: g +MAIN_TOOLTIP_PREVIEWL;Previsualización Luminosidad.\Tecla de Atajo: v\n\n0.299*R + 0.587*G + 0.114*B +MAIN_TOOLTIP_PREVIEWR;Previsualización Canal rojo.\nTecla de Atajo: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Obtenga una vista previa de la máscara de contraste de nitidez . \n Tecla de atajo: p \n\nSólo funciona cuando la nitidez está activada y el zoom> = 100%. +MAIN_TOOLTIP_QINFO; Información breve de la imagen.\nTecla de Atajo : i +MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/ocultar el panel izquierdo.\nTecla de Atajo: l +MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/ocultar el panel derecho.\nTecla de Atajo: Alt-L +MAIN_TOOLTIP_SHOWHIDETP1;Mostrar/ocultar el panel superior.\nTecla de Atajo: Shift-L MAIN_TOOLTIP_THRESHOLD;Umbral -MAIN_TOOLTIP_TOGGLE;Cambiar vista antes/después.\nAtajo: Shift-B +MAIN_TOOLTIP_TOGGLE;Cambiar vista antes/después.\nTecla de Atajo: Shift-B MONITOR_PROFILE_SYSTEM;Sistema por defecto NAVIGATOR_B;B: NAVIGATOR_G;G: @@ -949,6 +1040,7 @@ PARTIALPASTE_CROP;Recortar PARTIALPASTE_DARKFRAMEAUTOSELECT;Auto Selección de la Toma Negra PARTIALPASTE_DARKFRAMEFILE;Archivo con Toma negra PARTIALPASTE_DEFRINGE;Eliminar borde púrpura +PARTIALPASTE_DEHAZE;Remoción de neblina PARTIALPASTE_DETAILGROUP;Ajustes de detalle PARTIALPASTE_DIALOGLABEL;Pegar parcialmente perfil de procesamiento PARTIALPASTE_DIRPYRDENOISE;Reducción de ruido @@ -982,13 +1074,16 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Aplicar filtro Pixel Muerto PARTIALPASTE_PREPROCESS_GREENEQUIL;Equilibrio del verde PARTIALPASTE_PREPROCESS_HOTPIXFILT;Aplicar filtro Pixel Caliente PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtro de ruido de línea +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF filtro de líneas PARTIALPASTE_PRSHARPENING;Enfocar después del cambio de tamaño PARTIALPASTE_RAWCACORR_AUTO;Auto corrección de Aberración Cromática +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA evitar el cambio de color PARTIALPASTE_RAWCACORR_CAREDBLUE;CA Rojo & Azul PARTIALPASTE_RAWEXPOS_BLACK;Nivel de negro PARTIALPASTE_RAWEXPOS_LINEAR;Corrección de punto blanco PARTIALPASTE_RAWEXPOS_PRESER;Preservar Luces Altas PARTIALPASTE_RAWGROUP;Ajustes Raw +PARTIALPASTE_RAW_BORDER;Raw margen/borde PARTIALPASTE_RAW_DCBENHANCE;Aplicar paso de mejora DCB PARTIALPASTE_RAW_DCBITERATIONS;Número de iteraciones DCB PARTIALPASTE_RAW_DMETHOD;Método de interpolado @@ -1004,11 +1099,18 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Sombras/Luces altas PARTIALPASTE_SHARPENEDGE;Bordes PARTIALPASTE_SHARPENING;Enfoque PARTIALPASTE_SHARPENMICRO;Micro-contraste +PARTIALPASTE_SOFTLIGHT;Luz tenue PARTIALPASTE_TM_FATTAL;Mapeo de tonos HDR PARTIALPASTE_VIBRANCE;Vibranza PARTIALPASTE_VIGNETTING;Corrección de viñeteo PARTIALPASTE_WHITEBALANCE;Equilibrio de blancos PREFERENCES_ADD;Añadir +PREFERENCES_APPEARANCE;Apariencia +PREFERENCES_APPEARANCE_COLORPICKERFONT;Selector del color de la fuente +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Recortar la máscara de color +PREFERENCES_APPEARANCE_MAINFONT;Fuente principal +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Color de la guía del navegador +PREFERENCES_APPEARANCE_THEME;Tema PREFERENCES_APPLNEXTSTARTUP;requiere reinicio PREFERENCES_AUTLISLOW;Bajo PREFERENCES_AUTLISMAX;Max - Promedio de todos los mosaicos @@ -1025,9 +1127,14 @@ PREFERENCES_BEHAVIOR;Comportamiento PREFERENCES_BEHSETALL;Todo para 'Establecer' PREFERENCES_BEHSETALLHINT;Todos los parámetros para el modo Establecer.\nLos ajustes de parámetros en el panel de la herramienta de lotes serán serán absolutos, se mostrarán los valores vigentes PREFERENCES_BLACKBODY;Tungsteno +PREFERENCES_CACHECLEAR;Borrar PREFERENCES_CACHECLEARALL;Borrar todo PREFERENCES_CACHECLEARPROFILES;Borrar perfiles PREFERENCES_CACHECLEARTHUMBS;Borrar miniaturas +PREFERENCES_CACHECLEAR_ALL;Borrar todos los archivos en caché: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Borre todos los archivos en caché excepto los perfiles de procesamiento en caché: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Borrar solo los perfiles de procesamiento en caché: +PREFERENCES_CACHECLEAR_SAFETY;Sólo se borran los archivos en el caché. Los perfiles de procesamiento almacenados junto con las imágenes de origen no se tocan. PREFERENCES_CACHEMAXENTRIES;Cantidad máxima de entradas en la memoria intermedia PREFERENCES_CACHEOPTS;Opciones de memoria intermedia PREFERENCES_CACHETHUMBHEIGHT;Altura máxima de las miniaturas @@ -1110,7 +1217,7 @@ PREFERENCES_GREYSC18;Yb=18 CIE L#50 PREFERENCES_GREYSCA;Automático PREFERENCES_HISTOGRAMPOSITIONLEFT;Histograma en panel izquierdo PREFERENCES_HISTOGRAMWORKING;Usar perfil de trabajo para el histograma principal y el navegador -PREFERENCES_HISTOGRAM_TOOLTIP;Si está activado, el perfil de trabajo se utiliza para renderizar el histograma principal y el panel navegador, de lo contrario se utiliza el perfil de Gamma Corregida de salida. +PREFERENCES_HISTOGRAM_TOOLTIP;Si está activado, el perfil de trabajo se utiliza para renderizar el histograma principal y el panel navegador, de lo contrario se utiliza el perfil de Gamma de la Corrección de salida. PREFERENCES_HLTHRESHOLD;Umbral de luces altas cortadas PREFERENCES_ICCDIR;Carpeta con perfiles de color ICC PREFERENCES_IMG_RELOAD_NEEDED;Estos cambios requieren que la imagen se vuelva a cargar (o que se abra una nueva imagen) para que tenga efecto. @@ -1162,6 +1269,8 @@ PREFERENCES_PARSEDEXTADDHINT;Ingrese una extensión y pulse este botón para agr PREFERENCES_PARSEDEXTDELHINT;Borrar de la lista las extensiones seleccionadas PREFERENCES_PARSEDEXTDOWNHINT;Mueve la extensión seleccionada hacia abajo en la lista. PREFERENCES_PARSEDEXTUPHINT;Mueve la extensión seleccionada hacia arriba en la lista. +PREFERENCES_PERFORMANCE_THREADS;Hilos(Procesos) +PREFERENCES_PERFORMANCE_THREADS_LABEL;Número máximo de subprocesos para reducción de ruido y niveles de wavelet (0 = automático) PREFERENCES_PREVDEMO;Vista previa del método Desmosaicado PREFERENCES_PREVDEMO_FAST;Rápido PREFERENCES_PREVDEMO_LABEL;Método de desmosaicado utilizado para la vista previa al <100% de zoom: @@ -1205,6 +1314,7 @@ PREFERENCES_SMA;A una escala pequeña(250x287) PREFERENCES_SND_BATCHQUEUEDONE;Trabajos en cola finalizados PREFERENCES_SND_HELP;Introducir el path o dejar en blanco (sin sonido). En Windows, usar "SystemDefault", "SystemAsterisk" etc. para los sonidos del sistema\nEn Linux use "complete", "window-attention" etc. para los sonidos del sistema. PREFERENCES_SND_LNGEDITPROCDONE;Procesado del editor terminado +PREFERENCES_SND_THRESHOLDSECS;Despues de segundos PREFERENCES_SND_TRESHOLDSECS;después de seg. PREFERENCES_STARTUPIMDIR;Carpeta de imágenes en el arranque PREFERENCES_STDAUT;Estándar @@ -1216,6 +1326,10 @@ PREFERENCES_TAB_IMPROC;Procesamiento de imágenes PREFERENCES_TAB_PERFORMANCE;Rendimiento PREFERENCES_TAB_SOUND;Sonidos PREFERENCES_THEME;Tema +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Vista previa de JPEG incrustado +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagen para mostrar +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Representación (Render) Raw neutral +PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG incrustado si es de tamaño completo, de lo contrario es neutral sin formato PREFERENCES_TIMAX;Alto PREFERENCES_TINB;Número de mosaicos PREFERENCES_TISTD;Estándar @@ -1271,9 +1385,14 @@ QINFO_PIXELSHIFT;Pixel variación /% 2 cuadro(s) SAMPLEFORMAT_0;Formato de datos desconocido SAMPLEFORMAT_1;Sin firma 8 bits SAMPLEFORMAT_2;Sin firma 16 bits +SAMPLEFORMAT_4;24-bit LogLuv +SAMPLEFORMAT_8;32-bit LogLuv SAMPLEFORMAT_16;Punto flotante de 32 bits +SAMPLEFORMAT_32;24-bit punto flotante +SAMPLEFORMAT_64;32-bit punto flotante SAVEDLG_AUTOSUFFIX;Automáticamente añade un sufijo cuando el archivo ya existe SAVEDLG_FILEFORMAT;Formato de archivo +SAVEDLG_FILEFORMAT_FLOAT; punto flotante SAVEDLG_FORCEFORMATOPTS;Opciones de guardar forzado SAVEDLG_JPEGQUAL;Calidad JPEG SAVEDLG_PNGCOMPR;Compresión PNG @@ -1299,11 +1418,11 @@ THRESHOLDSELECTOR_HINT;Mantenga la tecla Mayús presionada para mover pun THRESHOLDSELECTOR_T;Superior THRESHOLDSELECTOR_TL;Superior izquierdo THRESHOLDSELECTOR_TR;Superior derecho -TOOLBAR_TOOLTIP_COLORPICKER;Selector de color bloqueable \nCuando esté habilitado: \nHaga clic en la vista previa con el botón izquierdo del ratón para agregar un selector de color \nArrastre alrededor mientras presiona el botón izquierdo del mouse \ nElimine el selector de color con el botón derecho del mouse haga clic en \nEliminar todos los selectores de color con Mayús + clic con el botón derecho del mouse \nHaz clic derecho para alejarse de cualquier selector de color y volver a la herramienta Mano -TOOLBAR_TOOLTIP_CROP;Selección de recorte.\nAtajo: c -TOOLBAR_TOOLTIP_HAND;Herramienta mano.\nAtajo: h -TOOLBAR_TOOLTIP_STRAIGHTEN;Enderezado / Rotación Fina.\nAtajo: s\n\nIndique la vertical u horizontal trazando una línea guía sobre la vista previa de la imagen. El ángulo de rotación será mostrado al continuación de la línea guía. El centro de la imagen es el centro de rotación. -TOOLBAR_TOOLTIP_WB;Muestrea equilibrio de blancos.\nAtajo: w +TOOLBAR_TOOLTIP_COLORPICKER;Selector de color bloqueable \nCuando esté habilitado: \nHaga clic en la vista previa con el botón izquierdo del ratón para agregar un selector de color \nArrastre alrededor mientras presiona el botón izquierdo del mouse \nElimine el selector de color con el botón derecho del mouse haga clic en \nEliminar todos los selectores de color con Mayús + clic con el botón derecho del mouse \nHaz clic derecho para alejarse de cualquier selector de color y volver a la herramienta Mano +TOOLBAR_TOOLTIP_CROP;Selección de recorte.\nTecla de Atajo: c +TOOLBAR_TOOLTIP_HAND;Herramienta mano.\nTecla de Atajo: h +TOOLBAR_TOOLTIP_STRAIGHTEN;Enderezado / Rotación Fina.\nTecla de Atajo: s\n\nIndique la vertical u horizontal trazando una línea guía sobre la vista previa de la imagen. El ángulo de rotación será mostrado al continuación de la línea guía. El centro de la imagen es el centro de rotación. +TOOLBAR_TOOLTIP_WB;Muestrea equilibrio de blancos.\nTecla de Atajo: w TP_BWMIX_ALGO;Algoritmo OYCPM TP_BWMIX_ALGO_LI;Lineal TP_BWMIX_ALGO_SP;Efectos especiales @@ -1376,10 +1495,11 @@ TP_CHMIXER_GREEN;Canal Verde TP_CHMIXER_LABEL;Mezclador de canales TP_CHMIXER_RED;Canal Rojo TP_CHROMATABERR_LABEL;Aberración cromática (AC) -TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nAtajo: '[' -TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nAtajo: ']' +TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nTecla de Atajo: '[' +TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nTecla de Atajo: ']' TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotar a la derecha TP_COARSETRAF_TOOLTIP_VFLIP;Voltear verticalmente +TP_COLORAPP_ABSOLUTELUMINANCE;Luminancia absoluta TP_COLORAPP_ADAPTSCENE;Adaptación a la luminosidad de la escena TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminancia absoluta del entorno de la escena (cd/m²).\n1) Calculado en base a datos Exif: \nTiempo de Exposición - Velocidad ISO - Número F de apertura - Corrección de exposición\n2) Calculado a partir del Punto Blanco raw y Compensación de Exposición RT. TP_COLORAPP_ADAPTVIEWING;Luminosidad de visualización (cd/m²) @@ -1395,6 +1515,7 @@ TP_COLORAPP_BADPIXSL;Filtro de píxeles calientes/muertos TP_COLORAPP_BADPIXSL_TOOLTIP;Supresión de píxeles calientes/muertos (con coloreado brillante).\n 0 = Sin efecto \n 1 = Mediana \n 2 = Gaussiano.\n\nEstos elementos extraños son causados por limitaciones de CIECAM02. Como alternativa, ajuste la imagen para evitar sombras muy oscuras. TP_COLORAPP_BRIGHT;Brillo (Q) TP_COLORAPP_BRIGHT_TOOLTIP;En CIECAM02 el Brillo tiene en cuenta la luminosidad de los blancos y es diferente al de Lab y al de RGB +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Cuando se configura manualmente, se recomiendan valores por encima de 65. TP_COLORAPP_CHROMA;Crominancia (C) TP_COLORAPP_CHROMA_M;Colorido (M) TP_COLORAPP_CHROMA_M_TOOLTIP;El Colorido CIECAM02 es diferente al de Lab y al de RGB @@ -1427,6 +1548,7 @@ TP_COLORAPP_LABEL_SCENE;Condiciones de la escena TP_COLORAPP_LABEL_VIEWING;Condiciones de visualización TP_COLORAPP_LIGHT;Claridad (J) TP_COLORAPP_LIGHT_TOOLTIP;Claridad en CIECAM02 es diferente a la de Lab y a la de RGB +TP_COLORAPP_MEANLUMINANCE;Luminancia media (Yb%) TP_COLORAPP_MODEL;Modelo de Punto Blanco TP_COLORAPP_MODEL_TOOLTIP;Modelo de Punto Blanco\n\nWB [RT] + [salida]:\nEl Balance de Blancos de RT es usado para la escena, CIECAM02 es establecido a D50, y el Balance de Blancos del dispositivo de salida es el establecido en Preferencias > Gestión de Color\n\nWB [RT+CAT02] + [salida]:\nEl Balance de Blancos de RT es usado por CAT02 y el del dispositivo de salida es el establecido en preferencias TP_COLORAPP_NEUTRAL;Restablecer @@ -1454,6 +1576,7 @@ TP_COLORAPP_TCMODE_SATUR;Saturación TP_COLORAPP_TEMP_TOOLTIP;Para seleccionar un iluminante, configure siempre Tinte = 1. \nA temperatura = 2856 \nD50 temperatura = 5003 \nD55 temperatura = 5503 \nD65 temperatura = 6504 \nD75 temperatura = 7504 TP_COLORAPP_TONECIE;Mapeo tonal usando Brillo (Q) CIECAM02. TP_COLORAPP_TONECIE_TOOLTIP;Si esta opción no está seleccionada, el mapeo tonal se hace usando el espacio de color Lab.\nSi esta opción está seleccionada, el mapeo tonal se hace usando CIECAM02.\nLa herramienta de mapeo tonal debe de estar habilitada para que esta selección tenga efecto +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminancia absoluta del entorno de visualización \ n (normalmente 16 cd / m²). TP_COLORAPP_WBCAM;BalBlanco [RT+CAT02] + [salida] TP_COLORAPP_WBRT;BalBlanco [RT] + [salida] TP_COLORAPP_YB;Yb% (luminancia media) @@ -1472,6 +1595,25 @@ TP_COLORTONING_LAB;Mezcla Lab TP_COLORTONING_LABEL;Tonificación de Color TP_COLORTONING_LABGRID;L*a*b* cuadrícula de corrección del color TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;Regiones de corrección de color +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Canal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Todos +TP_COLORTONING_LABREGION_CHANNEL_B;Azul +TP_COLORTONING_LABREGION_CHANNEL_G;Verde +TP_COLORTONING_LABREGION_CHANNEL_R;Rojo +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Luminosidad +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Corrección +TP_COLORTONING_LABREGION_MASK;Máscara +TP_COLORTONING_LABREGION_MASKBLUR;Desenfoque de la máscara +TP_COLORTONING_LABREGION_OFFSET;Compensar +TP_COLORTONING_LABREGION_POWER;Potencia +TP_COLORTONING_LABREGION_SATURATION;Saturación +TP_COLORTONING_LABREGION_SHOWMASK;Mostrar máscara +TP_COLORTONING_LABREGION_SLOPE;Bajar TP_COLORTONING_LUMA;Luminancia TP_COLORTONING_LUMAMODE;Preservar luminancia TP_COLORTONING_LUMAMODE_TOOLTIP;Si está activado, cuando se cambia el color(rojo, verde, cian, azul, etc.) la luminancia de cada pixel es preservada. @@ -1511,6 +1653,7 @@ TP_CROP_GUIDETYPE;Clase de guía: TP_CROP_H;Al TP_CROP_LABEL;Recortar TP_CROP_PPI;Ptos/Pulgada= +TP_CROP_RESETCROP;Reiniciar TP_CROP_SELECTCROP;Seleccionar recorte TP_CROP_W;Ancho TP_CROP_X;x @@ -1520,6 +1663,10 @@ TP_DARKFRAME_LABEL;Toma Negra TP_DEFRINGE_LABEL;Quitar borde púrpura TP_DEFRINGE_RADIUS;Radio TP_DEFRINGE_THRESHOLD;Umbral +TP_DEHAZE_DEPTH;Profundidad +TP_DEHAZE_LABEL;Eliminación de neblina +TP_DEHAZE_SHOW_DEPTH_MAP;Mostrar mapa de profundidad +TP_DEHAZE_STRENGTH;Fuerza TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Control automático de multi-zonas TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Control automático global TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Trate de evaluar el ruido del color \nTenga cuidado, este cálculo es promedio y es bastante subjetivo. @@ -1607,6 +1754,7 @@ TP_EXPOSURE_AUTOLEVELS;Niveles automáticos TP_EXPOSURE_AUTOLEVELS_TIP;Ejecuta Niveles Automáticos. Establece automáticamente los valores de los parámetros basándose en el análisis de la imagen.\nHabilita la reconstrucción de luces altas si es necesario TP_EXPOSURE_BLACKLEVEL;Nivel de Negro TP_EXPOSURE_BRIGHTNESS;Brillo +TP_EXPOSURE_CLAMPOOG;Corte fuera de la gama de colores TP_EXPOSURE_CLIP;Recorte % TP_EXPOSURE_CLIP_TIP;Fracción de los píxeles que se recortará en una operación de Niveles Automáticos TP_EXPOSURE_COMPRHIGHLIGHTS;Compresión de luces altas @@ -1709,6 +1857,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Guardar la imagen TIFF lineal antes de aplicar el p TP_ICM_TONECURVE;Usar la curva tonal en DCP TP_ICM_TONECURVE_TOOLTIP;Activa el uso de las curvas de tono que pueden contener los perfiles DCP. Este ajuste es posible solo si el DCP seleccionado contiene una curva tonal. TP_ICM_WORKINGPROFILE;Perfil de trabajo +TP_ICM_WORKING_TRC;Curva de respuesta de tono: +TP_ICM_WORKING_TRC_CUSTOM;Personalizado +TP_ICM_WORKING_TRC_GAMMA;Gamma +TP_ICM_WORKING_TRC_NONE;Ninguna/o +TP_ICM_WORKING_TRC_SLOPE;Bajar +TP_ICM_WORKING_TRC_TOOLTIP;Solo para perfiles incorporados. TP_IMPULSEDENOISE_LABEL;Impulsar Reducc. ruido TP_IMPULSEDENOISE_THRESH;Umbral TP_LABCURVE_AVOIDCOLORSHIFT;Evitar desplazamiento de colores @@ -1751,10 +1905,19 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Puede usarse con el deslizador Cromaticidad y con la TP_LENSGEOM_AUTOCROP;Auto recorte TP_LENSGEOM_FILL;Auto relleno TP_LENSGEOM_LABEL;Lente / Geometría +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automáticamente +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP archivo +TP_LENSPROFILE_CORRECTION_MANUAL;Manual TP_LENSPROFILE_LABEL;Perfil de corrección de lente +TP_LENSPROFILE_LENS_WARNING;Advertencia: el factor de recorte utilizado para el perfilado de la lente es mayor que el factor de recorte de la cámara, los resultados pueden ser incorrectos. +TP_LENSPROFILE_MODE_HEADER;Seleccione el perfil de la lente: TP_LENSPROFILE_USECA;Corrección de AC TP_LENSPROFILE_USEDIST;Corrección de distorsión TP_LENSPROFILE_USEVIGN;Corrección de viñeteo +TP_LENSPROFILE_USE_CA;Aberración cromática +TP_LENSPROFILE_USE_GEOMETRIC;Geométrico +TP_LENSPROFILE_USE_HEADER;Seleccione distorsiones para corregir: +TP_LENSPROFILE_USE_VIGNETTING;Viñeteado TP_LOCALCONTRAST_AMOUNT;Cantidad TP_LOCALCONTRAST_DARKNESS;Nivel de sombras TP_LOCALCONTRAST_LABEL;Contraste local @@ -1785,10 +1948,19 @@ TP_PREPROCESS_HOTPIXFILT;Filtro Pixel Caliente TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Trata de eliminar los píxeles calientes. TP_PREPROCESS_LABEL;Preprocesado TP_PREPROCESS_LINEDENOISE;Filtro de ruido de línea +TP_PREPROCESS_LINEDENOISE_DIRECTION;Dirección +TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Ambos +TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal +TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal solo en filas PDAF +TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;No encontrado +TP_PREPROCESS_PDAFLINESFILTER;PDAF filtro de líneas TP_PRSHARPENING_LABEL;Enfocar después del cambio de tamaño TP_PRSHARPENING_TOOLTIP;Enfoca la imagen después de cambiar el tamaño. Solo funciona cuando se utiliza el método de cambio de tamaño "Lanczos". Es imposible previsualizar los efectos de esta herramienta. Ver RawPedia para instrucciones de uso. TP_RAWCACORR_AUTO;Auto corrección +TP_RAWCACORR_AUTOIT;Iterations +TP_RAWCACORR_AUTOIT_TOOLTIP;Esta configuración está disponible si se marca "Corrección automática". \nLa autocorrección es conservadora, lo que significa que a menudo no corrige toda la aberración cromática. \nPara corregir la aberración cromática restante, puede usar hasta cinco iteraciones de aberración cromática automática. corrección. \nCada iteración reducirá la aberración cromática restante de la última iteración al costo de un tiempo de procesamiento adicional. +TP_RAWCACORR_AVOIDCOLORSHIFT;Evitar el cambio de color TP_RAWCACORR_CABLUE;Azul TP_RAWCACORR_CARED;Rojo TP_RAWCACORR_CASTR;Fuerza @@ -1805,16 +1977,24 @@ TP_RAWEXPOS_PRESER;Preservación de Luces Altas TP_RAWEXPOS_RGB;Rojo, Verde, Azul TP_RAWEXPOS_TWOGREEN;Vincular verdes TP_RAW_1PASSMEDIUM;1-pasaje (medio) +TP_RAW_2PASS;1-paso+rápido TP_RAW_3PASSBEST;3-Pasaje (Mejor) +TP_RAW_4PASS;3-paso+rápido TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE +TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;Borde TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Aplicar paso de mejora DCB TP_RAW_DCBITERATIONS;Número de iteraciones DCB +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Método TP_RAW_DMETHOD_PROGRESSBAR;%1 interpolando mosaico... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Refinando la interpolación del mosaico... TP_RAW_DMETHOD_TOOLTIP;Nota: IGV y LMMSE están dedicados a imágenes tomadas con grandes velocidades ISO +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Umbral automático +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Si la casilla está marcada (recomendado), RawTherapee calcula un valor óptimo según las regiones planas de la imagen. \nSi no hay una región plana en la imagen o la imagen es demasiado ruidosa, el valor se establecerá en 0. \nPara establecer manualmente el valor, desmarque la casilla de verificación primero (los valores razonables dependen de la imagen). +TP_RAW_DUALDEMOSAICCONTRAST;Umbral de contraste TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Pasos de supresión de color falso TP_RAW_FAST;Fast @@ -1833,6 +2013,7 @@ TP_RAW_NONE;Ninguno (muestra el patrón del sensor) TP_RAW_PIXELSHIFT;Cambio de píxel TP_RAW_PIXELSHIFTADAPTIVE;Detección adaptativa TP_RAW_PIXELSHIFTBLUR;Máscara de movimiento de desenfoque +TP_RAW_PIXELSHIFTDMETHOD;Demosaicado, método para el movimiento TP_RAW_PIXELSHIFTEPERISO;ISO adaptación TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;El valor predeterminado de 0 debería funcionar bien para la base ISO. \nAumente el valor para mejorar la detección del movimiento para una ISO más alta. \nAumente en pequeños pasos y observe la máscara de movimiento mientras aumenta. TP_RAW_PIXELSHIFTEQUALBRIGHT;Ecualiza el brillo de los cuadros. @@ -1879,10 +2060,12 @@ TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;Factor de StdDev Azul TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;Factor de StdDev Verde TP_RAW_PIXELSHIFTSTDDEVFACTORRED;Factor de StdDev Rojo TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Sensor con matriz Bayer TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pases da mejores resultados (recomendado para imágenes de ISO bajo).\n1-pase es más rápido y es casi indistinguible del modo 3-pases para imágenes de ISO altas. TP_RAW_SENSOR_XTRANS_LABEL;Sensor con matriz X-Trans TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Permitir escalado TP_RESIZE_APPLIESTO;Aplica a: TP_RESIZE_CROPPEDAREA;Área recortada TP_RESIZE_FITBOX;Rectángulo límite @@ -1987,7 +2170,7 @@ TP_RGBCURVES_RED;R TP_ROTATE_DEGREE;Grados TP_ROTATE_LABEL;Rotar TP_ROTATE_SELECTLINE;Seleccionar línea recta -TP_SAVEDIALOG_OK_TIP;Atajo Ctrl-Enter +TP_SAVEDIALOG_OK_TIP;Tecla de Atajo Ctrl-Enter TP_SHADOWSHLIGHTS_HIGHLIGHTS;Luces altas TP_SHADOWSHLIGHTS_HLTONALW;Ancho tonal de Luces Altas TP_SHADOWSHLIGHTS_LABEL;Sombras/Luces altas @@ -2001,6 +2184,7 @@ TP_SHARPENEDGE_LABEL;Bordes TP_SHARPENEDGE_PASSES;Iteraciones TP_SHARPENEDGE_THREE;Sólo luminancia TP_SHARPENING_AMOUNT;Cantidad +TP_SHARPENING_CONTRAST;Umbral de contraste TP_SHARPENING_EDRADIUS;Radio TP_SHARPENING_EDTOLERANCE;Tolerancia de bordes TP_SHARPENING_HALOCONTROL;Control de halo @@ -2016,11 +2200,14 @@ TP_SHARPENING_RLD_ITERATIONS;Iteraciones TP_SHARPENING_THRESHOLD;Umbral TP_SHARPENING_USM;Máscara de enfoque TP_SHARPENMICRO_AMOUNT;Cantidad +TP_SHARPENMICRO_CONTRAST;Umbral de contraste TP_SHARPENMICRO_LABEL;Microcontraste TP_SHARPENMICRO_MATRIX;Matriz 3×3 en lugar de 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformidad +TP_SOFTLIGHT_LABEL;Luz tenue +TP_SOFTLIGHT_STRENGTH;Fuerza TP_TM_FATTAL_AMOUNT;Cantidad -TP_TM_FATTAL_ANCHORAncla +TP_TM_FATTAL_ANCHOR;Ancla TP_TM_FATTAL_LABEL;HDR Mapeo de tonos TP_TM_FATTAL_THRESHOLD;Límite TP_VIBRANCE_AVOIDCOLORSHIFT;Evitar desplazamiento de color @@ -2191,6 +2378,7 @@ TP_WAVELET_SETTINGS;Configuraciones Wavelet TP_WAVELET_SKIN;Enfocar piel/proteción TP_WAVELET_SKIN_TOOLTIP;A (menos)-100 los tonos de piel están afectados. \nA 0 todos los tonos se tratan por igual. \nA +100 los tonos de piel están protegidos, mientras que todos los demás tonos están afectados. TP_WAVELET_SKY;protección del cielo al enfocar +TP_WAVELET_SKY_TOOLTIP;A -100 se apuntan los tonos del cielo. \nEn 0 todos los tonos se tratan por igual. \nEn +100 los tonos del cielo están protegidos, mientras que todos los demás tonos están afectados. TP_WAVELET_SKY_TOOLTIPEn (menos)-100se afecta a los tonos del cielo. \nEn 0 todos los tonos se tratan por igual. \nen +100 los tonos del cielo están protegidos, mientras que todos los demás tonos están afectados. TP_WAVELET_STREN;Fuerza TP_WAVELET_STRENGTH;Fuerza @@ -2244,6 +2432,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Método +TP_WBALANCE_PICKER;Seleccionar TP_WBALANCE_SHADE;Sombra TP_WBALANCE_SIZE;Tamaño: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2260,204 +2449,15 @@ TP_WBALANCE_WATER2;Subacuático 2 TP_WBALANCE_WATER_HEADER;Subacuático ZOOMPANEL_100;(100%) ZOOMPANEL_NEWCROPWINDOW;Abrir (nueva) ventana de detalle -ZOOMPANEL_ZOOM100;Zoom al 100%\nAtajo: z +ZOOMPANEL_ZOOM100;Zoom al 100%\nTecla de Atajo: z ZOOMPANEL_ZOOMFITCROPSCREEN;Ajustar el recorte a la pantalla \nCorte corto: f -ZOOMPANEL_ZOOMFITSCREEN;Ajustar a pantalla\nAtajo: Alt-f -ZOOMPANEL_ZOOMIN;Aumentar Zoom\nAtajo: + -ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - +ZOOMPANEL_ZOOMFITSCREEN;Ajustar a pantalla\nTecla de Atajo: Alt-f +ZOOMPANEL_ZOOMIN;Aumentar Zoom\nTecla de Atajo: + +ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: - !!!!!!!!!!!!!!!!!!!!!!!!! ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!DYNPROFILEEDITOR_IMGTYPE_ANY;Any -!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR -!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift -!DYNPROFILEEDITOR_IMGTYPE_STD;Standard -!EXIFFILTER_IMAGETYPE;Image type -!GENERAL_CURRENT;Current -!GENERAL_RESET;Reset -!GENERAL_SAVE_AS;Save as... -!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors -!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask -!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask -!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List -!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur -!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset -!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask -!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope -!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth -!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal -!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map -!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength -!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold -!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries -!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D -!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type -!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma -!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope -!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method -!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold -!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion -!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction -!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold -!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!ICCPROFCREATOR_COPYRIGHT;Copyright: -!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" -!ICCPROFCREATOR_CUSTOM;Custom -!ICCPROFCREATOR_DESCRIPTION;Description: -!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description -!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description. -!ICCPROFCREATOR_GAMMA;Gamma -!ICCPROFCREATOR_ICCVERSION;ICC version: -!ICCPROFCREATOR_ILL;Illuminant: -!ICCPROFCREATOR_ILL_41;D41 -!ICCPROFCREATOR_ILL_50;D50 -!ICCPROFCREATOR_ILL_55;D55 -!ICCPROFCREATOR_ILL_60;D60 -!ICCPROFCREATOR_ILL_65;D65 -!ICCPROFCREATOR_ILL_80;D80 -!ICCPROFCREATOR_ILL_DEF;Default -!ICCPROFCREATOR_ILL_INC;StdA 2856K -!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles. -!ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 -!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) -!ICCPROFCREATOR_PRIM_BEST;BestRGB -!ICCPROFCREATOR_PRIM_BETA;BetaRGB -!ICCPROFCREATOR_PRIM_BLUX;Blue X -!ICCPROFCREATOR_PRIM_BLUY;Blue Y -!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB -!ICCPROFCREATOR_PRIM_GREX;Green X -!ICCPROFCREATOR_PRIM_GREY;Green Y -!ICCPROFCREATOR_PRIM_PROPH;Prophoto -!ICCPROFCREATOR_PRIM_REC2020;Rec2020 -!ICCPROFCREATOR_PRIM_REDX;Red X -!ICCPROFCREATOR_PRIM_REDY;Red Y -!ICCPROFCREATOR_PRIM_SRGB;sRGB -!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles. -!ICCPROFCREATOR_PRIM_WIDEG;Widegamut -!ICCPROFCREATOR_PROF_V2;ICC v2 -!ICCPROFCREATOR_PROF_V4;ICC v4 -!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... -!ICCPROFCREATOR_SLOPE;Slope -!ICCPROFCREATOR_TRC_PRESET;Tone response curve: -!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. -!PARTIALPASTE_DEHAZE;Haze removal -!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_SOFTLIGHT;Soft light -!PREFERENCES_APPEARANCE;Appearance -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color -!PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_CACHECLEAR;Clear -!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: -!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: -!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: -!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_SND_THRESHOLDSECS;After seconds -!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!SAMPLEFORMAT_4;24-bit LogLuv -!SAMPLEFORMAT_8;32-bit LogLuv -!SAMPLEFORMAT_32;24-bit floating-point -!SAMPLEFORMAT_64;32-bit floating-point -!SAVEDLG_FILEFORMAT_FLOAT; floating-point -!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance -!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. -!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). -!TP_COLORTONING_LABREGIONS;Color correction regions -!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -!TP_COLORTONING_LABREGION_CHANNEL;Channel -!TP_COLORTONING_LABREGION_CHANNEL_ALL;All -!TP_COLORTONING_LABREGION_CHANNEL_B;Blue -!TP_COLORTONING_LABREGION_CHANNEL_G;Green -!TP_COLORTONING_LABREGION_CHANNEL_R;Red -!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -!TP_COLORTONING_LABREGION_HUEMASK;H -!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -!TP_COLORTONING_LABREGION_LIST_TITLE;Correction -!TP_COLORTONING_LABREGION_MASK;Mask -!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur -!TP_COLORTONING_LABREGION_OFFSET;Offset -!TP_COLORTONING_LABREGION_POWER;Power -!TP_COLORTONING_LABREGION_SATURATION;Saturation -!TP_COLORTONING_LABREGION_SHOWMASK;Show mask -!TP_COLORTONING_LABREGION_SLOPE;Slope -!TP_CROP_RESETCROP;Reset -!TP_DEHAZE_DEPTH;Depth -!TP_DEHAZE_LABEL;Haze Removal -!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map -!TP_DEHAZE_STRENGTH;Strength -!TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors -!TP_ICM_WORKING_TRC;Tone response curve: -!TP_ICM_WORKING_TRC_CUSTOM;Custom -!TP_ICM_WORKING_TRC_GAMMA;Gamma -!TP_ICM_WORKING_TRC_NONE;None -!TP_ICM_WORKING_TRC_SLOPE;Slope -!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically -!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually -!TP_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. -!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -!TP_LENSPROFILE_USE_CA;Chromatic aberration -!TP_LENSPROFILE_USE_GEOMETRIC;Geometric -!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: -!TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction -!TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both -!TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal -!TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows -!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical -!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!CURVEEDITOR_CATMULLROM;Flexible !TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_4PASS;3-pass+fast -!TP_RAW_AMAZEVNG4;AMaZE+VNG4 -!TP_RAW_BORDER;Border -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). -!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_WAVELET_SKY_TOOLTIP;At -100 sky-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 sky-tones are protected while all other tones are affected. -!TP_WBALANCE_PICKER;Pick From 95b1fb77a113d9093ce9331771981e6e2888a967 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 09:21:20 +0100 Subject: [PATCH 309/348] generateTranslationDiffs --- rtdata/languages/Catala | 1 + rtdata/languages/Chinese (Simplified) | 1 + rtdata/languages/Chinese (Traditional) | 3 ++- rtdata/languages/Czech | 1 + rtdata/languages/Dansk | 3 ++- rtdata/languages/Deutsch | 5 +++++ rtdata/languages/English (UK) | 3 ++- rtdata/languages/English (US) | 3 ++- rtdata/languages/Euskara | 3 ++- rtdata/languages/Francais | 5 +++++ rtdata/languages/Greek | 3 ++- rtdata/languages/Hebrew | 3 ++- rtdata/languages/Italiano | 1 + rtdata/languages/Japanese | 1 + rtdata/languages/Latvian | 3 ++- rtdata/languages/Magyar | 1 + rtdata/languages/Nederlands | 1 + rtdata/languages/Norsk BM | 3 ++- rtdata/languages/Polish | 1 + rtdata/languages/Polish (Latin Characters) | 1 + rtdata/languages/Portugues (Brasil) | 1 + rtdata/languages/Russian | 1 + rtdata/languages/Serbian (Cyrilic Characters) | 1 + rtdata/languages/Serbian (Latin Characters) | 1 + rtdata/languages/Slovak | 1 + rtdata/languages/Suomi | 3 ++- rtdata/languages/Swedish | 1 + rtdata/languages/Turkish | 3 ++- 28 files changed, 47 insertions(+), 11 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 97a973c02..4b763d770 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -940,6 +940,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index fcbaa3275..d95a61092 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -980,6 +980,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DYNPROFILEEDITOR_IMGTYPE_ANY;Any !DYNPROFILEEDITOR_IMGTYPE_HDR;HDR diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 2f04282e4..602c9ecfc 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -432,9 +432,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 0d23d40c4..e630ba95d 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2162,6 +2162,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !!!!!!!!!!!!!!!!!!!!!!!!! !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. +!CURVEEDITOR_CATMULLROM;Flexible !DYNPROFILEEDITOR_IMGTYPE_ANY;Any !DYNPROFILEEDITOR_IMGTYPE_HDR;HDR !DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index acc41f01d..83289ba34 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -424,9 +424,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 33bec128f..dce8e1803 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2407,3 +2407,8 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!CURVEEDITOR_CATMULLROM;Flexible diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 76103b42c..84ea433f3 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -138,9 +138,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index cbeccac41..c60c5d64b 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -18,9 +18,10 @@ !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index f1c1b3a3c..c3f519d96 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -425,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 9779e4145..083686c00 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2334,3 +2334,8 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: Alt-f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!CURVEEDITOR_CATMULLROM;Flexible diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 1d5ee7fee..bf6de0f56 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -424,9 +424,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 2bb35e982..d87a3ce00 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -425,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 14ac71ae7..e464017c0 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1291,6 +1291,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 3681fca15..477a1d4ed 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -2340,4 +2340,5 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!CURVEEDITOR_CATMULLROM;Flexible !GENERAL_CURRENT;Current diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 2b56c2937..8d552bed9 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -425,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index a2a9afd96..b211b19f4 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -861,6 +861,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 24d50791d..14e0ebfc6 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2049,6 +2049,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. !BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s +!CURVEEDITOR_CATMULLROM;Flexible !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_IMGTYPE_ANY;Any !DYNPROFILEEDITOR_IMGTYPE_HDR;HDR diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index aec6c8256..e4f2bc1cb 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -424,9 +424,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 72d35b7db..ac9a7c717 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1413,6 +1413,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 909154913..f161f0bb7 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1413,6 +1413,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index ccabad796..bc5316948 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2219,6 +2219,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!CURVEEDITOR_CATMULLROM;Flexible !DYNPROFILEEDITOR_IMGTYPE_ANY;Any !DYNPROFILEEDITOR_IMGTYPE_HDR;HDR !DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 6c211244c..e40077acd 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1433,6 +1433,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !EDIT_OBJECT_TOOLTIP;Displays a widget on the preview window which lets you adjust this tool. !EDIT_PIPETTE_TOOLTIP;To add an adjustment point to the curve, hold the Ctrl key while left-clicking the desired spot in the image preview.\nTo adjust the point, hold the Ctrl key while left-clicking the corresponding area in the preview, then let go of Ctrl (unless you desire fine control) and while still holding the left mouse button move the mouse up or down to move that point up or down in the curve. diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index accfb139e..6b9769309 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1248,6 +1248,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DIRBROWSER_FOLDERS;Folders !DONT_SHOW_AGAIN;Don't show this message again. diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index f0ce781c3..45101faeb 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1248,6 +1248,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !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. !DIRBROWSER_FOLDERS;Folders !DONT_SHOW_AGAIN;Don't show this message again. diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 66debb12b..b8d3726a8 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -512,6 +512,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves !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. diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 8f6ebdc15..9fd0f37c5 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -426,9 +426,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 626afc38b..25504cd8f 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1801,6 +1801,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !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_CATMULLROM;Flexible !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. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index a62704a92..ff8c63d5e 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -425,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;Isı !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !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. !CURVEEDITOR_HIGHLIGHTS;Highlights From 71dcf2ca1aab3f359e70b00fcbd4ecd9092e60c5 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 09:35:44 +0100 Subject: [PATCH 310/348] Updated TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP --- rtdata/languages/Catala | 2 +- rtdata/languages/Chinese (Simplified) | 2 +- rtdata/languages/Chinese (Traditional) | 2 +- rtdata/languages/Dansk | 2 +- rtdata/languages/English (UK) | 2 +- rtdata/languages/English (US) | 2 +- rtdata/languages/Espanol | 2 +- rtdata/languages/Euskara | 2 +- rtdata/languages/Greek | 2 +- rtdata/languages/Hebrew | 2 +- rtdata/languages/Italiano | 2 +- rtdata/languages/Latvian | 2 +- rtdata/languages/Magyar | 2 +- rtdata/languages/Nederlands | 2 +- rtdata/languages/Norsk BM | 2 +- rtdata/languages/Polish | 2 +- rtdata/languages/Polish (Latin Characters) | 2 +- rtdata/languages/Portugues (Brasil) | 2 +- rtdata/languages/Russian | 2 +- rtdata/languages/Serbian (Cyrilic Characters) | 2 +- rtdata/languages/Serbian (Latin Characters) | 2 +- rtdata/languages/Slovak | 2 +- rtdata/languages/Suomi | 2 +- rtdata/languages/Swedish | 2 +- rtdata/languages/Turkish | 2 +- rtdata/languages/default | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 4b763d770..7fe80f35d 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1969,7 +1969,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index d95a61092..ebf3ed441 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1933,7 +1933,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 602c9ecfc..d85d9e310 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1878,7 +1878,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 83289ba34..c5fd26a85 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1875,7 +1875,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 84ea433f3..d05f3e503 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1839,7 +1839,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index c60c5d64b..0c23de3df 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1825,7 +1825,7 @@ !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index c899922b6..b8bf09ef9 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -2460,4 +2460,4 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: - !!!!!!!!!!!!!!!!!!!!!!!!! !CURVEEDITOR_CATMULLROM;Flexible -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index c3f519d96..f55a1800e 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1876,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index bf6de0f56..ce910a515 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1875,7 +1875,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index d87a3ce00..80da66992 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1876,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index e464017c0..82d10a3bb 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1987,7 +1987,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 8d552bed9..0e13f8c87 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1876,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index b211b19f4..c60c315fb 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1961,7 +1961,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 14e0ebfc6..66563fa59 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2318,7 +2318,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index e4f2bc1cb..a079c7b78 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1875,7 +1875,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index ac9a7c717..3e7bde183 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -2004,7 +2004,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index f161f0bb7..a736d608e 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -2004,7 +2004,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index bc5316948..524ca0749 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1744,7 +1744,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal apenas em linhas PDAF TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;Nenhum encontrado TP_PREPROCESS_PDAFLINESFILTER;Filtro de linhas PDAF -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tenta suprimir o ruído de faixas causado por pixels PDAF no sensor, ocorrendo com algumas câmeras mirrorless da Sony em algumas cenas em contraluz com "flare" visível. TP_PRSHARPENING_LABEL;Pós-Redimensionamento de Nitidez TP_PRSHARPENING_TOOLTIP;Focaliza a imagem após o redimensionamento. Funciona somente quando o método de redimensionamento "Lanczos" é usado. É impossível visualizar os efeitos dessa ferramenta. Veja RawPedia para instruções de uso. TP_RAWCACORR_AUTO;Auto correção @@ -2307,6 +2306,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !TP_LENSPROFILE_USE_GEOMETRIC;Geometric !TP_LENSPROFILE_USE_HEADER;Select distortions to correct: !TP_LENSPROFILE_USE_VIGNETTING;Vignetting +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index e40077acd..2a165804e 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -2034,7 +2034,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 6b9769309..11a305f7d 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1988,7 +1988,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 45101faeb..8da1463a6 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1988,7 +1988,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index b8d3726a8..4ddfc9b16 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1891,7 +1891,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 9fd0f37c5..9ad36b161 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1876,7 +1876,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 25504cd8f..61a5a5d2a 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -2190,7 +2190,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index ff8c63d5e..f8ec2b768 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1875,7 +1875,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/default b/rtdata/languages/default index e53550a0d..f31ec4bec 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1824,7 +1824,7 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;None found TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. +TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. 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. TP_RAWCACORR_AUTO;Auto-correction From ad2fc472ef71ba5bb234ac0648153ce2459fbd65 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 11 Dec 2018 13:26:12 +0100 Subject: [PATCH 311/348] Do not show console window when started in remote mode (-R) --- rtgui/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/main.cc b/rtgui/main.cc index 7789b75ed..8996ee01d 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -536,7 +536,7 @@ int main (int argc, char **argv) bool Console = true; for (int i = 1; i < argc; i++) - if (!strcmp (argv[i], "-w")) { + if (!strcmp (argv[i], "-w") || !strcmp (argv[i], "-R")) { Console = false; break; } From e91df4d59f6405f1e7b2da1e98704feb11c43596 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 11 Dec 2018 15:57:17 +0100 Subject: [PATCH 312/348] Closing RT is slow on Windows when cache folder contains a lot of files, fixes #5083 --- rtgui/cachemanager.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index 5f73e9e0f..d86f6c41f 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -339,6 +339,25 @@ Glib::ustring CacheManager::getCacheFileName (const Glib::ustring& subDir, void CacheManager::applyCacheSizeLimitation () const { + // first count files without fetching file name and timestamp. + std::size_t numFiles = 0; + try { + + const auto dirName = Glib::build_filename (baseDir, "data"); + const auto dir = Gio::File::create_for_path (dirName); + + auto enumerator = dir->enumerate_children (""); + + while (numFiles <= options.maxCacheEntries && enumerator->next_file ()) { + ++numFiles; + } + + } catch (Glib::Exception&) {} + + if (numFiles <= options.maxCacheEntries) { + return; + } + using FNameMTime = std::pair; std::vector files; From 26720bdc2bf0e54471d2a87e5bc3f0001f0aaf41 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 11 Dec 2018 16:51:45 +0100 Subject: [PATCH 313/348] Update Deutsch locale --- rtdata/languages/Deutsch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index dce8e1803..8db0f4db3 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -74,6 +74,7 @@ #73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5 #74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5 #75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5 +#76 11.12.2018 Erweiterung (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -92,7 +93,7 @@ CURVEEDITOR_AXIS_OUT;y: CURVEEDITOR_AXIS_RIGHT_TAN;RT: CURVEEDITOR_CURVE;Kurve CURVEEDITOR_CURVES;Kurven -CURVEEDITOR_CUSTOM;Angepasst +CURVEEDITOR_CUSTOM;Standard CURVEEDITOR_DARKS;Tiefen CURVEEDITOR_EDITPOINT_HINT;Bearbeitung der Kurvenpunkte über Zahlenwerte.\n\nRechtsklick auf einen Kurvenpunkt um ihn auszuwählen.\nRechtsklick in einen leeren Bereich um ihn abzuwählen. CURVEEDITOR_HIGHLIGHTS;Spitzlichter @@ -2411,4 +2412,4 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!CURVEEDITOR_CATMULLROM;Flexible +CURVEEDITOR_CATMULLROM;Flexibel From f72277bf4e52ceee8df821a207f951b1e19d91ae Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 20:46:50 +0100 Subject: [PATCH 314/348] Removed PDAF tooltip in favor of RawPedia --- rtdata/languages/Catala | 1 - rtdata/languages/Chinese (Simplified) | 1 - rtdata/languages/Chinese (Traditional) | 1 - rtdata/languages/Czech | 1 - rtdata/languages/Dansk | 1 - rtdata/languages/Deutsch | 1 - rtdata/languages/English (UK) | 1 - rtdata/languages/English (US) | 1 - rtdata/languages/Espanol | 1 - rtdata/languages/Euskara | 1 - rtdata/languages/Francais | 1 - rtdata/languages/Greek | 1 - rtdata/languages/Hebrew | 1 - rtdata/languages/Italiano | 1 - rtdata/languages/Japanese | 1 - rtdata/languages/Latvian | 1 - rtdata/languages/Magyar | 1 - rtdata/languages/Nederlands | 1 - rtdata/languages/Norsk BM | 1 - rtdata/languages/Polish | 1 - rtdata/languages/Polish (Latin Characters) | 1 - rtdata/languages/Portugues (Brasil) | 1 - rtdata/languages/Russian | 1 - rtdata/languages/Serbian (Cyrilic Characters) | 1 - rtdata/languages/Serbian (Latin Characters) | 1 - rtdata/languages/Slovak | 1 - rtdata/languages/Suomi | 1 - rtdata/languages/Swedish | 1 - rtdata/languages/Turkish | 1 - rtdata/languages/default | 1 - rtgui/bayerpreprocess.cc | 1 - 31 files changed, 31 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 7fe80f35d..a4bd8b069 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1969,7 +1969,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index ebf3ed441..e4d52b774 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1933,7 +1933,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index d85d9e310..45d00011d 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1878,7 +1878,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index e630ba95d..f7b7415d0 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -1702,7 +1702,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Vodorovně pouze PDAF řádky TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Svisle TP_PREPROCESS_NO_FOUND;Nic nenalezeno TP_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Pokusí se potlačit proužkový šum způsobený PDAF pixely na sensoru, vznikající na některých bezzrcadlovkách Sony v některých scénách se záblesky v protisvětle. TP_PRSHARPENING_LABEL;Doostření po změně velikosti TP_PRSHARPENING_TOOLTIP;Obrázek po zmenšení doostří. Funguje pouze pokud je použita "Lanczos" metoda zmenšení. Náhled výsledku není v tomto nástroji možný. Podívejte se do RawPedie pro návod k použití. TP_RAWCACORR_AUTO;Automatická korekce diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index c5fd26a85..2813a4184 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1875,7 +1875,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 8db0f4db3..c893c5d55 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1908,7 +1908,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal (nur PDAF-Zeilen) TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertikal TP_PREPROCESS_NO_FOUND;Nichts gefunden TP_PREPROCESS_PDAFLINESFILTER;PDAF-Zeilenfilter -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Minimiert Streifenrauschen, das bei Gegenlichtaufnahmen mit\nsichtbaren Flares einiger spiegellosen Sony-Kameras entsteht. TP_PRSHARPENING_LABEL;Nach Skalierung schärfen TP_PRSHARPENING_TOOLTIP;Schärft das Bild nach der Größenänderung.\nFunktioniert nur mit der Methode “Lanczos“.\nDas Ergebnis wird nicht in RawTherapee\nangezeigt.\n\nWeitere Informationen finden Sie auf “RawPedia“. TP_RAWCACORR_AUTO;Autokorrektur diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index d05f3e503..fbdb43b15 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1839,7 +1839,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 0c23de3df..5a6c60fa6 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1825,7 +1825,6 @@ !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index b8bf09ef9..0e4904677 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -2460,4 +2460,3 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: - !!!!!!!!!!!!!!!!!!!!!!!!! !CURVEEDITOR_CATMULLROM;Flexible -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index f55a1800e..b51e1c7a8 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1876,7 +1876,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 083686c00..c331bcb22 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1834,7 +1834,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontale seulement sur les lig TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Verticale TP_PREPROCESS_NO_FOUND;Aucun trouvé TP_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Essaie de supprimer les bandes de bruit causées par les pixel PDAF sur le capteur, arrivant sur certains mirrorless Sony cameras avec des scènes en contre-jour avec un flare visible. TP_PRSHARPENING_LABEL;Netteté post-redimensionnement TP_PRSHARPENING_TOOLTIP;Augmente la netteté de l'image après le redimentionnement. Ne fonctionne que si la méthode de redimensionnement "Lanczos" est utilisé. Il est impossible de prévisualiser les effets de cet outil. Cf. RawPedia pour les instructions d'utilisation. TP_RAWCACORR_AUTO;Correction automatique diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index ce910a515..eb767c5b1 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1875,7 +1875,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 80da66992..4127c9088 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1876,7 +1876,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 82d10a3bb..e7570e7c4 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1987,7 +1987,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 477a1d4ed..683f9f24b 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1855,7 +1855,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;PDAFの場合は水平方向だ TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;垂直方向 TP_PREPROCESS_NO_FOUND;未検出 TP_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Sonyのミラーレスカメラの一部では、PDAFイメージセンサが原因で、ゴーストが出るバックライトの画像でストライプノイズが発生することがあり、これを軽減します。 TP_PRSHARPENING_LABEL;リサイズ後のシャープ化 TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。 TP_RAWCACORR_AUTO;自動補正 diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 0e13f8c87..97e37df3d 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1876,7 +1876,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index c60c315fb..70191d6ec 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1961,7 +1961,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 66563fa59..0f1fdff6e 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2318,7 +2318,6 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index a079c7b78..f88d154aa 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1875,7 +1875,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 3e7bde183..6ce13d6c8 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -2004,7 +2004,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index a736d608e..4ee26dde4 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -2004,7 +2004,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 524ca0749..f5a72cb4c 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2306,7 +2306,6 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !TP_LENSPROFILE_USE_GEOMETRIC;Geometric !TP_LENSPROFILE_USE_HEADER;Select distortions to correct: !TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 2a165804e..90bed5d14 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -2034,7 +2034,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 11a305f7d..99acdd920 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1988,7 +1988,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 8da1463a6..d42f9436d 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1988,7 +1988,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 4ddfc9b16..3721e9d5c 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1891,7 +1891,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTOIT;Iterations diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 9ad36b161..a40ff50d1 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1876,7 +1876,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 61a5a5d2a..868e609bb 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -2190,7 +2190,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index f8ec2b768..c18b68216 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1875,7 +1875,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. !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. !TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtdata/languages/default b/rtdata/languages/default index f31ec4bec..cba59b563 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1824,7 +1824,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;None found TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Suppresses stripe noise caused by on-sensor PDAF pixels, known to occur on some Sony and Nikon cameras when shooting backlit scenes with visible flare. 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. TP_RAWCACORR_AUTO;Auto-correction diff --git a/rtgui/bayerpreprocess.cc b/rtgui/bayerpreprocess.cc index 7c9545b89..281271dbd 100644 --- a/rtgui/bayerpreprocess.cc +++ b/rtgui/bayerpreprocess.cc @@ -68,7 +68,6 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", pack_start( *greenEqThreshold, Gtk::PACK_SHRINK, 4); pdafLinesFilter = Gtk::manage(new Gtk::CheckButton((M("TP_PREPROCESS_PDAFLINESFILTER")))); - pdafLinesFilter->set_tooltip_markup(M("TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP")); pdafLinesFilter->show(); pdafLinesFilter->signal_toggled().connect(sigc::mem_fun(*this, &BayerPreProcess::pdafLinesFilterChanged), true); From aece987d5540ec60bf74152c266b71d8c3f430aa Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 20:47:50 +0100 Subject: [PATCH 315/348] astyled and removed whitespace from bayerpreprocess.cc --- rtgui/bayerpreprocess.cc | 73 ++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/rtgui/bayerpreprocess.cc b/rtgui/bayerpreprocess.cc index 281271dbd..0720612fe 100644 --- a/rtgui/bayerpreprocess.cc +++ b/rtgui/bayerpreprocess.cc @@ -24,14 +24,14 @@ using namespace rtengine; using namespace rtengine::procparams; -BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", M("TP_PREPROCESS_LABEL"), true) +BayerPreProcess::BayerPreProcess() : FoldableToolPanel(this, "bayerpreprocess", M("TP_PREPROCESS_LABEL"), true) { auto m = ProcEventMapper::getInstance(); EvLineDenoiseDirection = m->newEvent(DARKFRAME, "HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION"); EvPDAFLinesFilter = m->newEvent(DARKFRAME, "HISTORY_MSG_PREPROCESS_PDAFLINESFILTER"); - lineDenoise = Gtk::manage(new Adjuster (M("TP_PREPROCESS_LINEDENOISE"), 0, 1000, 1, 0)); - lineDenoise->setAdjusterListener (this); + lineDenoise = Gtk::manage(new Adjuster(M("TP_PREPROCESS_LINEDENOISE"), 0, 1000, 1, 0)); + lineDenoise->setAdjusterListener(this); if (lineDenoise->delay < options.adjusterMaxDelay) { lineDenoise->delay = options.adjusterMaxDelay; @@ -39,8 +39,8 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", lineDenoise->show(); - greenEqThreshold = Gtk::manage(new Adjuster (M("TP_PREPROCESS_GREENEQUIL"), 0, 100, 1, 0)); - greenEqThreshold->setAdjusterListener (this); + greenEqThreshold = Gtk::manage(new Adjuster(M("TP_PREPROCESS_GREENEQUIL"), 0, 100, 1, 0)); + greenEqThreshold->setAdjusterListener(this); if (greenEqThreshold->delay < options.adjusterMaxDelay) { greenEqThreshold->delay = options.adjusterMaxDelay; @@ -57,15 +57,15 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", lineDenoiseDirection->append(M("TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES")); lineDenoiseDirection->show(); lineDenoiseDirection->signal_changed().connect(sigc::mem_fun(*this, &BayerPreProcess::lineDenoiseDirectionChanged)); - + hb->pack_start(*lineDenoiseDirection); - pack_start( *lineDenoise, Gtk::PACK_SHRINK, 4); + pack_start(*lineDenoise, Gtk::PACK_SHRINK, 4); pack_start(*hb, Gtk::PACK_SHRINK, 4); - pack_start( *Gtk::manage (new Gtk::HSeparator())); + pack_start(*Gtk::manage(new Gtk::HSeparator())); - pack_start( *greenEqThreshold, Gtk::PACK_SHRINK, 4); + pack_start(*greenEqThreshold, Gtk::PACK_SHRINK, 4); pdafLinesFilter = Gtk::manage(new Gtk::CheckButton((M("TP_PREPROCESS_PDAFLINESFILTER")))); pdafLinesFilter->show(); @@ -77,58 +77,64 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", void BayerPreProcess::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); + disableListener(); + + if (pedited) { + lineDenoise->setEditedState(pedited->raw.bayersensor.linenoise ? Edited : UnEdited); + greenEqThreshold->setEditedState(pedited->raw.bayersensor.greenEq ? Edited : UnEdited); - if(pedited ) { - lineDenoise->setEditedState( pedited->raw.bayersensor.linenoise ? Edited : UnEdited ); - greenEqThreshold->setEditedState( pedited->raw.bayersensor.greenEq ? Edited : UnEdited ); if (!pedited->raw.bayersensor.linenoiseDirection) { lineDenoiseDirection->set_active(3); } + pdafLinesFilter->set_inconsistent(!pedited->raw.bayersensor.pdafLinesFilter); } - lineDenoise->setValue (pp->raw.bayersensor.linenoise); - int d = int(pp->raw.bayersensor.linenoiseDirection)-1; + lineDenoise->setValue(pp->raw.bayersensor.linenoise); + int d = int(pp->raw.bayersensor.linenoiseDirection) - 1; + if (d == 4) { --d; } + lineDenoiseDirection->set_active(d); - greenEqThreshold->setValue (pp->raw.bayersensor.greenthresh); + greenEqThreshold->setValue(pp->raw.bayersensor.greenthresh); pdafLinesFilter->set_active(pp->raw.bayersensor.pdafLinesFilter); - enableListener (); + enableListener(); } -void BayerPreProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) +void BayerPreProcess::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { pp->raw.bayersensor.linenoise = lineDenoise->getIntValue(); int d = lineDenoiseDirection->get_active_row_number() + 1; + if (d == 4) { ++d; } + pp->raw.bayersensor.linenoiseDirection = RAWParams::BayerSensor::LineNoiseDirection(d); pp->raw.bayersensor.greenthresh = greenEqThreshold->getIntValue(); pp->raw.bayersensor.pdafLinesFilter = pdafLinesFilter->get_active(); if (pedited) { - pedited->raw.bayersensor.linenoise = lineDenoise->getEditedState (); - pedited->raw.bayersensor.greenEq = greenEqThreshold->getEditedState (); + pedited->raw.bayersensor.linenoise = lineDenoise->getEditedState(); + pedited->raw.bayersensor.greenEq = greenEqThreshold->getEditedState(); pedited->raw.bayersensor.linenoise = lineDenoiseDirection->get_active_row_number() != 3; pedited->raw.bayersensor.pdafLinesFilter = !pdafLinesFilter->get_inconsistent(); } } -void BayerPreProcess::adjusterChanged (Adjuster* a, double newval) +void BayerPreProcess::adjusterChanged(Adjuster* a, double newval) { if (listener) { Glib::ustring value = a->getTextValue(); if (a == greenEqThreshold) { - listener->panelChanged (EvPreProcessGEquilThresh, value ); + listener->panelChanged(EvPreProcessGEquilThresh, value); } else if (a == lineDenoise) { - listener->panelChanged (EvPreProcessLineDenoise, value ); + listener->panelChanged(EvPreProcessLineDenoise, value); } } } @@ -139,9 +145,10 @@ void BayerPreProcess::adjusterAutoToggled(Adjuster* a, bool newval) void BayerPreProcess::setBatchMode(bool batchMode) { - ToolPanel::setBatchMode (batchMode); - lineDenoise->showEditedCB (); - greenEqThreshold->showEditedCB (); + ToolPanel::setBatchMode(batchMode); + lineDenoise->showEditedCB(); + greenEqThreshold->showEditedCB(); + if (batchMode) { lineDenoiseDirection->append(M("GENERAL_UNCHANGED")); } @@ -149,26 +156,26 @@ void BayerPreProcess::setBatchMode(bool batchMode) void BayerPreProcess::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited) { - lineDenoise->setDefault( defParams->raw.bayersensor.linenoise); - greenEqThreshold->setDefault (defParams->raw.bayersensor.greenthresh); + lineDenoise->setDefault(defParams->raw.bayersensor.linenoise); + greenEqThreshold->setDefault(defParams->raw.bayersensor.greenthresh); if (pedited) { - lineDenoise->setDefaultEditedState( pedited->raw.bayersensor.linenoise ? Edited : UnEdited); + lineDenoise->setDefaultEditedState(pedited->raw.bayersensor.linenoise ? Edited : UnEdited); greenEqThreshold->setDefaultEditedState(pedited->raw.bayersensor.greenEq ? Edited : UnEdited); } else { - lineDenoise->setDefaultEditedState( Irrelevant ); - greenEqThreshold->setDefaultEditedState(Irrelevant ); + lineDenoise->setDefaultEditedState(Irrelevant); + greenEqThreshold->setDefaultEditedState(Irrelevant); } } -void BayerPreProcess::setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd) +void BayerPreProcess::setAdjusterBehavior(bool linedenoiseadd, bool greenequiladd) { lineDenoise->setAddMode(linedenoiseadd); greenEqThreshold->setAddMode(greenequiladd); } -void BayerPreProcess::trimValues (rtengine::procparams::ProcParams* pp) +void BayerPreProcess::trimValues(rtengine::procparams::ProcParams* pp) { lineDenoise->trimValue(pp->raw.bayersensor.linenoise); From 8073c3dfde2d71f4c262b089c0294428b550bdf0 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 20:55:47 +0100 Subject: [PATCH 316/348] Capitalization correction and generateTranslationDiffs --- rtdata/languages/Catala | 2 +- rtdata/languages/Chinese (Traditional) | 2 +- rtdata/languages/Dansk | 2 +- rtdata/languages/Deutsch | 6 +----- rtdata/languages/English (UK) | 2 +- rtdata/languages/English (US) | 2 +- rtdata/languages/Euskara | 2 +- rtdata/languages/Greek | 2 +- rtdata/languages/Hebrew | 2 +- rtdata/languages/Italiano | 2 +- rtdata/languages/Latvian | 2 +- rtdata/languages/Magyar | 2 +- rtdata/languages/Norsk BM | 2 +- rtdata/languages/Polish | 2 +- rtdata/languages/Polish (Latin Characters) | 2 +- rtdata/languages/Russian | 2 +- rtdata/languages/Serbian (Cyrilic Characters) | 2 +- rtdata/languages/Serbian (Latin Characters) | 2 +- rtdata/languages/Slovak | 2 +- rtdata/languages/Suomi | 2 +- rtdata/languages/Turkish | 2 +- rtdata/languages/default | 2 +- 22 files changed, 22 insertions(+), 26 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index a4bd8b069..f4c0ab91a 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1578,7 +1578,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 45d00011d..f6605f63e 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1348,7 +1348,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 2813a4184..f1b952b00 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1345,7 +1345,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index c893c5d55..e1a0acfac 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -91,6 +91,7 @@ CURVEEDITOR_AXIS_IN;x: CURVEEDITOR_AXIS_LEFT_TAN;LT: CURVEEDITOR_AXIS_OUT;y: CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;Flexibel CURVEEDITOR_CURVE;Kurve CURVEEDITOR_CURVES;Kurven CURVEEDITOR_CUSTOM;Standard @@ -2407,8 +2408,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -CURVEEDITOR_CATMULLROM;Flexibel diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index fbdb43b15..de8f44a27 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1279,7 +1279,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 5a6c60fa6..6b1526dcc 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1211,7 +1211,7 @@ !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index b51e1c7a8..12deea740 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1346,7 +1346,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index eb767c5b1..d5cfc781c 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1345,7 +1345,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 4127c9088..75b3a3dd7 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1346,7 +1346,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index e7570e7c4..7e81ff386 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1777,7 +1777,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 97e37df3d..b97aca446 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1346,7 +1346,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 70191d6ec..02d67437b 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1517,7 +1517,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index f88d154aa..ec695aac6 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1345,7 +1345,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 6ce13d6c8..2a21b3836 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1853,7 +1853,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 4ee26dde4..7889a83cf 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1853,7 +1853,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 90bed5d14..f9a1ae62e 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1844,7 +1844,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 99acdd920..cd8d6e640 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1766,7 +1766,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index d42f9436d..664894021 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1766,7 +1766,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 3721e9d5c..1319912db 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1390,7 +1390,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done !PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc. diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index a40ff50d1..6ca4406d8 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1347,7 +1347,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index c18b68216..a9d3e9d5e 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1346,7 +1346,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done diff --git a/rtdata/languages/default b/rtdata/languages/default index cba59b563..651a3c928 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1210,7 +1210,7 @@ PREFERENCES_SET;Set PREFERENCES_SHOWBASICEXIF;Show basic Exif info PREFERENCES_SHOWDATETIME;Show date and time PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows PREFERENCES_SINGLETAB;Single Editor Tab Mode PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs From 51b50f7347076061970a9aeb2c2a10ccee85c408 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 21:10:52 +0100 Subject: [PATCH 317/348] Updated splash images for 5.5-rc2 --- rtdata/images/non-themed/png/splash.png | Bin 79260 -> 79409 bytes rtdata/images/non-themed/rt-splash.svg | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/rtdata/images/non-themed/png/splash.png b/rtdata/images/non-themed/png/splash.png index 899b72270de4f73af48b883e09909aa1711e9f27..2245423664fb9b5b40ff8e5582effe6816dab7b4 100644 GIT binary patch delta 15550 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 delta 15419 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 diff --git a/rtdata/images/non-themed/rt-splash.svg b/rtdata/images/non-themed/rt-splash.svg index da32012c3..7aabe25f4 100644 --- a/rtdata/images/non-themed/rt-splash.svg +++ b/rtdata/images/non-themed/rt-splash.svg @@ -942,7 +942,7 @@ sodipodi:role="line" x="595.29559" y="49.720543" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.06666565px;line-height:110.00000238%;font-family:'ITC Eras Std';-inkscape-font-specification:'ITC Eras Std Bold';text-align:end;letter-spacing:-1.06666672px;text-anchor:end;fill:#ffffff;stroke-width:1.06666672px">Release Candidate 1 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.06666565px;line-height:110.00000238%;font-family:'ITC Eras Std';-inkscape-font-specification:'ITC Eras Std Bold';text-align:end;letter-spacing:-1.06666672px;text-anchor:end;fill:#ffffff;stroke-width:1.06666672px">Release Candidate 2 From d4ba923fff4743e7858530cdfc3ffbe480d8daa9 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 21:20:01 +0100 Subject: [PATCH 318/348] Updated RELEASE_NOTES.txt for 5.5-rc2 --- RELEASE_NOTES.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index 5a6109eb6..e08a4bb75 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,10 +1,12 @@ -RAWTHERAPEE 5.5-RC1 RELEASE NOTES +RAWTHERAPEE 5.5-RC2 RELEASE NOTES -This is RawTherapee 5.5 Release Candidate 1, released on 2018-12-03. +This is RawTherapee 5.5 Release Candidate 2, released on 2018-12-11. Start by reading the "Getting Started" article on RawPedia: http://rawpedia.rawtherapee.com/ + + NEWS RELEVANT TO PHOTOGRAPHERS RawTherapee supports most raw formats, including Pentax and Sony Pixel Shift, Canon Dual-Pixel, and those from Foveon and X-Trans sensors. @@ -18,7 +20,7 @@ In order to use RawTherapee efficiently you should know that: - There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control. Make sure you familiarize yourself with them on RawPedia's "Keyboard Shortcuts" page! New features since 5.4: -- Filter to remove striping and banding artifacts caused by Phase Detection Auto Focus (PDAF), available for any camera which has a PDAF entry in camconst.json, currently: +- Filter to remove striping artifacts caused by Phase Detection Auto Focus (PDAF) as seen in Sony cameras, and to remove banding artifacts apparently caused by Nikon's too-aggressive in-camera PDAF correction. These are available for any camera which has a PDAF entry in camconst.json, currently: - Nikon Z 6 - Nikon Z 7 - Sony DSC-RX1RM2 @@ -56,7 +58,7 @@ New features since 5.4: - ICC profile generator. - The bundled profiles have been re-generated, and now include ICC v2 and v4 variants. - If your screen's resolution is such that not all icons fit in a toolbar, you can now scroll the toolbar using the mouse scroll-wheel. -- New tone curve type. One of the characteristics of the "Custom" cubic spline curve used in all previous versions was that editing one node could have a huge impact on what happens to the curve in relation to the other nodes. This curve was replaced by the new centripetal Catmull–Rom spline which allows you to make adjustments to one part of the curve without affecting the other segments as much. +- New "Flexible" tone curve type. A characteristic of the cubic spline curve (renamed from "Custom" to "Standard") is that editing one node could have a huge impact on what happens to the curve in relation to the other nodes. The new "Flexible" centripetal Catmull–Rom spline curve allows you to make adjustments to any part of the curve with little impact on the other parts. - Allow saving both floating-point and integer type files at both 16-bit and 32-bit precision from RawTherapee GUI and CLI. - Improves lensfun chromatic aberration correction. - The raw chromatic aberration correction tool can now run in several iterations, and gained a feature to avoid introducing a color shift which could result from correcting chromatic aberration before demosaicing. @@ -90,8 +92,6 @@ Changes since 5.4: - - NEWS RELEVANT TO DEVELOPERS See CONTRIBUTING.md From 0051e8f2ac21c31b1bd3a269d1b79982a16733f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Tue, 11 Dec 2018 21:48:14 +0100 Subject: [PATCH 319/348] Fix SEGV in `FileCatalog::(show|hide)ToolBar()` (fixes #4916) --- rtgui/filecatalog.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 305b3985e..9e19f8dfe 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -1211,7 +1211,7 @@ void FileCatalog::developRequested(const std::vector& tbe, bo params.resize.width = options.fastexport_resize_width; params.resize.height = options.fastexport_resize_height; } - + params.resize.enabled = options.fastexport_resize_enabled; params.resize.scale = options.fastexport_resize_scale; params.resize.appliesTo = options.fastexport_resize_appliesTo; @@ -2522,7 +2522,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) void FileCatalog::showToolBar() { - if (!options.FileBrowserToolbarSingleRow) { + if (hbToolBar1STB) { hbToolBar1STB->show(); } @@ -2531,7 +2531,7 @@ void FileCatalog::showToolBar() void FileCatalog::hideToolBar() { - if (!options.FileBrowserToolbarSingleRow) { + if (hbToolBar1STB) { hbToolBar1STB->hide(); } From ef3abe78936b8775e881bebf57ec3c36bc550f61 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 22:04:22 +0100 Subject: [PATCH 320/348] Fixed incorrect degree symbol in Espanol translation --- rtdata/languages/Espanol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 0e4904677..a202e2e47 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1030,7 +1030,7 @@ PARTIALPASTE_BASICGROUP;Ajustes básicos PARTIALPASTE_CACORRECTION;Corrección de aberraciones cromáticas PARTIALPASTE_CHANNELMIXER;Mezclador de canales PARTIALPASTE_CHANNELMIXERBW;Blanco y Negro -PARTIALPASTE_COARSETRANS;Rotar 90º/ voltear +PARTIALPASTE_COARSETRANS;Rotar 90°/ voltear PARTIALPASTE_COLORAPP;Modelo CIE 2002 de apariencia de color PARTIALPASTE_COLORGROUP;Ajustes de color PARTIALPASTE_COLORTONING;Tonificación de Color @@ -1165,11 +1165,11 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nombre PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID Etiqueta PREFERENCES_CUSTPROFBUILDPATH;Ruta al programa ejecutable PREFERENCES_CUTOVERLAYBRUSH;Recortar máscara de color/transparencia -PREFERENCES_D50;5000ºK -PREFERENCES_D50_OLD;5000K -PREFERENCES_D55;5500ºK -PREFERENCES_D60;6000ºK -PREFERENCES_D65;6500ºK +PREFERENCES_D50;5000°K +PREFERENCES_D50_OLD;5000°K +PREFERENCES_D55;5500°K +PREFERENCES_D60;6000°K +PREFERENCES_D65;6500°K PREFERENCES_DARKFRAMEFOUND;Encontrado PREFERENCES_DARKFRAMESHOTS;disparos PREFERENCES_DARKFRAMETEMPLATES;plantillas From 920e9f7a16fe1f9e0d6d70d1a547f52781d97cc0 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 11 Dec 2018 23:13:40 +0100 Subject: [PATCH 321/348] Renamed key to CurveFromHistogramMatching for clarity, #5089 --- rtengine/procparams.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 9addfdce9..01ad4b8bb 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2868,7 +2868,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo 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); - saveToKeyfile(!pedited || pedited->toneCurve.fromHistMatching, "Exposure", "FromHistogramMatching", toneCurve.fromHistMatching, keyFile); + saveToKeyfile(!pedited || pedited->toneCurve.fromHistMatching, "Exposure", "CurveFromHistogramMatching", toneCurve.fromHistMatching, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.clampOOG, "Exposure", "ClampOOG", toneCurve.clampOOG, keyFile); // Highlight recovery @@ -3683,7 +3683,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) pedited->toneCurve.fromHistMatching = true; } } else { - assignFromKeyfile(keyFile, "Exposure", "FromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching); + assignFromKeyfile(keyFile, "Exposure", "CurveFromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching); } assignFromKeyfile(keyFile, "Exposure", "ClampOOG", pedited, toneCurve.clampOOG, pedited->toneCurve.clampOOG); } From d47a54fb3d72d17aca5595f70b7dd586666e6647 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 12 Dec 2018 23:23:02 +0100 Subject: [PATCH 322/348] Fix raw histogram calculation, thanks to @agriggio, #5091 --- rtengine/rawimagesource.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 89a66f6c3..3c7a34e73 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -4833,20 +4833,27 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU } // end of critical region } // end of parallel region + const auto getidx = + [&](int c, int i) -> int + { + float f = mult[c] * std::max(0.f, i - cblacksom[c]); + return f > 0.f ? (f < 1.f ? 1 : std::min(int(f), 255)) : 0; + }; + for(int i = 0; i < histoSize; i++) { - int idx = std::min(255.f, mult[0] * std::max(0.f, i - cblacksom[0])); + int idx = getidx(0, i); histRedRaw[idx] += hist[0][i]; if (ri->get_colors() > 1) { - idx = std::min(255.f, mult[1] * std::max(0.f, i - cblacksom[1])); + idx = getidx(1, i); histGreenRaw[idx] += hist[1][i]; if (fourColours) { - idx = std::min(255.f, mult[3] * std::max(0.f, i - cblacksom[3])); + idx = getidx(3, i); histGreenRaw[idx] += hist[3][i]; } - idx = std::min(255.f, mult[2] * std::max(0.f, i - cblacksom[2])); + idx = getidx(2, i); histBlueRaw[idx] += hist[2][i]; } } From 71a5521b66d6ecf37a238389d34726ed53161601 Mon Sep 17 00:00:00 2001 From: Hombre Date: Thu, 13 Dec 2018 01:56:36 +0100 Subject: [PATCH 323/348] The (custom) entry was added to the combobox at each profile loading See issue #5092 --- rtgui/profilepanel.cc | 2 ++ rtgui/profilestorecombobox.cc | 8 ++++++++ rtgui/profilestorecombobox.h | 1 + 3 files changed, 11 insertions(+) diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index eb835c648..a3a0f72b7 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -167,6 +167,7 @@ Gtk::TreeIter ProfilePanel::getLastSavedRow() Gtk::TreeIter ProfilePanel::addCustomRow() { if(customPSE) { + profiles->deleteRow(customPSE); delete customPSE; customPSE = nullptr; } @@ -179,6 +180,7 @@ Gtk::TreeIter ProfilePanel::addCustomRow() Gtk::TreeIter ProfilePanel::addLastSavedRow() { if(lastSavedPSE) { + profiles->deleteRow(lastSavedPSE); delete lastSavedPSE; lastSavedPSE = nullptr; } diff --git a/rtgui/profilestorecombobox.cc b/rtgui/profilestorecombobox.cc index b4e893c1d..e7d64f28b 100644 --- a/rtgui/profilestorecombobox.cc +++ b/rtgui/profilestorecombobox.cc @@ -356,3 +356,11 @@ Gtk::TreeIter ProfileStoreComboBox::addRow (const ProfileStoreEntry *profileStor return newEntry; } +/** @brief Delete a row from the first level of the tree */ +void ProfileStoreComboBox::deleteRow (const ProfileStoreEntry *profileStoreEntry) +{ + Gtk::TreeIter entry = findRowFromEntry(profileStoreEntry); + if (entry) { + refTreeModel->erase(entry); + } +} diff --git a/rtgui/profilestorecombobox.h b/rtgui/profilestorecombobox.h index 111e767c2..9c31ad60a 100644 --- a/rtgui/profilestorecombobox.h +++ b/rtgui/profilestorecombobox.h @@ -90,6 +90,7 @@ public: bool setInternalEntry (); Gtk::TreeIter getRowFromLabel (Glib::ustring name); Gtk::TreeIter addRow (const ProfileStoreEntry *profileStoreEntry); + void deleteRow (const ProfileStoreEntry *profileStoreEntry); }; #endif From 8d7c3a6ab4a656ed47ea91f9009f6eb0083cc03e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Thu, 13 Dec 2018 17:27:20 +0100 Subject: [PATCH 324/348] Russian translation updated by Kildor, closes #5095 --- rtdata/languages/Russian | 186 +++++++++++++++++++-------------------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index f9a1ae62e..584f10d45 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -6,7 +6,7 @@ #06 2012-07-17 Roman Milanskij #07 2014-02-12 Kostia (Kildor) Romanov #08 2018-02-10 Kostia (Kildor) Romanov -#09 2018-11-04 Kostia (Kildor) Romanov +#09 2018-12-13 Kostia (Kildor) Romanov ABOUT_TAB_BUILD;Версия ABOUT_TAB_CREDITS;Авторы @@ -40,7 +40,7 @@ CURVEEDITOR_TOOLTIPLOAD;Загрузить тоновую кривую CURVEEDITOR_TOOLTIPPASTE;Вставить кривую из буфера обмена CURVEEDITOR_TOOLTIPSAVE;Сохранить тоновую кривую CURVEEDITOR_TYPE;Тип: -DIRBROWSER_FOLDERS;Папки +DIRBROWSER_FOLDERS;Каталоги DONT_SHOW_AGAIN;Больше не показывать это сообщение. DYNPROFILEEDITOR_DELETE;Удалить DYNPROFILEEDITOR_EDIT;Редактировать @@ -112,7 +112,7 @@ FILEBROWSER_APPLYPROFILE_PARTIAL;Применить - частично FILEBROWSER_AUTODARKFRAME;Автоматический темновой кадр FILEBROWSER_AUTOFLATFIELD;Автоматическое плоское поле FILEBROWSER_BROWSEPATHBUTTONHINT;Нажмите кнопку мыши чтобы перейти к выбранному каталогу -FILEBROWSER_BROWSEPATHHINT;Введите путь для перехода.\nCtrl-O для перехода на диалог ввода текста.\nEnter / Ctrl-Enter (в обозревателе файлов) для перехода;\n\nЯрлыки путей:\n ~ - домашняя папка пользователя\n ! - папка пользователя с изображениями +FILEBROWSER_BROWSEPATHHINT;Введите путь для перехода.\nCtrl-O для перехода на диалог ввода текста.\nEnter / Ctrl-Enter (в обозревателе файлов) для перехода;\n\nЯрлыки путей:\n ~ - домашний каталог пользователя\n ! - каталог пользователя с изображениями FILEBROWSER_CACHE;Кэш FILEBROWSER_CLEARPROFILE;Удалить профиль FILEBROWSER_COLORLABEL_TOOLTIP;Color label\n\nUse dropdown menu or Shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple @@ -126,8 +126,8 @@ FILEBROWSER_EMPTYTRASH;Очистить корзину FILEBROWSER_EMPTYTRASHHINT;Удалить файлы из корзины без возможности восстановления FILEBROWSER_EXTPROGMENU;Открыть с помощью FILEBROWSER_FLATFIELD;Плоское поле -FILEBROWSER_MOVETODARKFDIR;Переместить в папку темновых кадров -FILEBROWSER_MOVETOFLATFIELDDIR;Переместить в папку с файлами плоских полей +FILEBROWSER_MOVETODARKFDIR;Переместить в каталог темновых кадров +FILEBROWSER_MOVETOFLATFIELDDIR;Переместить в каталог файлов плоских полей FILEBROWSER_NEW_NAME;Новое имя: FILEBROWSER_OPENDEFAULTVIEWER;Программа просмотра в Windows по умолчанию (после обработки) FILEBROWSER_PARTIALPASTEPROFILE;Частичная вставка @@ -213,6 +213,7 @@ GENERAL_AUTO;Автоматический GENERAL_BEFORE;До GENERAL_CANCEL;Отмена GENERAL_CLOSE;Закрыть +GENERAL_CURRENT;Текущий GENERAL_DISABLE;Выключить GENERAL_DISABLED;Выключено GENERAL_ENABLE;Включить @@ -497,6 +498,10 @@ HISTORY_MSG_294;Имитация плёнки: Сила HISTORY_MSG_295;Имитация плёнки: Плёнка HISTORY_MSG_298;Фильтр битых пикселей HISTORY_MSG_300;- +HISTORY_MSG_440;КпУД: Метод +HISTORY_MSG_485;Коррекция объектива +HISTORY_MSG_486;Коррекция объектива: Камера +HISTORY_MSG_487;Коррекция объектива: Объектив HISTORY_MSG_488;Компрессия динамического диапазона HISTORY_MSG_490;КДД: Величина HISTORY_MSG_491;Баланс белого @@ -521,6 +526,32 @@ HISTORY_NEWSNAPSHOT;Добавить HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-S HISTORY_SNAPSHOT;Снимок HISTORY_SNAPSHOTS;Снимки +ICCPROFCREATOR_ICCVERSION;Версия ICC: +ICCPROFCREATOR_ILL_41;D41 +ICCPROFCREATOR_ILL_50;D50 +ICCPROFCREATOR_ILL_55;D55 +ICCPROFCREATOR_ILL_60;D60 +ICCPROFCREATOR_ILL_65;D65 +ICCPROFCREATOR_ILL_80;D80 +ICCPROFCREATOR_ILL_DEF;Default +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) +ICCPROFCREATOR_PRIM_BEST;BestRGB +ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BLUX;Blue X +ICCPROFCREATOR_PRIM_BLUY;Blue Y +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Green X +ICCPROFCREATOR_PRIM_GREY;Green Y +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Red X +ICCPROFCREATOR_PRIM_REDY;Red Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 IPTCPANEL_CATEGORY;Категория IPTCPANEL_CITY;Город IPTCPANEL_COPYHINT;Копировать данные IPTC в буфер обмена @@ -559,7 +590,7 @@ MAIN_FRAME_FILEBROWSER_TOOLTIP;Проводник.\nГорячая клавиш MAIN_FRAME_PLACES;Закладки MAIN_FRAME_PLACES_ADD;Добавить MAIN_FRAME_PLACES_DEL;Удалить -MAIN_FRAME_RECENT;Недавние папки +MAIN_FRAME_RECENT;Недавние каталоги MAIN_MSG_ALREADYEXISTS;Файл уже существует. MAIN_MSG_CANNOTLOAD;Невозможно загрузить изображение MAIN_MSG_CANNOTSAVE;Ошибка при сохранении файла @@ -624,8 +655,8 @@ NAVIGATOR_V;V: NAVIGATOR_XY_FULL;Ширина: %1, Высота: %2 NAVIGATOR_XY_NA;x: --, y: -- OPTIONS_BUNDLED_MISSING;Встроенный профиль "%1" не найден!\n\nВаша установка может быть повреждена.\n\nБудут использованы внутренние дефолтные значения по умолчанию. -OPTIONS_DEFIMG_MISSING;Профиль по умолчанию для не-raw снимков не найден или не установлен.\n\nПожалуйста, проверьте папку с профилями, она может отсутствовать или быть повреждена.\n\nБудет использован профиль "%1". -OPTIONS_DEFRAW_MISSING;Профиль по умолчанию для raw снимков не найден или не установлен.\n\nПожалуйста, проверьте папку с профилями, она может отсутствовать или быть повреждена.\n\nБудет использован профиль "%1". +OPTIONS_DEFIMG_MISSING;Профиль по умолчанию для не-raw снимков не найден или не установлен.\n\nПожалуйста, проверьте каталог с профилями, он может отсутствовать или быть повреждён.\n\nБудет использован профиль "%1". +OPTIONS_DEFRAW_MISSING;Профиль по умолчанию для raw снимков не найден или не установлен.\n\nПожалуйста, проверьте каталог с профилями, он может отсутствовать или быть повреждён.\n\nБудет использован профиль "%1". PARTIALPASTE_ADVANCEDGROUP;Дополнительные параметры PARTIALPASTE_BASICGROUP;Базовые настройки PARTIALPASTE_CACORRECTION;Коррекция C/A @@ -693,8 +724,15 @@ PARTIALPASTE_VIBRANCE;Красочность PARTIALPASTE_VIGNETTING;Коррекция виньетирования PARTIALPASTE_WHITEBALANCE;Баланс белого PREFERENCES_ADD;Добавить +PREFERENCES_APPEARANCE;Внешний вид +PREFERENCES_APPEARANCE_COLORPICKERFONT;Шрифт пипетки +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Цвет маски обрезки +PREFERENCES_APPEARANCE_MAINFONT;Основной шрифт +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Цвет направляющих +PREFERENCES_APPEARANCE_THEME;Тема PREFERENCES_APPLNEXTSTARTUP;нужен перезапуск PREFERENCES_AUTOMONPROFILE;Использовать профиль основного монитора ОС +PREFERENCES_AUTOSAVE_TP_OPEN;Сохранить свёрнутое/развёрнутое состояние при выходе PREFERENCES_BATCH_PROCESSING;Пакетная обработка PREFERENCES_BEHADDALL;Всё в "Добавить" PREFERENCES_BEHADDALLHINT;Выставить все параметры в режим Добавить.\nНастройки параметров в панели пакетной обработки будут дельтой к сохранённым данным @@ -702,10 +740,17 @@ PREFERENCES_BEHAVIOR;Поведение PREFERENCES_BEHSETALL;Всё в "Установить" PREFERENCES_BEHSETALLHINT;Выставить все параметры в режим Установить.\nНастройки параметров в панели пакетной обработки будут абсолютными, будут показаны используемые значения PREFERENCES_BLACKBODY;Лампа накаливания +PREFERENCES_CACHECLEAR;Очистить PREFERENCES_CACHEMAXENTRIES;Максимальное число элементов в кэше PREFERENCES_CACHEOPTS;Параметры кэширования PREFERENCES_CACHETHUMBHEIGHT;Максимальная высота эскиза PREFERENCES_CLIPPINGIND;Индикация пересветов/затемнений +PREFERENCES_CLUTSDIR;Каталог файлов HaldCLUT +PREFERENCES_CROP;Режим обрезки +PREFERENCES_CROP_GUIDES;Направляющие, отображающиеся вне режима обрезки +PREFERENCES_CROP_GUIDES_FRAME;Рамка +PREFERENCES_CROP_GUIDES_FULL;Оригинальные +PREFERENCES_CROP_GUIDES_NONE;Нет PREFERENCES_CURVEBBOXPOS;Позиция кнопок для копирования и вставки кривых PREFERENCES_CURVEBBOXPOS_ABOVE;Выше PREFERENCES_CURVEBBOXPOS_BELOW;Ниже @@ -728,6 +773,7 @@ PREFERENCES_DARKFRAMETEMPLATES;шаблонов PREFERENCES_DATEFORMAT;Формат даты PREFERENCES_DATEFORMATHINT;Вы можете использовать следующие элементы форматирования:\n%y: год\n%m: месяц\n%d: день\n\nНапример, ISO 8601 требует использовать следующий формат даты:\n%y-%m-%d PREFERENCES_DIRDARKFRAMES;Каталог размещения темновых кадров +PREFERENCES_DIRECTORIES;Каталоги PREFERENCES_DIRHOME;Домашний каталог PREFERENCES_DIRLAST;Последний каталог PREFERENCES_DIROTHER;Другой @@ -738,7 +784,7 @@ PREFERENCES_EXTERNALEDITOR;Внешний редактор PREFERENCES_FBROWSEROPTS;Настройки PREFERENCES_FILEFORMAT;Формат файлов PREFERENCES_FLATFIELDFOUND;Найдено -PREFERENCES_FLATFIELDSDIR;Папка с файлами плоских полей +PREFERENCES_FLATFIELDSDIR;Каталог файлов плоских полей PREFERENCES_FLATFIELDSHOTS;снимков PREFERENCES_FLATFIELDTEMPLATES;шаблонов PREFERENCES_FLUOF2;Лампа дневного света F2 @@ -759,6 +805,8 @@ PREFERENCES_HISTOGRAMPOSITIONLEFT;Гистограмма на левой пан PREFERENCES_HLTHRESHOLD;Порог срабатывания пересветов PREFERENCES_ICCDIR;Каталог ICC профилей PREFERENCES_IMPROCPARAMS;Профиль обработки по умолчанию +PREFERENCES_INSPECT_LABEL;Предпросмотр +PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Максимальное количество кешированных файлов PREFERENCES_INTENT_ABSOLUTE;Абсолютное колориметрическое PREFERENCES_INTENT_PERCEPTUAL;Перцепционное PREFERENCES_INTENT_RELATIVE;Относительное колориметрическое @@ -776,11 +824,12 @@ PREFERENCES_METADATA;Метаданные PREFERENCES_MONITOR;Монитор PREFERENCES_MULTITAB;Много вкладок PREFERENCES_MULTITABDUALMON;Много вкладок, на втором мониторе (если возможно) +PREFERENCES_NAVIGATIONFRAME;Навигация PREFERENCES_OUTDIR;Каталог для сохранения изображений PREFERENCES_OUTDIRFOLDER;Сохранять в каталог PREFERENCES_OUTDIRFOLDERHINT;Сохранение изображений в выбранный каталог PREFERENCES_OUTDIRTEMPLATE;Использовать шаблон -PREFERENCES_OUTDIRTEMPLATEHINT;Вы можете использовать следующие элементы форматирования:\n%f, %d1, %d2, …, %p1, %p2, …, %r, %s1, %s2, …\n\nЭлементы соответствуют различным элементам в пути к RAW-файлу, некоторым атрибутам файла или индексу в очереди пакетной обработки.\n\nНапример, если был открыт файл /home/tom/image/2006-02-09/dsc0012.nef, элементы форматирования будут выглядеть так:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2006-02-09\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r заменится на рейтинг фотографии, либо '0' при пустом, либо на 'x' если фотография находится в корзине.\n\n%s1, %s2 и т.д. заменятся на индекс фотографии в очереди обработки, дополненный нулями до 1-9 символов. Индекс сбрасывается при старте и увеличивается на единицу при обработке фотографии.\nЕсли вы хотите сохранять изображения в каталоге с оригиналом, введите:\n%p1/%f\n\nЕсли вы хотите сохранять изображения в каталоге "converted" в каталоге оригинального файла, введите строку:\n%p1/converted/%f\nДля сохранения изображений в папке "/home/tom/photos/converted/2006-02-09", напишите:\n%p2/converted/%d1/%f +PREFERENCES_OUTDIRTEMPLATEHINT;Вы можете использовать следующие элементы форматирования:\n%f, %d1, %d2, …, %p1, %p2, …, %r, %s1, %s2, …\n\nЭлементы соответствуют различным элементам в пути к RAW-файлу, некоторым атрибутам файла или индексу в очереди пакетной обработки.\n\nНапример, если был открыт файл /home/tom/image/2006-02-09/dsc0012.nef, элементы форматирования будут выглядеть так:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2006-02-09\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r заменится на рейтинг фотографии, либо '0' при пустом, либо на 'x' если фотография находится в корзине.\n\n%s1, %s2 и т.д. заменятся на индекс фотографии в очереди обработки, дополненный нулями до 1-9 символов. Индекс сбрасывается при старте и увеличивается на единицу при обработке фотографии.\nЕсли вы хотите сохранять изображения в каталоге с оригиналом, введите:\n%p1/%f\n\nЕсли вы хотите сохранять изображения в каталоге "converted" в каталоге оригинального файла, введите строку:\n%p1/converted/%f\nДля сохранения изображений в каталоге "/home/tom/photos/converted/2006-02-09", напишите:\n%p2/converted/%d1/%f PREFERENCES_OVERLAY_FILENAMES;Показывать информацию поверх миниатюр PREFERENCES_OVERWRITEOUTPUTFILE;Перезаписывать существующие файлы PREFERENCES_PANFACTORLABEL;Коэффициент @@ -788,6 +837,8 @@ PREFERENCES_PARSEDEXT;Расширения для предпросмотра PREFERENCES_PARSEDEXTADD;Добавить PREFERENCES_PARSEDEXTADDHINT;Введите расширение и нажмите на эту кнопку, чтобы добавить его в список PREFERENCES_PARSEDEXTDELHINT;Удаление выбранных расширений из списка +PREFERENCES_PERFORMANCE_THREADS;Потоки +PREFERENCES_PERFORMANCE_THREADS_LABEL;Максимальное количество потоков для шумоподавления и уровней вейвлетов (0 для автовыбора) PREFERENCES_PREVDEMO;Метод демозаика для превью PREFERENCES_PREVDEMO_FAST;Быстрый PREFERENCES_PREVDEMO_LABEL;Метод демозаика, используемый для превью при масштабе < 100% @@ -798,8 +849,11 @@ PREFERENCES_PROFILEPRCACHE;загружать из кэша PREFERENCES_PROFILEPRFILE;загружать из каталога с файлом PREFERENCES_PROFILESAVECACHE;Сохранять профиль обработки в кэше PREFERENCES_PROFILESAVEINPUT;Сохранять профиль обработки в одном каталоге с исходным файлом +PREFERENCES_PROFILE_NONE;Нет PREFERENCES_PROPERTY;Свойство PREFERENCES_PSPATH;Каталог установки Adobe Photoshop +PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Запоминает масштаб и позицию текущего изображения при открытии нового.\n\nЭта настройка работает только при типе редактора "Одна вкладка" и выставлении настройки "Метод демозаика, используемый для превью при масштабе < 100%" в "Как в PP3". +PREFERENCES_SAVE_TP_OPEN_NOW;Сохранить сейчас PREFERENCES_SELECTLANG;Выбрать язык PREFERENCES_SET;Установить PREFERENCES_SHOWBASICEXIF;Показывать основные данные Exif @@ -818,9 +872,15 @@ PREFERENCES_TAB_COLORMGR;Управление цветом PREFERENCES_TAB_DYNAMICPROFILE;Динамические профили PREFERENCES_TAB_GENERAL;Основное PREFERENCES_TAB_IMPROC;Обработка изображения +PREFERENCES_TAB_PERFORMANCE;Производительность PREFERENCES_TAB_SOUND;Звуки +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Встроенное jpeg превью +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Показывать изображение +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Нейтрально обработанный raw-файл +PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Встроенный полноразмерный jpeg, иначе нейтральный raw PREFERENCES_TP_LABEL;Панель инструментов: PREFERENCES_TP_VSCROLLBAR;Спрятать вертикальную полосу прокрутки +PREFERENCES_TUNNELMETADATA;Копировать данные Exif/IPTC/XMP неизменённо PREFERENCES_USEBUNDLEDPROFILES;Использовать предустановленный профиль PREFERENCES_VIEW;ББ устройства вывода (монитор, проектор и т.д.) PREFERENCES_WORKFLOW;Стиль работы @@ -920,6 +980,8 @@ TP_BWMIX_MET;Метод TP_BWMIX_MET_CHANMIX;Миксер каналов TP_BWMIX_MET_DESAT;Обесцвечивание TP_BWMIX_MET_LUMEQUAL;Яркостный Эквалайзер +TP_BWMIX_MIXC;Миксер каналов +TP_BWMIX_NEUTRAL;Сбросить TP_BWMIX_RGBLABEL;К: %1%% З: %2%% С: %3%% Итог: %4%% TP_BWMIX_RGBLABEL_HINT;Итоговые значения RGB, учитывающие все настройки миксера.\nИтог показывает сумму применённых значений RGB:\n- всегда 100% в относительных режимах\n- выше (светлее) или ниже (темнее) в абсолютных режимах. TP_BWMIX_RGB_TOOLTIP;Смешивание каналов RGB. Используйте пресеты для руководства.\nУчтите что отрицательные значения могут вызвать искажения или неустойчивое поведение. @@ -1000,10 +1062,12 @@ TP_CROP_GTNONE;Нет TP_CROP_GTRULETHIRDS;Правило третей TP_CROP_GTTRIANGLE1;Золотые треугольники 1 TP_CROP_GTTRIANGLE2;Золотые треугольники 2 -TP_CROP_GUIDETYPE;Тип направляющей: +TP_CROP_GUIDETYPE;Направляющие: TP_CROP_H;Высота TP_CROP_LABEL;Кадрирование TP_CROP_PPI;PPI= +TP_CROP_RESETCROP;Сбросить +TP_CROP_SELECTCROP;Выбрать TP_CROP_W;Ширина TP_CROP_X;x TP_CROP_Y;y @@ -1144,7 +1208,7 @@ TP_ICM_DCPILLUMINANT;Источник света TP_ICM_DCPILLUMINANT_INTERPOLATED;Интерполированный TP_ICM_INPUTCAMERA;По умолчанию для камеры TP_ICM_INPUTCAMERAICC;Автоопределенный для камеры -TP_ICM_INPUTCAMERAICC_TOOLTIP;Использовать входящий цветовой профиль RawTherapee (DCP или ICC) для конкретной камеры. Эти профили более точные, чем простые матрицы. Доступны не для всех камер. Эти профили хранятся в папках /iccprofiles/input и /dcpprofiles и автоматически выбираются на основе сопоставления имени файла и названия модели камеры. +TP_ICM_INPUTCAMERAICC_TOOLTIP;Использовать входящий цветовой профиль RawTherapee (DCP или ICC) для конкретной камеры. Эти профили более точные, чем простые матрицы. Доступны не для всех камер. Эти профили хранятся в каталогах /iccprofiles/input и /dcpprofiles и автоматически выбираются на основе сопоставления имени файла и названия модели камеры. TP_ICM_INPUTCAMERA_TOOLTIP;Использовать простую цветовую матрицу из dcraw, улучшенную версию от RawTherapee (если она доступна для соотв. камеры) или встроенную в DNG. TP_ICM_INPUTCUSTOM;Пользовательский TP_ICM_INPUTCUSTOM_TOOLTIP;Выбор собственного файла профиля DCP/ICC для камеры @@ -1203,7 +1267,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Защита красных тонов и оттен TP_LENSGEOM_AUTOCROP;Автокадрирование TP_LENSGEOM_FILL;Автозаполнение TP_LENSGEOM_LABEL;Геометрия +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Автоматически +TP_LENSPROFILE_CORRECTION_LCPFILE;Файл LCP +TP_LENSPROFILE_CORRECTION_MANUAL;Вручную TP_LENSPROFILE_LABEL;Профиль коррекции объектива +TP_LENSPROFILE_LENS_WARNING;Внимание: кроп-фактор, используемый для профилирования объектива больше чем кроп-фактор камеры. Результат может быть ошибочным. +TP_LENSPROFILE_MODE_HEADER;Выбор профиля объектива: +TP_LENSPROFILE_USE_CA;Хроматические абберации +TP_LENSPROFILE_USE_GEOMETRIC;Геометрия +TP_LENSPROFILE_USE_HEADER;Выбор искажений для коррекции: +TP_LENSPROFILE_USE_VIGNETTING;Виньетирование TP_LOCALCONTRAST_AMOUNT;Величина TP_LOCALCONTRAST_DARKNESS;Тёмные тона TP_LOCALCONTRAST_LABEL;Локальный контраст @@ -1227,15 +1300,17 @@ TP_PERSPECTIVE_LABEL;Перспектива TP_PERSPECTIVE_VERTICAL;Вертикальная TP_PFCURVE_CURVEEDITOR_CH;Цвет TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Контроль силы подавления в зависимости от цвета.\nВыше - сильней, ниже - слабей. -TP_PREPROCESS_DEADPIXFILT;Фильтр битых пикселей -TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Пытается подавить битые пиксели. +TP_PREPROCESS_DEADPIXFILT;Битых пиксели +TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Фильтр пытается подавить битые пиксели. TP_PREPROCESS_GREENEQUIL;Выравнивание зелёного -TP_PREPROCESS_HOTPIXFILT;Фильтр горячих пикселей -TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Пытается подавить горячие пиксели. +TP_PREPROCESS_HOTPIXFILT;Горячие пиксели +TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Фильтр пытается подавить горячие пиксели. TP_PREPROCESS_LABEL;Предобработка TP_PREPROCESS_LINEDENOISE;Фильтр линейного шума TP_PREPROCESS_NO_FOUND;Ничего не найдено TP_RAWCACORR_AUTO;Автоматическая коррекция +TP_RAWCACORR_AUTOIT;Подходов +TP_RAWCACORR_AVOIDCOLORSHIFT;Избегать сдвига цветов TP_RAWCACORR_CABLUE;Синий TP_RAWCACORR_CARED;Красный TP_RAWCACORR_CASTR;Сила @@ -1279,6 +1354,7 @@ TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Сенсор с матрицей Байера TP_RAW_SENSOR_XTRANS_LABEL;Сенсор с матрицей X-Trans TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Разрешить увеличение TP_RESIZE_APPLIESTO;Применить к: TP_RESIZE_CROPPEDAREA;Кадрированной области TP_RESIZE_FITBOX;Ограничивающую рамку @@ -1407,6 +1483,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;Светодиодный TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Метод +TP_WBALANCE_PICKER;Выбрать TP_WBALANCE_SHADE;Тень TP_WBALANCE_SIZE;Размер пипетки: TP_WBALANCE_SOLUX35;Solux 3500K @@ -1448,7 +1525,6 @@ 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. !FILECHOOSER_FILTER_PP;Processing profiles !FILECHOOSER_FILTER_SAME;Same format as current photo -!GENERAL_CURRENT;Current !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_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_235;B&W - CM - Auto @@ -1635,7 +1711,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_437;Retinex - M - Method !HISTORY_MSG_438;Retinex - M - Equalizer !HISTORY_MSG_439;Retinex - Process -!HISTORY_MSG_440;CbDL - Method !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output black point compensation @@ -1664,9 +1739,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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_489;DRC - Detail !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction !HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction @@ -1708,37 +1780,11 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description !ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description. !ICCPROFCREATOR_GAMMA;Gamma -!ICCPROFCREATOR_ICCVERSION;ICC version: !ICCPROFCREATOR_ILL;Illuminant: -!ICCPROFCREATOR_ILL_41;D41 -!ICCPROFCREATOR_ILL_50;D50 -!ICCPROFCREATOR_ILL_55;D55 -!ICCPROFCREATOR_ILL_60;D60 -!ICCPROFCREATOR_ILL_65;D65 -!ICCPROFCREATOR_ILL_80;D80 -!ICCPROFCREATOR_ILL_DEF;Default -!ICCPROFCREATOR_ILL_INC;StdA 2856K !ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles. !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 -!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) -!ICCPROFCREATOR_PRIM_BEST;BestRGB -!ICCPROFCREATOR_PRIM_BETA;BetaRGB -!ICCPROFCREATOR_PRIM_BLUX;Blue X -!ICCPROFCREATOR_PRIM_BLUY;Blue Y -!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB -!ICCPROFCREATOR_PRIM_GREX;Green X -!ICCPROFCREATOR_PRIM_GREY;Green Y -!ICCPROFCREATOR_PRIM_PROPH;Prophoto -!ICCPROFCREATOR_PRIM_REC2020;Rec2020 -!ICCPROFCREATOR_PRIM_REDX;Red X -!ICCPROFCREATOR_PRIM_REDY;Red Y -!ICCPROFCREATOR_PRIM_SRGB;sRGB !ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles. !ICCPROFCREATOR_PRIM_WIDEG;Widegamut -!ICCPROFCREATOR_PROF_V2;ICC v2 -!ICCPROFCREATOR_PROF_V4;ICC v4 !ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... !ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: @@ -1785,29 +1831,14 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex -!PREFERENCES_APPEARANCE;Appearance -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color -!PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit -!PREFERENCES_CACHECLEAR;Clear !PREFERENCES_CACHECLEAR_ALL;Clear all cached files: !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !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 -!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_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line !PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser @@ -1819,38 +1850,24 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_HISTOGRAMWORKING;Use working profile for main histogram and Navigator !PREFERENCES_HISTOGRAM_TOOLTIP;If enabled, the working profile is used for rendering the main histogram and the Navigator panel, otherwise the gamma-corrected output profile is used. !PREFERENCES_IMG_RELOAD_NEEDED;These changes require the image to be reloaded (or a new image to be opened) to take effect. -!PREFERENCES_INSPECT_LABEL;Inspect -!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images !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_MAXRECENTFOLDERS;Maximum number of recent folders !PREFERENCES_MONINTENT;Default rendering intent !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. !PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list. -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_PRINTER;Printer (Soft-Proofing) !PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file !PREFERENCES_PROFILESAVELOCATION;Processing profile saving location -!PREFERENCES_PROFILE_NONE;None !PREFERENCES_PRTINTENT;Rendering intent !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset -!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar -!PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PROFILEPANEL_PDYNAMIC;Dynamic !SAMPLEFORMAT_0;Unknown data format !SAMPLEFORMAT_1;8-bit unsigned @@ -1865,8 +1882,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located @@ -1966,8 +1981,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_COLORTONING_TWOBY;Special a* and b* !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_CROP_RESETCROP;Reset -!TP_CROP_SELECTCROP;Select !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! !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. @@ -2019,15 +2032,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically -!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually -!TP_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. -!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -!TP_LENSPROFILE_USE_CA;Chromatic aberration -!TP_LENSPROFILE_USE_GEOMETRIC;Geometric -!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: -!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction !TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both !TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal @@ -2036,9 +2040,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !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. -!TP_RAWCACORR_AUTOIT;Iterations !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast !TP_RAW_3PASSBEST;3-pass (Markesteijn) @@ -2081,7 +2083,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. !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.\n+fast gives less artifacts in flat areas -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling !TP_RETINEX_CONTEDIT_HSL;HSL histogram !TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram !TP_RETINEX_CONTEDIT_LH;Hue @@ -2319,6 +2320,5 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning -!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". From 1b4113a172135e4a08054684842fcdb6d4d46515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mari=C3=A1n=20Kyral?= Date: Thu, 13 Dec 2018 21:15:23 +0100 Subject: [PATCH 325/348] Update Czech translation --- rtdata/languages/Czech | 513 ++++++++++++++++++++--------------------- 1 file changed, 251 insertions(+), 262 deletions(-) diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index f7b7415d0..d07a678da 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -41,12 +41,13 @@ #40 2017-12-13 updated by mkyral #41 2018-03-03 updated by mkyral #42 2018-04-28 updated by mkyral - +#43 2018-12-13 updated by mkyral ABOUT_TAB_BUILD;Verze ABOUT_TAB_CREDITS;Zásluhy ABOUT_TAB_LICENSE;Licence ABOUT_TAB_RELEASENOTES;Poznámky k vydání ABOUT_TAB_SPLASH;Úvodní obrazovka +ADJUSTER_RESET_TO_DEFAULT;Kliknutí - návrat k výchozí hodnotě.\nCtrl+kliknutí - návrat k počáteční hodnotě. BATCHQUEUE_AUTOSTART;Automatický start BATCHQUEUE_AUTOSTARTHINT;Automatické spuštění zpracování po vložení nové úlohy. BATCHQUEUE_DESTFILENAME;Cesta a název souboru @@ -55,10 +56,11 @@ BATCH_PROCESSING;Dávkové zpracování CURVEEDITOR_AXIS_IN;Vstup: CURVEEDITOR_AXIS_LEFT_TAN;LS: CURVEEDITOR_AXIS_OUT;Výstup: -CURVEEDITOR_AXIS_RIGHT_TAN;PS: +CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;Elastická CURVEEDITOR_CURVE;Křivka CURVEEDITOR_CURVES;Křivky -CURVEEDITOR_CUSTOM;Vlastní +CURVEEDITOR_CUSTOM;Běžná CURVEEDITOR_DARKS;Tmavé CURVEEDITOR_EDITPOINT_HINT;Povolit úpravu hodnoty vstupně výstupního uzlu.\n\nKliknutím pravým tlačítkem na uzel jej vyberete. \nKliknutím pravým tlačítkem do prázdného místa zrušíte výběr. CURVEEDITOR_HIGHLIGHTS;Světla @@ -82,6 +84,10 @@ DYNPROFILEEDITOR_DELETE;Smazat DYNPROFILEEDITOR_EDIT;Upravit DYNPROFILEEDITOR_EDIT_RULE;Upravit pravidlo dynamického profilu DYNPROFILEEDITOR_ENTRY_TOOLTIP;Porovnávání rozlišuje velikost písmen.\nPro vložení regulárního výrazu přidejte\nprefix "re:". +DYNPROFILEEDITOR_IMGTYPE_ANY;Jakýkoli +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Běžná DYNPROFILEEDITOR_MOVE_DOWN;Posunout dolů DYNPROFILEEDITOR_MOVE_UP;Posunout nahoru DYNPROFILEEDITOR_NEW;Nový @@ -154,6 +160,8 @@ FILEBROWSER_AUTOFLATFIELD;Auto Flat Field FILEBROWSER_BROWSEPATHBUTTONHINT;Klikněte pro výběr cesty. FILEBROWSER_BROWSEPATHHINT;Vložte cestu pro procházení.\n\nKlávesové zkratky:\nCtrl-o pro přepnutí do adresního řádku.\nEnter/ Ctrl-Enter pro procházení ;\nEsc pro zrušení změn.\nShift-Esc pro zrušení přepnutí.\n\nZkratky pro cesty:\n~\t- domácí složka uživatele.\n!\t- složka s obrázky uživatele. FILEBROWSER_CACHE;Mezipaměť +FILEBROWSER_CACHECLEARFROMFULL;Smazat vše včetně profilů zpracování v mezipaměti +FILEBROWSER_CACHECLEARFROMPARTIAL;Smazat všechny profily mimo těch v mezipaměti FILEBROWSER_CLEARPROFILE;Smazat FILEBROWSER_COLORLABEL_TOOLTIP;Barevný štítek.\n\nPoužijte výběr ze seznamu nebo klávesové zkratky:\nShift-Ctrl-0 Bez barvy\nShift-Ctrl-1 Červený\nShift-Ctrl-2 Žlutý\nShift-Ctrl-3 Zelený\nShift-Ctrl-4 Modrý\nShift-Ctrl-5 Nachový FILEBROWSER_COPYPROFILE;Kopírovat @@ -242,7 +250,7 @@ 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. FILECHOOSER_FILTER_ANY;Všechny soubory -FILECHOOSER_FILTER_COLPROF;Barevné profily +FILECHOOSER_FILTER_COLPROF;Barevné profily (*.icc) FILECHOOSER_FILTER_CURVE;Soubory křivek FILECHOOSER_FILTER_LCP;Korekční profily objektivu FILECHOOSER_FILTER_PP;Profily zpracování @@ -256,6 +264,7 @@ GENERAL_AUTO;Automaticky GENERAL_BEFORE;Před GENERAL_CANCEL;Zrušit GENERAL_CLOSE;Zavřít +GENERAL_CURRENT;Současný GENERAL_DISABLE;Vypnout GENERAL_DISABLED;Vypnuto GENERAL_ENABLE;Zapnout @@ -268,17 +277,19 @@ GENERAL_NONE;Nic GENERAL_OK;OK GENERAL_OPEN;Otevřít GENERAL_PORTRAIT;Na výšku +GENERAL_RESET;Obnovit GENERAL_SAVE;Uložit +GENERAL_SAVE_AS;Uložit jako... GENERAL_SLIDER;Posuvník 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_BAR;Zobrazit/Skrýt řádek RGB indikátoru. HISTOGRAM_TOOLTIP_CHRO;Skrýt/Zobrazit histogram barevnosti. -HISTOGRAM_TOOLTIP_FULL;Plný (zapnuto) nebo přiblížený (vypnuto) histogram. HISTOGRAM_TOOLTIP_G;Skrýt/Zobrazit histogram zelené. HISTOGRAM_TOOLTIP_L;Skrýt/Zobrazit CIELab histogram jasu. +HISTOGRAM_TOOLTIP_MODE;Přepíná mezi lineárním, log-lineárním a log-log škálováním histogramu. HISTOGRAM_TOOLTIP_R;Skrýt/Zobrazit histogram červené. HISTOGRAM_TOOLTIP_RAW;Skrýt/Zobrazit raw histogram. HISTORY_CHANGED;Změněno @@ -469,7 +480,7 @@ HISTORY_MSG_181;CAM02 - Chroma (C) HISTORY_MSG_182;CAM02 - Automatická CAT02 HISTORY_MSG_183;CAM02 - Kontrast (J) HISTORY_MSG_184;CAM02 - Okolí scény -HISTORY_MSG_185;CAM02 - Kontrola palety +HISTORY_MSG_185;CAM02 - Kontrola gamutu HISTORY_MSG_186;CAM02 - Algoritmus HISTORY_MSG_187;CAM02 - Ochrana červ. a pleť. tónů HISTORY_MSG_188;CAM02 - Světlost (Q) @@ -518,7 +529,9 @@ HISTORY_MSG_231;ČB - Křivka 'Před' HISTORY_MSG_232;ČB - Typ křivky 'Před' HISTORY_MSG_233;ČB - Křivka 'Po' HISTORY_MSG_234;ČB - Typ křivky 'Po' +HISTORY_MSG_235;ČB - MK - Auto HISTORY_MSG_236;--nepoužito-- +HISTORY_MSG_237;ČB - MK HISTORY_MSG_238;PF - Rozptyl HISTORY_MSG_239;PF - Síla HISTORY_MSG_240;PF - Střed @@ -554,6 +567,7 @@ HISTORY_MSG_269;Barevné tónování - Světla - červená HISTORY_MSG_270;Barevné tónování - Světla - zelená HISTORY_MSG_271;Barevné tónování - Světla - modrá HISTORY_MSG_272;Barevné tónování - Vyvážení +HISTORY_MSG_273;Barevné tónování - Vyvážení barev SMH HISTORY_MSG_274;Barevné tónování - Nasycení stínů HISTORY_MSG_275;Barevné tónování - Nasycení světel HISTORY_MSG_276;Barevné tónování - Neprůhlednost @@ -568,8 +582,8 @@ HISTORY_MSG_284;Barevné tónování - Aut. ochrana nasycení HISTORY_MSG_285;Redukce šumu - Medián - Metoda HISTORY_MSG_286;Redukce šumu - Medián - Typ HISTORY_MSG_287;Redukce šumu - Medián - Průchody -HISTORY_MSG_288;Flat-Field - kontrola oříznutí -HISTORY_MSG_289;Flat-Field - kontrola oříznutí - Auto +HISTORY_MSG_288;Flat Field - Kontrola oříznutí +HISTORY_MSG_289; Flat Field - Kontrola oříznutí - Aut HISTORY_MSG_290;Úroveň černé - Červená HISTORY_MSG_291;Úroveň černé - Zelená 1 HISTORY_MSG_292;Úroveň černé - Modrá @@ -594,15 +608,15 @@ HISTORY_MSG_310;Vlnka - Zůstatek - Zaměření a ochrana tónů oblohy HISTORY_MSG_311;Vlnka - Úrovně vlnky HISTORY_MSG_312;Vlnka - Zůstatek - Práh stínů HISTORY_MSG_313;Vlnka - Barevnost - Pastel./Sat. -HISTORY_MSG_314;Vlnka - Paleta - Omezení artefaktů +HISTORY_MSG_314;Vlnka - Gamut - Omezení artefaktů HISTORY_MSG_315;Vlnka - Zůstatek - Kontrast -HISTORY_MSG_316;Vlnka - Paleta - Ochrana a zaměření pleťových tónů -HISTORY_MSG_317;Vlnka - Paleta - Odstín pleti +HISTORY_MSG_316;Vlnka - Gamut - Ochrana a zaměření pleťových tónů +HISTORY_MSG_317;Vlnka - Gamut - Odstín pleti HISTORY_MSG_318;Vlnka - Kontrast - Úrovně světel HISTORY_MSG_319;Vlnka - Kontrast - - rozsah světel HISTORY_MSG_320;Vlnka - Kontrast - Rozsah stínů HISTORY_MSG_321;Vlnka - Kontrast - Úrovně stínů -HISTORY_MSG_322;Vlnka - Paleta - Zabránit posunu barev +HISTORY_MSG_322;Vlnka - Gamut - Zabránit posunu barev HISTORY_MSG_323;Vlnka - DH - Místní kontrast HISTORY_MSG_324;Vlnka - Barevnost - Pastelové HISTORY_MSG_325;Vlnka - Barevnost - Nasycení @@ -638,7 +652,7 @@ HISTORY_MSG_354;Vlnka - DH - Vylepšení HISTORY_MSG_355;Vlnka - DH - Minimální práh HISTORY_MSG_356;Vlnka - DH - Maximální práh HISTORY_MSG_357;Vlnka - Odšumění - Propojení s DH -HISTORY_MSG_358;Vlnka - Paleta - Kontrast úrovní barevnost +HISTORY_MSG_358;Vlnka - Gamut - Kontrast úrovní barevnost HISTORY_MSG_359;Vypálené/Mrtvé - Práh HISTORY_MSG_360;TM - Gama HISTORY_MSG_361;Vlnka - Dokončení - Vyvážení barev @@ -672,6 +686,7 @@ HISTORY_MSG_388;Vlnka - Zůstatek - VB střední: zelená HISTORY_MSG_389;Vlnka - Zůstatek - VB střední: modrá HISTORY_MSG_390;Vlnka - Zůstatek - VB stíny: zelená HISTORY_MSG_391;Vlnka - Zůstatek - VB stíny: modrá +HISTORY_MSG_392;Vlnka - Zůstatek - Vyvážení barev HISTORY_MSG_393;DCP - tabulka vzhledu HISTORY_MSG_394;DCP - základní expozice HISTORY_MSG_395;DCP - základní tabulka @@ -751,24 +766,105 @@ 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;Komprese dynamického rozsahu +HISTORY_MSG_489;DRC - Detail +HISTORY_MSG_490;DRC - Míra HISTORY_MSG_491;Vyvážení bílé HISTORY_MSG_492;RGB křivky HISTORY_MSG_493;L*a*b* úpravy -HISTORY_MSG_CLAMPOOG;Oříznutí barvy mimo gamut +HISTORY_MSG_CLAMPOOG;Oříznout barvy mimo gamut HISTORY_MSG_COLORTONING_LABGRID_VALUE;Barevné tónování - Korekce barev -HISTORY_MSG_HISTMATCHING;Automaticky přizpůsobená Tónová křivka +HISTORY_MSG_COLORTONING_LABREGION_AB;Barevné tónování - Korekce barev +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;BT - Kanál +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;BT -oblast C masky +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;Barevné tónování - H maska +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;BT - Světlost +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;BT - L maska +HISTORY_MSG_COLORTONING_LABREGION_LIST;BT - +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;BT - oblast masky rozostření +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;BT - oblast posunu +HISTORY_MSG_COLORTONING_LABREGION_POWER;BT - oblast síly +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;BT- Nasycení +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;BT - oblast zobrazené masky +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;BT - oblast sklonu +HISTORY_MSG_DEHAZE_DEPTH;Závoj - Hloubka +HISTORY_MSG_DEHAZE_ENABLED;Odstranění závoje +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Závoj - Ukázat hloubkovou mapu +HISTORY_MSG_DEHAZE_STRENGTH;Závoj - Síla +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dvojité demozajkování - automatický práh +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dvojité demozajkování - Práh kontrastu +HISTORY_MSG_HISTMATCHING;Automaticky nalezená tónová křivka +HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Výstup - Základní barvy +HISTORY_MSG_ICM_OUTPUT_TEMP;Výstup - ICC-v4 světelný zdroj D +HISTORY_MSG_ICM_OUTPUT_TYPE;Výstup - Typ +HISTORY_MSG_ICM_WORKING_GAMMA;Pracovní - Gama +HISTORY_MSG_ICM_WORKING_SLOPE;Pracovní - sklon +HISTORY_MSG_ICM_WORKING_TRC_METHOD;Pracovní - Metoda TRC HISTORY_MSG_LOCALCONTRAST_AMOUNT;Místní kontrast - Míra HISTORY_MSG_LOCALCONTRAST_DARKNESS;Místní kontrast - Tmavé HISTORY_MSG_LOCALCONTRAST_ENABLED;Místní kontrast HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Místní kontrast - Světlé HISTORY_MSG_LOCALCONTRAST_RADIUS;Místní kontrast - Poloměr HISTORY_MSG_METADATA_MODE;Režim kopírování metadat +HISTORY_MSG_MICROCONTRAST_CONTRAST;Mikrokontrast - Práh kontrastu +HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Metoda demozajkování pohybu HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Směr filtru linkového rušení HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek +HISTORY_MSG_PRSHARPEN_CONTRAST;Doostření - Práh kontrastu +HISTORY_MSG_RAWCACORR_AUTOIT;Raw korekce CA - Iterace +HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw korekce CA - Zabránit posunu barev +HISTORY_MSG_RAW_BORDER;Okraj Raw +HISTORY_MSG_RESIZE_ALLOWUPSCALING;Změna rozměrů - Povolit zvětšení +HISTORY_MSG_SHARPENING_CONTRAST;Doostření - Práh kontrastu +HISTORY_MSG_SH_COLORSPACE;S/S - Barevný prostor +HISTORY_MSG_SOFTLIGHT_ENABLED;Měkké světlo +HISTORY_MSG_SOFTLIGHT_STRENGTH;Měkká světla - Síla +HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Kotva HISTORY_NEWSNAPSHOT;Přidat HISTORY_NEWSNAPSHOT_TOOLTIP;Zkratka: Alt-s HISTORY_SNAPSHOT;Snímek HISTORY_SNAPSHOTS;Snímky +ICCPROFCREATOR_COPYRIGHT;Autorská práva: +ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Vrátit se k původní deklaraci práv a majitele, nastaví "RawTherapee, CC0" +ICCPROFCREATOR_CUSTOM;Vlastní +ICCPROFCREATOR_DESCRIPTION;Popis: +ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Přidá hodnoty gamy a sklonu do popisu +ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Ponechte prázdné pro nastavení výchozího popisu. +ICCPROFCREATOR_GAMMA;Gama +ICCPROFCREATOR_ICCVERSION;Verze ICC: +ICCPROFCREATOR_ILL;Osvětlení: +ICCPROFCREATOR_ILL_41;D41 +ICCPROFCREATOR_ILL_50;D50 +ICCPROFCREATOR_ILL_55;D55 +ICCPROFCREATOR_ILL_60;D60 +ICCPROFCREATOR_ILL_65;D65 +ICCPROFCREATOR_ILL_80;D80 +ICCPROFCREATOR_ILL_DEF;Výchozí +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;Světelný zdroj může být nastaven pouze u ICC v4 profilů. +ICCPROFCREATOR_PRIMARIES;Základní barvy: +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) +ICCPROFCREATOR_PRIM_BEST;BestRGB +ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BLUX;Modrá X +ICCPROFCREATOR_PRIM_BLUY;Modrá Y +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Zelená X +ICCPROFCREATOR_PRIM_GREY;Zelená Y +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Červená X +ICCPROFCREATOR_PRIM_REDY;Červená Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_TOOLTIP;Vlastní základní barvy lze nastavit pouze u ICC v4 profilu. +ICCPROFCREATOR_PRIM_WIDEG;Široký gamut +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 +ICCPROFCREATOR_SAVEDIALOG_TITLE;Uložit ICC profil jako... +ICCPROFCREATOR_SLOPE;Sklon +ICCPROFCREATOR_TRC_PRESET;Tónová křivka odezvy: IPTCPANEL_CATEGORY;Kategorie IPTCPANEL_CATEGORYHINT;Identifikuje předmět obrázku dle názoru dodavatele. IPTCPANEL_CITY;Město @@ -811,14 +907,14 @@ 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_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_ICCPROFCREATOR;Nástroj pro vytváření ICC profilu 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 MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronizovat prohlížeč souborů s editorem pro zobrazení náhledu aktuálně otevřeného obrázku a smazání filtrů v prohlížeči souborů.\nZkratka: x\n\nStejně jako výše, ale bez smazání filtrů v prohlížeči souborů:\nZkratka: y\n(Náhled otevřeného obrázku nebude zobrazen pokud je filtrován). MAIN_BUTTON_PREFERENCES;Volby MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Vložit současný obrázek do fronty zpracování.\nZkratka: Ctrl+b -MAIN_BUTTON_SAVE_TOOLTIP;Uložit současný obrázek.\nZkratka: Ctrl+s +MAIN_BUTTON_SAVE_TOOLTIP;Uloží aktuální obrázek.\nZkratka: Ctrl+s\nUloží současný profil (.pp3).\nZkratka: Ctrl+Shift+s MAIN_BUTTON_SENDTOEDITOR;Upravit obrázek v externím editoru MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Editovat současný obrázek v externím editoru.\nZkratka: Ctrl+e MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Zobrazit/skrýt všechny postranní panely.\nZkratka: m @@ -867,19 +963,20 @@ MAIN_TAB_RAW;Raw MAIN_TAB_RAW_TOOLTIP;Zkratka: Alt-r MAIN_TAB_TRANSFORM;Transformace MAIN_TAB_TRANSFORM_TOOLTIP;Zkratka: Alt-t -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_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: < MAIN_TOOLTIP_INDCLIPPEDS;Zvýraznit oříznuté stíny.\nZkratka: > MAIN_TOOLTIP_PREVIEWB;Náhled modrého kanálu.\nZkratka: b -MAIN_TOOLTIP_PREVIEWFOCUSMASK;Náhled Masky zaostření.\nZkratka: Shift-f\n\nVíce přesné u snímků s nízkou hloubkou ostrosti, nízkým šumem a na vyšších úrovních zvětšení.\n\nPro zlepšení přesnosti detekce u zašuměných snímků použijte menší zvětšení, mezi 10 až 30%. +MAIN_TOOLTIP_PREVIEWFOCUSMASK;Náhled masky zaostření.\nZkratka: Shift-f\n\nVíce přesné u snímků s nízkou hloubkou ostrosti, nízkým šumem a na vyšších úrovních zvětšení.\n\nPoužijte přiblížení v rozsahu 10 až 30% pro zlepšení přesnosti detekce u zašuměných snímků. MAIN_TOOLTIP_PREVIEWG;Náhled zeleného kanálu.\nZkratka: g -MAIN_TOOLTIP_PREVIEWL;Náhled Svítivost.\nZkratka: v\n\n0.299*R + 0.587*G + 0.114*B +MAIN_TOOLTIP_PREVIEWL;Náhled svítivost.\nZkratka: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;Náhled červeného kanálu.\nZkratka: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Náhled masky kontrastu doostření.\nZkratka: p\n\nFunguje pouze pokud doostření zapnuto a přiblížení je >=100%. MAIN_TOOLTIP_QINFO;Stručné informace o obrázku.\nZkratka: i MAIN_TOOLTIP_SHOWHIDELP1;Zobrazit/skrýt levý panel.\nZkratka: l MAIN_TOOLTIP_SHOWHIDERP1;Zobrazit/skrýt pravý panel.\nZkratka: Alt-l @@ -917,6 +1014,7 @@ PARTIALPASTE_CROP;Ořez PARTIALPASTE_DARKFRAMEAUTOSELECT;Automatický výběr tmavých snímků PARTIALPASTE_DARKFRAMEFILE;Soubor tmavého snímku PARTIALPASTE_DEFRINGE;Odstranění lemu +PARTIALPASTE_DEHAZE;Odstranění závoje PARTIALPASTE_DETAILGROUP;Nastavení detailů PARTIALPASTE_DIALOGLABEL;Částečné vložení profilu zpracování PARTIALPASTE_DIRPYRDENOISE;Redukce šumu @@ -950,13 +1048,16 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Filtr mrtvých pixelů PARTIALPASTE_PREPROCESS_GREENEQUIL;Vyrovnání zelené PARTIALPASTE_PREPROCESS_HOTPIXFILT;Filtr vypálených pixelů PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtrovat linkové rušení +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek PARTIALPASTE_PRSHARPENING;Doostření po změně velikosti PARTIALPASTE_RAWCACORR_AUTO;Automatická korekce CA +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA zabránit posunu barev PARTIALPASTE_RAWCACORR_CAREDBLUE;CA červená a modrá PARTIALPASTE_RAWEXPOS_BLACK;Úrovně černé PARTIALPASTE_RAWEXPOS_LINEAR;Korekce bílého bodu PARTIALPASTE_RAWEXPOS_PRESER;Zachování světel PARTIALPASTE_RAWGROUP;Nastavení Raw +PARTIALPASTE_RAW_BORDER;Okraj Raw PARTIALPASTE_RAW_DCBENHANCE;Vylepšení DCB PARTIALPASTE_RAW_DCBITERATIONS;Průchody DCB PARTIALPASTE_RAW_DMETHOD;Metoda demozajkování @@ -972,13 +1073,21 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Stíny/Světla PARTIALPASTE_SHARPENEDGE;Hrany PARTIALPASTE_SHARPENING;Doostření (USM/RL) PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_SOFTLIGHT;Měkké světlo +PARTIALPASTE_TM_FATTAL;Komprese dynamického rozsahu PARTIALPASTE_VIBRANCE;Živost PARTIALPASTE_VIGNETTING;Korekce vinětace PARTIALPASTE_WHITEBALANCE;Nastavení bílé PREFERENCES_ADD;Přidat +PREFERENCES_APPEARANCE;Vzhled +PREFERENCES_APPEARANCE_COLORPICKERFONT;Písmo Průzkumníka barev +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Barva masky ořezu +PREFERENCES_APPEARANCE_MAINFONT;Hlavní písmo PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Barva vodítek navigátoru +PREFERENCES_APPEARANCE_THEME;Motiv PREFERENCES_APPLNEXTSTARTUP;vyžaduje restart aplikace PREFERENCES_AUTOMONPROFILE;Použít barevný profil hlavního monitoru z operačního systému +PREFERENCES_AUTOSAVE_TP_OPEN;Uložit stav sbalení/rozbalení nástrojů při ukončení PREFERENCES_BATCH_PROCESSING;Dávkové zpracování PREFERENCES_BEHADDALL;Vše do 'Přidat' PREFERENCES_BEHADDALLHINT;Nastaví všechny parametry do módu Přidat.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako rozdíl k uloženým hodnotám. @@ -986,6 +1095,11 @@ PREFERENCES_BEHAVIOR;Režim PREFERENCES_BEHSETALL;Vše do 'Nastavit' PREFERENCES_BEHSETALLHINT;Nastaví všechny parametry do módu Nastavit.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako absolutní, budou zobrazeny aktuální hodnoty. PREFERENCES_BLACKBODY;Wolfram +PREFERENCES_CACHECLEAR;Smazat +PREFERENCES_CACHECLEAR_ALL;Smazat z mezipaměti všechny soubory : +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Smazat z mezipaměti všechny soubory mimo profilů zpracování: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Smazat z mezipaměti pouze profily zpracování: +PREFERENCES_CACHECLEAR_SAFETY;Jsou smazány pouze soubory ve vyrovnávací paměti. Profily zpracování uložené u zdrojových obrázků zůstávají nedotčeny. PREFERENCES_CACHEMAXENTRIES;Maximální počet záznamů v mezipaměti PREFERENCES_CACHEOPTS;Vlastnosti mezipaměti PREFERENCES_CACHETHUMBHEIGHT;Maximální výška náhledu @@ -995,7 +1109,7 @@ PREFERENCES_CLUTSCACHE_LABEL;Maximální počet přednačtených CLUTů PREFERENCES_CLUTSDIR;Složka HaldCLUT PREFERENCES_CMMBPC;Kompenzace černého bodu PREFERENCES_CROP;Úprava ořezu -PREFERENCES_CROP_AUTO_FIT;Automaticky přizpůsobit přiblížení oblasti ořezu +PREFERENCES_CROP_AUTO_FIT;Automaticky přizpůsobit přiblížení ořezu PREFERENCES_CROP_GUIDES;Zobrazovat vodítka i když neprobíhá ořez PREFERENCES_CROP_GUIDES_FRAME;Snímek PREFERENCES_CROP_GUIDES_FULL;Originál @@ -1032,6 +1146,7 @@ PREFERENCES_EDITORCMDLINE;Vlastní příkazová řádka PREFERENCES_EDITORLAYOUT;Rozvržení editoru PREFERENCES_EXTERNALEDITOR;Externí editor PREFERENCES_FBROWSEROPTS;Volby prohlížeče souborů / náhledů +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Kompaktní nástroje v Prohlížeči souborů PREFERENCES_FILEFORMAT;Formát souboru PREFERENCES_FLATFIELDFOUND;Nalezeno PREFERENCES_FLATFIELDSDIR;Složka Flat Field souborů @@ -1104,6 +1219,8 @@ PREFERENCES_PARSEDEXTADDHINT;Vymazat označenou příponu ze seznamu. PREFERENCES_PARSEDEXTDELHINT;Vymazat označenou příponu ze seznamu. PREFERENCES_PARSEDEXTDOWNHINT;Vybranou příponu posunout na seznamu níže. PREFERENCES_PARSEDEXTUPHINT;Vybranou příponu posunout na seznamu výše. +PREFERENCES_PERFORMANCE_THREADS;Vlákna +PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximální počet vláken pro Redukci šumu a Úrovně vlnky (0 = Automaticky) PREFERENCES_PREVDEMO;Metoda demozajkování náhledu PREFERENCES_PREVDEMO_FAST;Rychlá PREFERENCES_PREVDEMO_LABEL;Metoda demozajkování pro náhled při přiblížení menším než 100%: @@ -1124,7 +1241,7 @@ PREFERENCES_PRTPROFILE;Barevný profil PREFERENCES_PSPATH;Instalační složka Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Zapamatovat si procento přiblížení a posun obrázku 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_SAVE_TP_OPEN_NOW;Uložit stav sbalení/rozbalení nástrojů hned +PREFERENCES_SAVE_TP_OPEN_NOW;Uložit současný stav sbalení/rozbalení nástrojů PREFERENCES_SELECTLANG;Volba jazyka PREFERENCES_SERIALIZE_TIFF_READ;Nastavení čtení TIFF PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializovat čtení TIFF souborů @@ -1133,7 +1250,7 @@ PREFERENCES_SET;Nastavit PREFERENCES_SHOWBASICEXIF;Zobrazovat základní Exif informace PREFERENCES_SHOWDATETIME;Zobrazovat datum a čas PREFERENCES_SHOWEXPOSURECOMPENSATION;Přidat kompenzaci expozice -PREFERENCES_SHOWFILMSTRIPTOOLBAR;Zobrazit lištu s filmovým pásem +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Lišta s filmovým pásem PREFERENCES_SHTHRESHOLD;Práh oříznutých stínů PREFERENCES_SINGLETAB;Mód jedné karty editoru PREFERENCES_SINGLETABVERTAB;Mód jedné karty editoru, svislé karty @@ -1147,10 +1264,11 @@ PREFERENCES_TAB_COLORMGR;Správa barev PREFERENCES_TAB_DYNAMICPROFILE;Pravidla dynamických profilů PREFERENCES_TAB_GENERAL;Obecné PREFERENCES_TAB_IMPROC;Zpracování obrázku +PREFERENCES_TAB_PERFORMANCE;Výkon PREFERENCES_TAB_SOUND;Zvuky -PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Vložený JPEG náhled -PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek k zobrazení -PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení raw +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Náhled vloženého JPEG +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek pro zobrazení +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení RAW PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Vložený JPEG náhled pokud je v plné velikosti, jinak neutrální raw PREFERENCES_TP_LABEL;Panel nástrojů: PREFERENCES_TP_VSCROLLBAR;Skrýt svislou posuvnou lištu @@ -1197,13 +1315,16 @@ 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ů +SAMPLEFORMAT_1;8-bitový neznaménkový +SAMPLEFORMAT_2;16-bitový neznaménkový +SAMPLEFORMAT_4;24-bitový LogLuv +SAMPLEFORMAT_8;32-bitový LogLuv +SAMPLEFORMAT_16;S pohyblivou čárkou, 16 bitů +SAMPLEFORMAT_32;S pohyblivou čárkou, 24 bitů +SAMPLEFORMAT_64;S pohyblivou čárkou, 32 bitů SAVEDLG_AUTOSUFFIX;Automaticky přidat příponu pokud soubor již existuje SAVEDLG_FILEFORMAT;Formát souboru +SAVEDLG_FILEFORMAT_FLOAT;S pohyblivou čárkou SAVEDLG_FORCEFORMATOPTS;Vynutit volby uložení SAVEDLG_JPEGQUAL;Kvalita JPEG SAVEDLG_PUTTOQUEUE;Vložit soubor do fronty @@ -1228,8 +1349,8 @@ THRESHOLDSELECTOR_HINT;Držte klávesu Shift pro přesun individuálních THRESHOLDSELECTOR_T;Nahoře THRESHOLDSELECTOR_TL;Nahoře vlevo THRESHOLDSELECTOR_TR;Nahoře vpravo -TOOLBAR_TOOLTIP_COLORPICKER;Uzamykatelný Průzkumník barev\n\nPokud je povolen:\nPřidáte průzkumníka barev kliknutím levým tlačítkem myši do náhledu\nPodržením levého tlačítka myši a tažením průzkumníka přesunete\nPokud na průzkumníka kliknete pravým tlačítkem, dojde k jeho smazání\nSmazání všech průzkumníků po stisknutí klávesy Shift a pravého tlačítka myši\nKliknutím pravým tlačítkem kdekoli mimo průzkumníka přepne zpět na nástroj posunu -TOOLBAR_TOOLTIP_CROP;Oříznutí výběru.\nZkratka: c\nOblast výřezu posunete pomocí Shift + tažení myši +TOOLBAR_TOOLTIP_COLORPICKER;Uzamykatelný Průzkumník barev\n\nPokud je nástroj aktivní:\n- Přidání sondy: levý-klik.\n- Posunutí sondy: levý-klik a posunutí.\n- Smazání sondy: pravý-klik.\n- Smazání všech sond: shift+pravý-klik.\n- Návrat k nástroji posunu: pravý-klik. +TOOLBAR_TOOLTIP_CROP;Oříznutí výběru.\nZkratka: c\nVýřez posunete pomocí Shift + tažení myši TOOLBAR_TOOLTIP_HAND;Posun.\nZkratka: h TOOLBAR_TOOLTIP_STRAIGHTEN;Vyznačení roviny / rotace.\nZkratka: s\n\nZobrazení míry rotace pomocí vodící linky na náhledu snímky. Úhel rotace je zobrazen vedle vodící linky. Střed rotace je geometrický střed snímku. TOOLBAR_TOOLTIP_WB;Bodové vyvážení bílé.\nZkratka: w @@ -1264,6 +1385,8 @@ TP_BWMIX_MET;Metoda TP_BWMIX_MET_CHANMIX;Míchání kanálů TP_BWMIX_MET_DESAT;Odbarvení TP_BWMIX_MET_LUMEQUAL;Korekce jasu +TP_BWMIX_MIXC;Míchání kanálů +TP_BWMIX_NEUTRAL;Obnovit TP_BWMIX_RGBLABEL;R: %1%% G: %2%% B: %3%% Celkem: %4%% TP_BWMIX_RGBLABEL_HINT;Výsledné RGB faktory po započtení všech mixérů\n"Celkem" zobrazí součet aktuálně aplikovaných RGB hodnot:\n- vždy 100% v relativním režimu\n- více (světlejší) nebo méně (tmavší) než 100% v absolutním režimu. TP_BWMIX_RGB_TOOLTIP;Mísení RGB kanálů. Jako vodítko můžete použít uložená přednastavení.\nPovšimněte si prosím, že záporné hodnoty mohou vést ke vzniku artefaktů nebo chybnému chování. @@ -1305,6 +1428,7 @@ 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_ABSOLUTELUMINANCE;Absolutní jas TP_COLORAPP_ALGO;Algoritmus TP_COLORAPP_ALGO_ALL;Vše TP_COLORAPP_ALGO_JC;Světlost + Barevnost (JC) @@ -1315,8 +1439,9 @@ TP_COLORAPP_BADPIXSL;Filtr vypálených/mrtvých pixelů TP_COLORAPP_BADPIXSL_TOOLTIP;Potlačení vypálených/mrtvých (jasně zabarvených) pixelů.\n0 = Bez efektu\n1 = Medián\n2 = Gaussův.\nPopřípadě obrázek upravte tak, aby jste se vyhnuli velmi tmavým stínům.\n\nTyto artefakty vznikají díky omezením CIECAM02. TP_COLORAPP_BRIGHT;Jas (O) TP_COLORAPP_BRIGHT_TOOLTIP;Jas v CIECAM02 bere v potaz svítivost bílé a rozdíly jasů mezi L*a*b* a RGB. +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;U ručního nastavení jsou doporučeny hodnoty nad 65. TP_COLORAPP_CHROMA;Barevnost (C) -TP_COLORAPP_CHROMA_M;Barevnost (M) +TP_COLORAPP_CHROMA_M;Pestrobarevnost (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Pestrobarevnost se v CIECAM02 liší od pestrobarevnosti L*a*b* a RGB. TP_COLORAPP_CHROMA_S;Nasycení (S) TP_COLORAPP_CHROMA_S_TOOLTIP;Nasycení se v CIECAM02 liší od nasycení L*a*b* a RGB. @@ -1335,8 +1460,8 @@ TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Upravte barevnost, nasycení nebo pestrobarevno 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_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_GAMUT;Kontrola gamutu (L*a*b*) +TP_COLORAPP_GAMUT_TOOLTIP;Povolí kontrolu gamutu v L*a*b* režimu. TP_COLORAPP_HUE;Odstín (h) TP_COLORAPP_HUE_TOOLTIP;Odstín (h) - úhel mezi 0° a 360°. TP_COLORAPP_LABEL;CIE model přizpůsobení barev 2002 @@ -1345,6 +1470,7 @@ TP_COLORAPP_LABEL_SCENE;Podmínky scény 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_MEANLUMINANCE;Střední jas (Yb%) 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é 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 @@ -1370,7 +1496,7 @@ 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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16cd/m²). +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16 cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [výstup] TP_COLORAPP_WBRT;WB [RT] + [výstup] TP_COLORTONING_AB;o C/L @@ -1386,6 +1512,25 @@ TP_COLORTONING_LAB;Mísení L*a*b* TP_COLORTONING_LABEL;Barevné tónování TP_COLORTONING_LABGRID;Korekční mřížka L*a*b* barev TP_COLORTONING_LABGRID_VALUES;SV: a=%1 b=%2\nSA: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;Oblasti oprav barvy +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Kanál +TP_COLORTONING_LABREGION_CHANNEL_ALL;Vše +TP_COLORTONING_LABREGION_CHANNEL_B;Modrá +TP_COLORTONING_LABREGION_CHANNEL_G;Zelená +TP_COLORTONING_LABREGION_CHANNEL_R;Červená +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Světlost +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Oprava +TP_COLORTONING_LABREGION_MASK;Maska +TP_COLORTONING_LABREGION_MASKBLUR;Maska neostrosti +TP_COLORTONING_LABREGION_OFFSET;Posun +TP_COLORTONING_LABREGION_POWER;Síla +TP_COLORTONING_LABREGION_SATURATION;Nasycení +TP_COLORTONING_LABREGION_SHOWMASK;Ukázat masku +TP_COLORTONING_LABREGION_SLOPE;Sklon TP_COLORTONING_LUMA;Jas TP_COLORTONING_LUMAMODE;Zachování jasu TP_COLORTONING_LUMAMODE_TOOLTIP;Pokud je povoleno, je při změně barvy (červená, zelená, tyrkysová, modrá...) zachován jas každého pixelu. @@ -1425,14 +1570,20 @@ TP_CROP_GUIDETYPE;Druh vodítek: TP_CROP_H;Výška TP_CROP_LABEL;Ořez TP_CROP_PPI;PPI= +TP_CROP_RESETCROP;Obnovit +TP_CROP_SELECTCROP;Vybrat TP_CROP_W;Šířka -TP_CROP_X;X -TP_CROP_Y;Y +TP_CROP_X;Vlevo +TP_CROP_Y;Nahoře TP_DARKFRAME_AUTOSELECT;Automatický výběr TP_DARKFRAME_LABEL;Tmavý snímek TP_DEFRINGE_LABEL;Odstranění lemu TP_DEFRINGE_RADIUS;Poloměr TP_DEFRINGE_THRESHOLD;Práh +TP_DEHAZE_DEPTH;Hloubka +TP_DEHAZE_LABEL;Odstranění závoje +TP_DEHAZE_SHOW_DEPTH_MAP;Ukázat hloubkovou mapu +TP_DEHAZE_STRENGTH;Síla 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í! @@ -1530,8 +1681,8 @@ TP_EXPOSURE_CURVEEDITOR1;Tónová křivka 1 TP_EXPOSURE_CURVEEDITOR2;Tónová křivka 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Podívejte se prosím na článek "Exposure > Tone Curves" na RawPedii, kde se můžete naučit. jak pomocí dvou tónových křivek dosáhnout ten nejlepší výsledek. TP_EXPOSURE_EXPCOMP;Kompenzace expozice -TP_EXPOSURE_HISTMATCHING;Automaticky přizpůsobená Tónová křivka -TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatické nastavení posuvníků a křivek (kromě kompenzace expozice) tak, aby bylo dosaženo co největší shody s vloženým JPEG náhledem. +TP_EXPOSURE_HISTMATCHING;Automaticky nalezená Tónová křivka +TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatické nastavení posuvníků a křivek (kromě kompenzace expozice) tak, aby bylo dosaženo co největší shody s vloženým Jpeg náhledem. TP_EXPOSURE_LABEL;Expozice TP_EXPOSURE_SATURATION;Nasycení TP_EXPOSURE_TCMODE_FILMLIKE;Jako film @@ -1558,10 +1709,6 @@ TP_FLATFIELD_BT_VERTICAL;Svisle TP_FLATFIELD_CLIPCONTROL;Kontrola oříznutí TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Kontrola oříznutí zabrání oříznutí světel po aplikaci Flat Field. Pokud byly světla oříznuta ještě před aplikací Flat field, může se objevit barevný nádech. TP_FLATFIELD_LABEL;Flat Field -TP_GAMMA_CURV;Gama -TP_GAMMA_FREE;Volná gama -TP_GAMMA_OUTPUT;Výstupní gama -TP_GAMMA_SLOP;Sklon (lineární) TP_GENERAL_11SCALE_TOOLTIP;Efekt tohoto nástroje je viditelný pouze při přiblížení 1:1. TP_GRADIENT_CENTER;Střed TP_GRADIENT_CENTER_X;Střed X @@ -1622,10 +1769,16 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Uloží lineární TIFF obrázek před aplikování 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 vybrané DCP obsahuje tónovou křivku. TP_ICM_WORKINGPROFILE;Pracovní barevný prostor +TP_ICM_WORKING_TRC;Tónová křivka odezvy: +TP_ICM_WORKING_TRC_CUSTOM;Vlastní +TP_ICM_WORKING_TRC_GAMMA;Gama +TP_ICM_WORKING_TRC_NONE;Nic +TP_ICM_WORKING_TRC_SLOPE;Sklon +TP_ICM_WORKING_TRC_TOOLTIP;Pouze pro vložené profily. TP_IMPULSEDENOISE_LABEL;Redukce impulzního šumu TP_IMPULSEDENOISE_THRESH;Práh TP_LABCURVE_AVOIDCOLORSHIFT;Zabránit posunu barev -TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Přizpůsobit barvy palety barevného pracovního prostoru a aplikovat Munsellovu korekci. +TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Napasovat barvy do gamutu barevného pracovního prostoru a aplikovat Munsellovu korekci. TP_LABCURVE_BRIGHTNESS;Světlost TP_LABCURVE_CHROMATICITY;Barevnost TP_LABCURVE_CHROMA_TOOLTIP;Pro černobílé tónování nastavte barevnost na -100. @@ -1664,7 +1817,16 @@ 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_CORRECTION_AUTOMATCH;Automaticky +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP soubor +TP_LENSPROFILE_CORRECTION_MANUAL;Ručně TP_LENSPROFILE_LABEL;Korekční profily objektivů +TP_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ý. +TP_LENSPROFILE_MODE_HEADER;Výběr profilu objektivu: +TP_LENSPROFILE_USE_CA;Chromatická aberace +TP_LENSPROFILE_USE_GEOMETRIC;Geometrická +TP_LENSPROFILE_USE_HEADER;Vyberte zkreslení na opravu: +TP_LENSPROFILE_USE_VIGNETTING;Vinětace TP_LOCALCONTRAST_AMOUNT;Míra TP_LOCALCONTRAST_DARKNESS;Úroveň tmavé TP_LOCALCONTRAST_LABEL;Místní kontrast @@ -1698,13 +1860,16 @@ TP_PREPROCESS_LINEDENOISE;Filtrovat linkové rušení TP_PREPROCESS_LINEDENOISE_DIRECTION;Směr TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Oba TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Vodorovně -TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Vodorovně pouze PDAF řádky +TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Vodorovně pouze u PDAF řádků TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Svisle TP_PREPROCESS_NO_FOUND;Nic nenalezeno TP_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek TP_PRSHARPENING_LABEL;Doostření po změně velikosti TP_PRSHARPENING_TOOLTIP;Obrázek po zmenšení doostří. Funguje pouze pokud je použita "Lanczos" metoda zmenšení. Náhled výsledku není v tomto nástroji možný. Podívejte se do RawPedie pro návod k použití. TP_RAWCACORR_AUTO;Automatická korekce +TP_RAWCACORR_AUTOIT;Počet průchodů +TP_RAWCACORR_AUTOIT_TOOLTIP;Toto nastavení je dostupné po zatržení volby "Automatická korekce".\nAutomatická korekce je konzervativní, což znamená, že často neodstraní úplně veškerou chromatickou aberaci..\nPro korekci zbývající chromatické aberace můžete použít až pěti opakování automatické korekce..\nKaždé opakování sníží zbývající chromatickou aberaci z předchozího běhu za cenu prodloužení celkového času zpracování. +TP_RAWCACORR_AVOIDCOLORSHIFT;Zabránit posunu barev TP_RAWCACORR_CABLUE;Modrá TP_RAWCACORR_CARED;Červená TP_RAWCACORR_CASTR;Síla @@ -1720,17 +1885,25 @@ TP_RAWEXPOS_LINEAR;Korekce bílého bodu TP_RAWEXPOS_PRESER;Zachování světel TP_RAWEXPOS_RGB;Červená, telená, modrá TP_RAWEXPOS_TWOGREEN;Spojit zelené -TP_RAW_1PASSMEDIUM;Jeden průchod (střední) -TP_RAW_3PASSBEST;Tři průchody (nejlepší) +TP_RAW_1PASSMEDIUM;Jeden průchod (Markesteijn) +TP_RAW_2PASS;Jeden průchod + rychlý +TP_RAW_3PASSBEST;Tři průchody (Markesteijn) +TP_RAW_4PASS;Tři průchody + rychlý TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE +TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;Okraj TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Vylepšení DCB TP_RAW_DCBITERATIONS;Počet průchodů DCB +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Metoda TP_RAW_DMETHOD_PROGRESSBAR;%1 demozajkování... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Vylepšení demozajkování... TP_RAW_DMETHOD_TOOLTIP;Poznámka: IGV a LMMSE jsou určeny pro obrázky s vysokým ISO, kterým pomáhají vyhnout se u redukce šumu vzniku vzorů, posterizaci a vyžehlenému vzhledu.\n\nPixel Shift je určen pro soubory Pentax/Sony Pixel Shift.\nPro soubory neobsahující Pixel Shift data je použita metoda AMaZE. +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Automatický práh +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Pokud je zatrženo (doporučeno), RawTherapee vypočítá optimální hodnotu, jenž následně používá na ploché oblasti snímku.\nPokud není na snímku plochý region nebo je snímek příliš zašuměný bude hodnota nastavena na 0.\nPro ruční nastavení této hodnoty nejprve zrušte zatržení této volby (vhodné hodnoty závisí na hloubce ostrosti snímku). +TP_RAW_DUALDEMOSAICCONTRAST;Práh kontrastu TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Počet kroků potlačování chybných barev TP_RAW_FAST;Rychlá @@ -1748,8 +1921,9 @@ TP_RAW_MONO;Mono TP_RAW_NONE;Žádná (zobrazí strukturu senzoru) TP_RAW_PIXELSHIFT;Pixel Shift TP_RAW_PIXELSHIFTBLUR;Maska pohybové neostrosti +TP_RAW_PIXELSHIFTDMETHOD;Metoda demozajkování pro pohyb TP_RAW_PIXELSHIFTEPERISO;Citlivost -TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;Výchozí hodnota 0 by měla dostatečně fungovat pro základní hodnoty ISO.\nDetekci pohybu na vyšších hodnotách ISO vylepšíte navýšením této hodnoty.\nZvyšujte po malých krocích a sledujte přitom masku pohybu.\nPro podexponované nebo obrázky s vysokým ISO zvyšte citlivost. +TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;Výchozí hodnota 0 by měla dobře fungovat u základní hodnoty ISO.\nVyšší hodnoty zvýší citlivost detekce pohybu.\nZvyšujte po malých krocích a sledujte přitom masku pohybu.\nZvyšte citlivost u podexponovaných snímků nebo snímků s vysokým ISO. TP_RAW_PIXELSHIFTEQUALBRIGHT;Vyrovnat jas snímků TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Korekce po kanálech TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Zapnuto: Nezávislá korekce jednotlivých RGB kanálů.\nVypnuto: Použije se stejná hodnota pro všechny kanály. @@ -1776,10 +1950,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;Výchozí poloměr 1,0 většinou velmi dobře fu TP_RAW_PIXELSHIFTSMOOTH;Hladké přechody TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Vyhlazení přechodů mezi oblastmi s pohybem a bez pohybu.\nNastavte na 0 pro vypnutí vyhlazování přechodů.\nNastavte na 1 pro získání AMaZE/LMMSE výsledku pro vybraný snímek (závisí na tom, zda je vybrána volba "Použít LMMSE") nebo mediánu všech čtyř snímků (pokud je vybrána volba "Použít medián"). TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 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_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ší.\n+rychlá vytváří méně artefaktů v plochých oblastech TP_RAW_SENSOR_XTRANS_LABEL;Senzory s X-Trans maticí TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Povolit zvětšení TP_RESIZE_APPLIESTO;Aplikovat na: TP_RESIZE_CROPPEDAREA;Oblast ořezu TP_RESIZE_FITBOX;Výřez @@ -1794,9 +1970,10 @@ TP_RESIZE_SCALE;Měřítko TP_RESIZE_SPECIFY;Zvolte: TP_RESIZE_W;Šířka: TP_RESIZE_WIDTH;Šířka -TP_RETINEX_CONTEDIT_HSL;HSV korekce histogramu -TP_RETINEX_CONTEDIT_LAB;Histogram korekce L*a*b* -TP_RETINEX_CONTEDIT_LH;Korekce odstínu +TP_RETINEX_CONTEDIT_HSL;HSL histogram +TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +TP_RETINEX_CONTEDIT_LH;Odstín +TP_RETINEX_CONTEDIT_MAP;Korekce TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Jas dle jasu L=f(L).\nUpraví raw data pro snížení výskytu halo efektu a vzniku artefaktů. TP_RETINEX_CURVEEDITOR_LH;Síla=f(O) @@ -1808,6 +1985,7 @@ TP_RETINEX_FREEGAMMA;Volná gama TP_RETINEX_GAIN;Zisk TP_RETINEX_GAINOFFS;Zisk a posun (jasu) TP_RETINEX_GAINTRANSMISSION;Přenos zisku +TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Zesílí nebo zeslabí mapu přenosu pro dosažení požadovaného jasu.\nOsa X je přenos.\nOsa Y je zisk. TP_RETINEX_GAIN_TOOLTIP;Působí na obnovený obrázek.\n\nToto je velmi odlišné od ostatních nastavení. Použito pro černé nebo bílé pixely a pro vyvážení histogramu. TP_RETINEX_GAMMA;Gama TP_RETINEX_GAMMA_FREE;Volná @@ -1833,6 +2011,7 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Maska TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Slabé +TP_RETINEX_MAP;Metoda TP_RETINEX_MAP_GAUS;Gaussova maska TP_RETINEX_MAP_MAPP;Ostrá maska (částečná vlnka) TP_RETINEX_MAP_MAPT;Ostrá maska (kompletní vlnka) @@ -1895,6 +2074,7 @@ TP_SHARPENEDGE_LABEL;Hrany TP_SHARPENEDGE_PASSES;Počet průchodů TP_SHARPENEDGE_THREE;Pouze jas TP_SHARPENING_AMOUNT;Míra +TP_SHARPENING_CONTRAST;Práh kontrastu TP_SHARPENING_EDRADIUS;Poloměr TP_SHARPENING_EDTOLERANCE;Tolerance k hranám TP_SHARPENING_HALOCONTROL;Omezení halo efektu @@ -1910,9 +2090,16 @@ TP_SHARPENING_RLD_ITERATIONS;Počet průchodů TP_SHARPENING_THRESHOLD;Práh TP_SHARPENING_USM;Maskování rozostření TP_SHARPENMICRO_AMOUNT;Kvantita +TP_SHARPENMICRO_CONTRAST;Práh kontrastu TP_SHARPENMICRO_LABEL;Mikrokontrast TP_SHARPENMICRO_MATRIX;Matice 3×3 namísto 5×5 TP_SHARPENMICRO_UNIFORMITY;Jednolitost +TP_SOFTLIGHT_LABEL;Měkké světlo +TP_SOFTLIGHT_STRENGTH;Síla +TP_TM_FATTAL_AMOUNT;Míra +TP_TM_FATTAL_ANCHOR;Kotva +TP_TM_FATTAL_LABEL;Komprese dynamického rozsahu +TP_TM_FATTAL_THRESHOLD;Detaily TP_VIBRANCE_AVOIDCOLORSHIFT;Zabránit posunu barev TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tóny pleti @@ -1979,7 +2166,7 @@ TP_WAVELET_COMPGAMMA;Komprese gamy TP_WAVELET_COMPGAMMA_TOOLTIP;Úprava gamy zůstatku obrázku vám umožní vyvážit data a histogram. TP_WAVELET_COMPTM;Mapování tónů TP_WAVELET_CONTEDIT;Křivka kontrastu 'Po' -TP_WAVELET_CONTR;Paleta +TP_WAVELET_CONTR;Gamut TP_WAVELET_CONTRA;Kontrast TP_WAVELET_CONTRAST_MINUS;Kontrast - TP_WAVELET_CONTRAST_PLUS;Kontrast + @@ -1987,7 +2174,7 @@ TP_WAVELET_CONTRA_TOOLTIP;Změní kontrast zůstatku obrazu. TP_WAVELET_CTYPE;Ovládání barevnosti TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Mění lokální kontrast jako funkci originálního lokálního kontrastu(úsečka).\nNízké hodnoty na úsečce představují malý lokální kontrast (skutečné hodnoty okolo 10..20).\n50% z úsečky představuje průměrný lokální kontrast (skutečné hodnoty okolo 100..300).\n66% z úsečky představuje představuje standardní odchylku lokálního kontrastu (skutečné hodnoty okolo 300..800).\n100% z úsečky představuje maximální lokální kontrast (skutečné hodnoty okolo 3000..8000). TP_WAVELET_CURVEEDITOR_CH;Kontrast úrovní=f(Barevnost) -TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Mění kontrast každé úrovně jako funkci odstínu.\nDejte pozor, abyste nepřepsali změny udělané v podnástroji Paleta nástroje Odstín.\nZměny křivky se projeví pouze v případě, že posuvníky kontrastu úrovní vlnky nejsou nastaveny na nulu. +TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Mění kontrast každé úrovně jako funkci odstínu.\nDejte pozor, abyste nepřepsali změny udělané v podnástroji Gamut nástroje Odstín.\nZměny křivky se projeví pouze v případě, že posuvníky kontrastu úrovní vlnky nejsou nastaveny na nulu. TP_WAVELET_CURVEEDITOR_CL;L TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Aplikuje finální křivku kontrastu jasů na konci zpracování vlnky. TP_WAVELET_CURVEEDITOR_HH;HH @@ -2005,7 +2192,7 @@ TP_WAVELET_DTHR;Napříč TP_WAVELET_DTWO;Vodorovně TP_WAVELET_EDCU;Křivka TP_WAVELET_EDGCONT;Místní kontrast -TP_WAVELET_EDGCONT_TOOLTIP;Posunutí bodů doleva snižuje kontrast a posunutí bodů doprava jej zvyšuje.\nRohy levý spodní, levý horní, pravý horní, pravý spodní postupně představují místní kontrast pro nízké hodnoty, průměr, průměr + stdev maximum +TP_WAVELET_EDGCONT_TOOLTIP;Posunutí bodů doleva snižuje kontrast a posunutí bodů doprava jej zvyšuje.\nRohy levý spodní, levý horní, pravý horní, pravý spodní postupně představují místní kontrast pro nízké hodnoty, průměr, průměr + stdev a maximum. TP_WAVELET_EDGE;Doostření hran TP_WAVELET_EDGEAMPLI;Základní zesílení TP_WAVELET_EDGEDETECT;Sklon citlivosti @@ -2016,7 +2203,7 @@ TP_WAVELET_EDGEDETECT_TOOLTIP;Posunutím posuvníku vpravo zvýšíte citlivost TP_WAVELET_EDGESENSI;Citlivost detekce hran TP_WAVELET_EDGREINF_TOOLTIP;Zesílení nebo zeslabení vlivu první úrovně, v porovnání se druhou úrovní. Ostatní úrovně zůstanou nezměněny. TP_WAVELET_EDGTHRESH;Detaily -TP_WAVELET_EDGTHRESH_TOOLTIP;Změní rozložení mezi prvními a ostatními úrovněmi. Čím větší práh, tím větší je význam prvních úrovní. Dejte si pozor na záporné hodnoty. Ty zvětšují efekt vyšších úrovní a mohou způsobit vznik artefaktů. +TP_WAVELET_EDGTHRESH_TOOLTIP;Změní rozložení mezi prvními a ostatními úrovněmi. Čím větší práh, tím větší je význam prvních úrovní. Dejt e si pozor na záporné hodnoty. Ty zvětšují efekt vyšších úrovní a mohou způsobit vznik artefaktů TP_WAVELET_EDRAD;Poloměr TP_WAVELET_EDRAD_TOOLTIP;Toto nastavení poloměru se velmi liší od ostatních nástrojů doostření. Jeho hodnota je pomocí komplexní funkce porovnána s každou úrovní. To znamená, že i nastavení hodnoty na nulu má na úrovně vliv. TP_WAVELET_EDSL;Práh posuvníků @@ -2134,13 +2321,14 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Metoda +TP_WBALANCE_PICKER;Nabrat TP_WBALANCE_SHADE;Stín TP_WBALANCE_SIZE;Rozměr: TP_WBALANCE_SOLUX35;Solux 3500K TP_WBALANCE_SOLUX41;Solux 4100K TP_WBALANCE_SOLUX47;Solux 4700K (vendor) TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) -TP_WBALANCE_SPOTWB;Bodové vyvážení +TP_WBALANCE_SPOTWB;Použijte pipetu pro nabrání vyvážení bílé z neutrální oblasti v náhledu. TP_WBALANCE_TEMPBIAS;AVB - Zdůraznění teploty TP_WBALANCE_TEMPBIAS_TOOLTIP;Dovolí ovlivnit výpočet "automatického vyvážení bílé"\nzdůrazněním teplejší nebo chladnější teploty. Toto zdůraznění\nje vyjádřeno v procentech vypočtené teploty a výsledek\nlze vyjádřit vzorcem "vypočtenáTeplota + vypočtenáTeplota * zdůraznění". TP_WBALANCE_TEMPERATURE;Teplota @@ -2155,202 +2343,3 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Přizpůsobit ořez obrazovce\nZkratka: f ZOOMPANEL_ZOOMFITSCREEN;Přizpůsobit celý obrázek obrazovce\nZkratka: Alt-f ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: + ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!CURVEEDITOR_CATMULLROM;Flexible -!DYNPROFILEEDITOR_IMGTYPE_ANY;Any -!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR -!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift -!DYNPROFILEEDITOR_IMGTYPE_STD;Standard -!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles -!GENERAL_CURRENT;Current -!GENERAL_RESET;Reset -!GENERAL_SAVE_AS;Save as... -!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_235;B&W - CM - Auto -!HISTORY_MSG_237;B&W - CM -!HISTORY_MSG_273;CT - Color Balance SMH -!HISTORY_MSG_392;W - Residual - Color Balance -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Detail -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel -!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask -!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness -!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask -!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List -!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur -!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset -!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation -!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask -!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope -!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth -!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal -!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map -!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength -!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold -!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries -!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D -!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type -!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma -!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope -!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method -!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold -!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion -!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold -!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength -!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor -!ICCPROFCREATOR_COPYRIGHT;Copyright: -!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" -!ICCPROFCREATOR_CUSTOM;Custom -!ICCPROFCREATOR_DESCRIPTION;Description: -!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description -!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description. -!ICCPROFCREATOR_GAMMA;Gamma -!ICCPROFCREATOR_ICCVERSION;ICC version: -!ICCPROFCREATOR_ILL;Illuminant: -!ICCPROFCREATOR_ILL_41;D41 -!ICCPROFCREATOR_ILL_50;D50 -!ICCPROFCREATOR_ILL_55;D55 -!ICCPROFCREATOR_ILL_60;D60 -!ICCPROFCREATOR_ILL_65;D65 -!ICCPROFCREATOR_ILL_80;D80 -!ICCPROFCREATOR_ILL_DEF;Default -!ICCPROFCREATOR_ILL_INC;StdA 2856K -!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles. -!ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 -!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 -!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) -!ICCPROFCREATOR_PRIM_BEST;BestRGB -!ICCPROFCREATOR_PRIM_BETA;BetaRGB -!ICCPROFCREATOR_PRIM_BLUX;Blue X -!ICCPROFCREATOR_PRIM_BLUY;Blue Y -!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB -!ICCPROFCREATOR_PRIM_GREX;Green X -!ICCPROFCREATOR_PRIM_GREY;Green Y -!ICCPROFCREATOR_PRIM_PROPH;Prophoto -!ICCPROFCREATOR_PRIM_REC2020;Rec2020 -!ICCPROFCREATOR_PRIM_REDX;Red X -!ICCPROFCREATOR_PRIM_REDY;Red Y -!ICCPROFCREATOR_PRIM_SRGB;sRGB -!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles. -!ICCPROFCREATOR_PRIM_WIDEG;Widegamut -!ICCPROFCREATOR_PROF_V2;ICC v2 -!ICCPROFCREATOR_PROF_V4;ICC v4 -!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as... -!ICCPROFCREATOR_SLOPE;Slope -!ICCPROFCREATOR_TRC_PRESET;Tone response curve: -!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. -!PARTIALPASTE_DEHAZE;Haze removal -!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_APPEARANCE;Appearance -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_THEME;Theme -!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit -!PREFERENCES_CACHECLEAR;Clear -!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: -!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: -!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: -!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_TAB_PERFORMANCE;Performance -!SAMPLEFORMAT_32;24-bit floating-point -!SAMPLEFORMAT_64;32-bit floating-point -!SAVEDLG_FILEFORMAT_FLOAT; floating-point -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset -!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance -!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. -!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) -!TP_COLORTONING_LABREGIONS;Color correction regions -!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -!TP_COLORTONING_LABREGION_CHANNEL;Channel -!TP_COLORTONING_LABREGION_CHANNEL_ALL;All -!TP_COLORTONING_LABREGION_CHANNEL_B;Blue -!TP_COLORTONING_LABREGION_CHANNEL_G;Green -!TP_COLORTONING_LABREGION_CHANNEL_R;Red -!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -!TP_COLORTONING_LABREGION_HUEMASK;H -!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -!TP_COLORTONING_LABREGION_LIST_TITLE;Correction -!TP_COLORTONING_LABREGION_MASK;Mask -!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur -!TP_COLORTONING_LABREGION_OFFSET;Offset -!TP_COLORTONING_LABREGION_POWER;Power -!TP_COLORTONING_LABREGION_SATURATION;Saturation -!TP_COLORTONING_LABREGION_SHOWMASK;Show mask -!TP_COLORTONING_LABREGION_SLOPE;Slope -!TP_CROP_RESETCROP;Reset -!TP_CROP_SELECTCROP;Select -!TP_DEHAZE_DEPTH;Depth -!TP_DEHAZE_LABEL;Haze Removal -!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map -!TP_DEHAZE_STRENGTH;Strength -!TP_ICM_WORKING_TRC;Tone response curve: -!TP_ICM_WORKING_TRC_CUSTOM;Custom -!TP_ICM_WORKING_TRC_GAMMA;Gamma -!TP_ICM_WORKING_TRC_NONE;None -!TP_ICM_WORKING_TRC_SLOPE;Slope -!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically -!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually -!TP_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. -!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: -!TP_LENSPROFILE_USE_CA;Chromatic aberration -!TP_LENSPROFILE_USE_GEOMETRIC;Geometric -!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: -!TP_LENSPROFILE_USE_VIGNETTING;Vignetting -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_4PASS;3-pass+fast -!TP_RAW_AMAZEVNG4;AMaZE+VNG4 -!TP_RAW_BORDER;Border -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). -!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_MAP;Equalizer -!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. -!TP_RETINEX_MAP;Method -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Detail -!TP_WBALANCE_PICKER;Pick From 03dad428e3515152f1df108083c64efa9dd9da48 Mon Sep 17 00:00:00 2001 From: Hombre57 Date: Thu, 13 Dec 2018 23:09:14 +0100 Subject: [PATCH 326/348] Updated French translation --- rtdata/languages/Francais | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index c331bcb22..d37f242a1 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -15,6 +15,7 @@ CURVEEDITOR_AXIS_IN;E: CURVEEDITOR_AXIS_LEFT_TAN;TG: CURVEEDITOR_AXIS_OUT;S: CURVEEDITOR_AXIS_RIGHT_TAN;TD: +CURVEEDITOR_CATMULLROM;Flexible CURVEEDITOR_CURVE;Courbe CURVEEDITOR_CURVES;Courbes CURVEEDITOR_CUSTOM;Personnalisé @@ -2333,8 +2334,3 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: Alt-f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!CURVEEDITOR_CATMULLROM;Flexible From 836c44bf93aa0f7c8e7123a8d599b7cc334e4eb4 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 15 Dec 2018 14:30:40 +0100 Subject: [PATCH 327/348] Japanese translation updated by firefly, closes #5097 --- rtdata/languages/Czech | 2 ++ rtdata/languages/Japanese | 13 +++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index d07a678da..e8b11906d 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -42,6 +42,7 @@ #41 2018-03-03 updated by mkyral #42 2018-04-28 updated by mkyral #43 2018-12-13 updated by mkyral + ABOUT_TAB_BUILD;Verze ABOUT_TAB_CREDITS;Zásluhy ABOUT_TAB_LICENSE;Licence @@ -2343,3 +2344,4 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Přizpůsobit ořez obrazovce\nZkratka: f ZOOMPANEL_ZOOMFITSCREEN;Přizpůsobit celý obrázek obrazovce\nZkratka: Alt-f ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: + ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - + diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 683f9f24b..a8ed3bc2b 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -48,6 +48,7 @@ CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_LEFT_TAN;LT: CURVEEDITOR_AXIS_OUT;O: CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;フレキシブル CURVEEDITOR_CURVE;カーブ CURVEEDITOR_CURVES;カーブ CURVEEDITOR_CUSTOM;カスタム @@ -254,6 +255,7 @@ GENERAL_AUTO;自動 GENERAL_BEFORE;補正前 GENERAL_CANCEL;キャンセル GENERAL_CLOSE;閉じる +GENERAL_CURRENT;現在 GENERAL_DISABLE;無効 GENERAL_DISABLED;無効 GENERAL_ENABLE;有効 @@ -757,7 +759,7 @@ HISTORY_MSG_485;レンズ補正 HISTORY_MSG_486;レンズ補正 - カメラ HISTORY_MSG_487;レンズ補正 - レンズ HISTORY_MSG_488;ダイナミックレンジ圧縮 -HISTORY_MSG_489;DRC - 細部 +HISTORY_MSG_489;DRC - ディテール HISTORY_MSG_490;DRC - 量 HISTORY_MSG_491;ホワイトバランス HISTORY_MSG_492;RGBカーブ @@ -1855,6 +1857,7 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;PDAFの場合は水平方向だ TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;垂直方向 TP_PREPROCESS_NO_FOUND;未検出 TP_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ +TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Sonyのミラーレスカメラの一部では、PDAFイメージセンサが原因で、ゴーストが出るバックライトの画像でストライプノイズが発生することがあり、これを軽減します。 TP_PRSHARPENING_LABEL;リサイズ後のシャープ化 TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。 TP_RAWCACORR_AUTO;自動補正 @@ -2090,7 +2093,7 @@ TP_SOFTLIGHT_STRENGTH;強さ TP_TM_FATTAL_AMOUNT;量 TP_TM_FATTAL_ANCHOR;アンカー TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮 -TP_TM_FATTAL_THRESHOLD;細部 +TP_TM_FATTAL_THRESHOLD;ディテール TP_VIBRANCE_AVOIDCOLORSHIFT;色ずれを回避 TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;肌色トーン @@ -2335,9 +2338,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: + ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!CURVEEDITOR_CATMULLROM;Flexible -!GENERAL_CURRENT;Current From f6a7e43ba08587cc97b5e0d1ebe78adc18dd6af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Sat, 15 Dec 2018 14:48:04 +0100 Subject: [PATCH 328/348] Initialize variable in `lj92.c` (fixes #5090) --- rtengine/lj92.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/lj92.c b/rtengine/lj92.c index c4f1cc15c..d72075a62 100644 --- a/rtengine/lj92.c +++ b/rtengine/lj92.c @@ -521,7 +521,7 @@ static int parseScan(ljp* self) { // First pixel predicted from base value int diff; - int Px; + int Px = 0; int col = 0; int row = 0; int left = 0; From 1ebbe0a0961663379373408a559e1914db015318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Sat, 15 Dec 2018 15:12:52 +0100 Subject: [PATCH 329/348] Resize `baBehav` on load (#4828) --- rtgui/batchtoolpanelcoord.cc | 6 +++--- rtgui/options.cc | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 55d9f3c79..db06ea59e 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -126,7 +126,7 @@ void BatchToolPanelCoordinator::initSession () pparams = selected[0]->getProcParams (); coarse->initBatchBehavior (); - + int w,h; selected[0]->getOriginalSize(w,h); crop->setDimensions (w, h); @@ -707,11 +707,11 @@ void BatchToolPanelCoordinator::spotWBselected (int x, int y, Thumbnail* thm) double otemp = initialPP[i].wb.temperature; double ogreen = initialPP[i].wb.green; - if (options.baBehav[12]) { + if (options.baBehav[ADDSET_ROTATE_DEGREE]) { temp = temp - otemp; } - if (options.baBehav[13]) { + if (options.baBehav[ADDSET_DIST_AMOUNT]) { green = green - ogreen; } diff --git a/rtgui/options.cc b/rtgui/options.cc index c267c4651..d75f5d94f 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -1283,27 +1283,27 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("GUI", "HistogramPosition")) { histogramPosition = keyFile.get_integer("GUI", "HistogramPosition"); } - + if (keyFile.has_key("GUI", "HistogramRed")) { histogramRed = keyFile.get_boolean("GUI", "HistogramRed"); } - + if (keyFile.has_key("GUI", "HistogramGreen")) { histogramGreen = keyFile.get_boolean("GUI", "HistogramGreen"); } - + if (keyFile.has_key("GUI", "HistogramBlue")) { histogramBlue = keyFile.get_boolean("GUI", "HistogramBlue"); } - + if (keyFile.has_key("GUI", "HistogramLuma")) { histogramLuma = keyFile.get_boolean("GUI", "HistogramLuma"); } - + if (keyFile.has_key("GUI", "HistogramChroma")) { histogramChroma = keyFile.get_boolean("GUI", "HistogramChroma"); } - + if (keyFile.has_key("GUI", "HistogramRAW")) { histogramRAW = keyFile.get_boolean("GUI", "HistogramRAW"); } @@ -1311,11 +1311,11 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("GUI", "HistogramBar")) { histogramBar = keyFile.get_boolean("GUI", "HistogramBar"); } - + if (keyFile.has_key ("GUI", "HistogramHeight")) { histogramHeight = keyFile.get_integer ("GUI", "HistogramHeight"); } - + if (keyFile.has_key ("GUI", "HistogramDrawMode")) { histogramDrawMode = keyFile.get_integer ("GUI", "HistogramDrawMode"); } @@ -1507,7 +1507,7 @@ void Options::readFromFile(Glib::ustring fname) if (rtSettings.ACESp0 == "RTv4_ACES-AP0") { rtSettings.ACESp0 = "RTv2_ACES-AP0"; } - + } if (keyFile.has_key("Color Management", "ACES-AP1")) { @@ -1515,7 +1515,7 @@ void Options::readFromFile(Glib::ustring fname) if (rtSettings.ACESp1 == "RTv4_ACES-AP1") { rtSettings.ACESp1 = "RTv2_ACES-AP1"; } - + } if (keyFile.has_key("Color Management", "GamutLch")) { @@ -1593,6 +1593,7 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_group("Batch Processing")) { if (keyFile.has_key("Batch Processing", "AdjusterBehavior")) { baBehav = keyFile.get_integer_list("Batch Processing", "AdjusterBehavior"); + baBehav.resize(ADDSET_PARAM_NUM); } } From fa4a883eaf2510c40fc663621bfd6162c87c2677 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 15 Dec 2018 16:00:44 +0100 Subject: [PATCH 330/348] Bugfix in tooltip related to Lockable Color Pickers See issue #4939 --- rtdata/languages/Francais | 2 +- rtdata/languages/default | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index d37f242a1..9819b20a5 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1314,7 +1314,7 @@ THRESHOLDSELECTOR_HINT;Maintenez la touche Shift appuyée pour déplacer THRESHOLDSELECTOR_T;Haut THRESHOLDSELECTOR_TL;Haut-Gauche THRESHOLDSELECTOR_TR;Haut-droite -TOOLBAR_TOOLTIP_COLORPICKER;Ancre de Vérification Couleur\n\nLorque activé:\nCliquez la zone d'image avec le bouton gauche de la souris pour ajouter une ancre\nDéplacez-le en le "tirant" avec le bouton gauche de la souris\nSupprimez une ancre en cliquant dessus avec le bouton droit de la souris\nSupprimez toutes les ancres avec Shift + click avec le bouton droit\nCliquez avec le bouton droit de la souris en dehors de toute ancre pour revenir au mode Déplacement +TOOLBAR_TOOLTIP_COLORPICKER;Ancre de Vérification Couleur\n\nLorque activé:\n- Ajouter une ancre: clic-gauche.\n- Déplacer une ancre: clic-gauche et tirer.\n- Supprimez une ancre: clic-droit.\n- Supprimez toutes les ancres: ctrl+shift+clic-droit.\n- Revenir au mode Déplacement: clic-droit en dehors de toute ancre. TOOLBAR_TOOLTIP_CROP;Sélection du recadrage\nRaccourci: c\nDéplacez le recadrage en utilisant Shift + Glisser TOOLBAR_TOOLTIP_HAND;Outil de navigation\nRaccourci: h TOOLBAR_TOOLTIP_STRAIGHTEN;Sélection de la ligne d'horizon\nRaccourci: s\n\nIndiquez la verticale ou l'horizontale en dessinant une ligne à travers l'image de prévisualisation. L'angle de rotation sera affiché près de la ligne guide. Le centre de rotation est le centre géométrique de l'image. diff --git a/rtdata/languages/default b/rtdata/languages/default index 651a3c928..dc5f85156 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1309,7 +1309,7 @@ THRESHOLDSELECTOR_HINT;Hold the Shift key to move individual control poin THRESHOLDSELECTOR_T;Top THRESHOLDSELECTOR_TL;Top-left THRESHOLDSELECTOR_TR;Top-right -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: control+shift+right-click.\n- Revert to hand tool: right-click outside any picker. TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. From 1e45112d459a8be0b6dadbf03285268f8d589e49 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 15 Dec 2018 18:28:06 +0100 Subject: [PATCH 331/348] Cleanup of bundled processing profiles #5093 --- .../Black-and-White/Black-and-White 1.pp3 | 158 ---------------- .../Black-and-White/Black-and-White 2.pp3 | 158 ---------------- .../Black-and-White/Black-and-White 3.pp3 | 158 ---------------- .../Black-and-White/Black-and-White 4.pp3 | 158 ---------------- .../Faded/Faded Amber 1 TM Bright.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Amber 1 TM.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Amber 1.pp3 | 93 ---------- .../profiles/Faded/Faded Blue 1 TM Bright.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Blue 1 TM.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Blue 1.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Blue Pink TM.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Blue Pink.pp3 | 93 ---------- .../Faded/Faded Chocolate 1 TM Bright.pp3 | 97 ---------- .../Faded/Faded Chocolate 2 TM Bright.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Golden 1.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Golden 2.pp3 | 97 ---------- .../Faded/Faded Green 1 TM Bright.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Green 1 TM.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Green 1.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Green 2.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Green 3.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Neutral TM.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Neutral.pp3 | 93 ---------- .../Faded/Faded Purple 1 TM Bright.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Purple 1 TM.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Purple 1.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Purple 2 TM.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Purple 2.pp3 | 97 ---------- .../Faded/Faded Teal Orange TM Bright.pp3 | 93 ---------- .../profiles/Faded/Faded Teal Orange TM.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Teal Orange.pp3 | 93 ---------- .../profiles/Faded/Faded Warm 1 TM Bright.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Warm 1 TM.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Warm 1.pp3 | 97 ---------- rtdata/profiles/Faded/Faded Warm 2.pp3 | 93 ---------- rtdata/profiles/Faded/Faded Warm 3.pp3 | 93 ---------- rtdata/profiles/Generic/Deep Shadows.pp3 | 158 ---------------- rtdata/profiles/Generic/Equilibrated.pp3 | 158 ---------------- rtdata/profiles/Generic/High-Key.pp3 | 158 ---------------- rtdata/profiles/Generic/Natural 1.pp3 | 158 ---------------- rtdata/profiles/Generic/Natural 2.pp3 | 158 ---------------- rtdata/profiles/Generic/Punchy 1.pp3 | 158 ---------------- rtdata/profiles/Generic/Punchy 2.pp3 | 158 ---------------- rtdata/profiles/Portrait/Portrait Lejto.pp3 | 158 ---------------- rtdata/profiles/Portrait/Portrait Smooth.pp3 | 135 -------------- .../Skintones/Skintones - Natural TM.pp3 | 169 ------------------ .../Skintones/Skintones - Natural.pp3 | 169 ------------------ .../Skintones/Skintones - Pale TM Bright.pp3 | 169 ------------------ .../Skintones/Skintones - Pale TM.pp3 | 169 ------------------ .../profiles/Skintones/Skintones - Pale.pp3 | 169 ------------------ .../Skintones/Skintones - Soft Texture.pp3 | 169 ------------------ .../Skintones/Skintones - Strong Texture.pp3 | 169 ------------------ .../Skintones/Skintones - Studio TM.pp3 | 169 ------------------ .../profiles/Skintones/Skintones - Studio.pp3 | 169 ------------------ .../Skintones/Skintones - StudioBase 1 TM.pp3 | 169 ------------------ .../Skintones/Skintones - StudioBase 1.pp3 | 169 ------------------ 56 files changed, 6914 deletions(-) delete mode 100644 rtdata/profiles/Black-and-White/Black-and-White 1.pp3 delete mode 100644 rtdata/profiles/Black-and-White/Black-and-White 2.pp3 delete mode 100644 rtdata/profiles/Black-and-White/Black-and-White 3.pp3 delete mode 100644 rtdata/profiles/Black-and-White/Black-and-White 4.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Amber 1 TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Amber 1.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Blue 1 TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Blue 1.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Blue Pink TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Blue Pink.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Golden 1.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Golden 2.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Green 1 TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Green 1.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Green 2.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Green 3.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Neutral TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Neutral.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Purple 1 TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Purple 1.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Purple 2 TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Purple 2.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Teal Orange TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Teal Orange.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Warm 1 TM.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Warm 1.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Warm 2.pp3 delete mode 100644 rtdata/profiles/Faded/Faded Warm 3.pp3 delete mode 100644 rtdata/profiles/Generic/Deep Shadows.pp3 delete mode 100644 rtdata/profiles/Generic/Equilibrated.pp3 delete mode 100644 rtdata/profiles/Generic/High-Key.pp3 delete mode 100644 rtdata/profiles/Generic/Natural 1.pp3 delete mode 100644 rtdata/profiles/Generic/Natural 2.pp3 delete mode 100644 rtdata/profiles/Generic/Punchy 1.pp3 delete mode 100644 rtdata/profiles/Generic/Punchy 2.pp3 delete mode 100644 rtdata/profiles/Portrait/Portrait Lejto.pp3 delete mode 100644 rtdata/profiles/Portrait/Portrait Smooth.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Natural TM.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Natural.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Pale TM.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Pale.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Studio TM.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - Studio.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 delete mode 100644 rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 diff --git a/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 deleted file mode 100644 index 871cc7289..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.04;0.03;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 deleted file mode 100644 index 20579d56a..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.45754265471370759;0.57906737998843294;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.84892086330935235;0.69064748201438808;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 deleted file mode 100644 index 0e62f7a0b..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=2;0.25;0.5;0.75;50;12;-12;-50; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 deleted file mode 100644 index 679630c4c..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=-35 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.18623481781376497;0.028340080971659902;0.50607287449392713;0.50607287449392713;0.77732793522267185;0.97975708502024295;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 deleted file mode 100644 index b636f3a8d..000000000 --- a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 deleted file mode 100644 index 781ed1380..000000000 --- a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Amber 1.pp3 b/rtdata/profiles/Faded/Faded Amber 1.pp3 deleted file mode 100644 index 068fb369c..000000000 --- a/rtdata/profiles/Faded/Faded Amber 1.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 deleted file mode 100644 index 43a1f72bd..000000000 --- a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 deleted file mode 100644 index a0931ff2c..000000000 --- a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue 1.pp3 b/rtdata/profiles/Faded/Faded Blue 1.pp3 deleted file mode 100644 index a25670c0f..000000000 --- a/rtdata/profiles/Faded/Faded Blue 1.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 b/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 deleted file mode 100644 index 6950325f1..000000000 --- a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue Pink.pp3 b/rtdata/profiles/Faded/Faded Blue Pink.pp3 deleted file mode 100644 index ac426a671..000000000 --- a/rtdata/profiles/Faded/Faded Blue Pink.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 deleted file mode 100644 index ec0b45cf8..000000000 --- a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.16206896551724165;0.079310344827586171;1;1; -gCurve=3;0;0;0.1655172413793104;0.034482758620689787;1;1; -bCurve=3;0;0;0.55827995093362426;0.31529235382308862;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 deleted file mode 100644 index e60da1e22..000000000 --- a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.15733951206215074;0.55445004770342121;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.16206896551724165;0.079310344827586171;1;1; -gCurve=3;0;0;0.1655172413793104;0.034482758620689787;1;1; -bCurve=3;0;0;0.55827995093362426;0.31529235382308862;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Golden 1.pp3 b/rtdata/profiles/Faded/Faded Golden 1.pp3 deleted file mode 100644 index 68e7d163c..000000000 --- a/rtdata/profiles/Faded/Faded Golden 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.53359683794466362;0.72870684529014551;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=56 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.086956521739130432;0.090909090909090856;1;1; -gCurve=3;0;0;0.20266764462192638;0.12923950395936107;1;1; -bCurve=1;0;0;0.25296442687747034;0.22529644268774709;0.8656126482213431;0.80632411067193566;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Golden 2.pp3 b/rtdata/profiles/Faded/Faded Golden 2.pp3 deleted file mode 100644 index ffb688403..000000000 --- a/rtdata/profiles/Faded/Faded Golden 2.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.53359683794466362;0.72870684529014551;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=56 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.086956521739130432;0.090909090909090856;0.94466403162055268;0.89328063241106692;1;1; -gCurve=3;0;0;0.20266764462192638;0.12923950395936107;0.90118577075098805;0.88537549407114613;1;1; -bCurve=1;0;0;0.25296442687747034;0.22529644268774709;0.8656126482213431;0.80632411067193566;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 deleted file mode 100644 index 6e5786bda..000000000 --- a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM.pp3 deleted file mode 100644 index d3a8b3919..000000000 --- a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 1.pp3 b/rtdata/profiles/Faded/Faded Green 1.pp3 deleted file mode 100644 index 89a0b1afa..000000000 --- a/rtdata/profiles/Faded/Faded Green 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 2.pp3 b/rtdata/profiles/Faded/Faded Green 2.pp3 deleted file mode 100644 index 1d25d36cf..000000000 --- a/rtdata/profiles/Faded/Faded Green 2.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.083003952569169981;0.075098814229249022;0.74703557312252944;0.81422924901185822;1;1; -gCurve=3;0;0;0.32806324110671931;0.43083003952569182;1;1; -bCurve=3;0;0;0.040612308653546869;0.12528693478940064;0.85375494071146218;0.9130434782608694;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 3.pp3 b/rtdata/profiles/Faded/Faded Green 3.pp3 deleted file mode 100644 index 4353eaa1c..000000000 --- a/rtdata/profiles/Faded/Faded Green 3.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.11903093907591648;0.023682704102494199;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;40;0; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Neutral TM.pp3 b/rtdata/profiles/Faded/Faded Neutral TM.pp3 deleted file mode 100644 index 8b5beb761..000000000 --- a/rtdata/profiles/Faded/Faded Neutral TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Neutral.pp3 b/rtdata/profiles/Faded/Faded Neutral.pp3 deleted file mode 100644 index adf5069c1..000000000 --- a/rtdata/profiles/Faded/Faded Neutral.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 deleted file mode 100644 index dc686e332..000000000 --- a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 deleted file mode 100644 index 71b0b780e..000000000 --- a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 1.pp3 b/rtdata/profiles/Faded/Faded Purple 1.pp3 deleted file mode 100644 index 9224db874..000000000 --- a/rtdata/profiles/Faded/Faded Purple 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 deleted file mode 100644 index 12c1d4275..000000000 --- a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.7;0.9;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;0.69655172413793076;0.90689655172413808;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 2.pp3 b/rtdata/profiles/Faded/Faded Purple 2.pp3 deleted file mode 100644 index 39f401ca7..000000000 --- a/rtdata/profiles/Faded/Faded Purple 2.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.69999999999999973;0.90000000000000013;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;0.69655172413793076;0.90689655172413808;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 deleted file mode 100644 index fba0dc024..000000000 --- a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=170 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.29527054654490958;0.54755349597928327;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.068858525282812999;0.0083378765162873056;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.094310344827586101;0.09189655172413784;0.9956896551724137;0.92051724137931046;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; -gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; -bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 deleted file mode 100644 index 34302c02e..000000000 --- a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=170 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.29527054654490958;0.40962246149652437;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.068858525282812999;0.0083378765162873056;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.094310344827586101;0.09189655172413784;0.89568965517241339;0.9032758620689656;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; -gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; -bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Teal Orange.pp3 b/rtdata/profiles/Faded/Faded Teal Orange.pp3 deleted file mode 100644 index 946812758..000000000 --- a/rtdata/profiles/Faded/Faded Teal Orange.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.33320158102766828;0.53720866839307635;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.068858525282812999;0.0083378765162873056;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.094310344827586101;0.09189655172413784;0.89568965517241339;0.9032758620689656;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; -gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; -bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 deleted file mode 100644 index 18a5898f2..000000000 --- a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;40; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 deleted file mode 100644 index 9f8157139..000000000 --- a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;40; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 1.pp3 b/rtdata/profiles/Faded/Faded Warm 1.pp3 deleted file mode 100644 index 8fa907460..000000000 --- a/rtdata/profiles/Faded/Faded Warm 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;40; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 2.pp3 b/rtdata/profiles/Faded/Faded Warm 2.pp3 deleted file mode 100644 index 567e235f4..000000000 --- a/rtdata/profiles/Faded/Faded Warm 2.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;20; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 3.pp3 b/rtdata/profiles/Faded/Faded Warm 3.pp3 deleted file mode 100644 index 873f01f35..000000000 --- a/rtdata/profiles/Faded/Faded Warm 3.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;20; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.57312252964427013;0.95652173913043359;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Deep Shadows.pp3 b/rtdata/profiles/Generic/Deep Shadows.pp3 deleted file mode 100644 index cfee29587..000000000 --- a/rtdata/profiles/Generic/Deep Shadows.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=3;0;0;0.10280701754385937;0;0.22561403508771805;0.081754385964912232;0.82456140350877249;0.82456140350877249;1;1; -Curve2=3;0;0;0.20585593677025255;0.44367403149511991;0.6315789473684208;0.89473684210526305;1;1; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=true -Pastels=20 -Saturated=20 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Equilibrated.pp3 b/rtdata/profiles/Generic/Equilibrated.pp3 deleted file mode 100644 index 3194ca5ff..000000000 --- a/rtdata/profiles/Generic/Equilibrated.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=WeightedStd -Curve=3;0;0;0.10641712584710848;0;0.22561403508771805;0.12507568560390137;0.82456140350877249;0.82456140350877249;1;1; -Curve2=3;0;0;0.20585593677025255;0.44367403149511991;0.6315789473684208;0.89473684210526305;1;1; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/High-Key.pp3 b/rtdata/profiles/Generic/High-Key.pp3 deleted file mode 100644 index 9714151a0..000000000 --- a/rtdata/profiles/Generic/High-Key.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=-10 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=2;0.105;0.25;0.75;15;60;30;-70; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=5 -Chromaticity=-10 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Natural 1.pp3 b/rtdata/profiles/Generic/Natural 1.pp3 deleted file mode 100644 index 4a21f7a05..000000000 --- a/rtdata/profiles/Generic/Natural 1.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.04;0.03;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Natural 2.pp3 b/rtdata/profiles/Generic/Natural 2.pp3 deleted file mode 100644 index c1bf8a832..000000000 --- a/rtdata/profiles/Generic/Natural 2.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=5 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.45754265471370759;0.57906737998843294;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=5 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.84892086330935235;0.69064748201438808;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Punchy 1.pp3 b/rtdata/profiles/Generic/Punchy 1.pp3 deleted file mode 100644 index 370862258..000000000 --- a/rtdata/profiles/Generic/Punchy 1.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=120;-10;-10; -Green=-10;120;-10; -Blue=-10;-10;120; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=10 -Chromaticity=5 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Punchy 2.pp3 b/rtdata/profiles/Generic/Punchy 2.pp3 deleted file mode 100644 index c98f8e87f..000000000 --- a/rtdata/profiles/Generic/Punchy 2.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=10 -Chromaticity=5 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=true -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Portrait/Portrait Lejto.pp3 b/rtdata/profiles/Portrait/Portrait Lejto.pp3 deleted file mode 100644 index 085915ad4..000000000 --- a/rtdata/profiles/Portrait/Portrait Lejto.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=25 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=SatAndValueBlending -Curve=1;0;0;0.079285714285714293;0.03;0.18041642857142856;0.21375157142857143;0.702326;0.748837;1;1; -Curve2=1;0;0;0.075;0.13571428571428609;0.3;0.42857142857142855;0.7214285714285712;0.74642857142857144;1;1; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=1;0;0;1;1; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Portrait/Portrait Smooth.pp3 b/rtdata/profiles/Portrait/Portrait Smooth.pp3 deleted file mode 100644 index 8079c050d..000000000 --- a/rtdata/profiles/Portrait/Portrait Smooth.pp3 +++ /dev/null @@ -1,135 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=FilmLike -CurveMode2=Standard -Curve=1;0;0;0.443;0.574;1;1; -Curve2=0; - -[HLRecovery] -Enabled=true -Method=Luminance - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=-20 -Contrast=-20 -Chromaticity=0 -AvoidColorShift=true -RedAndSkinTonesProtection=50 -LCredsk=true -LCurve=3;0;0;0.043;0.014;0.162;0.162;0.652;0.93;1;1; -aCurve=0; -bCurve=0; -ccCurve=1;0;0;0.254;0.3;1;1; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Sharpening] -Enabled=true -Method=usm -Radius=0.5 -Amount=250 -Threshold=20;80;2000;1200; -OnlyEdges=false -EdgedetectionRadius=1.9 -EdgeTolerance=1800 -HalocontrolEnabled=false -HalocontrolAmount=85 -DeconvRadius=0.75 -DeconvAmount=75 -DeconvDamping=20 -DeconvIterations=30 - -[Vibrance] -Enabled=false - -[SharpenEdge] -Enabled=false - -[SharpenMicro] -Enabled=false - -[White Balance] -Setting=Camera - -[Color appearance] -Enabled=false - -[Impulse Denoising] -Enabled=false - -[Defringing] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=false - -[EPD] -Enabled=false - -[Shadows & Highlights] -Enabled=false - -[Crop] -Enabled=false - -[Gradient] -Enabled=false - -[PCVignette] -Enabled=false - -[Directional Pyramid Equalizer] -Enabled=true -Gamutlab=true -Mult0=1 -Mult1=1 -Mult2=1 -Mult3=0.6 -Mult4=0.6 -Threshold=0.2 -Skinprotect=0 -Hueskin=-5;25;170;120; - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true - diff --git a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 deleted file mode 100644 index d2cd3bb77..000000000 --- a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=FilmLike -CurveMode2=FilmLike -Curve=1;0;0;0.49407114624505927;0.49407114624505927;1;1; -Curve2=1;0;0;0.055335968379446598;0.019762845849802379;0.12648221343873495;0.11067193675889311;1;0.94861660079051413; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=10 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=false -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.29629629629629628;0.19341563786008226;0.69547325102880675;0.80246913580246892;1;1; -Curve2=3;0;0;0.056806920298983779;0.020475350634080798;0.69802637104224341;0.88816662467456142;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=false -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Natural.pp3 b/rtdata/profiles/Skintones/Skintones - Natural.pp3 deleted file mode 100644 index 0fcdbfbfa..000000000 --- a/rtdata/profiles/Skintones/Skintones - Natural.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=FilmLike -CurveMode2=FilmLike -Curve=1;0;0;0.49802371541501977;0.49802371541501977;1;1; -Curve2=1;0;0;0.097430830039525476;0.066798418972331866;0.12648221343873495;0.11067193675889311;1;0.95256916996047469; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=8 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.19753086419753088;0.18106995884773661;0.58847736625514402;0.79012345679012241;1;1; -Curve2=3;0;0;0.056806920298983779;0.020475350634080798;0.69802637104224341;0.88816662467456142;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 deleted file mode 100644 index f2d2add0e..000000000 --- a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=10 -Contrast=10 -Saturation=0 -Black=0 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.1013677790907735;0.011341564456759405;0.32302405498281778;0.2147079037800686;1;0.81422924901185889; -Curve2=3;0;0;0.16151202749140844;0.24319627128016638;0.59793814432989756;0.90034364261168354;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=-5 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.29629629629629628;0.19341563786008226;0.69547325102880675;0.80246913580246892;1;1; -Curve2=3;0;0;0.056806920298983779;0.020475350634080798;0.69802637104224341;0.88816662467456142;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 deleted file mode 100644 index d1eefc4c8..000000000 --- a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=10 -Contrast=10 -Saturation=0 -Black=0 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.1013677790907735;0.011341564456759405;0.32302405498281778;0.2147079037800686;1;0.81422924901185889; -Curve2=3;0;0;0.16151202749140844;0.24319627128016638;0.59793814432989756;0.90034364261168354;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=-5 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.29629629629629628;0.19341563786008226;0.69547325102880675;0.80246913580246892;1;1; -Curve2=3;0;0;0.14545;0;0.69802600000000004;0.88816700000000004;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Pale.pp3 b/rtdata/profiles/Skintones/Skintones - Pale.pp3 deleted file mode 100644 index b22470758..000000000 --- a/rtdata/profiles/Skintones/Skintones - Pale.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.1013677790907735;0.011341564456759405;0.32302405498281778;0.2147079037800686;1;1; -Curve2=3;0;0;0.16151202749140844;0.24319627128016638;0.59793814432989756;0.90034364261168354;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 deleted file mode 100644 index 65a8ea742..000000000 --- a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=false -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=true -rCurve=3;0;0;0.058419243986254393;0.28522336769759427;0.46735395189003465;0.890034364261168;1;1; -gCurve=3;0;0;0.96563573883161546;0.66323024054982871;1;1; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 deleted file mode 100644 index 23ae9feac..000000000 --- a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=false -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=true -rCurve=3;0;0;0.29209621993127149;0.054982817869415793;0.90034364261168398;0.46391752577319617;1;1; -gCurve=3;0;0;0.67697594501718261;0.95532646048109982;1;1; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 deleted file mode 100644 index 7d9482169..000000000 --- a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=0 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.083003952569169939;0.21343873517786566;1;1; -Curve2=3;0;0;0.063063463161166899;0.13925774599931898;0.86956521739130421;0.76284584980237158;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.15019762845849804;0.02766798418972332;0.31620553359683784;0.23715415019762845;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=10 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.06584362139917696;0.01234567901234568;0.24279835390946511;0.12757201646090524;0.46502057613168757;0.49324520929459226;0.67901234567901192;0.84773662551440199;1;1; -Curve2=0; -Curve3=1;0;0;0.86008230452674928;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Studio.pp3 b/rtdata/profiles/Skintones/Skintones - Studio.pp3 deleted file mode 100644 index f23d6dbfd..000000000 --- a/rtdata/profiles/Skintones/Skintones - Studio.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=0 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.083003952569169939;0.21343873517786566;1;1; -Curve2=3;0;0;0.063063463161166899;0.13925774599931898;0.86956521739130421;0.76284584980237158;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.15019762845849804;0.02766798418972332;0.31620553359683784;0.23715415019762845;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=10 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.06584362139917696;0.01234567901234568;0.24279835390946511;0.12757201646090524;0.46502057613168757;0.49324520929459226;0.67901234567901192;0.84773662551440199;1;1; -Curve2=0; -Curve3=1;0;0;0.90534979423868323;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 deleted file mode 100644 index a04141050..000000000 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;1;1; -Curve2=3;0;0;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.11522633744855965;0.01234567901234568;0.49382716049382719;0.49382716049382719;0.76131687242798285;0.95473251028806605;1;1; -Curve2=0; -Curve3=1;0;0;1;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 deleted file mode 100644 index 64f284261..000000000 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=20 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;1;1; -Curve2=3;0;0;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.10699588477366252;0.049382716049382713;0.49382716049382719;0.49382716049382719;0.76131687242798285;0.95473251028806605;1;1; -Curve2=0; -Curve3=1;0;0;1;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - From bf6d8a3278447b3cbea4f81fc9859411f36daf67 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 16 Dec 2018 02:00:14 +0100 Subject: [PATCH 332/348] Update Deutsch locale (Colorpicker Tooltip) --- rtdata/languages/Deutsch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index e1a0acfac..0a3cddbcd 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -75,6 +75,7 @@ #74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5 #75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5 #76 11.12.2018 Erweiterung (TooWaBoo) RT 5.5 +#77 16.12.2018 Korrektur Farbwähler-Tooltip (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -1389,7 +1390,7 @@ THRESHOLDSELECTOR_HINT;Umschalt-Taste halten, um individuelle\nKontrollpu THRESHOLDSELECTOR_T;Oben THRESHOLDSELECTOR_TL;Oben-Links THRESHOLDSELECTOR_TR;Oben-Rechts -TOOLBAR_TOOLTIP_COLORPICKER;Farbwähler\n\nWenn eingeschaltet:\n- Mit der linken Maustaste können Sie einen Farbwähler setzen.\n- Zum Verschieben, linke Maustaste festhalten.\n- Umschalttaste + Rechts-Klick entfernt alle Farbwähler.\n- Rechts-Klick auf den Farbwählerbutton blendet die Farbwähler ein/aus\n- Rechts-Klick in einen freien Bereich schaltet auf das Hand-Werkzeug zurück. +TOOLBAR_TOOLTIP_COLORPICKER;Farbwähler\n\nWenn eingeschaltet:\n- Mit der linken Maustaste können Sie einen Farbwähler setzen.\n- Zum Verschieben, linke Maustaste festhalten.\n- Strg + Umschalttaste + Rechts-Klick entfernt alle Farbwähler.\n- Rechts-Klick auf den Farbwählerbutton blendet die Farbwähler ein/aus\n- Rechts-Klick in einen freien Bereich schaltet auf das Hand-Werkzeug zurück. TOOLBAR_TOOLTIP_CROP;Ausschnitt wählen.\nTaste: c\n\nZum Verschieben des Ausschnitts,\nUmschalttaste festhalten. TOOLBAR_TOOLTIP_HAND;Hand-Werkzeug\nTaste: h TOOLBAR_TOOLTIP_STRAIGHTEN;Ausrichten / Drehen\nTaste: s\n\nRichtet das Bild entlang einer Leitlinie aus. From 59e2eb04e9453fa18e991b205d54abd6a17b225a Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 16 Dec 2018 14:08:13 +0100 Subject: [PATCH 333/348] crop tool, fix Gui glitch & replace box with grid --- rtgui/crop.cc | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/rtgui/crop.cc b/rtgui/crop.cc index a06965840..1ba3171bc 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -181,6 +181,10 @@ Crop::Crop(): fixr = Gtk::manage (new Gtk::CheckButton (M("TP_CROP_FIXRATIO"))); setExpandAlignProperties(fixr, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); fixr->set_active (1); + + Gtk::Grid* ratiogrid = Gtk::manage(new Gtk::Grid()); + ratiogrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(ratiogrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); ratio = Gtk::manage (new MyComboBoxText ()); setExpandAlignProperties(ratio, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); @@ -188,24 +192,25 @@ Crop::Crop(): orientation = Gtk::manage (new MyComboBoxText ()); setExpandAlignProperties(orientation, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + customRatioLabel = Gtk::manage(new Gtk::Label("")); + customRatioLabel->hide(); + setExpandAlignProperties(customRatioLabel, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + + ratiogrid->set_column_homogeneous (true); + ratiogrid->attach (*ratio, 0, 0, 1, 1); + ratiogrid->attach (*customRatioLabel, 1, 0, 1, 1); + ratiogrid->attach (*orientation, 1, 0, 1, 1); + Gtk::Label* guidelab = Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE"))); setExpandAlignProperties(guidelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); guide = Gtk::manage (new MyComboBoxText ()); setExpandAlignProperties(guide, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - customRatioLabel = Gtk::manage(new Gtk::Label("")); - customRatioLabel->hide(); - Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*orientation); - hb->pack_start(*customRatioLabel); - - settingsgrid->set_column_homogeneous(true); settingsgrid->attach (*fixr, 0, 0, 1, 1); - settingsgrid->attach (*ratio, 1, 0, 1, 1); - settingsgrid->attach (*hb, 2, 0, 1, 1); + settingsgrid->attach (*ratiogrid, 1, 0, 1, 1); settingsgrid->attach (*guidelab, 0, 1, 1, 1); - settingsgrid->attach (*guide, 1, 1, 2, 1); + settingsgrid->attach (*guide, 1, 1, 1, 1); pack_start (*settingsgrid, Gtk::PACK_SHRINK, 0 ); From 0810f8f5037fbc37f313075cda66e3614e644a52 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 16 Dec 2018 16:40:18 +0100 Subject: [PATCH 334/348] Partial profile application of Detail settings does not work, fixes #4945 --- rtgui/thumbnail.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 4d744edcb..7fb547aa6 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -32,6 +32,7 @@ #include "batchqueue.h" #include "extprog.h" #include "profilestorecombobox.h" +#include "procparamchangers.h" using namespace rtengine::procparams; @@ -449,7 +450,9 @@ void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoCh || pparams.hsvequalizer != pp.hsvequalizer || pparams.filmSimulation != pp.filmSimulation || pparams.softlight != pp.softlight - || pparams.dehaze != pp.dehaze; + || pparams.dehaze != pp.dehaze + || whoChangedIt == FILEBROWSER + || whoChangedIt == BATCHEDITOR; { MyMutex::MyLock lock(mutex); From c8042271dfe8870b8a81a4645e93e8b02aca0199 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 16 Dec 2018 23:23:40 +0100 Subject: [PATCH 335/348] Updated bundled PP3 files --- .../Auto-Matched Curve - ISO High.pp3 | 44 ++++------- .../profiles/Auto-Matched Curve - ISO Low.pp3 | 29 ++----- .../Auto-Matched Curve - ISO Medium.pp3 | 29 ++----- rtdata/profiles/Non-raw/Brighten.pp3 | 15 +--- rtdata/profiles/Pop/Pop 1.pp3 | 76 ++++++------------ .../Pop/{Pop 2 L.pp3 => Pop 2 Lab.pp3} | 76 ++++++------------ rtdata/profiles/Pop/Pop 3 Skin.pp3 | 76 ++++++------------ ...Pop 4 BW.pp3 => Pop 4 Black-and-White.pp3} | 77 ++++++------------- .../Standard Film Curve - ISO High.pp3 | 46 ++++------- .../Standard Film Curve - ISO Low.pp3 | 31 +++----- .../Standard Film Curve - ISO Medium.pp3 | 31 +++----- 11 files changed, 157 insertions(+), 373 deletions(-) rename rtdata/profiles/Pop/{Pop 2 L.pp3 => Pop 2 Lab.pp3} (58%) rename rtdata/profiles/Pop/{Pop 4 BW.pp3 => Pop 4 Black-and-White.pp3} (66%) diff --git a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 index a3075cfe3..6108ea54c 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 @@ -1,24 +1,11 @@ +[Exposure] +Auto=false +HistogramMatching=true + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=true -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;1;1; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -44,19 +31,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=false - -[RAW] -CA=true - -[RAW Bayer] -Method=lmmse -CcSteps=2 -LMMSEIterations=2 - -[RAW X-Trans] -Method=1-pass (medium) -CcSteps=2 +UseCA=true [Color Management] ToneCurve=false @@ -64,3 +39,12 @@ ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true + +[RAW Bayer] +Method=lmmse + +[RAW X-Trans] +Method=1-pass (medium) diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 index 7af720c4d..d8be8d795 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 @@ -1,32 +1,16 @@ +[Exposure] +Auto=false +HistogramMatching=true + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=true -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=0; -Curve2=0; - [LensProfile] LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=false - -[RAW] -CA=true +UseCA=true [Color Management] ToneCurve=false @@ -34,3 +18,6 @@ ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 index 620fdc582..a976fdd90 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 @@ -1,24 +1,11 @@ +[Exposure] +Auto=false +HistogramMatching=true + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=true -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=0; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -45,10 +32,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=false - -[RAW] -CA=true +UseCA=true [Color Management] ToneCurve=false @@ -56,3 +40,6 @@ ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/profiles/Non-raw/Brighten.pp3 b/rtdata/profiles/Non-raw/Brighten.pp3 index 863102ae0..37f66fb75 100644 --- a/rtdata/profiles/Non-raw/Brighten.pp3 +++ b/rtdata/profiles/Non-raw/Brighten.pp3 @@ -1,16 +1,3 @@ [Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true +Enabled=true LCurve=3;0;0;0.055044034166268768;0;0.52103559870550098;1;1;1; -aCurve=0; -bCurve=0; -ccCurve=3;0;0;0.10679611650485436;0.30420711974110037;1;1; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=3;0;0;0.3592233009708739;0.3592233009708739;0.40129449838187703;0.40129449838187703;1;0.0032362459546936488; diff --git a/rtdata/profiles/Pop/Pop 1.pp3 b/rtdata/profiles/Pop/Pop 1.pp3 index c86b146a8..2152a268b 100644 --- a/rtdata/profiles/Pop/Pop 1.pp3 +++ b/rtdata/profiles/Pop/Pop 1.pp3 @@ -9,31 +9,27 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=FilmLike CurveMode2=Standard -Curve=3;0;0;0.084;0;0.187;0.188;0.442;0.58;1;1; +Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.442;0.57999999999999996;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.5;0.4;1;1; +LCurve=3;0;0;0.5;0.40000000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -43,18 +39,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=98 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -70,58 +62,34 @@ H-Hue=0 RSTProtection=0 AdaptScene=208 AutoAdapscen=true +YbScene=15 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.15;0;0.67;0.91;1;1; -Curve3=3;0;0;0.08;0.02;0.3;0.5;1;1; +Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; +Curve3=3;0;0;0.080000000000000002;0.02;0.29999999999999999;0.5;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Pop/Pop 2 L.pp3 b/rtdata/profiles/Pop/Pop 2 Lab.pp3 similarity index 58% rename from rtdata/profiles/Pop/Pop 2 L.pp3 rename to rtdata/profiles/Pop/Pop 2 Lab.pp3 index 854bd3eb5..796aeb5ba 100644 --- a/rtdata/profiles/Pop/Pop 2 L.pp3 +++ b/rtdata/profiles/Pop/Pop 2 Lab.pp3 @@ -9,31 +9,27 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=FilmLike CurveMode2=Standard -Curve=3;0;0;0.179;0;0.384;0.502;1;1; +Curve=3;0;0;0.17899999999999999;0;0.38400000000000001;0.502;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.12;0.3;0.5;0.46;1;1; +LCurve=3;0;0;0.12;0.29999999999999999;0.5;0.46000000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -43,18 +39,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=98 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -70,58 +62,34 @@ H-Hue=0 RSTProtection=0 AdaptScene=208 AutoAdapscen=true +YbScene=15 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.15;0;0.67;0.91;1;1; -Curve3=3;0;0;0.08;0.02;0.3;0.5;1;1; +Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; +Curve3=3;0;0;0.080000000000000002;0.02;0.29999999999999999;0.5;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Pop/Pop 3 Skin.pp3 b/rtdata/profiles/Pop/Pop 3 Skin.pp3 index ec50418b1..650b2e189 100644 --- a/rtdata/profiles/Pop/Pop 3 Skin.pp3 +++ b/rtdata/profiles/Pop/Pop 3 Skin.pp3 @@ -9,31 +9,27 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=SatAndValueBlending CurveMode2=Standard -Curve=3;0;0;0.084;0;0.187;0.188;0.442;0.58;1;1; +Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.442;0.57999999999999996;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.5;0.4;1;1; +LCurve=3;0;0;0.5;0.40000000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -43,18 +39,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=98 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -70,58 +62,34 @@ H-Hue=0 RSTProtection=50 AdaptScene=208 AutoAdapscen=true +YbScene=10 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.15;0;0.67;0.91;1;1; -Curve3=3;0;0;0.08;0.02;0.38;0.73;1;1; +Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; +Curve3=3;0;0;0.080000000000000002;0.02;0.38;0.72999999999999998;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Pop/Pop 4 BW.pp3 b/rtdata/profiles/Pop/Pop 4 Black-and-White.pp3 similarity index 66% rename from rtdata/profiles/Pop/Pop 4 BW.pp3 rename to rtdata/profiles/Pop/Pop 4 Black-and-White.pp3 index b26a9d8a7..9faa32a0a 100644 --- a/rtdata/profiles/Pop/Pop 4 BW.pp3 +++ b/rtdata/profiles/Pop/Pop 4 Black-and-White.pp3 @@ -1,7 +1,7 @@ [Exposure] Auto=false Clip=0.02 -Compensation=0.66 +Compensation=0.66000000000000003 Brightness=0 Contrast=0 Saturation=0 @@ -9,24 +9,22 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=SatAndValueBlending CurveMode2=Standard -Curve=3;0;0;0.084;0;0.187;0.188;0.587;0.742;1;1; +Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.58699999999999997;0.74199999999999999;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - [Black & White] Enabled=true Method=ChannelMixer -Auto=true +Auto=false ComplementaryColors=true Setting=RGB-Rel Filter=None @@ -49,13 +47,14 @@ BeforeCurve=0; AfterCurve=0; [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.212;0.119;0.674;0.773;1;1; +LCurve=3;0;0;0.21199999999999999;0.11899999999999999;0.67400000000000004;0.77300000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -65,18 +64,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=97 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -90,60 +85,36 @@ J-Contrast=0 Q-Contrast=0 H-Hue=0 RSTProtection=0 -AdaptScene=208 +AdaptScene=164.33000000000001 AutoAdapscen=true +YbScene=10 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Lightness CurveMode2=Lightness CurveMode3=Colorfullness -Curve=3;0;0;0.15;0;0.545;1;1;1; +Curve=3;0;0;0.14999999999999999;0;0.54500000000000004;1;1;1; Curve2=0; Curve3=0; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Standard Film Curve - ISO High.pp3 b/rtdata/profiles/Standard Film Curve - ISO High.pp3 index c3480ec19..ae134e7f4 100644 --- a/rtdata/profiles/Standard Film Curve - ISO High.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO High.pp3 @@ -1,24 +1,13 @@ +[Exposure] +Auto=false +HistogramMatching=false +CurveMode=FilmLike +Curve=1;0;0;0.11;0.089999999999999997;0.32000000000000001;0.42999999999999999;0.66000000000000003;0.87;1;1; + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=90 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=false -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;0.11;0.09;0.32;0.43;0.66;0.87;1;1; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -45,19 +34,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=false - -[RAW] -CA=true - -[RAW Bayer] -Method=lmmse -CcSteps=2 -LMMSEIterations=2 - -[RAW X-Trans] -Method=1-pass (medium) -CcSteps=2 +UseCA=true [Color Management] ToneCurve=false @@ -65,3 +42,12 @@ ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true + +[RAW Bayer] +Method=lmmse + +[RAW X-Trans] +Method=1-pass (medium) diff --git a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 index d403119b9..4f6ad62c2 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 @@ -1,32 +1,18 @@ +[Exposure] +Auto=false +HistogramMatching=false +CurveMode=FilmLike +Curve=1;0;0;0.11;0.089999999999999997;0.32000000000000001;0.42999999999999999;0.66000000000000003;0.87;1;1; + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=90 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=false -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;0.11;0.09;0.32;0.43;0.66;0.87;1;1; -Curve2=0; - [LensProfile] LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=false - -[RAW] -CA=true +UseCA=true [Color Management] ToneCurve=false @@ -34,3 +20,6 @@ ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 index 7fad5b3e8..4921ffb22 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 @@ -1,24 +1,13 @@ +[Exposure] +Auto=false +HistogramMatching=false +CurveMode=FilmLike +Curve=1;0;0;0.11;0.089999999999999997;0.32000000000000001;0.42999999999999999;0.66000000000000003;0.87;1;1; + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=90 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=false -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;0.11;0.09;0.32;0.43;0.66;0.87;1;1; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -45,10 +34,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=false - -[RAW] -CA=true +UseCA=true [Color Management] ToneCurve=false @@ -56,3 +42,6 @@ ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true From 0b464c1eb453fc74fbe29ba2ce6dade9d8bd0794 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 17 Dec 2018 00:21:58 +0100 Subject: [PATCH 336/348] Removed Tone Mapping tooltip #2221 --- rtdata/languages/Catala | 3 +-- rtdata/languages/Chinese (Simplified) | 3 +-- rtdata/languages/Chinese (Traditional) | 3 +-- rtdata/languages/Czech | 1 - rtdata/languages/Dansk | 3 +-- rtdata/languages/Deutsch | 1 - rtdata/languages/English (UK) | 3 +-- rtdata/languages/English (US) | 3 +-- rtdata/languages/Espanol | 1 - rtdata/languages/Euskara | 3 +-- rtdata/languages/Francais | 1 - rtdata/languages/Greek | 3 +-- rtdata/languages/Hebrew | 3 +-- rtdata/languages/Italiano | 3 +-- rtdata/languages/Japanese | 1 - rtdata/languages/Latvian | 3 +-- rtdata/languages/Magyar | 3 +-- rtdata/languages/Nederlands | 1 - rtdata/languages/Norsk BM | 3 +-- rtdata/languages/Polish | 3 +-- rtdata/languages/Polish (Latin Characters) | 3 +-- rtdata/languages/Portugues (Brasil) | 1 - rtdata/languages/Russian | 3 +-- rtdata/languages/Serbian (Cyrilic Characters) | 3 +-- rtdata/languages/Serbian (Latin Characters) | 3 +-- rtdata/languages/Slovak | 3 +-- rtdata/languages/Suomi | 3 +-- rtdata/languages/Swedish | 1 - rtdata/languages/Turkish | 3 +-- rtdata/languages/default | 3 +-- rtgui/epd.cc | 2 -- 31 files changed, 22 insertions(+), 54 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index f4c0ab91a..ce7e9e378 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1611,7 +1611,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1874,7 +1874,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image. !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 -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !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. diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index e4d52b774..f0d50ec3e 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1599,7 +1599,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly. !TP_BWMIX_CC_ENABLED;Adjust complementary color @@ -1819,7 +1819,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_EPD_EDGESTOPPING;Edge stopping !TP_EPD_GAMMA;Gamma !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index f6605f63e..b6e4dedbc 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1413,7 +1413,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1702,7 +1702,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index e8b11906d..56900e28b 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -1666,7 +1666,6 @@ TP_EPD_LABEL;Mapování tónů TP_EPD_REWEIGHTINGITERATES;Počet průchodů převážení TP_EPD_SCALE;Měřítko TP_EPD_STRENGTH;Síla -TP_EPD_TOOLTIP;Mapování tónů je dostupné v L*a*b* (standard) a CIECAM02 módu.\n\nV L*a*b* módu může být mapování tónů použito i pro zůstatkový obraz nástroje Vlnka\n\nPro zapnutí mapování tónů v CIECAM02 módu zapněte prosím následující volby:\n1. CIECAM02\n2. Algoritmus="Jas a pestrobarevnost (QM)"\n3. "Mapování tónů pomocí jasu CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Automatické úrovně TP_EXPOSURE_AUTOLEVELS_TIP;Přepne provedení Automatické úrovně na automatickou sadu hodnot parametrů založených na analýze obrázku\nPokud to je nezbytné, povolí rekonstrukci světel. TP_EXPOSURE_BLACKLEVEL;Černá diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index f1b952b00..72b795c29 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1410,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1699,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 0a3cddbcd..4bf12cbed 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1707,7 +1707,6 @@ TP_EPD_LABEL;Tonwertkorrektur TP_EPD_REWEIGHTINGITERATES;Iterationen TP_EPD_SCALE;Faktor TP_EPD_STRENGTH;Intensität -TP_EPD_TOOLTIP;Tonwertkorrektur ist mit dem L*a*b*- und CIECAM02-Modus möglich.\n\nFür den CIECAM02-Modus müssen folgende Optionen aktiviert sein:\n1. CIECAM02\n2. Algorithmus = Helligkeit + Farbigkeit (QM)\n3. Tonwertkorrektur mittels CIECAM02-Helligkeit (Q) TP_EXPOSURE_AUTOLEVELS;Auto TP_EXPOSURE_AUTOLEVELS_TIP;Automatische Belichtungseinstellung\nbasierend auf Bildanalyse. TP_EXPOSURE_BLACKLEVEL;Schwarzwert diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index de8f44a27..edde8946e 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -53,7 +53,7 @@ PREFERENCES_PRTPROFILE;Colour profile PREFERENCES_TAB_COLORMGR;Colour Management SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colours with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Colour Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Colour Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Colour Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Centre of rotation is the geometrical centre of the image. TP_BWMIX_CC_ENABLED;Adjust complementary colour TP_BWMIX_CC_TOOLTIP;Enable to allow automatic adjustment of complementary colours in ROYGCBPM mode. @@ -87,7 +87,6 @@ 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. -TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colourfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colours TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to colour cast. TP_GRADIENT_CENTER;Centre diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 6b1526dcc..078989905 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1310,7 +1310,7 @@ !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. @@ -1626,7 +1626,6 @@ !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS;Auto Levels !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_BLACKLEVEL;Black diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index a202e2e47..3260d167c 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1749,7 +1749,6 @@ TP_EPD_LABEL;Mapeo tonal TP_EPD_REWEIGHTINGITERATES;Iteraciones de reponderación TP_EPD_SCALE;Escala TP_EPD_STRENGTH;Intensidad -TP_EPD_TOOLTIP;El mapeo tonal puede hacerse en modo Lab (estándar) y en modo CIECAM02.\n\nPara activar mapeo tonal modo CIECAM02 haga los siguientes ajustes:\n1. CIECAM02\n2. Algoritmo="Brillo + Colorido (QM)"\n3. "Mapeo tonal usando Brillo CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Niveles automáticos TP_EXPOSURE_AUTOLEVELS_TIP;Ejecuta Niveles Automáticos. Establece automáticamente los valores de los parámetros basándose en el análisis de la imagen.\nHabilita la reconstrucción de luces altas si es necesario TP_EXPOSURE_BLACKLEVEL;Nivel de Negro diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 12deea740..6d947cdd9 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1411,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1700,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 9819b20a5..987774546 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1632,7 +1632,6 @@ TP_EPD_LABEL;Compression tonale TP_EPD_REWEIGHTINGITERATES;Itérations de la pondération TP_EPD_SCALE;Échelle TP_EPD_STRENGTH;Force -TP_EPD_TOOLTIP;Vous pouvez choisir entre le mode Lab (standard) ou le mode CIECAM02.\n En activant "Compression tonale avec brillance Q CIECAM" dans le menu "Brillance + Niveau de couleur CIECAM" TP_EXPOSURE_AUTOLEVELS;Niveaux Auto TP_EXPOSURE_AUTOLEVELS_TIP;Bascule l'usage de Niveaux automatiques afin de régler automatiquement les valeurs basé sur l'analyse de l'image\nActive la Reconstruction des Hautes Lumières si nécessaire. TP_EXPOSURE_BLACKLEVEL;Noir diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index d5cfc781c..eba373871 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1410,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1699,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 75b3a3dd7..faa279860 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1411,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1700,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 7e81ff386..0c0f66576 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -987,7 +987,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Iterazioni di Ribilanciamento TP_EPD_SCALE;Scala TP_EPD_STRENGTH;Forza -TP_EPD_TOOLTIP;Il Tone Mapping è possibile in modalità Lab (standard) o CIECAM02.\n\nPer utilizare il Tone Mapping CIECAM02 abilita quste impostazioni: \n 1. CIECAM02\n 2. Algoritmo="Brillanza + Pienezza (QM)"\n 3. "Tone mapping con CIECAM02" TP_EXPOSURE_AUTOLEVELS;Livelli automatici TP_EXPOSURE_AUTOLEVELS_TIP;Abilita l'esecuzione dei livelli automatici per impostare automaticamente il cursore Esposizione in base all'analisi dell'immagine.\nSe necessario, abilita Ricostruzione Alteluci. TP_EXPOSURE_BLACKLEVEL;Livello del nero @@ -1801,7 +1800,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index a8ed3bc2b..ad8996907 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1658,7 +1658,6 @@ TP_EPD_LABEL;トーンマッピング TP_EPD_REWEIGHTINGITERATES;再加重反復 TP_EPD_SCALE;スケール TP_EPD_STRENGTH;強さ -TP_EPD_TOOLTIP;トーンマッピングは、L*a*b*モード(標準)またはCIECAM02モードを介して可能です\n\nL*a*b*モードの場合、トーンマッピングはウェーブレット機能の残差画像にも使えます\n\n CIECAM02トーンマッピングモードは以下の設定を有効にします:\n 1. CIECAM02\n 2. アルゴリズム="明るさ + 鮮やかさ (QM)"\n 3. "CIECAM02 明るさ(Q)でトーンマッピング" TP_EXPOSURE_AUTOLEVELS;自動露光補正 TP_EXPOSURE_AUTOLEVELS_TIP;画像を解析し露光補正を自動で設定します TP_EXPOSURE_BLACKLEVEL;黒レベル diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index b97aca446..83fd32895 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1411,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1700,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 02d67437b..d13d6d5a4 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1564,7 +1564,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1829,7 +1829,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image. !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 -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CURVEEDITOR1;Tone curve 1 !TP_EXPOSURE_CURVEEDITOR2;Tone curve 2 diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 0f1fdff6e..225b3ecf4 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -1408,7 +1408,6 @@ TP_EPD_LABEL;Tonemapping (Lab/CIECAM02) TP_EPD_REWEIGHTINGITERATES;Herhaling TP_EPD_SCALE;Schaal TP_EPD_STRENGTH;Sterkte -TP_EPD_TOOLTIP;Tonemapping is mogelijk via Lab mode (standaard) of CIECAM02 mode.\n\nOm CIECAM02 Tonemapping mode te gebruiken moeten de volgende instellingen worden gekozen: \n1. CIECAM\n2. Algoritme="Helderheid + Kleurrijkheid (QM)"\n3. "Tonemapping gebruik makend van CIECAM02 helderheid (Q)" TP_EXPOSURE_AUTOLEVELS;Autom. niveaus TP_EXPOSURE_AUTOLEVELS_TIP;Activeer automatische niveaus\nActiveer Herstel Hoge lichten indien nodig. TP_EXPOSURE_BLACKLEVEL;Schaduwen diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index ec695aac6..1fd3e18c1 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1410,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1699,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 2a21b3836..916ea2b90 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1085,7 +1085,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Powtarzanie rozważania TP_EPD_SCALE;Skala TP_EPD_STRENGTH;Siła -TP_EPD_TOOLTIP;Tone mapping może się odbyć w przestrzeni kolorów L*a*b* (domyślnie) oraz CIECAM02.\n\nAby wykonać tone mapping w przestrzeni CIECAM02 należy włączyć następujące ustawienia:\n1. CIECAM02\n2. Algorytm="Jasność + Barwistość (QM)"\n3. "Tone mapping za pomocą jasności CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Wyrównaj poziomy TP_EXPOSURE_AUTOLEVELS_TIP;Dokonaj automatycznego ustawienia parametrów ekspozycji na podstawie analizy obrazu TP_EXPOSURE_BLACKLEVEL;Czerń @@ -1877,7 +1876,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 7889a83cf..6b18c604e 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1085,7 +1085,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Powtarzanie rozwazania TP_EPD_SCALE;Skala TP_EPD_STRENGTH;Sila -TP_EPD_TOOLTIP;Tone mapping moze sie odbyc w przestrzeni kolorow L*a*b* (domyslnie) oraz CIECAM02.\n\nAby wykonac tone mapping w przestrzeni CIECAM02 nalezy wlaczyc nastepujace ustawienia:\n1. CIECAM02\n2. Algorytm="Jasnosc + Barwistosc (QM)"\n3. "Tone mapping za pomoca jasnosci CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Wyrownaj poziomy TP_EXPOSURE_AUTOLEVELS_TIP;Dokonaj automatycznego ustawienia parametrow ekspozycji na podstawie analizy obrazu TP_EXPOSURE_BLACKLEVEL;Czern @@ -1877,7 +1876,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index f5a72cb4c..1b25b43dc 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1550,7 +1550,6 @@ TP_EPD_LABEL;Mapeamento de Tom TP_EPD_REWEIGHTINGITERATES;Reponderando iterações TP_EPD_SCALE;Escala TP_EPD_STRENGTH;Intensidade -TP_EPD_TOOLTIP;O mapeamento de tom é possível no modo L*a*b* (padão) e no modo CIECAM02.\n\nQuando no modo L*a*b*, o mapeamento de tom também pode ser usado na imagem residual da ferramenta de Níveis de Wavelet.\n\nPara ativar o modo de mapeamento de tom CIECAM02, habilite as seguintes configurações:\n1. CIECAM02\n2. Algorítimo = "Brilho + Colorido (QM)"\n3. "Mapeamento de tom usando o brilho do CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Níveis Automáticos TP_EXPOSURE_AUTOLEVELS_TIP;Alterna a execução dos Níveis Automáticos para definir automaticamente os valores do controle deslizante de Exposição baseado numa análise de imagem.\nHabilita a Reconstrução de Realce se necessário. TP_EXPOSURE_BLACKLEVEL;Preto diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 584f10d45..b440470a3 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1133,7 +1133,6 @@ TP_EPD_LABEL;Тональная компрессия TP_EPD_REWEIGHTINGITERATES;Перевзвешивание проходов TP_EPD_SCALE;Масштаб TP_EPD_STRENGTH;Интенсивность -TP_EPD_TOOLTIP;Тональная компрессия возможна в режиме L*a*b* (по умолчанию) и CIECAM02.\nВ режиме L*a*b* тональная компрессия также может быть использована для остаточного изображения Вейвлетов.\n\n.Для использования модели тональной компрессии CIECAM02 включите следующие настройки:\n1. CIECAM02\n2. Алгоритм Яркость+Красочность (QM)\n3. Тональная компрессия, использующая яркость CIECAM02 (Q). TP_EXPOSURE_AUTOLEVELS;Автоуровни TP_EXPOSURE_AUTOLEVELS_TIP;Переключение выполнения автоуровней для автоматической установки параметров экспозиции на основе анализа изображения TP_EXPOSURE_BLACKLEVEL;Уровень чёрного @@ -1881,7 +1880,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index cd8d6e640..d6e357068 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -944,7 +944,6 @@ TP_EPD_LABEL;Мапирање тонова TP_EPD_REWEIGHTINGITERATES;Број поновних мерења TP_EPD_SCALE;Размера TP_EPD_STRENGTH;Јачина -TP_EPD_TOOLTIP;Мапирање тонова је могуће у Лаб (стандардном) или CIECAM02 режиму.\n\nЗа рад у CIECAM02 режиму укључите:\n1. CIECAM02\n2. Алгоритам="Осветљење + живописност (QM)"\n3. "Мапирање тонова у CIECAM02 осветљењу (Q)" TP_EXPOSURE_AUTOLEVELS;Ауто-нивои TP_EXPOSURE_AUTOLEVELS_TIP;Омогућава аутоматско одређивање нивоа, који подешава клизаче експозиције на основу податка о самој слици.\nУкључује чупање светлих делова уколико је неопходно. TP_EXPOSURE_BLACKLEVEL;Црна @@ -1789,7 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !THRESHOLDSELECTOR_BL;Bottom-left -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies. !TP_BWMIX_FILTER_YELLOW;Yellow !TP_BWMIX_GAMMA;Gamma Correction diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 664894021..4d833d202 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -944,7 +944,6 @@ TP_EPD_LABEL;Mapiranje tonova TP_EPD_REWEIGHTINGITERATES;Broj ponovnih merenja TP_EPD_SCALE;Razmera TP_EPD_STRENGTH;Jačina -TP_EPD_TOOLTIP;Mapiranje tonova je moguće u Lab (standardnom) ili CIECAM02 režimu.\n\nZa rad u CIECAM02 režimu uključite:\n1. CIECAM02\n2. Algoritam="Osvetljenje + živopisnost (QM)"\n3. "Mapiranje tonova u CIECAM02 osvetljenju (Q)" TP_EXPOSURE_AUTOLEVELS;Auto-nivoi TP_EXPOSURE_AUTOLEVELS_TIP;Omogućava automatsko određivanje nivoa, koji podešava klizače ekspozicije na osnovu podatka o samoj slici.\nUključuje čupanje svetlih delova ukoliko je neophodno. TP_EXPOSURE_BLACKLEVEL;Crna @@ -1789,7 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !THRESHOLDSELECTOR_BL;Bottom-left -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies. !TP_BWMIX_FILTER_YELLOW;Yellow !TP_BWMIX_GAMMA;Gamma Correction diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 1319912db..0ceeab884 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1450,7 +1450,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1729,7 +1729,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 6ca4406d8..3c3cdc6c5 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1411,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1700,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 868e609bb..5032496a3 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1281,7 +1281,6 @@ TP_EPD_LABEL;Tonmappning TP_EPD_REWEIGHTINGITERATES;Återviktade iterationer TP_EPD_SCALE;Skala TP_EPD_STRENGTH;Styrka -TP_EPD_TOOLTIP;Tonmappning är möjligt via Lab-läge (standard) och CIECAM02-läge.\n\nFör att aktivera CIECAM02- tonmappningsläget, aktivera följande:\n1. CIECAM02\n2. Algoritm="Intensitet + Färgmättnad (QM)"\n3. "Tonmappning mha CIECAM02 intensitet (Q)" TP_EXPOSURE_AUTOLEVELS;Autonivåer TP_EXPOSURE_AUTOLEVELS_TIP;Slå av/på autonivåer för att automatiskt beräkna och använda värden baserat på bildanalys\nAktiverar högdageråterställning om nödvändigt TP_EXPOSURE_BLACKLEVEL;Svärta diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index a9d3e9d5e..39302869d 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1410,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Isı !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: shift+right-click.\n- Revert to hand tool: right-click. +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1699,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. diff --git a/rtdata/languages/default b/rtdata/languages/default index dc5f85156..50a9aee2b 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1309,7 +1309,7 @@ THRESHOLDSELECTOR_HINT;Hold the Shift key to move individual control poin THRESHOLDSELECTOR_T;Top THRESHOLDSELECTOR_TL;Top-left THRESHOLDSELECTOR_TR;Top-right -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: control+shift+right-click.\n- Revert to hand tool: right-click outside any picker. +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. @@ -1625,7 +1625,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Reweighting iterates TP_EPD_SCALE;Scale TP_EPD_STRENGTH;Strength -TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" TP_EXPOSURE_AUTOLEVELS;Auto Levels TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. TP_EXPOSURE_BLACKLEVEL;Black diff --git a/rtgui/epd.cc b/rtgui/epd.cc index 681248994..675a5b9b9 100644 --- a/rtgui/epd.cc +++ b/rtgui/epd.cc @@ -26,8 +26,6 @@ using namespace rtengine::procparams; EdgePreservingDecompositionUI::EdgePreservingDecompositionUI () : FoldableToolPanel(this, "epd", M("TP_EPD_LABEL"), true, true) { - setEnabledTooltipMarkup(M("TP_EPD_TOOLTIP")); - strength = Gtk::manage(new Adjuster (M("TP_EPD_STRENGTH"), -1.0, 2.0, 0.01, 0.5)); gamma = Gtk::manage(new Adjuster (M("TP_EPD_GAMMA"), 0.8, 1.5, 0.01, 1.)); edgeStopping = Gtk::manage(new Adjuster (M("TP_EPD_EDGESTOPPING"), 0.1, 4.0, 0.01, 0.5)); From d9ac235559f48e7554e1dd371f9bf9eb34327921 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 17 Dec 2018 00:36:11 +0100 Subject: [PATCH 337/348] Preparing for release 5.5 --- RELEASE_NOTES.txt | 4 ++-- rtdata/images/non-themed/png/splash.png | Bin 79409 -> 75716 bytes rtdata/images/non-themed/rt-splash.svg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index e08a4bb75..e7e036400 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,6 +1,6 @@ -RAWTHERAPEE 5.5-RC2 RELEASE NOTES +RAWTHERAPEE 5.5 RELEASE NOTES -This is RawTherapee 5.5 Release Candidate 2, released on 2018-12-11. +This is RawTherapee 5.5, released on 2018-12-17. Start by reading the "Getting Started" article on RawPedia: http://rawpedia.rawtherapee.com/ diff --git a/rtdata/images/non-themed/png/splash.png b/rtdata/images/non-themed/png/splash.png index 2245423664fb9b5b40ff8e5582effe6816dab7b4..4075b3b8940bf604631d37116fa4c7ae4abd5b7c 100644 GIT binary patch delta 12147 zcmXY1byQUC*98Fy=}~z7@%fEM_l%{tyh~?(``CAWU57una)?yk zF^|xI_He=7G#gdmK#>qODgr*-`&a>1M}HLE>q9)wB(QrhwkRo^ao`kYm9IZ%STM4_ zKj#Y$wm@H7OR5?nq4CU}is8FF?wX$^rQf}iLoy6cSsPkdK9n{$TcqBPTwUFnmjeZN zzd_I$mVnxJGgeh=G-};{HLh&g>Xn~7(KY+ivyMPTWS#UBFE{`n{1bc0NRC%*%$4R- z(rpk~EO`^vi7IX(*mlTgi<^)&^15Br%J%m3r&H;yUw+n@n+l?#M63x!Y4rPUEp}|o z+NFIj1&?~2RVKBBc78`|3v$hNg#%M2@hHTF(%BwlyPvc!dKV#6snKt(Km@_r(KU0* z)fvQ*FpV}zP9da|E)Uj%HU}~*L%zkNPk_Guj z`u}j{TOifAIxuj70ZGi%dfdoDorPxc75z{N<%Ob-) z`S|jT=zi+@i|7q$mlqXTeoN)o*^gYm{^;X9z1ltbc_|1Zx{ya>P62E(%r2s*@ou%n zE-}DqVeYSQkH&{~HiiV4z>!i1!QN%{)79=pjC@K`yBXIyykkDumRe^R-$bP_YhHY+ zFvywi2u>Y1v~=EJyGQxwT4uEPwt22&Mgunzehe3Jp%3}yz(wz4+Vv4{Cp@Ztx@~yh zmg@`OC1j@~^zb7$*bz7-(L|#nkMetcq}^DsWZIc$>&LupRR6+AM0#;ceYC(DogTGb z#4UIt>(Ka$A`s8dGq%0U1e=DJ6_c+{z06&;yH~<)$PMhOBb&?Wp6!HOzm-GrFO%)s zVQ^@tE%_N+`FxThvBSz;Hqa9;_;BXF^j{OXu7%IBxsnRn0Q1ikwE_gdMu=97cca`K zkC_rb%$Wm;Y^nrmUlfkY2KIXiwv;ip_{BFH`wMTkO5~2*;YAie7__V;`0Q1n!O48r zKPd^tFWNd>KQlj!AE4;<$TdG)Fb?n^_lvqe;58mc(0IR$48EAB!Q8{2%|o4s8+OTC zAw!T82Sp|TnXf%A9-v}E6Km(1+Mg0ay3RQig?-fMi1f?Rnrb-Y8xpr!cSXvPzfB}4 zTm{|sm5%+ut4k_~$#~7`rJ4;RK2|hWP)y=JyKYFOFaZ1dgjTri#sBE9w-Z+_{Pmyf zREMj8$(?(FwW;oXfvPk1SLg&|!53NFd*!JdM*T@3>`*=?uAK;la$rAA?o$(AuRwBH zPG#k9LYaMd=9tJ$10dWvUy45O_R-+rr6_vb?kKkjVX8NFbRG=^Vf%&G*^pXNem5eo8My+ z2L0^pX{H&#Vo|>BJtrE>wEQ6WCdOGK5U1xTQ-5-Qo}B)+&xX%PFsc%%fh20)Hz47D zgX+rpIF)X{3H^PWO^Q1G8v(`u>Y_NM;Bp|cKNd`p?`7gtJFl1h#`IN{LHyQUhS_F@ z9BJhn)IW~v{(aWfgUAt6w3;okfz?8}Aq%b=%^Po7mCPg~G-GrBCPme0x^_5ePQUF? z&HuTpWC2_=xjjDHEU>5CG^47xfy)q4*QMpi%Ke)G@Z`(#cN9!CRA zw_|3saKE=dDH28BzLFKo@|a?u7_gc%`zLLy)0}J9|1pSQQ42Yxc+TshID_2VGc+is z`^V>)SdMFkD5B|n-9^y!9!$rPmKRopA5%PC&FT&s>YH~>VML~TwVh!$)CKu}iY?m8 z$?WYJDN|K>A+Bj9D=E`W5-<-e*Js3qz=(6@CpXG5j(xI*cWY8^hR%XpRyG{X{l}X=P}Hi$wv{Qi2^)I$#Jj zCw(t7KPDR!7v|62&0g;1aTey;6{3d>bJOK#5cR!(29YNFsT!Gti1!E5-D>0hij8Vx z`n7zXV2|1lM3th7FVu5mRm?X9ZN9HCTqiTWeWxSuWCxo}OLS^1R8}40*vkX@uudJG z5=hsG(nz=7e)>TQBnur9x7WqFr%?1v5vs@fbKxf zcz0!_W$!H}q2>9m%u1|b;`#fWPc@Uav^RB`*#D%y5^g5(gc0G;Tl1@-T^M75&tvo# z@M+%|#Ev3IPMJWTd8mvb_NS_-LXAfLaP+8GD}R21yEO&-k&a?LWxrw!CZW!txKy@&<}p_&3v>TGsA zCjIC@urycy#=t+RpTIf|yB&Q~ct8M*({Aj09t9R5mPb(+iA(nDxajx$kRfj(U;9 zrs+&vqE7-iSu-gn;n0b-?5SSMhYsS;SZu=PyHSR7k=vzA*Vyg z6i`g-bos}!1xQ1LHA>U>5`xN}548%h39b_Ub3&r4IgBB+UU>+xuXb4jFkBu=3D_Vbz+Ho!#Kq~cc;0-qoMxT_{OdKf0=j_#c*q;H?ckeBStTL(ruh1ZF72ZvH`XgvN$K{q{ z>gvywx{hcsK5$C~ghMgGR4D@{6*x-N8kZwY6NAZX z`PnT5(EE0XCtlnzU6$ExCico#HnWZ~%Wuu|2{KJodbSlPK*!&7H!?$b-uf>41XNt4 z7ajSgFKFO#O?()c?qX)?`*Ob=yV zS8?4Rj{fsv&Ky#n@P)&OXBeFYwh9aR&;M$8{+d&Jf?r@?U2+~z#85}*x<}9-6wP}v zU$&qJ{DSa?Y-`v@yP)y?jT?RO>qhya|(N6izn1+0E`^k5i9*#Y(*A zTh?BbwQNwqZV963mQThD>s09gf+cIjOrM@kQ~#3v+*!d>-(`C%+sjYWFGAz4BoUxV zL!l`bCdJR_e4k%2t9Ep2-K$n1PX~jW?;l9bH%>;P&MORph|w9rg@Lf3b=QbuFHr@_ zzrA1pn-?6ut56na5)wo>Bf^dQY6q4i^{7BjJ6Yq8d#kh6{O2+vE}bx%D)(|@g~0*weW@UW!Tz9vPad?PTqd&t6Ovy znAacbCIfI2L!2ogeb>T_KvGcd8fbcz@bl)|ZP0W@1ny?hBQY!%nX#Xj%Q1cp#&dVI zzTt{Bh!`9Sv-LhHco%Kv&&L|W65xhR+funD-kKLNzh{KM+{b5@Tu#_SoHdT`gIfTJ z_m<=d`Fracm7^{jA(q8!1b+A4%}JG(p8v+xg!iJhvUBTV^Ku6;sQniX1sMEJ$%!US zE$(qkeo;m`TY+gXQG=iq25n7BU)-yA1MR&}y;kR8aUlj!$-C|OhXp3tdSx!}N^056 zx{lwn?I|^X@i+ZYX&31yNCX8jwflf1SEd0_*RBsjx|=0rD_up|R=)(0 zw=?-O1fBiYU9oHeRAUZ!^4~cA@+UU*W)p792qq>vJ$c|i|L28qVc#tViB)O+k69V) z@O?xj%H>*ioHmIq&wUdp@HoZ}9q$OgAI=PM2*P2xZ6hs0a@Hm!e~`A(2m?}=1x9(M zl(>grFn!lfT6|)ufQT~H90~Jm2`9I>@$z32#eXY2UeH-*r>2zG?EMKMrxY5=xpPr! zC2-sdLodQ6Hd!s2S`AM*U5kBdP-a7}?!|zULvE|z6OPTEETy%#y4t(r%Y=~a!lGrG z{OoQnc51Y7NzWG$G-fhUO~6k9l|9odIdij2M}W!uTcVvRfzpvrdR}FFRL2R*w3rV& zimxxWp|ilF>bns4Z-ELIeZY_FNFzCI%+a2|vjP??nLo(1iz8TSM${9v@^4pKm~$RK z6VeO9vq6dpt%MYNLQM8d3@+xN`@ip83|zrG6kXvW7R{7Z59sLpK7eaf5Rh(qAL38) zR1ua_M}k5pXl5$G^Ew=EKn&F|X=1bpsMBO(R4dLS{2GEVySK@tEe!t&F!I6X(d?dM zJCA4m;4Ua_Zkb?Ky9j74L`oFB^*t|82t&ruYU0A+h$6Hw5670)v?o{43M~V(nxir! zWv0Clq0$_Kytf3BCWBOIed_*`8ifBH^ z5BCqAmp8<-IJ|fdW{Hf24k{RH*B}1#V)J6k)X(>{=dv%A~+em(w+hoa%yIKS`bt&{(AhDkfzyi z^r~?cX1B_pBt3^qm1%htGr%wCk|O!EXt|FbxTZ`2dn&dM*4#^EIu0ktXXDH<&Z(2q zXXQsUl%XJ-bi#RQ2GK8G$n2>#8~w{?y6GU#=FjL>=#s0sd?|;VA5J4p6-bs#gQg;K z7K{Pv1~>zec&(|WQK@v2v*!%rCiIxDMQQcK>0dxOqZWkm?gwwLe5ja3@)_X%Ai>PNlT~J{3idg^6&8HIn;jIT z4)@+Ydx2poVW#DK72nDFeYLQ{GG~SFo57;l5RhkqXxsl>2_4xu41 zgYbbJS5@uFGMnGuLaFy1V-kfGxi{!S5`|gIe271hSEw0Nw-5_}3r3mL_-4Hl3!*Um4BPWk~y~pE4bfJp~~8XrTDZA=R848*DnNn(gjKXOj8J03VLY;gkc`& zd^OoloTtg;-_iQ7E-M475K8h=eBDf^4B$4&z)nXZ5~|Hx9&HZp^-aC{_2BLy7_y1f zx5J}a<3l|2n@~MGCzv?jUyn*!5-Vkxl1B;y1;ilRSC&d^k|MA9l;02E(07R%bDLNU z{Nwvw;C5FfmV%^l6{}l0c|zm;)JGnv&F(XkhFpk6)_2$>hi_BUopXs?_s?X@8zAJ@ za4Ki+;%?`oh}LC?SMbRnx+pPp(-=wqgX(jXrE~V9aAe8;=x`inL7u#>{4Uz}Vh3LJDaFOYO#dIwT#65vAX8(c_;BTNty)XG#33JynNAjS|AY#p}f6rPTh2U8C~I4rQI?a@qlUR~lj-TUA!P#8m9P=go{G4hHi%~e@bFZbrfmocAp8F_$ zlTQ(L*gIcCoG|_YH4p^~;~s@`--849)eW9&0wDopT!epqXAP$|4g7+nUY06^!>smh z0+miUk@KC5cmR69u;NMhsakMhG{l0W*y2rF42G7U!ucOs;?*#G7R!DjY7t(7okI4~ z-Y+WD3evY@LNV=UW5(WB!25#sD;$aO?ce=)Kc6}&v3!5QnLS-Is$r*I@8~S)Q5}XN z3r9zI7mqaPZi_=YAA4NLujeoeQa0dlHdB?`s3)f2PRr|ku=W?juEy6T!t-UTHpturM5O`s^RyzrWeb)+xYg6UT+t~RjTEZKdNk=>f=kUPve~gQ^&|@J7mbX zgSkn_&7D6F#sQW-{eHyMHk7`$!`PXBAX!)Vf^mN~f-p=w2E_v;Y=*p`-%UbnC#g-v zJ`BKw4$|QG(E)M%E1;Kgn%rzW!S0=i@#aqBxjd3}=*$e=rVG&67b%Y59&hI2R^pbG z(1e$8xsCGt%$t7@;vx(vloky`Y&rV%SLkZaSG0Tp19Q7n>1e)Z|8Rl{RBgv=a)5uf zEhbaFKC$DbK9;y6TnYU<`8TkMmC=wU*py~UEY-roIdtc1+U^LpV*O^EL)Y{r{>l|x z_s^%NW~`fBDggpP8ZG1(-pD+xsFE_YrB3SDRXXPV+`pJ}oYFBO$WE2*@U6GfVndOPNICX9Xt_1p zv`YMFm)lTL=-AatrHNFKhW;QEBjZ(W7u`X=8GU0~HCM{~qSGO!{2Zt*6BB`|0(Dv7 zN|Rrfv4;=TEXeQVO*MpAHnV1%FvG?%r{!82z=7nqC+Z6`xSz%eug+>q_$4Z zL30{sY4Lepm1@oGjpV^dVXrtkqY>!da2(b9SpE3O%y!t9Hok*ic-SI*kt`4foyMCk zKFBKM(=8PJoX4;?ZT6pys(HI$7$CN}cJSKsd%y#AOdtm;g`_mgF9lcJHzzJ?aG4^; zEo&wMGKKtF1L#}Ls)hB_ERfG{hLl<@ZgPtj2D1>?{qH}Ni4Zb-!Fc5CXwm_Bm5#U}QvQO8!-*TN7Gc%_So%`!1S_lCr?yeU0y(I})G6GBDEad&lo{ z?btJ~RjQ3#<+447R$1E7k;Q8}`+H?&{QR6JFE4NZZxfU{-0!Xe@f_zSyM8KBpA_G_ z%hU%FR_)kdn9lOB6ZQ%TrMWbHWjVBLKwkbldsA2e1x+Cc@sS21G6Y7yV#$P)6QL2F zxMS15)Jv!_CMT|<24T&aZN`LKe9g^~33DNaS>Z!^1a_&2sufKQh-k=q1TawdSm@U^IU=%&Utan%$>w9A~ zB69V&rz;4(>2?<=#c8x!@;Mu|``Z}Du3xXp_S$RbM{?uEtiIQA7y3KVv&`>@#@^m( zEBB)-cHV}za}}Fcz|&O|JU4Q_*^SlI)b#xF@~6!V%NM^JbNkj48KlFOBhe%dqp<)K zbR?a2AAvADs;$s>_Fu0KmwXOvjq*xMBljvh9#ak#t93SjPZ&HkjZx~W< zTks{qT*3oDFNxRpCcGGpxl!{nh~KFPZ^k3ZTT1s=C>dlBJqX2NC6F0Hi+popql1VT z3-iHxsnz&_LWhk(ksR$Q9Kg-5`&D!?xpNOUH#MMAw)D$uEVPmt7Ig)`qbt7{vHKn| zr6~49g^`hwlyCk!J3Axe?5`tVGX1Qzo?MwiZ1x8mDS+>wzB}G z=PGjh$$t(h<9>*;HLZodyABe&MmfD{ZK^Px`1_YU>t@7~Omw^dor9~tv%zGh7gW?R zFbWM|w0H^es0)5ca?whG52=Uaw^2#iX2J94I`LI`#?ELRV`GbO<7v~(x(u=~LYx)D zOVosEe`7$h-hir*P|kIKrA3O3J%xFNy&kB46R1S40Y*LbURu&Q#7%7+UGnXfomL zq>dQ>Ty}mdYNqB@FuzhtP$aa_+?b#Hst`UZ5-usYgGGVUx1}e4S;&{p!!MBGCur?| zdJ+S`V*JkYd~T<*w*LFLYz1#Hj5nzsM6gK1vNx;I)9u{NUB}b+OyJRL%7}@W3<)r| zv0*uL5fT(kyTqiq{wMZm`o(h%&A$D{;=>;+d1fL<==gSOMh5TQj7?(J<9Q)A9$xz6 z$;nCR_|5&c*f;{@p63&?L=$`KmRPm^uV-$TWGbxO6#?3s8`BTYcgvmJplI&P9@??~uV`BxY#!UwFL`H<5Kf z@ZZEqjA~belQJzFA4`f8R}q`7*$AW9AhyT|NSZbRcT8{2S3qwZdjEd@M^y9;4K!Om z3vFKh*wAG^WvXc}ij=!0rvzEh_ETyx}1H_s&(Ty5F zuVr+fM#_#-chcrft@fQA*U$YX9`l7X9KuXP9`_Zo=(AY1t1d`kHKxaY6?;$84aV>i{Qa2LmGz~WXC!`B+p7-IGAqxc+3%lM1f8T2g zUEmYQ6@{t3%JY3FDXveGnhr=)YHdZ5GNiR3R6|iiQRh&56E02-?7mQG3%@VK_DXESaG{M>z4t~0gCxZ!;9Fdz4e?7rBs--Ro*8B z=ru13C(D-5AGj4)fBDKWraW=O?0#Ct^Yos_O!sO3bs*8JX*&zWa|A!DxK5HMAQbX! z)WPq=#O%yWpV1?*X_WR5M(G`nPU-0{k<*FjR3wkTPUv`I_naLU`W<~)_d{7oaXrq* ztDn9aqyH!@EVN#^z1S<(E^U3h-Gf~2RkTExRx}Uq1BWhIruO#H>cvtBUcFp&DAZ(e z`eUAaGOeL<@)@}JEbb!ig@9_)N&mY)wbn%X4fbfOp8>=VUi;MpO7RD)tJGI3fS9kZ z@5Y(ekcCzXo{nLntWtee%CCp(C@S<+iOx=O!2?)7|C4KZLAq zm{Q%nMWpoy!oECXd))7`#$x39njfLaIjT&KU1)EPTRQGq5KnV?dbnz6ECn9`wls19 zW`nZI?h;gtI3TN3%PV}2&L3x1dGew*_>;rBm@iz_%Pq*QD?Kt7hIsCB1CG^wcEGvJ{U zB*V$5ksf}Fy1Yjt*tsX6V2RHG6twH&_2ubX(#VP4DS@2+RN+^*SY*pm))~%Mk?>S2e8A2Z1 zJUqSIVozS^OpKc4)IX|?T9_f07x_!X0g2S_O1>RLz-uf5B6t$TEOMtd`)rgFN@fYJeBHx}UEU&8I=g(hbr^Q?$s&?K-gJT>AY{;#fHHY}tXiAR|{9 z#@(adVes#N`4=nowO_E<2x){#Td1oSX|OxxND81yrnEJkz0OLgZ&Tz0A)H!bW4unz zf?R^u0!%T&rx*w~%1cK_m-;|KLGe=14qbY$)aZd_(>XQW9%yD>%eJbTZ}oEN5#VTC zeSw6q&7&jZK8H=)Z{NN9H|KXS$9<>xBfhD?M^vR+hbK`+cXxMJVWVi?`~GBrl#-=yNlRk2fb@mM1sZB+#kTyd5_{U=ACY&n`zTp z?-dLiOxt8R2&4oUr$0?2*087Dd1OHSvR({Q0xSWA&PqC~^y{DT>vn|WL;YqLY`Mwa zVI*b|ZYSbnL4!=Tli{KXH73qr3FGJ)#l^)R0}z13q`X(Bj0(uJHF&;% z`w5;ez_fBZ+t7&U!ltA4yT-f27O$JlWKs%>A2l^loOgV`Cnk)u^Gi!v*RqkwMZ6Ql zZu7*}D_Rb7^~%Zc=i7aSDqBynKCbwDsMGr|`HMHEzamFlg1&uIh-H>4|iJEJLtQqt2+&CG&b#smiZRez`>TVdh!nM`aHu^F}htxf)A?tb`p zXk!DUB630e>?mAZT%I-2Vnpk+VIRV7&)3<$LDV(IXM^s3xbhy$W7%u_KNM!cxZ<-1EBYNft8AZQRo0W`}$(o=p$&Y6{_an{P`0p?4^`bKAVG)xQ#66k10 zQLSObE-*dDA300Ta%FN+a>C1`wx>#86otiCG<=8LgCxOSt_Cl5vxOkG781B zvXBhiyFYvd&5Q)Q^38OD9Q2fP@RYA1LHTZNaZ^MsG=J7$A%@T>Lv#i(09IhcQQg|w zy1p=aaudB7QgKG~?(q)}U&!+EmuPZ=1ZqHoFreBXugZlk)e@$rR226|jQE^=Kj&07s1!vCCgTm-$ z_;Xax2T{>61QFaUUjgmtQb<27$1@9V5T+qj&Pb(edbw;D(z+kB(pL z4S&0{o^G;;cKhD=Bc_A&cMh#_U0t8@6Iv0Yiq9si(OOOzrOnx)AVn4%W1n7We)Y-= zl4-wnoxu?m8XOkTC;BL_xEv&;mov|22@+U(gOEuK71#h?*L;Ru{?EP5nJ>S_z3$bq zP1X4}^l!#3-6Q@;C+i#VG#!gtlur@dE1SPYzo}<^{dsQ|m zPDQq;ZDD}3>^T|BOF37eS@iI0okiXWUxu<+Bz(>pk$R&1+r06*oL+a0^-Iry=8f_} znDK#eQY2z)tnS;YPU%pZs3DE{U%VEMc7v8tcLlq`9#Pq!QNo+yDQ7x7v)D>y_1bH& z5u^IUk5y2O0&rT;`bO<_qPvp1uegQ$&rCQ`bOhiF3zwAQ2I++>=k`c7lQE_BOO`H? zQ*PFSIz#zSw2UGT(&VhMf+i2;Vb^301FXIMD_sd{AA|T>=o0hotCUc}(NInf5_X@; zoS5h37)JXCY_fk3%!B25mIDcWeQ#TFd@nB;E9=-ft><{1zOHXft0NYxV6PKG!z_I9 zC4s2S{qz8Z)A79x7-jz&riMvbOwHrM$7}*OtIn!zeM8T@C6c(EpTP^T>WcJG59{&f zddd6_VE4NY)o;(rs!xnK%oFm2=DocQGlJ46u~t8S@8u3^W`)K#iuABg2z58Bv3E*k zHISs_<5@4kH#W?EAxA(p^ldf^%r5k^yeG!niMT3L9T%|c_mG6MexGKEKl{^Tx2)#pcla~B4qQz$0Gd>0;^nc^> z_14cF_JclH$ot&6O#5=tuifejkNWpGE2V9w^0d9fRf545l2C{l3r#1T{IP7rfVHCV zje1^FEZh3%JdOpei7JAuIX}wiDh|aKrk6Tw_|-Y$VGdZn*w^wvF8VO1IV@^P7UDNu3_in02gMqh3~3DdQtsJiIn>oB)<^+~p*#hRG7# zUga1ihE9;N7+A=#Qh)Ic5er% z0~7APCRsFSNWDgS?b5F)$B6tMa$wd-uXX`#txY1-{m4kCMA#!qhn7!dd$73)H8p?n z)oi`>PgWKteR)6d(JviM5C(%qOFzRBoDz+uIS5MV4Kzy~3#p@%XGq>Ph|OX=p7YEi!_R%d zeMdrh92#qJl~Ov9#p_ysk}Y{szCY-U9GfZA*d@~ia$)V0oVoS-$a30?LhcF+WUCt+ zuDKgXeM37UGu4eOvob_?5*)@WoKE$x*k0%Jl!?SAPNh|}TYFF1@pgtiQm3owh1lrT zS=MIYGg*I+g+iww3C}fzGNc9uyasCHhe;>?`|r#bs(ba8JgK)>ecPc=6V<8T;F{_rsVRzF`oABdtHT=7!aq=N2JdE&a=$8T zlMqrIA-}ue7Z7M;d=9jBeww?src;j=Ct6m9`9txHdAfWp*OnAq$Hh_)$XE~F=tcaO z{pE9x^+s$Q6<bmpzr)fm0mF*(mw@bLejC@c5-$WEdF0_ zG#CAMJm!>TX zp6@_4)NzRsfPEd%3iU+>|NmwE{PzF5^jvSB&~Tt^>(bn#NQg^b8Z1>I@ip-O0Io#4 An*aa+ delta 15869 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 diff --git a/rtdata/images/non-themed/rt-splash.svg b/rtdata/images/non-themed/rt-splash.svg index 7aabe25f4..50e34d1cb 100644 --- a/rtdata/images/non-themed/rt-splash.svg +++ b/rtdata/images/non-themed/rt-splash.svg @@ -929,7 +929,7 @@ Date: Mon, 17 Dec 2018 02:14:16 +0100 Subject: [PATCH 338/348] Preparing to merge release 5.5 back into dev --- RELEASE_NOTES.txt | 77 ++++-------------------- rtdata/images/non-themed/png/splash.png | Bin 75716 -> 78156 bytes rtdata/images/non-themed/rt-splash.svg | 4 +- 3 files changed, 13 insertions(+), 68 deletions(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index e7e036400..248d27f36 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,10 +1,17 @@ -RAWTHERAPEE 5.5 RELEASE NOTES +RAWTHERAPEE 5.5-dev RELEASE NOTES -This is RawTherapee 5.5, released on 2018-12-17. +This is a development version of RawTherapee. We update the code almost daily. Every few months, once enough changes have accumulated and the code is stabilized, we make a new official release. Every code change between these releases is known as a "development" version, and this is one of them. Start by reading the "Getting Started" article on RawPedia: http://rawpedia.rawtherapee.com/ +While we only commit tested and relatively stable code and so the development versions should be fairly stable, you should be aware that: +- Development versions only had limited testing, so there may be bugs unknown to us. +- You should report these bugs so that they get fixed for the next stable release. See + www.rawpedia.rawtherapee.com/How_to_write_useful_bug_reports +- The way new tools work in the development versions is likely to change as we tweak and tune them, so your processing profiles may produce different results when used in a future stable version. +- Bugs present in the stable versions get fixed in the development versions, and make it into the next stable version when we make a new official release. That means that in some ways the development versions can be "more stable" than the latest stable release. At the same time, new features may introduce new bugs. This is a trade-off you should be aware of. + NEWS RELEVANT TO PHOTOGRAPHERS @@ -19,57 +26,8 @@ In order to use RawTherapee efficiently you should know that: - All curves support the Shift and Ctrl keys while dragging a point. Shift+drag makes the point snap to a meaningful axis (top, bottom, diagonal, other), while Ctrl+drag makes your mouse movement super-fine for precise point positioning. - There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control. Make sure you familiarize yourself with them on RawPedia's "Keyboard Shortcuts" page! -New features since 5.4: -- Filter to remove striping artifacts caused by Phase Detection Auto Focus (PDAF) as seen in Sony cameras, and to remove banding artifacts apparently caused by Nikon's too-aggressive in-camera PDAF correction. These are available for any camera which has a PDAF entry in camconst.json, currently: - - Nikon Z 6 - - Nikon Z 7 - - Sony DSC-RX1RM2 - - Sony ILCE-6000 - - Sony ILCE-6300 - - Sony ILCE-6500 - - Sony ILCE-7M3 - - Sony ILCE-7RM2 - - Sony ILCE-7RM3 - - Sony ILCE-9 -- Out-of-gamut warning compatible with ICC v2 and v4 profiles. -- Ability to specify custom working color spaces through workingspaces.json file. -- Unbounded processing - allows you to decide whether out-of-gamut colors should get clipped. -- Improved support for Canon mRaw format variants. -- New Shadows/Highlights tool (replaced previous one). -- Contrast threshold mask which divides an image into areas of high and low detail, allowing the effect of certain tools to be focused where it matters most and to mitigate the effect on areas where it would be undesirable, for example having the Sharpening tool affect only the in-focus subject without affecting the out-of-focus background. Available for: - - Sharpening - - Post-Resize Sharpening - - Microcontrast - - Demosaicing -- Dual-demosaic algorithms, making use of the new contrast threshold mask, allowing one to use a combination of demosaicing algorithms where one is best for details and the other best for plain areas. -- New color toning methods: - - Grid, allowing you to separately tone the shadows and highlights using two points on a simple color grid. - - Regions, allowing you to tone based on any number of masks. Supports functions from the American Society of Cinematographers Color Decision List (ASC CDL). -- Resizable main histogram with scaling modes: - - Linear - - Log - - Log-log -- Support for Blackmagic and Canon Magic Lantern lj92 encoded files. -- Allows you to specify how many border rows/columns to discard during demosaicing - those who shoot raw video at a standard resolution such as 1920x1080 will appreciate being able to preserve the dimensions. -- New Soft Light tool which enhances contrast and saturation by emulating the effect of blending an image with a copy of itself in "soft light" blending mode in GIMP. -- New Haze Removal tool to reduce the effects of haze or fog. -- The Resize tool allows you to specify whether you want it to upscale or only downscale. -- New icon and cursor theme. -- ICC profile generator. -- The bundled profiles have been re-generated, and now include ICC v2 and v4 variants. -- If your screen's resolution is such that not all icons fit in a toolbar, you can now scroll the toolbar using the mouse scroll-wheel. -- New "Flexible" tone curve type. A characteristic of the cubic spline curve (renamed from "Custom" to "Standard") is that editing one node could have a huge impact on what happens to the curve in relation to the other nodes. The new "Flexible" centripetal Catmull–Rom spline curve allows you to make adjustments to any part of the curve with little impact on the other parts. -- Allow saving both floating-point and integer type files at both 16-bit and 32-bit precision from RawTherapee GUI and CLI. -- Improves lensfun chromatic aberration correction. -- The raw chromatic aberration correction tool can now run in several iterations, and gained a feature to avoid introducing a color shift which could result from correcting chromatic aberration before demosaicing. -- Certain sliders now operate on a logarithmic scale, allowing for a meaningful response over large ranges. -- Dedicated "Reset" button in Crop tool. -- Support for new cameras, and new input color profiles. -- Speed enhancements and bug fixes, for a total of over 1300 commits. - -RawTherapee and other open-source projects require access to sample raw files from various camera makes and models in order to support those raw formats correctly. -You can help by submitting raw files to RPU: -https://raw.pixls.us/ +New features since 5.5: +TODO. @@ -84,12 +42,6 @@ In general: - For stable releases use -DCACHE_NAME_SUFFIX="" - For development builds and release-candidates use -DCACHE_NAME_SUFFIX="5-dev" -Changes since 5.4: -- Requires libtiff >= 4.0.4. -- Requires CMake >= 2.8.8. -- Optional codesigning commands have been added to the CMakeLists.txt and macosx_bundle.sh scripts. If you wish to codesign the built packages (.app and .dmg), add your details to your CMake command flags: - -DCODESIGNID:STRING="Developer ID Application: Firstname Lastname (xxx)" - NEWS RELEVANT TO DEVELOPERS @@ -131,13 +83,6 @@ More information here: http://rawpedia.rawtherapee.com/IRC -SOCIAL NETWORKS - -Google+ -https://plus.google.com/+RawTherapee - - - REVISION HISTORY The complete changelog is available at: diff --git a/rtdata/images/non-themed/png/splash.png b/rtdata/images/non-themed/png/splash.png index 4075b3b8940bf604631d37116fa4c7ae4abd5b7c..f3c523b88f90d3a42eb49a5e9fdd3727a1d465ff 100644 GIT binary patch delta 14607 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 Y)sV%hv=xM*z(YYs6<+$6q-n_i0grZW#Q*>R delta 12147 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 AtN;K2 diff --git a/rtdata/images/non-themed/rt-splash.svg b/rtdata/images/non-themed/rt-splash.svg index 50e34d1cb..87b493153 100644 --- a/rtdata/images/non-themed/rt-splash.svg +++ b/rtdata/images/non-themed/rt-splash.svg @@ -912,7 +912,7 @@ y="279.20517" /> Release Candidate 2 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.06666565px;line-height:110.00000238%;font-family:'ITC Eras Std';-inkscape-font-specification:'ITC Eras Std Bold';text-align:end;letter-spacing:-1.06666672px;text-anchor:end;fill:#ffffff;stroke-width:1.06666672px">Release Candidate 1 From 58e332475fcf131842a91816a340ee46cfcb148a Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Dec 2018 13:07:46 +0100 Subject: [PATCH 339/348] Don't allocate blurbuffer when blur is disabled, #5075 --- rtengine/ipsharpen.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index d722ddfdf..1d699bb87 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -178,9 +178,11 @@ BENCHFUN JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; buildBlendMask(luminance, blend, W, H, contrast, sharpenParam.deconvamount / 100.f); - JaggedArray blur(W, H); + JaggedArray* blurbuffer = nullptr; if (sharpenParam.blurradius >= 0.25f) { + blurbuffer = new JaggedArray(W, H); + JaggedArray &blur = *blurbuffer; #ifdef _OPENMP #pragma omp parallel #endif @@ -227,6 +229,7 @@ BENCHFUN } if (sharpenParam.blurradius >= 0.25f) { + JaggedArray &blur = *blurbuffer; #ifdef _OPENMP #pragma omp for #endif @@ -237,6 +240,7 @@ BENCHFUN } } } // end parallel + delete blurbuffer; } void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpenParam, bool showMask) From 988d598d9dcd0466054f7b04674dec77df6100b5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Dec 2018 13:26:14 +0100 Subject: [PATCH 340/348] Decouple sharpening amount from contrast mask, #5075 --- rtengine/ipsharpen.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 1d699bb87..8437fae47 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -159,7 +159,7 @@ extern const Settings* settings; void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, int W, int H, const SharpeningParams &sharpenParam) { - if (sharpenParam.deconvamount == 0) { + if (sharpenParam.deconvamount == 0 && sharpenParam.blurradius < 0.25f) { return; } BENCHFUN @@ -177,7 +177,7 @@ BENCHFUN // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; - buildBlendMask(luminance, blend, W, H, contrast, sharpenParam.deconvamount / 100.f); + buildBlendMask(luminance, blend, W, H, contrast, 1.f); JaggedArray* blurbuffer = nullptr; if (sharpenParam.blurradius >= 0.25f) { @@ -201,6 +201,7 @@ BENCHFUN const float damping = sharpenParam.deconvdamping / 5.0; const bool needdamp = sharpenParam.deconvdamping > 0; const double sigma = sharpenParam.deconvradius / scale; + const float amount = sharpenParam.deconvamount / 100.f; #ifdef _OPENMP #pragma omp parallel @@ -224,7 +225,7 @@ BENCHFUN for (int i = 0; i < H; ++i) { for (int j = 0; j < W; ++j) { - luminance[i][j] = intp(blend[i][j], max(tmpI[i][j], 0.0f), luminance[i][j]); + luminance[i][j] = intp(blend[i][j] * amount, max(tmpI[i][j], 0.0f), luminance[i][j]); } } @@ -256,7 +257,7 @@ void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpen // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; - buildBlendMask(lab->L, blend, W, H, contrast, sharpenParam.method == "rld" ? sharpenParam.deconvamount / 100.f : 1.f); + buildBlendMask(lab->L, blend, W, H, contrast, 1.f); #ifdef _OPENMP #pragma omp parallel for #endif From af80df7a37d5b0578e9441b0473097f978c4a2f6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Dec 2018 21:19:04 +0100 Subject: [PATCH 341/348] Fix a warning, #5016 --- rtgui/toolpanelcoord.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 99dcdde8d..276f690e3 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -28,7 +28,7 @@ using namespace rtengine::procparams; -ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr), favoritePanelSW(nullptr) +ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), favoritePanelSW(nullptr), hasChanged (false), editDataProvider (nullptr) { favoritePanel = Gtk::manage (new ToolVBox ()); From 39d37a6ded3690ad73670f3d8b0e0d9fb4aa396e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 17 Dec 2018 23:49:18 +0100 Subject: [PATCH 342/348] New star icon for Favorites tab --- rtdata/images/themed/png/dark/star.png | Bin 0 -> 542 bytes rtdata/images/themed/png/light/star.png | Bin 0 -> 549 bytes rtdata/images/themed/svg/star.svg | 124 ++++++++++++++++++++++++ rtgui/toolpanelcoord.cc | 2 +- 4 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 rtdata/images/themed/png/dark/star.png create mode 100644 rtdata/images/themed/png/light/star.png create mode 100644 rtdata/images/themed/svg/star.svg diff --git a/rtdata/images/themed/png/dark/star.png b/rtdata/images/themed/png/dark/star.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc05e7d17a92191a6fb9e04dcce423834027267 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1=Gpc2=J66gGa%A(Blj1mTCX9dTS zlA_F{(vr;lJl)`o#G+KkoXqT0g^ZGt0xNy}ERK!`}5n0T@z;^_M8K-LVNdpD70(?ST&wzn@fzR2qXCZ7j1IWF2 z@!}~k0J0zCsUHOD;wuUA3vSrV(6Ml>aKN-mb_K)yzsDmAfHGS=T^vIsE++>#G4Uh> zWeW&tEQLH3m=%KBas@6+HRkwrs&v?j zH?kF+a?&+r(G+ega*~L!k&IcWC-6)_ERK!`}5n0T@z;^_M8K-LVNdpCS1AIbURl&f$z(++z1;|uWQ-g>o zDk?%45OJV#Aa|BiU_Ow=UlQaO+^~sZX0>qFa`qtke0@gmyHB=H1WIl9ba4!kxSSl| z#Ke;jw3xGVu_b5c<+#QpGc`INWK5ZEe$a9jQ|IIdbIKUMacMk%W$DhwHqm^eL*Km3 z3l=P3W}aYBd1OJB#<2&74jec%K||)q0%@IN3~W8i9Bfy$aVnV2E)Y1;khURYk>(AP zP-pf9atl~)% + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 276f690e3..99b1f3748 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -217,7 +217,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), favorit rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); - toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVORITES"), M ("MAIN_TAB_FAVORITES_TOOLTIP"))); + toiF = Gtk::manage (new TextOrIcon ("star.png", M ("MAIN_TAB_FAVORITES"), M ("MAIN_TAB_FAVORITES_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); From 01cb4fb36cecb6588f5b5bee1620bec3a874d084 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 21 Dec 2018 14:01:08 +0100 Subject: [PATCH 343/348] Disabled lensfun CA correction in default profiles If the lensfun profile supports CA correction, having both lensfun CA correction and raw auto-CA correction enabled leads to artifacts as they badly interact with each other. Issue #5110 --- rtdata/profiles/Auto-Matched Curve - ISO High.pp3 | 2 +- rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 | 2 +- rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 | 2 +- rtdata/profiles/Standard Film Curve - ISO High.pp3 | 2 +- rtdata/profiles/Standard Film Curve - ISO Low.pp3 | 2 +- rtdata/profiles/Standard Film Curve - ISO Medium.pp3 | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 index 6108ea54c..99f0af8fe 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 @@ -31,7 +31,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=true +UseCA=false [Color Management] ToneCurve=false diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 index d8be8d795..882c0130f 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 @@ -10,7 +10,7 @@ Method=Blend LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=true +UseCA=false [Color Management] ToneCurve=false diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 index a976fdd90..f9196bb30 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 @@ -32,7 +32,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=true +UseCA=false [Color Management] ToneCurve=false diff --git a/rtdata/profiles/Standard Film Curve - ISO High.pp3 b/rtdata/profiles/Standard Film Curve - ISO High.pp3 index ae134e7f4..4dd3a9b1d 100644 --- a/rtdata/profiles/Standard Film Curve - ISO High.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO High.pp3 @@ -34,7 +34,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=true +UseCA=false [Color Management] ToneCurve=false diff --git a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 index 4f6ad62c2..c23b5b8a4 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 @@ -12,7 +12,7 @@ Method=Blend LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=true +UseCA=false [Color Management] ToneCurve=false diff --git a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 index 4921ffb22..4aff630f5 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 @@ -34,7 +34,7 @@ CCCurve=0; LcMode=lfauto UseDistortion=true UseVignette=true -UseCA=true +UseCA=false [Color Management] ToneCurve=false From 0918d295788da75b60152a8c1140d1f4b3bb2c54 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 21 Dec 2018 21:34:47 +0100 Subject: [PATCH 344/348] Better white level for Canon PowerShot SX50 HS --- rtengine/camconst.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 7aab3b0bd..55acf8307 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1209,6 +1209,11 @@ Camera constants: "ranges": { "white": 4050 } }, + { // Quality C + "make_model": "Canon PowerShot SX50 HS", + "ranges": { "white": 4050 } + }, + { // Quality B "make_model": "Canon PowerShot SX60 HS", "dcraw_matrix": [ 13161,-5451,-1344,-1989,10654,1531,-47,1271,4955 ], // DNG_V8.7 D65 From 3461328a8c6006734c74bf15b82cb99702c53bde Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 21 Dec 2018 21:36:22 +0100 Subject: [PATCH 345/348] Opening a locked raw file in RawTherapee causes crash, fixes #5111 --- rtengine/rawimagesource.cc | 2 +- rtgui/filepanel.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 3c7a34e73..b59e8ecab 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -473,7 +473,7 @@ RawImageSource::~RawImageSource () delete riFrames[i]; } - for(size_t i = 0; i < numFrames - 1; ++i) { + for(size_t i = 0; i + 1 < numFrames; ++i) { delete rawDataBuffer[i]; } diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index 23b7c3983..aef2b0a22 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -301,7 +301,7 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector") + M("MAIN_MSG_CANNOTLOAD") + " \"" + thm->getFileName() + "\" .\n" + M("MAIN_MSG_TOOMANYOPENEDITORS") + ""; - Gtk::MessageDialog msgd (msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog msgd (*parent, msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); msgd.run (); goto MAXGDIHANDLESREACHED; } @@ -322,7 +322,7 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector") + M("MAIN_MSG_CANNOTLOAD") + " \"" + thm->getFileName() + "\" .\n"; - Gtk::MessageDialog msgd (msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog msgd (*parent, msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); msgd.run (); } #ifdef WIN32 From 42beee886bbf4582b668e65817fe8aace3345488 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 26 Dec 2018 21:12:46 +0100 Subject: [PATCH 346/348] Preview sometimes goes magenta at >=100% preview when using Ciecam02 and defringe, fixes #5116 --- rtengine/PF_correct_RT.cc | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index dbb42db0d..57e4c2225 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -396,26 +396,26 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres } } } // end of ab channel averaging + } #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel for #endif - for(int i = 0; i < height; i++) { - int j = 0; + for(int i = 0; i < height; i++) { + int j = 0; #ifdef __SSE2__ - for (; j < width - 3; j += 4) { - const vfloat interav = LVFU(tmaa[i][j]); - const vfloat interbv = LVFU(tmbb[i][j]); - STVFU(ncie->h_p[i][j], xatan2f(interbv, interav) / F2V(RT_PI_F_180)); - STVFU(ncie->C_p[i][j], vsqrtf(SQRV(interbv) + SQRV(interav))); - } + for (; j < width - 3; j += 4) { + const vfloat interav = LVFU(tmaa[i][j]); + const vfloat interbv = LVFU(tmbb[i][j]); + STVFU(ncie->h_p[i][j], xatan2f(interbv, interav) / F2V(RT_PI_F_180)); + STVFU(ncie->C_p[i][j], vsqrtf(SQRV(interbv) + SQRV(interav))); + } #endif - for (; j < width; j++) { - const float intera = tmaa[i][j]; - const float interb = tmbb[i][j]; - ncie->h_p[i][j] = xatan2f(interb, intera) / RT_PI_F_180; - ncie->C_p[i][j] = sqrt(SQR(interb) + SQR(intera)); - } + for (; j < width; j++) { + const float intera = tmaa[i][j]; + const float interb = tmbb[i][j]; + ncie->h_p[i][j] = xatan2f(interb, intera) / RT_PI_F_180; + ncie->C_p[i][j] = sqrt(SQR(interb) + SQR(intera)); } } } From e98d4e2f0753fa14b9b2975fdfe6384e5e03daed Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 27 Dec 2018 11:41:14 +0100 Subject: [PATCH 347/348] Dont open console window when -gimp is used, #5084 --- rtgui/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/main.cc b/rtgui/main.cc index 8996ee01d..b75fc0ec8 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -536,7 +536,7 @@ int main (int argc, char **argv) bool Console = true; for (int i = 1; i < argc; i++) - if (!strcmp (argv[i], "-w") || !strcmp (argv[i], "-R")) { + if (!strcmp (argv[i], "-w") || !strcmp (argv[i], "-R") || !strcmp (argv[i], "-gimp")) { Console = false; break; } From b9ec38054337f24619805c0e44f2126afc822ed0 Mon Sep 17 00:00:00 2001 From: Beep6581 Date: Fri, 28 Dec 2018 23:18:29 +0100 Subject: [PATCH 348/348] Added note on identifier naming Agreed to in IRC with Ingo and Hombre --- CONTRIBUTING.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e79edc27..85776d557 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,11 +16,12 @@ The most useful feedback is based on the latest development code, and in the cas - Announce and discuss your plans in GitHub before starting work. - Work in a new branch. Fork if necessary. - Keep branches small so that completed and working features can be merged into the "dev" branch often, and so that they can be abandoned if they head in the wrong direction. -- Use C++11 +- Use C++11. - The naming isn't homogeneous throughout the code but here is a rough guideline: - - *Types* (classes, structs, enums, typedefs...) should be named with `UpperCamelCase` - - *Functions* and *methods* should be named with `lowerCamelCase` - - *Variables* should be either named with `lowerCamelCase` or better with `lower_underscores` to avoid conflicts - - *Enum values* should be named with `UPPER_UNDERSCORES` - - Most important: Be consistent, even when not sticking to the rules + - *Identifiers* (variables, functions, methods, keys, enums, etc.) should be clear and unambiguous. Make them as long as necessary to ensure that your code is understandable to others. + - *Types* (classes, structs, enums, typedefs...) should be named with `UpperCamelCase`. + - *Functions* and *methods* should be named with `lowerCamelCase`. + - *Variables* should be either named with `lowerCamelCase` or better with `lower_underscores` to avoid conflicts. + - *Enum values* should be named with `UPPER_UNDERSCORES`. + - Be consistent, even when not sticking to the rules. - Code may be run through astyle version 3 or newer. If using astyle, it is important that the astyle changes go into their own commit, so that style changes are not mixed with actual code changes. Command: `astyle --options=rawtherapee.astylerc code.cc`