diff --git a/rtdata/images/Dark/actions/previewmodeB-off.png b/rtdata/images/Dark/actions/previewmodeB-off.png
index 1ff087b4d..0c9890437 100644
Binary files a/rtdata/images/Dark/actions/previewmodeB-off.png and b/rtdata/images/Dark/actions/previewmodeB-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeB-on.png b/rtdata/images/Dark/actions/previewmodeB-on.png
index 6403fc722..466192b3a 100644
Binary files a/rtdata/images/Dark/actions/previewmodeB-on.png and b/rtdata/images/Dark/actions/previewmodeB-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC0-off.png b/rtdata/images/Dark/actions/previewmodeBC0-off.png
index 05a75ee25..28c024555 100644
Binary files a/rtdata/images/Dark/actions/previewmodeBC0-off.png and b/rtdata/images/Dark/actions/previewmodeBC0-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC0-on.png b/rtdata/images/Dark/actions/previewmodeBC0-on.png
index a1f462cb2..f5e0b8000 100644
Binary files a/rtdata/images/Dark/actions/previewmodeBC0-on.png and b/rtdata/images/Dark/actions/previewmodeBC0-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC1-off.png b/rtdata/images/Dark/actions/previewmodeBC1-off.png
index d5071108a..4ac160b05 100644
Binary files a/rtdata/images/Dark/actions/previewmodeBC1-off.png and b/rtdata/images/Dark/actions/previewmodeBC1-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC1-on.png b/rtdata/images/Dark/actions/previewmodeBC1-on.png
index f71b27965..3e9b6874c 100644
Binary files a/rtdata/images/Dark/actions/previewmodeBC1-on.png and b/rtdata/images/Dark/actions/previewmodeBC1-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC2-off.png b/rtdata/images/Dark/actions/previewmodeBC2-off.png
index 5c9b2d0e8..bf3d97b2d 100644
Binary files a/rtdata/images/Dark/actions/previewmodeBC2-off.png and b/rtdata/images/Dark/actions/previewmodeBC2-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC2-on.png b/rtdata/images/Dark/actions/previewmodeBC2-on.png
index 8f5b9207e..457453166 100644
Binary files a/rtdata/images/Dark/actions/previewmodeBC2-on.png and b/rtdata/images/Dark/actions/previewmodeBC2-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC3-off.png b/rtdata/images/Dark/actions/previewmodeBC3-off.png
new file mode 100644
index 000000000..487ec777e
Binary files /dev/null and b/rtdata/images/Dark/actions/previewmodeBC3-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC3-on.png b/rtdata/images/Dark/actions/previewmodeBC3-on.png
new file mode 100644
index 000000000..670b5b8b4
Binary files /dev/null and b/rtdata/images/Dark/actions/previewmodeBC3-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png b/rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png
new file mode 100644
index 000000000..75a285de2
Binary files /dev/null and b/rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png b/rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png
new file mode 100644
index 000000000..3d46dedc7
Binary files /dev/null and b/rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-off.png b/rtdata/images/Dark/actions/previewmodeF-off.png
index 1236da5a1..5d52af569 100644
Binary files a/rtdata/images/Dark/actions/previewmodeF-off.png and b/rtdata/images/Dark/actions/previewmodeF-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-on.png b/rtdata/images/Dark/actions/previewmodeF-on.png
index 3910e6a20..f0d0ef230 100644
Binary files a/rtdata/images/Dark/actions/previewmodeF-on.png and b/rtdata/images/Dark/actions/previewmodeF-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeG-off.png b/rtdata/images/Dark/actions/previewmodeG-off.png
index e25911324..5c076c989 100644
Binary files a/rtdata/images/Dark/actions/previewmodeG-off.png and b/rtdata/images/Dark/actions/previewmodeG-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeG-on.png b/rtdata/images/Dark/actions/previewmodeG-on.png
index db31667ed..ecc75c8e7 100644
Binary files a/rtdata/images/Dark/actions/previewmodeG-on.png and b/rtdata/images/Dark/actions/previewmodeG-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeL-off.png b/rtdata/images/Dark/actions/previewmodeL-off.png
index d24dea76f..939dec642 100644
Binary files a/rtdata/images/Dark/actions/previewmodeL-off.png and b/rtdata/images/Dark/actions/previewmodeL-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeL-on.png b/rtdata/images/Dark/actions/previewmodeL-on.png
index 11b745e09..92fe937e8 100644
Binary files a/rtdata/images/Dark/actions/previewmodeL-on.png and b/rtdata/images/Dark/actions/previewmodeL-on.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeR-off.png b/rtdata/images/Dark/actions/previewmodeR-off.png
index 9aef77301..b96e22c31 100644
Binary files a/rtdata/images/Dark/actions/previewmodeR-off.png and b/rtdata/images/Dark/actions/previewmodeR-off.png differ
diff --git a/rtdata/images/Dark/actions/previewmodeR-on.png b/rtdata/images/Dark/actions/previewmodeR-on.png
index 5fb0f996e..fb1e46e98 100644
Binary files a/rtdata/images/Dark/actions/previewmodeR-on.png and b/rtdata/images/Dark/actions/previewmodeR-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeB-off.png b/rtdata/images/Light/actions/previewmodeB-off.png
index 1ff087b4d..0c9890437 100644
Binary files a/rtdata/images/Light/actions/previewmodeB-off.png and b/rtdata/images/Light/actions/previewmodeB-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeB-on.png b/rtdata/images/Light/actions/previewmodeB-on.png
index 6403fc722..466192b3a 100644
Binary files a/rtdata/images/Light/actions/previewmodeB-on.png and b/rtdata/images/Light/actions/previewmodeB-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC0-off.png b/rtdata/images/Light/actions/previewmodeBC0-off.png
index 05a75ee25..28c024555 100644
Binary files a/rtdata/images/Light/actions/previewmodeBC0-off.png and b/rtdata/images/Light/actions/previewmodeBC0-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC0-on.png b/rtdata/images/Light/actions/previewmodeBC0-on.png
index a1f462cb2..f5e0b8000 100644
Binary files a/rtdata/images/Light/actions/previewmodeBC0-on.png and b/rtdata/images/Light/actions/previewmodeBC0-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC1-off.png b/rtdata/images/Light/actions/previewmodeBC1-off.png
index d5071108a..4ac160b05 100644
Binary files a/rtdata/images/Light/actions/previewmodeBC1-off.png and b/rtdata/images/Light/actions/previewmodeBC1-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC1-on.png b/rtdata/images/Light/actions/previewmodeBC1-on.png
index f71b27965..3e9b6874c 100644
Binary files a/rtdata/images/Light/actions/previewmodeBC1-on.png and b/rtdata/images/Light/actions/previewmodeBC1-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC2-off.png b/rtdata/images/Light/actions/previewmodeBC2-off.png
index 5c9b2d0e8..bf3d97b2d 100644
Binary files a/rtdata/images/Light/actions/previewmodeBC2-off.png and b/rtdata/images/Light/actions/previewmodeBC2-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC2-on.png b/rtdata/images/Light/actions/previewmodeBC2-on.png
index 8f5b9207e..457453166 100644
Binary files a/rtdata/images/Light/actions/previewmodeBC2-on.png and b/rtdata/images/Light/actions/previewmodeBC2-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC3-off.png b/rtdata/images/Light/actions/previewmodeBC3-off.png
new file mode 100644
index 000000000..487ec777e
Binary files /dev/null and b/rtdata/images/Light/actions/previewmodeBC3-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeBC3-on.png b/rtdata/images/Light/actions/previewmodeBC3-on.png
new file mode 100644
index 000000000..670b5b8b4
Binary files /dev/null and b/rtdata/images/Light/actions/previewmodeBC3-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeF-focusScreen-off.png b/rtdata/images/Light/actions/previewmodeF-focusScreen-off.png
new file mode 100644
index 000000000..0aa81a705
Binary files /dev/null and b/rtdata/images/Light/actions/previewmodeF-focusScreen-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeF-focusScreen-on.png b/rtdata/images/Light/actions/previewmodeF-focusScreen-on.png
new file mode 100644
index 000000000..3d46dedc7
Binary files /dev/null and b/rtdata/images/Light/actions/previewmodeF-focusScreen-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeF-off.png b/rtdata/images/Light/actions/previewmodeF-off.png
index 519de02bc..5d52af569 100644
Binary files a/rtdata/images/Light/actions/previewmodeF-off.png and b/rtdata/images/Light/actions/previewmodeF-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeF-on.png b/rtdata/images/Light/actions/previewmodeF-on.png
index 3910e6a20..f0d0ef230 100644
Binary files a/rtdata/images/Light/actions/previewmodeF-on.png and b/rtdata/images/Light/actions/previewmodeF-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeG-off.png b/rtdata/images/Light/actions/previewmodeG-off.png
index e25911324..5c076c989 100644
Binary files a/rtdata/images/Light/actions/previewmodeG-off.png and b/rtdata/images/Light/actions/previewmodeG-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeG-on.png b/rtdata/images/Light/actions/previewmodeG-on.png
index db31667ed..ecc75c8e7 100644
Binary files a/rtdata/images/Light/actions/previewmodeG-on.png and b/rtdata/images/Light/actions/previewmodeG-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeL-off.png b/rtdata/images/Light/actions/previewmodeL-off.png
index d24dea76f..939dec642 100644
Binary files a/rtdata/images/Light/actions/previewmodeL-off.png and b/rtdata/images/Light/actions/previewmodeL-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeL-on.png b/rtdata/images/Light/actions/previewmodeL-on.png
index 11b745e09..92fe937e8 100644
Binary files a/rtdata/images/Light/actions/previewmodeL-on.png and b/rtdata/images/Light/actions/previewmodeL-on.png differ
diff --git a/rtdata/images/Light/actions/previewmodeR-off.png b/rtdata/images/Light/actions/previewmodeR-off.png
index 9aef77301..b96e22c31 100644
Binary files a/rtdata/images/Light/actions/previewmodeR-off.png and b/rtdata/images/Light/actions/previewmodeR-off.png differ
diff --git a/rtdata/images/Light/actions/previewmodeR-on.png b/rtdata/images/Light/actions/previewmodeR-on.png
index 5fb0f996e..fb1e46e98 100644
Binary files a/rtdata/images/Light/actions/previewmodeR-on.png and b/rtdata/images/Light/actions/previewmodeR-on.png differ
diff --git a/rtdata/languages/default b/rtdata/languages/default
index fb9c3c72d..34c1bbf22 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -925,6 +925,7 @@ MAIN_TAB_WAVELET_TOOLTIP;Shortcut: Alt-w
MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9
MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9
MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9
+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: <
diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css
index e009c6d9a..42488b977 100644
--- a/rtdata/themes/TooWaBlue-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue-GTK3-20_.css
@@ -2,7 +2,7 @@
This file is part of RawTherapee.
Copyright (c) 2016-2017 TooWaBoo
- Version 2.53 - requires RT 5.0 (Gtk+ >= 3.20)
+ Version 2.56 - requires RT 5.0 (Gtk+ >= 3.20)
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1035,36 +1035,10 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
margin-right: 0;
}
-#EditorTopPanel > box:nth-child(9) > button.image-button:not(:nth-child(6)) {
+#EditorTopPanel > box:nth-child(9) > button.image-button {
min-width: 0;
- padding-left: 0.33334em;
- padding-right: 0.33334em;
-}
-
-#EditorTopPanel > box:nth-child(9) > button.image-button:nth-child(6) {
- -gtk-icon-shadow: none;
-}
-#EditorTopPanel > box > box > button {
- min-height: 0.625em;
- min-width: 0;
- margin: 0 0.16667em;
- padding: 0 0.16667em;
- border: 0.08334em solid transparent;
- background-color: transparent;
- background-image: none;
- box-shadow: none;
-}
-#EditorTopPanel > box > box > button:hover {
- background-color: transparent;
- background-image: none;
- border: 0.08334em solid transparent;
- box-shadow: none;
-}
-#EditorTopPanel > box > box > button:checked {
- background-color: transparent;
- background-image: none;
- border: 0.08334em solid @bg-button-border;
- box-shadow: none;
+ padding-left: 0.25em;
+ padding-right: 0.25em;
}
/*Button editor bottom*/
@@ -1863,5 +1837,4 @@ headerbar:backdrop {
headerbar .title:backdrop {
color: alpha(@winTitle,.60);
}
-/**/
/*** end ***************************************************************************************/
diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc
index 1df27c5fb..ec598b6ca 100644
--- a/rtengine/CA_correct_RT.cc
+++ b/rtengine/CA_correct_RT.cc
@@ -134,12 +134,12 @@ void RawImageSource::CA_correct_RT(const bool autoCA, const double cared, const
}
// local variables
- const int width = W, height = H;
+ const int width = W + (W & 1), height = H;
//temporary array to store simple interpolation of G
- float *Gtmp = (float (*)) malloc ((height * width + ((height * width) & 1)) / 2 * sizeof * Gtmp);
+ float *Gtmp = (float (*)) malloc ((height * width) / 2 * sizeof * Gtmp);
// temporary array to avoid race conflicts, only every second pixel needs to be saved here
- float *RawDataTmp = (float*) malloc( (height * width + ((height * width) & 1)) * sizeof(float) / 2);
+ float *RawDataTmp = (float*) malloc( (height * width) * sizeof(float) / 2);
float blockave[2][2] = {{0, 0}, {0, 0}}, blocksqave[2][2] = {{0, 0}, {0, 0}}, blockdenom[2][2] = {{0, 0}, {0, 0}}, blockvar[2][2];
@@ -1024,9 +1024,9 @@ void RawImageSource::CA_correct_RT(const bool autoCA, const double cared, const
int c = FC(rr, cc);
int GRBdir0 = GRBdir[0][c];
int GRBdir1 = GRBdir[1][c];
+#ifdef __SSE2__
vfloat shifthfracc = F2V(shifthfrac[c]);
vfloat shiftvfracc = F2V(shiftvfrac[c]);
-#ifdef __SSE2__
for (int indx = rr * ts + cc; cc < cc1 - 14; cc += 8, indx += 8) {
//interpolate colour difference from optical R/B locations to grid locations
vfloat grbdiffinthfloor = vintpf(shifthfracc, LVFU(grbdiff[(indx - GRBdir1) >> 1]), LVFU(grbdiff[indx >> 1]));
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index d6bac40de..a70c2d2dc 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -9754,11 +9754,45 @@ static void copyFloatDataToInt(float * src, ushort * dst, size_t size, float max
fprintf(stderr, "DNG Float: NaN data found in input file\n");
}
+static int decompress(size_t srcLen, size_t dstLen, unsigned char *in, unsigned char *out) {
+ // At least in zlib 1.2.11 the uncompress function is not thread save while it is thread save in zlib 1.2.8
+ // This simple replacement is thread save. Used example code from https://zlib.net/zlib_how.html
+
+ int ret;
+ z_stream strm;
+ /* allocate inflate state */
+ strm.zalloc = Z_NULL;
+ strm.zfree = Z_NULL;
+ strm.opaque = Z_NULL;
+ strm.avail_in = 0;
+ strm.next_in = Z_NULL;
+ ret = inflateInit(&strm);
+ if (ret != Z_OK) {
+ return ret;
+ }
+ strm.avail_out = dstLen;
+ strm.next_out = out;
+ strm.avail_in = srcLen;
+ strm.next_in = in;
+ ret = inflate(&strm, Z_NO_FLUSH);
+ switch (ret) {
+ case Z_NEED_DICT:
+ ret = Z_DATA_ERROR; /* and fall through */
+ case Z_DATA_ERROR:
+ case Z_MEM_ERROR:
+ (void)inflateEnd(&strm);
+ return ret;
+ }
+ /* clean up and return */
+ (void)inflateEnd(&strm);
+ return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
+}
+
void CLASS deflate_dng_load_raw() {
float_raw_image = new float[raw_width * raw_height];
#ifdef _OPENMP
-#pragma omp parallel for
+ #pragma omp parallel for
#endif
for (size_t i = 0; i < raw_width * raw_height; ++i)
float_raw_image[i] = 0.0f;
@@ -9815,44 +9849,45 @@ void CLASS deflate_dng_load_raw() {
}
uLongf dstLen = tile_width * tile_length * 4;
-#if defined(_OPENMP) && ZLIB_VER_REVISION == 8
+#ifdef _OPENMP
#pragma omp parallel
#endif
{
Bytef * cBuffer = new Bytef[maxCompressed];
Bytef * uBuffer = new Bytef[dstLen];
-#if defined(_OPENMP) && ZLIB_VER_REVISION == 8
-#pragma omp for collapse(2) nowait
+#ifdef _OPENMP
+ #pragma omp for collapse(2) schedule(dynamic) nowait
#endif
for (size_t y = 0; y < raw_height; y += tile_length) {
- for (size_t x = 0; x < raw_width; x += tile_width) {
- size_t t = (y / tile_length) * tilesWide + (x / tile_width);
-#if defined(_OPENMP) && ZLIB_VER_REVISION == 8
-#pragma omp critical
+ for (size_t x = 0; x < raw_width; x += tile_width) {
+ size_t t = (y / tile_length) * tilesWide + (x / tile_width);
+#ifdef _OPENMP
+ #pragma omp critical
#endif
-{
- fseek(ifp, tileOffsets[t], SEEK_SET);
- fread(cBuffer, 1, tileBytes[t], ifp);
-}
- int err = uncompress(uBuffer, &dstLen, cBuffer, tileBytes[t]);
- if (err != Z_OK) {
- fprintf(stderr, "DNG Deflate: Failed uncompressing tile %d, with error %d\n", (int)t, err);
- } else if (ifd->sample_format == 3) { // Floating point data
- int bytesps = ifd->bps >> 3;
- size_t thisTileLength = y + tile_length > raw_height ? raw_height - y : tile_length;
- size_t thisTileWidth = x + tile_width > raw_width ? raw_width - x : tile_width;
- for (size_t row = 0; row < thisTileLength; ++row) {
- Bytef * src = uBuffer + row*tile_width*bytesps;
- Bytef * dst = (Bytef *)&float_raw_image[(y+row)*raw_width + x];
- if (predFactor)
- decodeFPDeltaRow(src, dst, thisTileWidth, tile_width, bytesps, predFactor);
- expandFloats(dst, thisTileWidth, bytesps);
- }
- } else { // 32-bit Integer data
- // TODO
+ {
+ fseek(ifp, tileOffsets[t], SEEK_SET);
+ fread(cBuffer, 1, tileBytes[t], ifp);
+ }
+ int err = decompress(tileBytes[t], dstLen, cBuffer, uBuffer);
+ if (err != Z_OK) {
+ fprintf(stderr, "DNG Deflate: Failed uncompressing tile %d, with error %d\n", (int)t, err);
+ } else if (ifd->sample_format == 3) { // Floating point data
+ int bytesps = ifd->bps >> 3;
+ size_t thisTileLength = y + tile_length > raw_height ? raw_height - y : tile_length;
+ size_t thisTileWidth = x + tile_width > raw_width ? raw_width - x : tile_width;
+ for (size_t row = 0; row < thisTileLength; ++row) {
+ Bytef * src = uBuffer + row*tile_width*bytesps;
+ Bytef * dst = (Bytef *)&float_raw_image[(y+row)*raw_width + x];
+ if (predFactor) {
+ decodeFPDeltaRow(src, dst, thisTileWidth, tile_width, bytesps, predFactor);
+ }
+ expandFloats(dst, thisTileWidth, bytesps);
+ }
+ } else { // 32-bit Integer data
+ // TODO
+ }
}
- }
}
delete [] cBuffer;
diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h
index 62752b59c..c2cdcb6ec 100644
--- a/rtengine/rawimage.h
+++ b/rtengine/rawimage.h
@@ -20,6 +20,8 @@
#define __RAWIMAGE_H
#include
+#include
+#include
#include "dcraw.h"
#include "imageio.h"
@@ -233,7 +235,13 @@ public:
}
float get_pre_mul(int c )const
{
- return pre_mul[c];
+ if(std::isfinite(pre_mul[c])) {
+ return pre_mul[c];
+ } else {
+ std::cout << "Failure decoding '" << filename << "', please file a bug report including the raw file and the line below:" << std::endl;
+ std::cout << "rawimage.h get_pre_mul() : pre_mul[" << c << "] value " << pre_mul[c] << " automatically replaced by value 1.0" << std::endl;
+ return 1.f;
+ }
}
float get_rgb_cam( int r, int c) const
{
diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h
index 898ef9528..2ee2e6053 100644
--- a/rtgui/addsetids.h
+++ b/rtgui/addsetids.h
@@ -116,6 +116,12 @@ enum {
ADDSET_RETI_GAM,
ADDSET_RETI_SLO,
ADDSET_WB_TEMPBIAS,
+ ADDSET_SHARP_RADIUS,
+ ADDSET_SHARP_DAMPING,
+ ADDSET_SHARP_ITER,
+ ADDSET_SHARP_EDGETOL,
+ ADDSET_SHARP_HALOCTRL,
+ ADDSET_RESIZE_SCALE,
ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!!
};
diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc
index da042347d..3d773d874 100644
--- a/rtgui/batchqueue.cc
+++ b/rtgui/batchqueue.cc
@@ -743,8 +743,14 @@ Glib::ustring BatchQueue::calcAutoFileNameBase (const Glib::ustring& origFileNam
da.push_back (tok);
}
- if (origFileName[0] == '/' || origFileName[0] == '\\') {
+ if (origFileName[0] == '/') {
pa.push_back ("/" + da[0]);
+ } else if (origFileName[0] == '\\') {
+ if (origFileName.size() > 1 && origFileName[1] == '\\') {
+ pa.push_back ("\\\\" + da[0]);
+ } else {
+ pa.push_back ("/" + da[0]);
+ }
} else {
pa.push_back (da[0]);
}
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index d247199cf..489f74123 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -157,13 +157,15 @@ void BatchToolPanelCoordinator::initSession ()
vignetting->setAdjusterBehavior (false, false, false, false);
colorappearance->setAdjusterBehavior (false, false, false, false, false, false, false, false, false, false, false, false, false);
rotate->setAdjusterBehavior (false);
+ resize->setAdjusterBehavior (false);
distortion->setAdjusterBehavior (false);
perspective->setAdjusterBehavior (false);
gradient->setAdjusterBehavior (false, false, false, false);
locallab->setAdjusterBehavior (false, false, false, false, false, false, false, false, false, false, false, false, false);
pcvignette->setAdjusterBehavior (false, false, false);
cacorrection->setAdjusterBehavior (false);
- sharpening->setAdjusterBehavior (false);
+ sharpening->setAdjusterBehavior (false, false, false, false, false, false);
+ prsharpening->setAdjusterBehavior (false, false, false, false, false, false);
sharpenEdge->setAdjusterBehavior (false, false);
sharpenMicro->setAdjusterBehavior (false, false);
icm->setAdjusterBehavior (false, false);
@@ -197,13 +199,16 @@ void BatchToolPanelCoordinator::initSession ()
vignetting->setAdjusterBehavior (options.baBehav[ADDSET_VIGN_AMOUNT], options.baBehav[ADDSET_VIGN_RADIUS], options.baBehav[ADDSET_VIGN_STRENGTH], options.baBehav[ADDSET_VIGN_CENTER]);
colorappearance->setAdjusterBehavior (options.baBehav[ADDSET_CAT_DEGREE], options.baBehav[ADDSET_CAT_ADAPTSCENE], options.baBehav[ADDSET_CAT_ADAPTVIEWING], options.baBehav[ADDSET_CAT_BADPIX], options.baBehav[ADDSET_CAT_LIGHT], options.baBehav[ADDSET_CAT_CHROMA], options.baBehav[ADDSET_CAT_CONTRAST], options.baBehav[ADDSET_CAT_RSTPRO], options.baBehav[ADDSET_CAT_BRIGHT], options.baBehav[ADDSET_CAT_CONTRAST_Q], options.baBehav[ADDSET_CAT_CHROMA_S], options.baBehav[ADDSET_CAT_CHROMA_M], options.baBehav[ADDSET_CAT_HUE]);
rotate->setAdjusterBehavior (options.baBehav[ADDSET_ROTATE_DEGREE]);
+ resize->setAdjusterBehavior (options.baBehav[ADDSET_RESIZE_SCALE]);
distortion->setAdjusterBehavior (options.baBehav[ADDSET_DIST_AMOUNT]);
perspective->setAdjusterBehavior (options.baBehav[ADDSET_PERSPECTIVE]);
gradient->setAdjusterBehavior (options.baBehav[ADDSET_GRADIENT_DEGREE], options.baBehav[ADDSET_GRADIENT_FEATHER], options.baBehav[ADDSET_GRADIENT_STRENGTH], options.baBehav[ADDSET_GRADIENT_CENTER]);
// locallab->setAdjusterBehavior (options.baBehav[ADDSET_LOCALLAB_DEGREE], options.baBehav[ADDSET_LOCALLAB_LOCY], options.baBehav[ADDSET_LOCALLAB_LOCX], options.baBehav[ADDSET_LOCALLAB_LOCYT], options.baBehav[ADDSET_LOCALLAB_LOCXL], options.baBehav[ADDSET_LOCALLAB_CENTER], options.baBehav[ADDSET_LOCALLAB_LIGHTNESS], options.baBehav[ADDSET_LOCALLAB_CONTRAST], options.baBehav[ADDSET_LOCALLAB_CHROMA], options.baBehav[ADDSET_LOCALLAB_SENSI], options.baBehav[ADDSET_LOCALLAB_RADIUS], options.baBehav[ADDSET_LOCALLAB_STRENGTH], options.baBehav[ADDSET_LOCALLAB_TRANSIT]);
pcvignette->setAdjusterBehavior (options.baBehav[ADDSET_PCVIGNETTE_STRENGTH], options.baBehav[ADDSET_PCVIGNETTE_FEATHER], options.baBehav[ADDSET_PCVIGNETTE_ROUNDNESS]);
cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]);
- sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_AMOUNT]);
+ sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]);
+ prsharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]);
+
sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT], options.baBehav[ADDSET_SHARPENEDGE_PASS]);
sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]);
icm->setAdjusterBehavior (options.baBehav[ADDSET_FREE_OUPUT_GAMMA], options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]);
@@ -225,507 +230,143 @@ void BatchToolPanelCoordinator::initSession ()
bayerrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
xtransrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
- if (options.baBehav[ADDSET_TC_EXPCOMP]) {
- pparams.toneCurve.expcomp = 0;
+ // *INDENT-OFF*
+ if (options.baBehav[ADDSET_TC_EXPCOMP]) { pparams.toneCurve.expcomp = 0; }
+ if (options.baBehav[ADDSET_TC_HLCOMPAMOUNT]) { pparams.toneCurve.hlcompr = 0; }
+ if (options.baBehav[ADDSET_TC_HLCOMPTHRESH]) { pparams.toneCurve.hlcomprthresh = 0; }
+ if (options.baBehav[ADDSET_TC_BRIGHTNESS]) { pparams.toneCurve.brightness = 0; }
+ if (options.baBehav[ADDSET_TC_BLACKLEVEL]) {pparams.toneCurve.black = 0; }
+ if (options.baBehav[ADDSET_TC_SHCOMP]) { pparams.toneCurve.shcompr = 0; }
+ if (options.baBehav[ADDSET_TC_CONTRAST]) { pparams.toneCurve.contrast = 0; }
+ if (options.baBehav[ADDSET_TC_SATURATION]) { pparams.toneCurve.saturation = 0;}
+ if (options.baBehav[ADDSET_SH_HIGHLIGHTS]) { pparams.sh.highlights = 0; }
+ if (options.baBehav[ADDSET_SH_SHADOWS]) { pparams.sh.shadows = 0; }
+ if (options.baBehav[ADDSET_SH_LOCALCONTRAST]) { pparams.sh.localcontrast = 0; }
+ if (options.baBehav[ADDSET_LC_BRIGHTNESS]) { pparams.labCurve.brightness = 0; }
+ if (options.baBehav[ADDSET_LC_CONTRAST]) { pparams.labCurve.contrast = 0; }
+ if (options.baBehav[ADDSET_LC_CHROMATICITY]) { pparams.labCurve.chromaticity = 0; }
+ if (options.baBehav[ADDSET_SHARP_RADIUS]) {
+ pparams.sharpening.radius = pparams.sharpening.deconvradius = pparams.sharpening.edges_radius = 0;
+ pparams.prsharpening.radius = pparams.prsharpening.deconvradius = pparams.prsharpening.edges_radius = 0;
}
-
- if (options.baBehav[ADDSET_TC_HLCOMPAMOUNT]) {
- pparams.toneCurve.hlcompr = 0;
- }
-
- if (options.baBehav[ADDSET_TC_HLCOMPTHRESH]) {
- pparams.toneCurve.hlcomprthresh = 0;
- }
-
- if (options.baBehav[ADDSET_TC_BRIGHTNESS]) {
- pparams.toneCurve.brightness = 0;
- }
-
- if (options.baBehav[ADDSET_TC_BLACKLEVEL]) {
- pparams.toneCurve.black = 0;
- }
-
- if (options.baBehav[ADDSET_TC_SHCOMP]) {
- pparams.toneCurve.shcompr = 0;
- }
-
- if (options.baBehav[ADDSET_TC_CONTRAST]) {
- pparams.toneCurve.contrast = 0;
- }
-
- if (options.baBehav[ADDSET_TC_SATURATION]) {
- pparams.toneCurve.saturation = 0;
- }
-
- if (options.baBehav[ADDSET_SH_HIGHLIGHTS]) {
- pparams.sh.highlights = 0;
- }
-
- if (options.baBehav[ADDSET_SH_SHADOWS]) {
- pparams.sh.shadows = 0;
- }
-
- if (options.baBehav[ADDSET_SH_LOCALCONTRAST]) {
- pparams.sh.localcontrast = 0;
- }
-
- if (options.baBehav[ADDSET_LC_BRIGHTNESS]) {
- pparams.labCurve.brightness = 0;
- }
-
- if (options.baBehav[ADDSET_LC_CONTRAST]) {
- pparams.labCurve.contrast = 0;
- }
-
- if (options.baBehav[ADDSET_LC_CHROMATICITY]) {
- pparams.labCurve.chromaticity = 0;
- }
-
if (options.baBehav[ADDSET_SHARP_AMOUNT]) {
- pparams.sharpening.amount = 0;
+ pparams.sharpening.amount = pparams.sharpening.deconvamount =
+ pparams.prsharpening.amount = pparams.prsharpening.deconvamount = 0;
}
-
- if (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT]) {
- pparams.sharpenEdge.amount = 0;
+ if (options.baBehav[ADDSET_SHARP_DAMPING]) { pparams.sharpening.deconvdamping = pparams.prsharpening.deconvdamping = 0; }
+ if (options.baBehav[ADDSET_SHARP_ITER]) { pparams.sharpening.deconviter = pparams.prsharpening.deconviter = 0; }
+ if (options.baBehav[ADDSET_SHARP_EDGETOL]) { pparams.sharpening.edges_tolerance = pparams.prsharpening.edges_tolerance = 0; }
+ if (options.baBehav[ADDSET_SHARP_HALOCTRL]) { pparams.sharpening.halocontrol_amount = pparams.prsharpening.halocontrol_amount = 0; }
+ if (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT]) { pparams.sharpenEdge.amount = 0; }
+ if (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT]) { pparams.sharpenMicro.amount = 0; }
+ if (options.baBehav[ADDSET_SHARPENEDGE_PASS]) { pparams.sharpenEdge.passes = 0; }
+ if (options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]) { pparams.sharpenMicro.uniformity = 0; }
+ if (options.baBehav[ADDSET_CHMIXER]) for (int i = 0; i < 3; i++) { pparams.chmixer.red[i] = pparams.chmixer.green[i] = pparams.chmixer.blue[i] = 0; }
+ if (options.baBehav[ADDSET_BLACKWHITE_HUES]) {
+ pparams.blackwhite.mixerRed = pparams.blackwhite.mixerOrange = pparams.blackwhite.mixerYellow =
+ pparams.blackwhite.mixerGreen = pparams.blackwhite.mixerCyan = pparams.blackwhite.mixerBlue =
+ pparams.blackwhite.mixerMagenta = pparams.blackwhite.mixerPurple = 0;
}
-
- if (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT]) {
- pparams.sharpenMicro.amount = 0;
- }
-
- if (options.baBehav[ADDSET_SHARPENEDGE_PASS]) {
- pparams.sharpenEdge.passes = 0;
- }
-
- if (options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]) {
- pparams.sharpenMicro.uniformity = 0;
- }
-
- if (options.baBehav[ADDSET_CHMIXER]) for (int i = 0; i < 3; i++) {
- pparams.chmixer.red[i] = pparams.chmixer.green[i] = pparams.chmixer.blue[i] = 0;
- }
-
- if (options.baBehav[ADDSET_BLACKWHITE_HUES]) pparams.blackwhite.mixerRed = pparams.blackwhite.mixerOrange = pparams.blackwhite.mixerYellow =
- pparams.blackwhite.mixerGreen = pparams.blackwhite.mixerCyan = pparams.blackwhite.mixerBlue =
- pparams.blackwhite.mixerMagenta = pparams.blackwhite.mixerPurple = 0;
-
- if (options.baBehav[ADDSET_BLACKWHITE_GAMMA]) {
- pparams.blackwhite.gammaRed = pparams.blackwhite.gammaGreen = pparams.blackwhite.gammaBlue = 0;
- }
-
+ if (options.baBehav[ADDSET_BLACKWHITE_GAMMA]) { pparams.blackwhite.gammaRed = pparams.blackwhite.gammaGreen = pparams.blackwhite.gammaBlue = 0; }
//if (options.baBehav[ADDSET_LD_EDGETOLERANCE]) pparams.lumaDenoise.edgetolerance = 0;
-
- if (options.baBehav[ADDSET_WB_TEMPERATURE]) {
- pparams.wb.temperature = 0;
- }
-
- if (options.baBehav[ADDSET_WB_GREEN]) {
- pparams.wb.green = 0;
- }
-
- if (options.baBehav[ADDSET_WB_EQUAL]) {
- pparams.wb.equal = 0;
- }
-
- if (options.baBehav[ADDSET_WB_TEMPBIAS]) {
- pparams.wb.tempBias = 0;
- }
-
- if (options.baBehav[ADDSET_VIBRANCE_PASTELS]) {
- pparams.vibrance.pastels = 0;
- }
-
- if (options.baBehav[ADDSET_VIBRANCE_SATURATED]) {
- pparams.vibrance.saturated = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_DEGREE]) {
- pparams.colorappearance.degree = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_ADAPTSCENE]) {
- pparams.colorappearance.adapscen = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_ADAPTVIEWING]) {
- pparams.colorappearance.adaplum = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_BADPIX]) {
- pparams.colorappearance.badpixsl = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_LIGHT]) {
- pparams.colorappearance.jlight = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_BRIGHT]) {
- pparams.colorappearance.qbright = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_CHROMA]) {
- pparams.colorappearance.chroma = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_CHROMA_S]) {
- pparams.colorappearance.schroma = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_CHROMA_M]) {
- pparams.colorappearance.mchroma = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_RSTPRO]) {
- pparams.colorappearance.rstprotection = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_CONTRAST]) {
- pparams.colorappearance.contrast = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_CONTRAST_Q]) {
- pparams.colorappearance.qcontrast = 0;
- }
-
- if (options.baBehav[ADDSET_CAT_HUE]) {
- pparams.colorappearance.colorh = 0;
- }
-
- if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) {
- pparams.icm.gampos = 0;
- }
-
- if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) {
- pparams.icm.slpos = 0;
- }
-
+ if (options.baBehav[ADDSET_WB_TEMPERATURE]) { pparams.wb.temperature = 0; }
+ if (options.baBehav[ADDSET_WB_GREEN]) { pparams.wb.green = 0; }
+ if (options.baBehav[ADDSET_WB_EQUAL]) { pparams.wb.equal = 0; }
+ if (options.baBehav[ADDSET_WB_TEMPBIAS]) { pparams.wb.tempBias = 0; }
+ if (options.baBehav[ADDSET_VIBRANCE_PASTELS]) { pparams.vibrance.pastels = 0; }
+ if (options.baBehav[ADDSET_VIBRANCE_SATURATED]) { pparams.vibrance.saturated = 0; }
+ if (options.baBehav[ADDSET_CAT_DEGREE]) { pparams.colorappearance.degree = 0; }
+ if (options.baBehav[ADDSET_CAT_ADAPTSCENE]) { pparams.colorappearance.adapscen = 0; }
+ if (options.baBehav[ADDSET_CAT_ADAPTVIEWING]) { pparams.colorappearance.adaplum = 0; }
+ if (options.baBehav[ADDSET_CAT_BADPIX]) { pparams.colorappearance.badpixsl = 0; }
+ if (options.baBehav[ADDSET_CAT_LIGHT]) { pparams.colorappearance.jlight = 0; }
+ if (options.baBehav[ADDSET_CAT_BRIGHT]) { pparams.colorappearance.qbright = 0; }
+ if (options.baBehav[ADDSET_CAT_CHROMA]) { pparams.colorappearance.chroma = 0; }
+ if (options.baBehav[ADDSET_CAT_CHROMA_S]) { pparams.colorappearance.schroma = 0; }
+ if (options.baBehav[ADDSET_CAT_CHROMA_M]) { pparams.colorappearance.mchroma = 0; }
+ if (options.baBehav[ADDSET_CAT_RSTPRO]) { pparams.colorappearance.rstprotection = 0; }
+ if (options.baBehav[ADDSET_CAT_CONTRAST]) { pparams.colorappearance.contrast = 0; }
+ if (options.baBehav[ADDSET_CAT_CONTRAST_Q]) { pparams.colorappearance.qcontrast = 0; }
+ if (options.baBehav[ADDSET_CAT_HUE]) { pparams.colorappearance.colorh = 0; }
+ if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) { pparams.icm.gampos = 0; }
+ if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) { pparams.icm.slpos = 0; }
//if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0;
-
//if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0;
//if (options.baBehav[ADDSET_CS_GREENMAGENTA]) pparams.colorShift.b = 0;
- if (options.baBehav[ADDSET_COLORTONING_SPLIT]) pparams.colorToning.redlow = pparams.colorToning.greenlow = pparams.colorToning.bluelow =
- pparams.colorToning.redmed = pparams.colorToning.greenmed = pparams.colorToning.bluemed =
- pparams.colorToning.redhigh = pparams.colorToning.greenhigh = pparams.colorToning.bluehigh =
- pparams.colorToning.satlow = pparams.colorToning.sathigh = 0;
-
- if (options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD]) {
- pparams.colorToning.satProtectionThreshold = 0;
+ if (options.baBehav[ADDSET_COLORTONING_SPLIT]) {
+ pparams.colorToning.redlow = pparams.colorToning.greenlow = pparams.colorToning.bluelow =
+ pparams.colorToning.redmed = pparams.colorToning.greenmed = pparams.colorToning.bluemed =
+ pparams.colorToning.redhigh = pparams.colorToning.greenhigh = pparams.colorToning.bluehigh =
+ pparams.colorToning.satlow = pparams.colorToning.sathigh = 0;
}
-
- if (options.baBehav[ADDSET_COLORTONING_SATOPACITY]) {
- pparams.colorToning.saturatedOpacity = 0;
- }
-
- if (options.baBehav[ADDSET_COLORTONING_BALANCE]) {
- pparams.colorToning.balance = 0;
- }
-
- if (options.baBehav[ADDSET_COLORTONING_STRENGTH]) {
- pparams.colorToning.strength = 0;
- }
-
- if (options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]) {
- pparams.filmSimulation.strength = 0;
- }
-
- if (options.baBehav[ADDSET_ROTATE_DEGREE]) {
- pparams.rotate.degree = 0;
- }
-
- if (options.baBehav[ADDSET_DIST_AMOUNT]) {
- pparams.distortion.amount = 0;
- }
-
- if (options.baBehav[ADDSET_PERSPECTIVE]) {
- pparams.perspective.horizontal = pparams.perspective.vertical = 0;
- }
-
- if (options.baBehav[ADDSET_GRADIENT_DEGREE]) {
- pparams.gradient.degree = 0;
- }
-
- if (options.baBehav[ADDSET_GRADIENT_FEATHER]) {
- pparams.gradient.feather = 0;
- }
-
- if (options.baBehav[ADDSET_GRADIENT_STRENGTH]) {
- pparams.gradient.strength = 0;
- }
-
- if (options.baBehav[ADDSET_GRADIENT_CENTER]) {
- pparams.gradient.centerX = 0;
- }
-
- if (options.baBehav[ADDSET_GRADIENT_CENTER]) {
- pparams.gradient.centerY = 0;
- }
-
- /*
- if (options.baBehav[ADDSET_LOCALLAB_DEGREE]) {
- pparams.locallab.degree = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_LOCY]) {
- pparams.locallab.locY = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_LOCX]) {
- pparams.locallab.locX = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_LOCYT]) {
- pparams.locallab.locYT = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_LOCXL]) {
- pparams.locallab.locXL = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_CENTER]) {
- pparams.locallab.centerX = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_CENTER]) {
- pparams.locallab.centerY = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_LIGHTNESS]) {
- pparams.locallab.lightness = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_CONTRAST]) {
- pparams.locallab.contrast = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_CHROMA]) {
- pparams.locallab.chroma = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_SENSI]) {
- pparams.locallab.sensi = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_RADIUS]) {
- pparams.locallab.radius = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_STRENGTH]) {
- pparams.locallab.strength = 0;
- }
-
- if (options.baBehav[ADDSET_LOCALLAB_TRANSIT]) {
- pparams.locallab.transit = 0;
- }
- */
- if (options.baBehav[ADDSET_PCVIGNETTE_STRENGTH]) {
- pparams.pcvignette.strength = 0;
- }
-
- if (options.baBehav[ADDSET_PCVIGNETTE_FEATHER]) {
- pparams.pcvignette.feather = 0;
- }
-
- if (options.baBehav[ADDSET_PCVIGNETTE_ROUNDNESS]) {
- pparams.pcvignette.roundness = 0;
- }
-
- if (options.baBehav[ADDSET_CA]) {
- pparams.cacorrection.red = 0;
- }
-
- if (options.baBehav[ADDSET_CA]) {
- pparams.cacorrection.blue = 0;
- }
-
- if (options.baBehav[ADDSET_VIGN_AMOUNT]) {
- pparams.vignetting.amount = 0;
- }
-
- if (options.baBehav[ADDSET_VIGN_RADIUS]) {
- pparams.vignetting.radius = 0;
- }
-
- if (options.baBehav[ADDSET_VIGN_STRENGTH]) {
- pparams.vignetting.strength = 0;
- }
-
- if (options.baBehav[ADDSET_VIGN_CENTER]) {
- pparams.vignetting.centerX = 0;
- }
-
- if (options.baBehav[ADDSET_VIGN_CENTER]) {
- pparams.vignetting.centerY = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYREQ]) for (int i = 0; i < 6; i++) {
- pparams.dirpyrequalizer.mult[i] = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYREQ_THRESHOLD]) {
- pparams.dirpyrequalizer.threshold = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYREQ_SKINPROTECT]) {
- pparams.dirpyrequalizer.skinprotect = 0;
- }
-
- if (options.baBehav[ADDSET_WA]) for (int i = 0; i < 8; i++) {
- pparams.wavelet.c[i] = 0;
- }
-
- if (options.baBehav[ADDSET_WA_THRESHOLD]) {
- pparams.wavelet.threshold = 0;
- }
-
- if (options.baBehav[ADDSET_WA_THRESHOLD2]) {
- pparams.wavelet.threshold2 = 0;
- }
-
- if (options.baBehav[ADDSET_WA_SKINPROTECT]) {
- pparams.wavelet.skinprotect = 0;
- }
-
- if (options.baBehav[ADDSET_WA_CHRO]) {
- pparams.wavelet.chro = 0;
- }
-
- if (options.baBehav[ADDSET_WA_CHROMA]) {
- pparams.wavelet.chroma = 0;
- }
-
- if (options.baBehav[ADDSET_WA_CONTRAST]) {
- pparams.wavelet.contrast = 0;
- }
-
- if (options.baBehav[ADDSET_WA_THRES]) {
- pparams.wavelet.thres = 0;
- }
-
- if (options.baBehav[ADDSET_WA_RESCON]) {
- pparams.wavelet.rescon = 0;
- }
-
- if (options.baBehav[ADDSET_WA_RESCONH]) {
- pparams.wavelet.resconH = 0;
- }
-
- if (options.baBehav[ADDSET_WA_RESCHRO]) {
- pparams.wavelet.reschro = 0;
- }
-
- if (options.baBehav[ADDSET_WA_TMRS]) {
- pparams.wavelet.tmrs = 0;
- }
-
- if (options.baBehav[ADDSET_WA_THRR]) {
- pparams.wavelet.thr = 0;
- }
-
- if (options.baBehav[ADDSET_WA_THRRH]) {
- pparams.wavelet.thrH = 0;
- }
-
- if (options.baBehav[ADDSET_WA_SKYPROTECT]) {
- pparams.wavelet.sky = 0;
- }
-
- if (options.baBehav[ADDSET_WA_EDGRAD]) {
- pparams.wavelet.edgrad = 0;
- }
-
- if (options.baBehav[ADDSET_WA_EDGVAL]) {
- pparams.wavelet.edgval = 0;
- }
-
- if (options.baBehav[ADDSET_WA_STRENGTH]) {
- pparams.wavelet.strength = 0;
- }
-
- if (options.baBehav[ADDSET_WA_EDGEDETECT]) {
- pparams.wavelet.edgedetect = 0;
- }
-
- if (options.baBehav[ADDSET_WA_GAMMA]) {
- pparams.wavelet.gamma = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_STR]) {
- pparams.retinex.str = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_NEIGH]) {
- pparams.retinex.neigh = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_LIMD]) {
- pparams.retinex.limd = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_OFFS]) {
- pparams.retinex.offs = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_VART]) {
- pparams.retinex.vart = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_GAM]) {
- pparams.retinex.gam = 0;
- }
-
- if (options.baBehav[ADDSET_RETI_SLO]) {
- pparams.retinex.slope = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYRDN_LUMA]) {
- pparams.dirpyrDenoise.luma = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYRDN_CHROMA]) {
- pparams.dirpyrDenoise.chroma = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYRDN_CHROMARED]) {
- pparams.dirpyrDenoise.redchro = 0;
- }
-
- if (options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE]) {
- pparams.dirpyrDenoise.bluechro = 0;
- }
-
-// pparams.dirpyrDenoise.Ldetail = pparams.dirpyrDenoise.luma = pparams.dirpyrDenoise.chroma = 0;
- if (options.baBehav[ADDSET_DIRPYRDN_GAMMA]) {
- pparams.dirpyrDenoise.gamma = 0;
- }
-
- if (options.baBehav[ADDSET_RAWCACORR]) {
- pparams.raw.cablue = pparams.raw.cared = 0;
- }
-
- if (options.baBehav[ADDSET_RAWEXPOS_LINEAR]) {
- pparams.raw.expos = 0;
- }
-
- if (options.baBehav[ADDSET_RAWEXPOS_PRESER]) {
- pparams.raw.preser = 0;
- }
-
+ if (options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD]) { pparams.colorToning.satProtectionThreshold = 0; }
+ if (options.baBehav[ADDSET_COLORTONING_SATOPACITY]) { pparams.colorToning.saturatedOpacity = 0; }
+ if (options.baBehav[ADDSET_COLORTONING_BALANCE]) { pparams.colorToning.balance = 0; }
+ if (options.baBehav[ADDSET_COLORTONING_STRENGTH]) { pparams.colorToning.strength = 0; }
+ if (options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]) { pparams.filmSimulation.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; }
+ if (options.baBehav[ADDSET_PERSPECTIVE]) { pparams.perspective.horizontal = pparams.perspective.vertical = 0; }
+ if (options.baBehav[ADDSET_GRADIENT_DEGREE]) { pparams.gradient.degree = 0; }
+ if (options.baBehav[ADDSET_GRADIENT_FEATHER]) { pparams.gradient.feather = 0; }
+ if (options.baBehav[ADDSET_GRADIENT_STRENGTH]) { pparams.gradient.strength = 0; }
+ if (options.baBehav[ADDSET_GRADIENT_CENTER]) { pparams.gradient.centerX = pparams.gradient.centerY = 0; }
+ if (options.baBehav[ADDSET_PCVIGNETTE_STRENGTH]) { pparams.pcvignette.strength = 0; }
+ if (options.baBehav[ADDSET_PCVIGNETTE_FEATHER]) { pparams.pcvignette.feather = 0; }
+ if (options.baBehav[ADDSET_PCVIGNETTE_ROUNDNESS]) { pparams.pcvignette.roundness = 0; }
+ if (options.baBehav[ADDSET_CA]) { pparams.cacorrection.red = pparams.cacorrection.blue = 0; }
+ if (options.baBehav[ADDSET_VIGN_AMOUNT]) { pparams.vignetting.amount = 0; }
+ if (options.baBehav[ADDSET_VIGN_RADIUS]) { pparams.vignetting.radius = 0; }
+ if (options.baBehav[ADDSET_VIGN_STRENGTH]) { pparams.vignetting.strength = 0; }
+ if (options.baBehav[ADDSET_VIGN_CENTER]) { pparams.vignetting.centerX = pparams.vignetting.centerY = 0; }
+ if (options.baBehav[ADDSET_DIRPYREQ]) for (int i = 0; i < 6; i++) { pparams.dirpyrequalizer.mult[i] = 0; }
+ if (options.baBehav[ADDSET_DIRPYREQ_THRESHOLD]) { pparams.dirpyrequalizer.threshold = 0; }
+ if (options.baBehav[ADDSET_DIRPYREQ_SKINPROTECT]) { pparams.dirpyrequalizer.skinprotect = 0; }
+ if (options.baBehav[ADDSET_WA]) for (int i = 0; i < 8; i++) { pparams.wavelet.c[i] = 0; }
+ if (options.baBehav[ADDSET_WA_THRESHOLD]) { pparams.wavelet.threshold = 0; }
+ if (options.baBehav[ADDSET_WA_THRESHOLD2]) { pparams.wavelet.threshold2 = 0; }
+ if (options.baBehav[ADDSET_WA_SKINPROTECT]) { pparams.wavelet.skinprotect = 0; }
+ if (options.baBehav[ADDSET_WA_CHRO]) { pparams.wavelet.chro = 0; }
+ if (options.baBehav[ADDSET_WA_CHROMA]) { pparams.wavelet.chroma = 0; }
+ if (options.baBehav[ADDSET_WA_CONTRAST]) { pparams.wavelet.contrast = 0; }
+ if (options.baBehav[ADDSET_WA_THRES]) { pparams.wavelet.thres = 0; }
+ if (options.baBehav[ADDSET_WA_RESCON]) { pparams.wavelet.rescon = 0; }
+ if (options.baBehav[ADDSET_WA_RESCONH]) { pparams.wavelet.resconH = 0; }
+ if (options.baBehav[ADDSET_WA_RESCHRO]) { pparams.wavelet.reschro = 0; }
+ if (options.baBehav[ADDSET_WA_TMRS]) { pparams.wavelet.tmrs = 0; }
+ if (options.baBehav[ADDSET_WA_THRR]) { pparams.wavelet.thr = 0; }
+ if (options.baBehav[ADDSET_WA_THRRH]) { pparams.wavelet.thrH = 0; }
+ if (options.baBehav[ADDSET_WA_SKYPROTECT]) { pparams.wavelet.sky = 0; }
+ if (options.baBehav[ADDSET_WA_EDGRAD]) { pparams.wavelet.edgrad = 0; }
+ if (options.baBehav[ADDSET_WA_EDGVAL]) { pparams.wavelet.edgval = 0; }
+ if (options.baBehav[ADDSET_WA_STRENGTH]) { pparams.wavelet.strength = 0; }
+ if (options.baBehav[ADDSET_WA_EDGEDETECT]) { pparams.wavelet.edgedetect = 0; }
+ if (options.baBehav[ADDSET_WA_GAMMA]) { pparams.wavelet.gamma = 0; }
+ if (options.baBehav[ADDSET_RETI_STR]) { pparams.retinex.str = 0; }
+ if (options.baBehav[ADDSET_RETI_NEIGH]) { pparams.retinex.neigh = 0; }
+ if (options.baBehav[ADDSET_RETI_LIMD]) { pparams.retinex.limd = 0; }
+ if (options.baBehav[ADDSET_RETI_OFFS]) { pparams.retinex.offs = 0; }
+ if (options.baBehav[ADDSET_RETI_VART]) { pparams.retinex.vart = 0; }
+ if (options.baBehav[ADDSET_RETI_GAM]) { pparams.retinex.gam = 0; }
+ if (options.baBehav[ADDSET_RETI_SLO]) { pparams.retinex.slope = 0; }
+ if (options.baBehav[ADDSET_DIRPYRDN_LUMA]) { pparams.dirpyrDenoise.luma = 0; }
+ if (options.baBehav[ADDSET_DIRPYRDN_CHROMA]) { pparams.dirpyrDenoise.chroma = 0; }
+ if (options.baBehav[ADDSET_DIRPYRDN_CHROMARED]) { pparams.dirpyrDenoise.redchro = 0; }
+ if (options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE]) { pparams.dirpyrDenoise.bluechro = 0; }
+ //pparams.dirpyrDenoise.Ldetail = pparams.dirpyrDenoise.luma = pparams.dirpyrDenoise.chroma = 0;
+ if (options.baBehav[ADDSET_DIRPYRDN_GAMMA]) { pparams.dirpyrDenoise.gamma = 0; }
+ if (options.baBehav[ADDSET_RAWCACORR]) { pparams.raw.cablue = pparams.raw.cared = 0; }
+ if (options.baBehav[ADDSET_RAWEXPOS_LINEAR]) { pparams.raw.expos = 0; }
+ if (options.baBehav[ADDSET_RAWEXPOS_PRESER]) { pparams.raw.preser = 0; }
if (options.baBehav[ADDSET_RAWEXPOS_BLACKS]) {
- pparams.raw.bayersensor.black0 = pparams.raw.bayersensor.black1 = pparams.raw.bayersensor.black2 = pparams.raw.bayersensor.black3 = 0;
+ pparams.raw.bayersensor.black0 = pparams.raw.bayersensor.black1 = pparams.raw.bayersensor.black2 = pparams.raw.bayersensor.black3 =
pparams.raw.xtranssensor.blackred = pparams.raw.xtranssensor.blackgreen = pparams.raw.xtranssensor.blackblue = 0;
}
-
- if (options.baBehav[ADDSET_RAWFFCLIPCONTROL]) {
- pparams.raw.ff_clipControl = 0;
- }
-
- if (options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]) {
- pparams.raw.bayersensor.greenthresh = 0;
- }
-
- if (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE]) {
- pparams.raw.bayersensor.linenoise = 0;
- }
+ if (options.baBehav[ADDSET_RAWFFCLIPCONTROL]) { pparams.raw.ff_clipControl = 0; }
+ if (options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]) { pparams.raw.bayersensor.greenthresh = 0; }
+ if (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE]) { pparams.raw.bayersensor.linenoise = 0; }
+ // *INDENT-ON*
}
for (size_t i = 0; i < toolPanels.size(); i++) {
diff --git a/rtgui/crop.cc b/rtgui/crop.cc
index 4b9e22fd2..546d910ba 100644
--- a/rtgui/crop.cc
+++ b/rtgui/crop.cc
@@ -54,7 +54,43 @@ int notifyListenerUI (void* data)
}
-Crop::Crop (): FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true), opt(0), wDirty(true), hDirty(true), xDirty(true), yDirty(true), lastFixRatio(true)
+Crop::Crop():
+ FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true),
+ crop_ratios{
+ {"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
+ {"16:10", 16.0 / 10.0}, // L1.6, P0.625
+ {"1:1", 1.0 / 1.0}, // L1, P1
+ {"2:1", 2.0 / 1.0}, // L2, P0.5
+ {"3:1", 3.0 / 1.0}, // L3, P0.333...
+ {"4:1", 4.0 / 1.0}, // L4, P0.25
+ {"5:1", 5.0 / 1.0}, // L5, P0.2
+ {"6:1", 6.0 / 1.0}, // L6, P0.1666...
+ {"7:1", 7.0 / 1.0}, // L7, P0.142...
+ {"4:5", 4.0 / 5.0}, // L1.25, P0.8
+ {"5:7", 5.0 / 7.0}, // L1.4, P0.714...
+ {"6:7", 6.0 / 7.0}, // L1.166..., P0.857...
+ {"6:17", 6.0 / 17.0}, // L2.833..., P0.352...
+ {"24:65 - XPAN", 24.0 / 65.0}, // L2.708..., P0.369...
+ {"1.414 - DIN EN ISO 216", 1.414}, // L1.414, P0.707...
+ {"3.5:5", 3.5 / 5.0}, // L1.428..., P0.7
+ {"8.5:11 - US Letter", 8.5 / 11.0}, // L1.294..., P0.772...
+ {"9.5:12", 9.5 / 12.0}, // L1.263..., P0.791...
+ {"10:12", 10.0 / 12.0}, // L1.2, P0.833...
+ {"11:14", 11.0 / 14.0}, // L1.272..., P0.785...
+ {"11:17 - Tabloid", 11.0 / 17.0}, // L1.545..., P0.647...
+ {"13:19", 13.0 / 19.0}, // L1.461..., P0.684...
+ {"17:22", 17.0 / 22.0}, // L1.294..., P0.772...
+ {"45:35 - ePassport", 45.0 / 35.0}, // L1.285,... P0.777...
+ {"64:27", 64.0 / 27.0}, // L2.370..., P0.421...
+ },
+ opt(0),
+ wDirty(true),
+ hDirty(true),
+ xDirty(true),
+ yDirty(true),
+ lastFixRatio(true)
{
clistener = nullptr;
@@ -145,70 +181,9 @@ Crop::Crop (): FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true),
ppi->set_value (300);
// ppibox END
- /****************
- * Crop Ratio
- *****************/
- int NumberOfCropRatios = 26; //!!! change this value when adding new crop ratios
- cropratio.resize (NumberOfCropRatios);
-
- cropratio[0].label = "3:2";
- cropratio[0].value = 3.0 / 2.0;
- cropratio[1].label = "4:3";
- cropratio[1].value = 4.0 / 3.0;
- cropratio[2].label = "16:9";
- cropratio[2].value = 16.0 / 9.0;
- cropratio[3].label = "16:10";
- cropratio[3].value = 16.0 / 10.0;
- cropratio[4].label = "1:1";
- cropratio[4].value = 1.0 / 1.0;
- cropratio[5].label = "2:1";
- cropratio[5].value = 2.0 / 1.0;
- cropratio[6].label = "3:1";
- cropratio[6].value = 3.0 / 1.0;
- cropratio[7].label = "4:1";
- cropratio[7].value = 4.0 / 1.0;
- cropratio[8].label = "5:1";
- cropratio[8].value = 5.0 / 1.0;
- cropratio[9].label = "6:1";
- cropratio[9].value = 6.0 / 1.0;
- cropratio[10].label = "7:1";
- cropratio[10].value = 7.0 / 1.0;
- cropratio[11].label = "4:5";
- cropratio[11].value = 4.0 / 5.0;
- cropratio[12].label = "5:7";
- cropratio[12].value = 5.0 / 7.0;
- cropratio[13].label = "6:7";
- cropratio[13].value = 6.0 / 7.0;
- cropratio[14].label = "6:17";
- cropratio[14].value = 6.0 / 17.0;
- cropratio[15].label = "24:65 - XPAN";
- cropratio[15].value = 24.0 / 65.0;
- cropratio[16].label = "1.414 - DIN EN ISO 216";
- cropratio[16].value = 1.414;
- cropratio[17].label = "3.5:5";
- cropratio[17].value = 3.5 / 5.0;
- cropratio[18].label = "8.5:11 - US Letter";
- cropratio[18].value = 8.5 / 11.0;
- cropratio[19].label = "9.5:12";
- cropratio[19].value = 9.5 / 12.0;
- cropratio[20].label = "10:12";
- cropratio[20].value = 10.0 / 12.0;
- cropratio[21].label = "11:14";
- cropratio[21].value = 11.0 / 14.0;
- cropratio[22].label = "11:17 - Tabloid";
- cropratio[22].value = 11.0 / 17.0;
- cropratio[23].label = "13:19";
- cropratio[23].value = 13.0 / 19.0;
- cropratio[24].label = "17:22";
- cropratio[24].value = 17.0 / 22.0;
- cropratio[25].label = "45:35 - ePassport";
- cropratio[25].value = 45.0 / 35.0;
-
-
-
- // populate the combobox
- for (int i = 0; i < NumberOfCropRatios; i++) {
- ratio->append (cropratio[i].label);
+ // Populate the combobox
+ for (const auto& crop_ratio : crop_ratios) {
+ ratio->append (crop_ratio.label);
}
ratio->set_active (0);
@@ -320,7 +295,7 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited)
ratio->set_active_text (pp->crop.ratio);
fixr->set_active (pp->crop.fixratio);
- const bool flip_orientation = pp->crop.fixratio && cropratio[ratio->get_active_row_number()].value < 1.0;
+ const bool flip_orientation = pp->crop.fixratio && crop_ratios[ratio->get_active_row_number()].value < 1.0;
if (pp->crop.orientation == "Landscape") {
orientation->set_active (flip_orientation ? 1 : 0);
@@ -415,7 +390,7 @@ void Crop::write (ProcParams* pp, ParamsEdited* pedited)
pp->crop.ratio = ratio->get_active_text ();
// for historical reasons we store orientation different if ratio is written as 2:3 instead of 3:2, but in GUI 'landscape' is always long side horizontal regardless of the ratio is written short or long side first.
- const bool flip_orientation = fixr->get_active() && cropratio[ratio->get_active_row_number()].value < 1.0;
+ const bool flip_orientation = fixr->get_active() && crop_ratios[ratio->get_active_row_number()].value < 1.0;
if (orientation->get_active_row_number() == 0) {
pp->crop.orientation = flip_orientation ? "Portrait" : "Landscape";
@@ -1289,7 +1264,7 @@ double Crop::getRatio ()
return r;
}
- r = cropratio[ratio->get_active_row_number()].value;
+ r = crop_ratios[ratio->get_active_row_number()].value;
if (r < 1.0) {
r = 1.0 / r; // convert to long side first (eg 4:5 becomes 5:4)
diff --git a/rtgui/crop.h b/rtgui/crop.h
index 4c2d7a209..e786d8364 100644
--- a/rtgui/crop.h
+++ b/rtgui/crop.h
@@ -33,11 +33,6 @@ public:
virtual void cropSelectRequested() = 0;
};
-struct CropRatio {
- Glib::ustring label;
- double value;
-};
-
class Crop final :
public ToolParamBlock,
public CropGUIListener,
@@ -94,6 +89,15 @@ public:
void rotateCrop (int deg, bool hflip, bool vflip);
private:
+ struct CropRatio {
+ Glib::ustring label;
+ double value;
+ };
+
+ const std::vector crop_ratios;
+
+ void adjustCropToRatio();
+
Gtk::CheckButton* fixr;
MyComboBoxText* ratio;
MyComboBoxText* orientation;
@@ -116,8 +120,6 @@ private:
int lastRotationDeg;
sigc::connection xconn, yconn, wconn, hconn, fconn, rconn, oconn, gconn;
bool wDirty, hDirty, xDirty, yDirty, lastFixRatio;
- void adjustCropToRatio();
- std::vector cropratio;
IdleRegister idle_register;
};
diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc
index 8af0541fe..93426a1c6 100644
--- a/rtgui/cropwindow.cc
+++ b/rtgui/cropwindow.cc
@@ -1324,6 +1324,8 @@ void CropWindow::expose (Cairo::RefPtr cr)
cr->set_source_rgb (0, 0, 0);
} else if (backColor == 2) {
cr->set_source_rgb (1, 1, 1);
+ } else if (backColor == 3) {
+ cr->set_source_rgb (0.467, 0.467, 0.467);
}
cr->set_line_width (0.);
@@ -1359,13 +1361,13 @@ void CropWindow::expose (Cairo::RefPtr cr)
imgH = cropHandler.cropPixbuf->get_height ();
exposeVersion++;
- bool showcs = iarea->indClippedPanel->showClippedShadows();
- bool showch = iarea->indClippedPanel->showClippedHighlights();
const bool showR = iarea->previewModePanel->showR(); // will show clipping if R channel is clipped
const bool showG = iarea->previewModePanel->showG(); // will show clipping if G channel is clipped
const bool showB = iarea->previewModePanel->showB(); // will show clipping if B channel is clipped
const bool showL = iarea->previewModePanel->showL(); // will show clipping if L value is clipped
- const bool showFocusMask = iarea->previewModePanel->showFocusMask();
+ const bool showFocusMask = iarea->indClippedPanel->showFocusMask();
+ bool showcs = iarea->indClippedPanel->showClippedShadows();
+ bool showch = iarea->indClippedPanel->showClippedHighlights();
// While the Right-side ALT is pressed, auto-enable highlight and shadow clipping indicators
// TODO: Add linux/MacOS specific functions for alternative
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index 71d0729e6..f1835be89 100644
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -1581,11 +1581,7 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event)
return true;
case GDK_KEY_F: //preview mode Focus Mask
- iareapanel->imageArea->previewModePanel->toggleFocusMask();
- return true;
-
- case GDK_KEY_f:
- iareapanel->imageArea->zoomPanel->zoomFitClicked();
+ iareapanel->imageArea->indClippedPanel->toggleFocusMask();
return true;
case GDK_KEY_less:
@@ -1596,6 +1592,10 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event)
iareapanel->imageArea->indClippedPanel->toggleClipped (true);
return true;
+ case GDK_KEY_f:
+ iareapanel->imageArea->zoomPanel->zoomFitClicked();
+ return true;
+
case GDK_KEY_F5:
openThm->openDefaultViewer ((event->state & GDK_SHIFT_MASK) ? 2 : 1);
return true;
diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc
index 989ff2758..a72889404 100644
--- a/rtgui/guiutils.cc
+++ b/rtgui/guiutils.cc
@@ -247,9 +247,10 @@ void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int
cr->set_source_rgb (0, 0, 0);
} else if (options.bgcolor == 2) {
cr->set_source_rgb (1, 1, 1);
+ } else if (options.bgcolor == 3) {
+ cr->set_source_rgb (0.467, 0.467, 0.467);
}
-
cr->rectangle (imx, imy, imw + 0.5, round(c1y) + 0.5);
cr->rectangle (imx, round(imy + c2y) + 0.5, imw + 0.5, round(imh - c2y) + 0.5);
cr->rectangle (imx, round(imy + c1y) + 0.5, round(c1x) + 0.5, round(c2y - c1y + 1) + 0.5);
diff --git a/rtgui/indclippedpanel.cc b/rtgui/indclippedpanel.cc
index 72180b31a..ae7cff644 100644
--- a/rtgui/indclippedpanel.cc
+++ b/rtgui/indclippedpanel.cc
@@ -24,38 +24,49 @@
IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
{
+ iFon = new RTImage ("previewmodeF-focusScreen-on.png");
+ iFoff = new RTImage ("previewmodeF-focusScreen-off.png");
+
+ previewFocusMask = Gtk::manage (new Gtk::ToggleButton ());
+ previewFocusMask->set_relief(Gtk::RELIEF_NONE);
+ previewFocusMask->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWFOCUSMASK"));
+ previewFocusMask->set_image(*iFoff);
+
Glib::ustring tt;
- indclippedh = Gtk::manage (new Gtk::ToggleButton ());
- indclippedh->set_relief(Gtk::RELIEF_NONE);
- indclippedh->add (*Gtk::manage (new RTImage ("warnhl.png")));
+ indClippedH = Gtk::manage (new Gtk::ToggleButton ());
+ indClippedH->set_relief(Gtk::RELIEF_NONE);
+ indClippedH->add (*Gtk::manage (new RTImage ("warnhl.png")));
tt = Glib::ustring::compose("%1\n%2 = %3", M("MAIN_TOOLTIP_INDCLIPPEDH"), M("MAIN_TOOLTIP_THRESHOLD"), options.highlightThreshold);
if (tt.find("<") == Glib::ustring::npos && tt.find(">") == Glib::ustring::npos) {
- indclippedh->set_tooltip_text (tt);
+ indClippedH->set_tooltip_text (tt);
} else {
- indclippedh->set_tooltip_markup (tt);
+ indClippedH->set_tooltip_markup (tt);
}
- indclippeds = Gtk::manage (new Gtk::ToggleButton ());
- indclippeds->set_relief(Gtk::RELIEF_NONE);
- indclippeds->add (*Gtk::manage (new RTImage ("warnsh.png")));
+ indClippedS = Gtk::manage (new Gtk::ToggleButton ());
+ indClippedS->set_relief(Gtk::RELIEF_NONE);
+ indClippedS->add (*Gtk::manage (new RTImage ("warnsh.png")));
tt = Glib::ustring::compose("%1\n%2 = %3", M("MAIN_TOOLTIP_INDCLIPPEDS"), M("MAIN_TOOLTIP_THRESHOLD"), options.shadowThreshold);
if (tt.find("<") == Glib::ustring::npos && tt.find(">") == Glib::ustring::npos) {
- indclippeds->set_tooltip_text (tt);
+ indClippedS->set_tooltip_text (tt);
} else {
- indclippeds->set_tooltip_markup (tt);
+ indClippedS->set_tooltip_markup (tt);
}
- indclippedh->set_active (options.showClippedHighlights);
- indclippeds->set_active (options.showClippedShadows);
+ previewFocusMask->set_active (false);
+ indClippedH->set_active (options.showClippedHighlights);
+ indClippedS->set_active (options.showClippedShadows);
- pack_start (*indclippeds, Gtk::PACK_SHRINK, 0);
- pack_start (*indclippedh, Gtk::PACK_SHRINK, 0);
+ pack_start (*previewFocusMask, Gtk::PACK_SHRINK, 0);
+ pack_start (*indClippedS, Gtk::PACK_SHRINK, 0);
+ pack_start (*indClippedH, Gtk::PACK_SHRINK, 0);
- indclippedh->signal_toggled().connect( sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled) );
- indclippeds->signal_toggled().connect( sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled) );
+ connFocusMask = previewFocusMask->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), previewFocusMask) );
+ connClippedS = indClippedS->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), indClippedS) );
+ connClippedH = indClippedH->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), indClippedH) );
show_all ();
}
@@ -64,14 +75,41 @@ IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
void IndicateClippedPanel::toggleClipped (bool highlights)
{
if (highlights) {
- indclippedh->set_active(!indclippedh->get_active());
+ indClippedH->set_active(!indClippedH->get_active());
} else {
- indclippeds->set_active(!indclippeds->get_active());
+ indClippedS->set_active(!indClippedS->get_active());
}
}
-void IndicateClippedPanel::buttonToggled ()
+void IndicateClippedPanel::toggleFocusMask ()
{
+ previewFocusMask->set_active(!previewFocusMask->get_active());
+}
+
+void IndicateClippedPanel::buttonToggled (Gtk::ToggleButton* tb)
+{
+
+ connFocusMask.block(true);
+ connClippedS.block(true);
+ connClippedH.block(true);
+
+ if (tb != previewFocusMask) {
+ previewFocusMask->set_active(false);
+ } else {
+ if (indClippedS->get_active()) {
+ indClippedS->set_active(false);
+ }
+ if (indClippedH->get_active()) {
+ indClippedH->set_active(false);
+ }
+ }
+
+ previewFocusMask->set_image(previewFocusMask->get_active() ? *iFon : *iFoff);
+
+ connFocusMask.block(false);
+ connClippedS.block(false);
+ connClippedH.block(false);
+
imageArea->queue_draw ();
// this will redraw the linked Before image area
@@ -80,3 +118,9 @@ void IndicateClippedPanel::buttonToggled ()
imageArea->iLinkedImageArea->queue_draw ();
}
}
+
+IndicateClippedPanel::~IndicateClippedPanel ()
+{
+ delete iFon;
+ delete iFoff;
+}
diff --git a/rtgui/indclippedpanel.h b/rtgui/indclippedpanel.h
index 3a6bc5296..1da4b61de 100644
--- a/rtgui/indclippedpanel.h
+++ b/rtgui/indclippedpanel.h
@@ -25,24 +25,34 @@ class IndicateClippedPanel : public Gtk::HBox
{
protected:
- Gtk::ToggleButton* indclippedh;
- Gtk::ToggleButton* indclippeds;
+ Gtk::Image* iFon, *iFoff;
+ Gtk::ToggleButton* previewFocusMask;
+ Gtk::ToggleButton* indClippedH;
+ Gtk::ToggleButton* indClippedS;
ImageArea* imageArea;
public:
- explicit IndicateClippedPanel (ImageArea* ia);
+ explicit IndicateClippedPanel(ImageArea* ia);
+ ~IndicateClippedPanel();
- void buttonToggled ();
+ void buttonToggled(Gtk::ToggleButton* tb);
+ void toggleClipped(bool highlights); // inverts a toggle programmatically
+ void toggleFocusMask();
- void toggleClipped (bool highlights); // inverts a toggle programmatically
+ sigc::connection connFocusMask, connClippedS, connClippedH;
- bool showClippedShadows ()
+
+ bool showFocusMask ()
{
- return indclippeds->get_active ();
+ return previewFocusMask->get_active ();
}
- bool showClippedHighlights ()
+ bool showClippedShadows()
{
- return indclippedh->get_active ();
+ return indClippedS->get_active();
+ }
+ bool showClippedHighlights()
+ {
+ return indClippedH->get_active();
}
};
diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc
index 7908b9133..36ef4ce8b 100644
--- a/rtgui/main-cli.cc
+++ b/rtgui/main-cli.cc
@@ -285,8 +285,7 @@ bool dontLoadCache ( int argc, char **argv )
#if ECLIPSE_ARGS
currParam = currParam.substr (1, currParam.length() - 2);
#endif
-
- if ( currParam.at (0) == '-' && currParam.at (1) == 'q' ) {
+ if ( currParam.length() > 1 && currParam.at(0) == '-' && currParam.at(1) == 'q' ) {
return true;
}
}
@@ -317,6 +316,9 @@ int processLineParams ( int argc, char **argv )
for ( int iArg = 1; iArg < argc; iArg++) {
Glib::ustring currParam (argv[iArg]);
+ if ( currParam.empty() ) {
+ continue;
+ }
#if ECLIPSE_ARGS
currParam = currParam.substr (1, currParam.length() - 2);
#endif
diff --git a/rtgui/main.cc b/rtgui/main.cc
index cd2e273f3..5a4f37259 100644
--- a/rtgui/main.cc
+++ b/rtgui/main.cc
@@ -123,6 +123,9 @@ int processLineParams ( int argc, char **argv )
{
for ( int iArg = 1; iArg < argc; iArg++) {
Glib::ustring currParam (argv[iArg]);
+ if ( currParam.empty() ) {
+ continue;
+ }
#if ECLIPSE_ARGS
currParam = currParam.substr (1, currParam.length() - 2);
#endif
@@ -698,4 +701,3 @@ int main (int argc, char **argv)
return ret;
}
-
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index f12515fce..3b497de4a 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -1509,7 +1509,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (labCurve.contrast) {
- toEdit.labCurve.contrast = dontforceSet && options.baBehav[ADDSET_LC_CONTRAST] ? toEdit.labCurve.contrast + mods.labCurve.contrast : mods.labCurve.contrast;
+ toEdit.labCurve.contrast = dontforceSet && options.baBehav[ADDSET_LC_CONTRAST] ? toEdit.labCurve.contrast + mods.labCurve.contrast : mods.labCurve.contrast;
}
if (labCurve.chromaticity) {
@@ -1517,15 +1517,15 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (labCurve.avoidcolorshift) {
- toEdit.labCurve.avoidcolorshift = mods.labCurve.avoidcolorshift;
+ toEdit.labCurve.avoidcolorshift = mods.labCurve.avoidcolorshift;
}
if (labCurve.rstprotection) {
- toEdit.labCurve.rstprotection = mods.labCurve.rstprotection;
+ toEdit.labCurve.rstprotection = mods.labCurve.rstprotection;
}
if (labCurve.lcredsk) {
- toEdit.labCurve.lcredsk = mods.labCurve.lcredsk;
+ toEdit.labCurve.lcredsk = mods.labCurve.lcredsk;
}
if (rgbCurves.lumamode) {
@@ -1545,11 +1545,11 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (colorToning.enabled) {
- toEdit.colorToning.enabled = mods.colorToning.enabled;
+ toEdit.colorToning.enabled = mods.colorToning.enabled;
}
if (colorToning.twocolor) {
- toEdit.colorToning.twocolor = mods.colorToning.twocolor;
+ toEdit.colorToning.twocolor = mods.colorToning.twocolor;
}
if (colorToning.opacityCurve) {
@@ -1573,19 +1573,19 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (colorToning.autosat) {
- toEdit.colorToning.autosat = mods.colorToning.autosat;
+ toEdit.colorToning.autosat = mods.colorToning.autosat;
}
if (colorToning.saturatedopacity) {
- toEdit.colorToning.saturatedOpacity = dontforceSet && options.baBehav[ADDSET_COLORTONING_SATOPACITY] ? toEdit.colorToning.saturatedOpacity + mods.colorToning.saturatedOpacity : mods.colorToning.saturatedOpacity;
+ toEdit.colorToning.saturatedOpacity = dontforceSet && options.baBehav[ADDSET_COLORTONING_SATOPACITY] ? toEdit.colorToning.saturatedOpacity + mods.colorToning.saturatedOpacity : mods.colorToning.saturatedOpacity;
}
if (colorToning.strength) {
- toEdit.colorToning.strength = dontforceSet && options.baBehav[ADDSET_COLORTONING_STRENGTH] ? toEdit.colorToning.strength + mods.colorToning.strength : mods.colorToning.strength;
+ toEdit.colorToning.strength = dontforceSet && options.baBehav[ADDSET_COLORTONING_STRENGTH] ? toEdit.colorToning.strength + mods.colorToning.strength : mods.colorToning.strength;
}
if (colorToning.shadowsColSat) {
- toEdit.colorToning.shadowsColSat = mods.colorToning.shadowsColSat;
+ toEdit.colorToning.shadowsColSat = mods.colorToning.shadowsColSat;
}
if (colorToning.hlColSat) {
@@ -1693,7 +1693,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (sharpening.radius) {
- toEdit.sharpening.radius = mods.sharpening.radius;
+ toEdit.sharpening.radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.radius + mods.sharpening.radius : mods.sharpening.radius;
}
if (sharpening.amount) {
@@ -1709,19 +1709,19 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (sharpening.edges_radius) {
- toEdit.sharpening.edges_radius = mods.sharpening.edges_radius;
+ toEdit.sharpening.edges_radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.edges_radius + mods.sharpening.edges_radius: mods.sharpening.edges_radius;
}
if (sharpening.edges_tolerance) {
- toEdit.sharpening.edges_tolerance = mods.sharpening.edges_tolerance;
+ toEdit.sharpening.edges_tolerance = dontforceSet && options.baBehav[ADDSET_SHARP_EDGETOL] ? toEdit.sharpening.edges_tolerance + mods.sharpening.edges_tolerance : mods.sharpening.edges_tolerance;
}
if (sharpening.halocontrol) {
- toEdit.sharpening.halocontrol = mods.sharpening.halocontrol;
+ toEdit.sharpening.halocontrol = mods.sharpening.halocontrol;
}
if (sharpening.halocontrol_amount) {
- toEdit.sharpening.halocontrol_amount = mods.sharpening.halocontrol_amount;
+ toEdit.sharpening.halocontrol_amount = dontforceSet && options.baBehav[ADDSET_SHARP_HALOCTRL] ? toEdit.sharpening.halocontrol_amount + mods.sharpening.halocontrol_amount : mods.sharpening.halocontrol_amount;
}
if (sharpening.method) {
@@ -1729,19 +1729,19 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (sharpening.deconvamount) {
- toEdit.sharpening.deconvamount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.deconvamount + mods.sharpening.deconvamount : mods.sharpening.deconvamount;
+ toEdit.sharpening.deconvamount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.deconvamount + mods.sharpening.deconvamount : mods.sharpening.deconvamount;
}
if (sharpening.deconvradius) {
- toEdit.sharpening.deconvradius = mods.sharpening.deconvradius;
+ toEdit.sharpening.deconvradius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.deconvradius + mods.sharpening.deconvradius : mods.sharpening.deconvradius;
}
if (sharpening.deconviter) {
- toEdit.sharpening.deconviter = mods.sharpening.deconviter;
+ toEdit.sharpening.deconviter = dontforceSet && options.baBehav[ADDSET_SHARP_ITER] ? toEdit.sharpening.deconviter + mods.sharpening.deconviter : mods.sharpening.deconviter;
}
if (sharpening.deconvdamping) {
- toEdit.sharpening.deconvdamping = mods.sharpening.deconvdamping;
+ toEdit.sharpening.deconvdamping = dontforceSet && options.baBehav[ADDSET_SHARP_DAMPING] ? toEdit.sharpening.deconvdamping + mods.sharpening.deconvdamping : mods.sharpening.deconvdamping;
}
if (prsharpening.enabled) {
@@ -1749,7 +1749,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (prsharpening.radius) {
- toEdit.prsharpening.radius = mods.prsharpening.radius;
+ toEdit.prsharpening.radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.prsharpening.radius + mods.prsharpening.radius : mods.prsharpening.radius;
}
if (prsharpening.amount) {
@@ -1765,11 +1765,11 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (prsharpening.edges_radius) {
- toEdit.prsharpening.edges_radius = mods.prsharpening.edges_radius;
+ toEdit.prsharpening.edges_radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.prsharpening.edges_radius + mods.prsharpening.edges_radius : mods.prsharpening.edges_radius;
}
if (prsharpening.edges_tolerance) {
- toEdit.prsharpening.edges_tolerance = mods.prsharpening.edges_tolerance;
+ toEdit.prsharpening.edges_tolerance = dontforceSet && options.baBehav[ADDSET_SHARP_EDGETOL] ? toEdit.prsharpening.edges_tolerance + mods.prsharpening.edges_tolerance : mods.prsharpening.edges_tolerance;
}
if (prsharpening.halocontrol) {
@@ -1777,7 +1777,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (prsharpening.halocontrol_amount) {
- toEdit.prsharpening.halocontrol_amount = mods.prsharpening.halocontrol_amount;
+ toEdit.prsharpening.halocontrol_amount = dontforceSet && options.baBehav[ADDSET_SHARP_HALOCTRL] ? toEdit.prsharpening.halocontrol_amount + mods.prsharpening.halocontrol_amount : mods.prsharpening.halocontrol_amount;
}
if (prsharpening.method) {
@@ -1789,15 +1789,15 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (prsharpening.deconvradius) {
- toEdit.prsharpening.deconvradius = mods.prsharpening.deconvradius;
+ toEdit.prsharpening.deconvradius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.prsharpening.deconvradius + mods.prsharpening.deconvradius : mods.prsharpening.deconvradius;
}
if (prsharpening.deconviter) {
- toEdit.prsharpening.deconviter = mods.prsharpening.deconviter;
+ toEdit.prsharpening.deconviter = dontforceSet && options.baBehav[ADDSET_SHARP_ITER] ? toEdit.prsharpening.deconviter + mods.prsharpening.deconviter : mods.prsharpening.deconviter;
}
if (prsharpening.deconvdamping) {
- toEdit.prsharpening.deconvdamping = mods.prsharpening.deconvdamping;
+ toEdit.prsharpening.deconvdamping = dontforceSet && options.baBehav[ADDSET_SHARP_DAMPING] ? toEdit.prsharpening.deconvdamping + mods.prsharpening.deconvdamping : mods.prsharpening.deconvdamping;
}
if (vibrance.enabled) {
@@ -1937,7 +1937,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (colorappearance.adapscen) {
- toEdit.colorappearance.adapscen = mods.colorappearance.adapscen;
+ toEdit.colorappearance.adapscen = dontforceSet && options.baBehav[ADDSET_CAT_ADAPTSCENE] ? toEdit.colorappearance.adapscen + mods.colorappearance.adapscen : mods.colorappearance.adapscen;
}
if (colorappearance.autoybscen) {
@@ -2272,23 +2272,23 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (gradient.degree) {
- toEdit.gradient.degree = dontforceSet && options.baBehav[ADDSET_GRADIENT_DEGREE] ? toEdit.gradient.degree + mods.gradient.degree : mods.gradient.degree;
+ toEdit.gradient.degree = dontforceSet && options.baBehav[ADDSET_GRADIENT_DEGREE] ? toEdit.gradient.degree + mods.gradient.degree : mods.gradient.degree;
}
if (gradient.feather) {
- toEdit.gradient.feather = mods.gradient.feather;
+ toEdit.gradient.feather = dontforceSet && options.baBehav[ADDSET_GRADIENT_FEATHER] ? toEdit.gradient.feather + mods.gradient.feather : mods.gradient.feather;
}
if (gradient.strength) {
- toEdit.gradient.strength = mods.gradient.strength;
+ toEdit.gradient.strength = dontforceSet && options.baBehav[ADDSET_GRADIENT_STRENGTH] ? toEdit.gradient.strength + mods.gradient.strength : mods.gradient.strength;
}
if (gradient.centerX) {
- toEdit.gradient.centerX = mods.gradient.centerX;
+ toEdit.gradient.centerX = dontforceSet && options.baBehav[ADDSET_GRADIENT_CENTER] ? toEdit.gradient.centerX + mods.gradient.centerX : mods.gradient.centerX;
}
if (gradient.centerY) {
- toEdit.gradient.centerY = mods.gradient.centerY;
+ toEdit.gradient.centerY = dontforceSet && options.baBehav[ADDSET_GRADIENT_CENTER] ? toEdit.gradient.centerY + mods.gradient.centerY : mods.gradient.centerY;
}
if (locallab.enabled) {
@@ -2655,15 +2655,15 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (pcvignette.strength) {
- toEdit.pcvignette.strength = mods.pcvignette.strength;
+ toEdit.pcvignette.strength = dontforceSet && options.baBehav[ADDSET_PCVIGNETTE_STRENGTH] ? toEdit.pcvignette.strength + mods.pcvignette.strength : mods.pcvignette.strength;
}
if (pcvignette.feather) {
- toEdit.pcvignette.feather = mods.pcvignette.feather;
+ toEdit.pcvignette.feather = dontforceSet && options.baBehav[ADDSET_PCVIGNETTE_FEATHER] ? toEdit.pcvignette.feather + mods.pcvignette.feather : mods.pcvignette.feather;
}
if (pcvignette.roundness) {
- toEdit.pcvignette.roundness = mods.pcvignette.roundness;
+ toEdit.pcvignette.roundness = dontforceSet && options.baBehav[ADDSET_PCVIGNETTE_ROUNDNESS] ? toEdit.pcvignette.roundness + mods.pcvignette.roundness : mods.pcvignette.roundness;
}
if (cacorrection.red) {
@@ -2679,19 +2679,19 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (vignetting.radius) {
- toEdit.vignetting.radius = mods.vignetting.radius;
+ toEdit.vignetting.radius = dontforceSet && options.baBehav[ADDSET_VIGN_RADIUS] ? toEdit.vignetting.radius + mods.vignetting.radius : mods.vignetting.radius;
}
if (vignetting.strength) {
- toEdit.vignetting.strength = mods.vignetting.strength;
+ toEdit.vignetting.strength = dontforceSet && options.baBehav[ADDSET_VIGN_STRENGTH] ? toEdit.vignetting.strength + mods.vignetting.strength : mods.vignetting.strength;
}
if (vignetting.centerX) {
- toEdit.vignetting.centerX = mods.vignetting.centerX;
+ toEdit.vignetting.centerX = dontforceSet && options.baBehav[ADDSET_VIGN_CENTER] ? toEdit.vignetting.centerX + mods.vignetting.centerX : mods.vignetting.centerX;
}
if (vignetting.centerY) {
- toEdit.vignetting.centerY = mods.vignetting.centerY;
+ toEdit.vignetting.centerY = dontforceSet && options.baBehav[ADDSET_VIGN_CENTER] ? toEdit.vignetting.centerY + mods.vignetting.centerY : mods.vignetting.centerY;
}
for (int i = 0; i < 3; i++) {
@@ -2801,7 +2801,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (resize.scale) {
- toEdit.resize.scale = mods.resize.scale;
+ toEdit.resize.scale = dontforceSet && options.baBehav[ADDSET_RESIZE_SCALE] ? toEdit.resize.scale + mods.resize.scale : mods.resize.scale;
}
if (resize.appliesTo) {
diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc
index 3576a0f7e..9401c5b6b 100644
--- a/rtgui/preferences.cc
+++ b/rtgui/preferences.cc
@@ -210,9 +210,12 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
appendBehavList (mi, M ("TP_LABCURVE_CONTRAST"), ADDSET_LC_CONTRAST, false);
appendBehavList (mi, M ("TP_LABCURVE_CHROMATICITY"), ADDSET_LC_CHROMATICITY, false);
- mi = behModel->append ();
+ mi = behModel->append (); // Used for both Resize and Post-Resize sharpening
mi->set_value (behavColumns.label, M ("TP_SHARPENING_LABEL"));
+ appendBehavList (mi, M ("TP_SHARPENING_RADIUS"), ADDSET_SHARP_RADIUS, false);
appendBehavList (mi, M ("TP_SHARPENING_AMOUNT"), ADDSET_SHARP_AMOUNT, false);
+ appendBehavList (mi, M ("TP_SHARPENING_RLD_DAMPING"), ADDSET_SHARP_DAMPING, false);
+ appendBehavList (mi, M ("TP_SHARPENING_RLD_ITERATIONS"), ADDSET_SHARP_ITER, false);
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_SHARPENEDGE_LABEL"));
@@ -293,6 +296,11 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
mi->set_value (behavColumns.label, M ("TP_ROTATE_LABEL"));
appendBehavList (mi, M ("TP_ROTATE_DEGREE"), ADDSET_ROTATE_DEGREE, false);
+ mi = behModel->append ();
+ mi->set_value (behavColumns.label, M ("TP_RESIZE_LABEL"));
+ appendBehavList (mi, M ("TP_RESIZE_SCALE"), ADDSET_RESIZE_SCALE, true);
+
+
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_DISTORTION_LABEL"));
appendBehavList (mi, M ("TP_DISTORTION_AMOUNT"), ADDSET_DIST_AMOUNT, false);
diff --git a/rtgui/previewmodepanel.cc b/rtgui/previewmodepanel.cc
index 50beb8b66..60b450e4a 100644
--- a/rtgui/previewmodepanel.cc
+++ b/rtgui/previewmodepanel.cc
@@ -28,19 +28,19 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia)
iG = new RTImage ("previewmodeG-on.png");
iB = new RTImage ("previewmodeB-on.png");
iL = new RTImage ("previewmodeL-on.png");
- iF = new RTImage ("previewmodeF-on.png");
iBC0 = new RTImage ("previewmodeBC0-on.png");
iBC1 = new RTImage ("previewmodeBC1-on.png");
iBC2 = new RTImage ("previewmodeBC2-on.png");
+ iBC3 = new RTImage ("previewmodeBC3-on.png");
igR = new RTImage ("previewmodeR-off.png");
igG = new RTImage ("previewmodeG-off.png");
igB = new RTImage ("previewmodeB-off.png");
igL = new RTImage ("previewmodeL-off.png");
- igF = new RTImage ("previewmodeF-off.png");
igBC0 = new RTImage ("previewmodeBC0-off.png");
igBC1 = new RTImage ("previewmodeBC1-off.png");
igBC2 = new RTImage ("previewmodeBC2-off.png");
+ igBC3 = new RTImage ("previewmodeBC3-off.png");
backColor0 = Gtk::manage (new Gtk::ToggleButton ());
backColor0->set_relief(Gtk::RELIEF_NONE);
@@ -52,6 +52,11 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia)
backColor1->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR1"));
backColor1->set_image(options.bgcolor == 1 ? *iBC1 : *igBC1);
+ backColor3 = Gtk::manage (new Gtk::ToggleButton ());
+ backColor3->set_relief(Gtk::RELIEF_NONE);
+ backColor3->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR3"));
+ backColor3->set_image(options.bgcolor == 3 ? *iBC3 : *igBC3);
+
backColor2 = Gtk::manage (new Gtk::ToggleButton ());
backColor2->set_relief(Gtk::RELIEF_NONE);
backColor2->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR2"));
@@ -77,42 +82,37 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia)
previewL->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWL"));
previewL->set_image(*igL);
- previewFocusMask = Gtk::manage (new Gtk::ToggleButton ());
- previewFocusMask->set_relief(Gtk::RELIEF_NONE);
- previewFocusMask->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWFOCUSMASK"));
- previewFocusMask->set_image(*igF);
-
previewR->set_active (false);
previewG->set_active (false);
previewB->set_active (false);
previewL->set_active (false);
- previewFocusMask->set_active (false);
backColor0->set_active (options.bgcolor == 0);
backColor1->set_active (options.bgcolor == 1);
backColor2->set_active (options.bgcolor == 2);
+ backColor3->set_active (options.bgcolor == 3);
- vbbackColor = Gtk::manage (new Gtk::VBox ());
- vbbackColor->pack_start (*backColor0, Gtk::PACK_SHRINK, 0);
- vbbackColor->pack_start (*backColor1, Gtk::PACK_SHRINK, 0);
- vbbackColor->pack_start (*backColor2, Gtk::PACK_SHRINK, 0);
- pack_start (*vbbackColor, Gtk::PACK_SHRINK, 0);
+ pack_start (*backColor0, Gtk::PACK_SHRINK, 0);
+ pack_start (*backColor1, Gtk::PACK_SHRINK, 0);
+ pack_start (*backColor3, Gtk::PACK_SHRINK, 0);
+ pack_start (*backColor2, Gtk::PACK_SHRINK, 0);
+
+ pack_start (*Gtk::manage (new Gtk::VSeparator ()), Gtk::PACK_SHRINK, 2);
pack_start (*previewR, Gtk::PACK_SHRINK, 0);
pack_start (*previewG, Gtk::PACK_SHRINK, 0);
pack_start (*previewB, Gtk::PACK_SHRINK, 0);
pack_start (*previewL, Gtk::PACK_SHRINK, 0);
- pack_start (*previewFocusMask, Gtk::PACK_SHRINK, 0);
connR = previewR->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled), previewR) );
connG = previewG->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled), previewG) );
connB = previewB->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled), previewB) );
connL = previewL->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled), previewL) );
- connFocusMask = previewFocusMask->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled), previewFocusMask) );
connbackColor0 = backColor0->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor0) );
connbackColor1 = backColor1->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor1) );
connbackColor2 = backColor2->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor2) );
+ connbackColor3 = backColor3->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor3) );
//show_all ();
}
@@ -123,18 +123,18 @@ PreviewModePanel::~PreviewModePanel ()
delete iG;
delete iB;
delete iL;
- delete iF;
delete iBC0;
delete iBC1;
delete iBC2;
+ delete iBC3;
delete igR;
delete igG;
delete igB;
delete igL;
- delete igF;
delete igBC0;
delete igBC1;
delete igBC2;
+ delete igBC3;
}
//toggle Functions below are for shortcuts
void PreviewModePanel::toggleR ()
@@ -153,10 +153,6 @@ void PreviewModePanel::toggleL ()
{
previewL->set_active(!previewL->get_active());
}
-void PreviewModePanel::toggleFocusMask ()
-{
- previewFocusMask->set_active(!previewFocusMask->get_active());
-}
void PreviewModePanel::togglebackColor0 ()
{
@@ -170,6 +166,10 @@ void PreviewModePanel::togglebackColor2 ()
{
backColor2->set_active(!backColor2->get_active());
}
+void PreviewModePanel::togglebackColor3 ()
+{
+ backColor3->set_active(!backColor3->get_active());
+}
void PreviewModePanel::buttonToggled (Gtk::ToggleButton* tbpreview)
{
@@ -178,7 +178,6 @@ void PreviewModePanel::buttonToggled (Gtk::ToggleButton* tbpreview)
connG.block(true);
connB.block(true);
connL.block(true);
- connFocusMask.block(true);
// control state of the buttons
// only 0 or 1 button at a time can remain pressed
@@ -198,22 +197,16 @@ void PreviewModePanel::buttonToggled (Gtk::ToggleButton* tbpreview)
previewL->set_active(false);
}
- if (tbpreview != previewFocusMask) {
- previewFocusMask->set_active(false);
- }
-
// set image based on button's state
previewR->set_image(previewR->get_active() ? *iR : *igR);
previewG->set_image(previewG->get_active() ? *iG : *igG);
previewB->set_image(previewB->get_active() ? *iB : *igB);
previewL->set_image(previewL->get_active() ? *iL : *igL);
- previewFocusMask->set_image(previewFocusMask->get_active() ? *iF : *igF);
connR.block(false);
connG.block(false);
connB.block(false);
connL.block(false);
- connFocusMask.block(false);
imageArea->queue_draw ();
@@ -240,6 +233,10 @@ int PreviewModePanel::GetbackColor()
backColor = 2;
}
+ if (backColor3->get_active ()) {
+ backColor = 3;
+ }
+
return backColor;
}
@@ -250,6 +247,8 @@ void PreviewModePanel::togglebackColor()
if(backColor == 0) {
togglebackColor1();
} else if(backColor == 1) {
+ togglebackColor3();
+ } else if(backColor == 3) {
togglebackColor2();
} else {
togglebackColor0();
@@ -262,6 +261,7 @@ void PreviewModePanel::buttonToggled_backColor (Gtk::ToggleButton* tbbackColor)
connbackColor0.block(true);
connbackColor1.block(true);
connbackColor2.block(true);
+ connbackColor3.block(true);
// control the state of the buttons
// Exactly 1 button at a time must remain pressed
@@ -277,6 +277,10 @@ void PreviewModePanel::buttonToggled_backColor (Gtk::ToggleButton* tbbackColor)
backColor2->set_active(true);
}
+ if (tbbackColor == backColor3 && !backColor3->get_active()) {
+ backColor3->set_active(true);
+ }
+
if (tbbackColor != backColor0) {
backColor0->set_active(false);
}
@@ -289,14 +293,20 @@ void PreviewModePanel::buttonToggled_backColor (Gtk::ToggleButton* tbbackColor)
backColor2->set_active(false);
}
+ if (tbbackColor != backColor3) {
+ backColor3->set_active(false);
+ }
+
// set image based on button's state
backColor0->set_image(backColor0->get_active() ? *iBC0 : *igBC0);
backColor1->set_image(backColor1->get_active() ? *iBC1 : *igBC1);
backColor2->set_image(backColor2->get_active() ? *iBC2 : *igBC2);
+ backColor3->set_image(backColor3->get_active() ? *iBC3 : *igBC3);
connbackColor0.block(false);
connbackColor1.block(false);
connbackColor2.block(false);
+ connbackColor3.block(false);
//TODO not sure if queue_draw is necessary, but will need to reach to backColor of the Before view
imageArea->queue_draw ();
diff --git a/rtgui/previewmodepanel.h b/rtgui/previewmodepanel.h
index d3bf3c8e4..1d7b99625 100644
--- a/rtgui/previewmodepanel.h
+++ b/rtgui/previewmodepanel.h
@@ -30,21 +30,20 @@ protected:
Gtk::ToggleButton* previewG;
Gtk::ToggleButton* previewB;
Gtk::ToggleButton* previewL;
- Gtk::ToggleButton* previewFocusMask;
Gtk::ToggleButton* backColor0;
Gtk::ToggleButton* backColor1;
Gtk::ToggleButton* backColor2;
- Gtk::VBox* vbbackColor;
+ Gtk::ToggleButton* backColor3;
ImageArea* imageArea;
Gtk::Image* iR, *igR;
Gtk::Image* iG, *igG;
Gtk::Image* iB, *igB;
Gtk::Image* iL, *igL;
- Gtk::Image* iF, *igF;
Gtk::Image* iBC0, *igBC0;
Gtk::Image* iBC1, *igBC1;
Gtk::Image* iBC2, *igBC2;
+ Gtk::Image* iBC3, *igBC3;
public:
explicit PreviewModePanel (ImageArea* ia);
@@ -54,13 +53,13 @@ public:
void toggleG ();
void toggleB ();
void toggleL ();
- void toggleFocusMask ();
void togglebackColor0();
void togglebackColor1();
void togglebackColor2();
+ void togglebackColor3();
void togglebackColor();
- sigc::connection connR, connB, connG, connL, connFocusMask, connbackColor0, connbackColor1, connbackColor2;
+ sigc::connection connR, connB, connG, connL, connbackColor0, connbackColor1, connbackColor2, connbackColor3;
void buttonToggled(Gtk::ToggleButton* tbpreview);
void buttonToggled_backColor(Gtk::ToggleButton* tbbackColor);
@@ -81,10 +80,6 @@ public:
{
return previewL->get_active ();
}
- bool showFocusMask ()
- {
- return previewFocusMask->get_active ();
- }
int GetbackColor();
};
diff --git a/rtgui/prsharpening.cc b/rtgui/prsharpening.cc
index 5e79d078a..94034b471 100644
--- a/rtgui/prsharpening.cc
+++ b/rtgui/prsharpening.cc
@@ -240,20 +240,20 @@ void PrSharpening::write (ProcParams* pp, ParamsEdited* pedited)
}
if (pedited) {
- pedited->prsharpening.amount = amount->getEditedState ();
- pedited->prsharpening.radius = radius->getEditedState ();
- pedited->prsharpening.threshold = threshold->getEditedState ();
- pedited->prsharpening.edges_radius = eradius->getEditedState ();
- pedited->prsharpening.edges_tolerance = etolerance->getEditedState ();
+ pedited->prsharpening.amount = amount->getEditedState ();
+ pedited->prsharpening.radius = radius->getEditedState ();
+ pedited->prsharpening.threshold = threshold->getEditedState ();
+ pedited->prsharpening.edges_radius = eradius->getEditedState ();
+ pedited->prsharpening.edges_tolerance = etolerance->getEditedState ();
pedited->prsharpening.halocontrol_amount = hcamount->getEditedState ();
- pedited->prsharpening.deconvamount = damount->getEditedState ();
- pedited->prsharpening.deconvradius = dradius->getEditedState ();
- pedited->prsharpening.deconviter = diter->getEditedState ();
- pedited->prsharpening.deconvdamping = ddamping->getEditedState ();
- pedited->prsharpening.method = method->get_active_row_number() != 2;
- pedited->prsharpening.halocontrol = !halocontrol->get_inconsistent();
- pedited->prsharpening.edgesonly = !edgesonly->get_inconsistent();
- pedited->prsharpening.enabled = !get_inconsistent();
+ pedited->prsharpening.deconvamount = damount->getEditedState ();
+ pedited->prsharpening.deconvradius = dradius->getEditedState ();
+ pedited->prsharpening.deconviter = diter->getEditedState ();
+ pedited->prsharpening.deconvdamping = ddamping->getEditedState ();
+ pedited->prsharpening.method = method->get_active_row_number() != 2;
+ pedited->prsharpening.halocontrol = !halocontrol->get_inconsistent();
+ pedited->prsharpening.edgesonly = !edgesonly->get_inconsistent();
+ pedited->prsharpening.enabled = !get_inconsistent();
}
}
@@ -420,13 +420,15 @@ void PrSharpening::halocontrol_toggled ()
void PrSharpening::method_changed ()
{
- removeIfThere (this, usm, false);
- removeIfThere (this, rld, false);
+ if (!batchMode) {
+ removeIfThere (this, usm, false);
+ removeIfThere (this, rld, false);
- if (method->get_active_row_number() == 0) {
- pack_start (*usm);
- } else if (method->get_active_row_number() == 1) {
- pack_start (*rld);
+ if (method->get_active_row_number() == 0) {
+ pack_start (*usm);
+ } else if (method->get_active_row_number() == 1) {
+ pack_start (*rld);
+ }
}
if (listener && (multiImage || getEnabled()) ) {
@@ -453,6 +455,7 @@ void PrSharpening::setBatchMode (bool batchMode)
hcbin->pack_start (*hcbox);
removeIfThere (edgebin, edgebox, false);
edgebin->pack_start (*edgebox);
+ pack_start (*rld);
radius->showEditedCB ();
amount->showEditedCB ();
@@ -467,16 +470,30 @@ void PrSharpening::setBatchMode (bool batchMode)
method->append (M("GENERAL_UNCHANGED"));
}
-void PrSharpening::setAdjusterBehavior (bool amountadd)
+void PrSharpening::setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd)
{
+ radius->setAddMode(radiusadd);
+ dradius->setAddMode(radiusadd);
amount->setAddMode(amountadd);
damount->setAddMode(amountadd);
+ ddamping->setAddMode(dampingadd);
+ diter->setAddMode(iteradd);
+ eradius->setAddMode(radiusadd);
+ etolerance->setAddMode(edgetoladd);
+ hcamount->setAddMode(haloctrladd);
}
void PrSharpening::trimValues (rtengine::procparams::ProcParams* pp)
{
+ radius->trimValue(pp->prsharpening.radius);
+ dradius->trimValue(pp->prsharpening.deconvradius);
amount->trimValue(pp->prsharpening.amount);
damount->trimValue(pp->prsharpening.deconvamount);
+ ddamping->trimValue(pp->prsharpening.deconvdamping);
+ diter->trimValue(pp->prsharpening.deconviter);
+ eradius->trimValue(pp->prsharpening.edges_radius);
+ etolerance->trimValue(pp->prsharpening.edges_tolerance);
+ hcamount->trimValue(pp->prsharpening.halocontrol_amount);
}
diff --git a/rtgui/prsharpening.h b/rtgui/prsharpening.h
index 9bf90cc6c..50dc91258 100644
--- a/rtgui/prsharpening.h
+++ b/rtgui/prsharpening.h
@@ -70,7 +70,7 @@ public:
void method_changed ();
void adjusterChanged (ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
- void setAdjusterBehavior (bool amountadd);
+ void setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
diff --git a/rtgui/resize.cc b/rtgui/resize.cc
index 1a87bbe8c..971901b84 100644
--- a/rtgui/resize.cc
+++ b/rtgui/resize.cc
@@ -620,3 +620,14 @@ void Resize::enabledChanged ()
}
}
+void Resize::setAdjusterBehavior (bool scaleadd)
+{
+
+ scale->setAddMode(scaleadd);
+}
+
+void Resize::trimValues (rtengine::procparams::ProcParams* pp)
+{
+
+ scale->trimValue(pp->resize.scale);
+}
diff --git a/rtgui/resize.h b/rtgui/resize.h
index acba5b478..2b2c2ea26 100644
--- a/rtgui/resize.h
+++ b/rtgui/resize.h
@@ -57,6 +57,9 @@ public:
void setDimensions ();
void enabledChanged ();
+ void setAdjusterBehavior (bool scaleadd);
+ void trimValues (rtengine::procparams::ProcParams* pp);
+
private:
void fitBoxScale ();
int getComputedWidth ();
diff --git a/rtgui/sharpening.cc b/rtgui/sharpening.cc
index 72f4c62d8..9abfc6de8 100644
--- a/rtgui/sharpening.cc
+++ b/rtgui/sharpening.cc
@@ -423,13 +423,15 @@ void Sharpening::halocontrol_toggled ()
void Sharpening::method_changed ()
{
- removeIfThere (this, usm, false);
- removeIfThere (this, rld, false);
+ if (!batchMode) {
+ removeIfThere (this, usm, false);
+ removeIfThere (this, rld, false);
- if (method->get_active_row_number() == 0) {
- pack_start (*usm);
- } else if (method->get_active_row_number() == 1) {
- pack_start (*rld);
+ if (method->get_active_row_number() == 0) {
+ pack_start (*usm);
+ } else if (method->get_active_row_number() == 1) {
+ pack_start (*rld);
+ }
}
if (listener && (multiImage || getEnabled()) ) {
@@ -447,6 +449,7 @@ void Sharpening::setBatchMode (bool batchMode)
hcbin->pack_start (*hcbox);
removeIfThere (edgebin, edgebox, false);
edgebin->pack_start (*edgebox);
+ pack_start (*rld);
radius->showEditedCB ();
amount->showEditedCB ();
@@ -461,16 +464,30 @@ void Sharpening::setBatchMode (bool batchMode)
method->append (M("GENERAL_UNCHANGED"));
}
-void Sharpening::setAdjusterBehavior (bool amountadd)
+void Sharpening::setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd)
{
+ radius->setAddMode(radiusadd);
+ dradius->setAddMode(radiusadd);
amount->setAddMode(amountadd);
damount->setAddMode(amountadd);
+ ddamping->setAddMode(dampingadd);
+ diter->setAddMode(iteradd);
+ eradius->setAddMode(radiusadd);
+ etolerance->setAddMode(edgetoladd);
+ hcamount->setAddMode(haloctrladd);
}
void Sharpening::trimValues (rtengine::procparams::ProcParams* pp)
{
+ radius->trimValue(pp->sharpening.radius);
+ dradius->trimValue(pp->sharpening.deconvradius);
amount->trimValue(pp->sharpening.amount);
damount->trimValue(pp->sharpening.deconvamount);
+ ddamping->trimValue(pp->sharpening.deconvdamping);
+ diter->trimValue(pp->sharpening.deconviter);
+ eradius->trimValue(pp->sharpening.edges_radius);
+ etolerance->trimValue(pp->sharpening.edges_tolerance);
+ hcamount->trimValue(pp->sharpening.halocontrol_amount);
}
diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h
index 45c2d9fe1..2901036f5 100644
--- a/rtgui/sharpening.h
+++ b/rtgui/sharpening.h
@@ -70,7 +70,7 @@ public:
void halocontrol_toggled ();
void method_changed ();
- void setAdjusterBehavior (bool amountadd);
+ void setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc
index 366d9c5ce..769838c80 100644
--- a/rtgui/toolpanelcoord.cc
+++ b/rtgui/toolpanelcoord.cc
@@ -61,7 +61,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc (nullptr), hasChanged (false
colorappearance = Gtk::manage (new ColorAppearance ());
whitebalance = Gtk::manage (new WhiteBalance ());
vignetting = Gtk::manage (new Vignetting ());
- retinex = Gtk::manage (new Retinex ());
+ retinex = Gtk::manage (new Retinex ());
gradient = Gtk::manage (new Gradient ());
locallab = Gtk::manage (new Locallab ());
pcvignette = Gtk::manage (new PCVignette ());
diff --git a/tools/source_icons/scalable/previewmodeB-off.file b/tools/source_icons/scalable/previewmodeB-off.file
new file mode 100644
index 000000000..78d96d991
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeB-off.file
@@ -0,0 +1 @@
+previewmodeB-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeB-off.svg b/tools/source_icons/scalable/previewmodeB-off.svg
new file mode 100644
index 000000000..2566c37cf
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeB-off.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeB-on.file b/tools/source_icons/scalable/previewmodeB-on.file
new file mode 100644
index 000000000..045f8a31b
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeB-on.file
@@ -0,0 +1 @@
+previewmodeB-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeB-on.svg b/tools/source_icons/scalable/previewmodeB-on.svg
new file mode 100644
index 000000000..cc3faa733
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeB-on.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC0-off.file b/tools/source_icons/scalable/previewmodeBC0-off.file
new file mode 100644
index 000000000..baf7ab70a
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC0-off.file
@@ -0,0 +1 @@
+previewmodeBC0-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC0-off.svg b/tools/source_icons/scalable/previewmodeBC0-off.svg
new file mode 100644
index 000000000..7c29636e9
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC0-off.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC0-on.file b/tools/source_icons/scalable/previewmodeBC0-on.file
new file mode 100644
index 000000000..033a88501
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC0-on.file
@@ -0,0 +1 @@
+previewmodeBC0-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC0-on.svg b/tools/source_icons/scalable/previewmodeBC0-on.svg
new file mode 100644
index 000000000..7613279ec
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC0-on.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC1-off.file b/tools/source_icons/scalable/previewmodeBC1-off.file
new file mode 100644
index 000000000..db5e6f2e2
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC1-off.file
@@ -0,0 +1 @@
+previewmodeBC1-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC1-off.svg b/tools/source_icons/scalable/previewmodeBC1-off.svg
new file mode 100644
index 000000000..1e7d3e669
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC1-off.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC1-on.file b/tools/source_icons/scalable/previewmodeBC1-on.file
new file mode 100644
index 000000000..1de2f604d
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC1-on.file
@@ -0,0 +1 @@
+previewmodeBC1-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC1-on.svg b/tools/source_icons/scalable/previewmodeBC1-on.svg
new file mode 100644
index 000000000..b4b21cd85
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC1-on.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC2-off.file b/tools/source_icons/scalable/previewmodeBC2-off.file
new file mode 100644
index 000000000..6073f7aac
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC2-off.file
@@ -0,0 +1 @@
+previewmodeBC2-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC2-off.svg b/tools/source_icons/scalable/previewmodeBC2-off.svg
new file mode 100644
index 000000000..e9f4e10f2
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC2-off.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC2-on.file b/tools/source_icons/scalable/previewmodeBC2-on.file
new file mode 100644
index 000000000..18229b31d
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC2-on.file
@@ -0,0 +1 @@
+previewmodeBC2-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC2-on.svg b/tools/source_icons/scalable/previewmodeBC2-on.svg
new file mode 100644
index 000000000..582b69fd8
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC2-on.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC3-off.file b/tools/source_icons/scalable/previewmodeBC3-off.file
new file mode 100644
index 000000000..1538e97f1
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC3-off.file
@@ -0,0 +1 @@
+previewmodeBC3-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC3-off.svg b/tools/source_icons/scalable/previewmodeBC3-off.svg
new file mode 100644
index 000000000..f8adf9626
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC3-off.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeBC3-on.file b/tools/source_icons/scalable/previewmodeBC3-on.file
new file mode 100644
index 000000000..6dad52343
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC3-on.file
@@ -0,0 +1 @@
+previewmodeBC3-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeBC3-on.svg b/tools/source_icons/scalable/previewmodeBC3-on.svg
new file mode 100644
index 000000000..8e92c0b35
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeBC3-on.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-off.file b/tools/source_icons/scalable/previewmodeF-focusScreen-off.file
new file mode 100644
index 000000000..f019c1bfb
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-focusScreen-off.file
@@ -0,0 +1 @@
+previewmodeF-focusScreen-off.png,w22,actions
diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-off.svg b/tools/source_icons/scalable/previewmodeF-focusScreen-off.svg
new file mode 100644
index 000000000..814bc9e93
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-focusScreen-off.svg
@@ -0,0 +1,630 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-on.file b/tools/source_icons/scalable/previewmodeF-focusScreen-on.file
new file mode 100644
index 000000000..07dc7c137
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-focusScreen-on.file
@@ -0,0 +1 @@
+previewmodeF-focusScreen-on.png,w22,actions
diff --git a/tools/source_icons/scalable/previewmodeF-focusScreen-on.svg b/tools/source_icons/scalable/previewmodeF-focusScreen-on.svg
new file mode 100644
index 000000000..63b0e4ec8
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-focusScreen-on.svg
@@ -0,0 +1,604 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeF-off.file b/tools/source_icons/scalable/previewmodeF-off.file
new file mode 100644
index 000000000..420ff2d30
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-off.file
@@ -0,0 +1 @@
+previewmodeF-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeF-off.svg b/tools/source_icons/scalable/previewmodeF-off.svg
new file mode 100644
index 000000000..dd4f099b9
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-off.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeF-on.file b/tools/source_icons/scalable/previewmodeF-on.file
new file mode 100644
index 000000000..64d9940b3
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-on.file
@@ -0,0 +1 @@
+previewmodeF-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeF-on.svg b/tools/source_icons/scalable/previewmodeF-on.svg
new file mode 100644
index 000000000..0b5ca90c5
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeF-on.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeG-off.file b/tools/source_icons/scalable/previewmodeG-off.file
new file mode 100644
index 000000000..be2f098d4
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeG-off.file
@@ -0,0 +1 @@
+previewmodeG-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeG-off.svg b/tools/source_icons/scalable/previewmodeG-off.svg
new file mode 100644
index 000000000..29f08ebec
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeG-off.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeG-on.file b/tools/source_icons/scalable/previewmodeG-on.file
new file mode 100644
index 000000000..d6c82f803
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeG-on.file
@@ -0,0 +1 @@
+previewmodeG-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeG-on.svg b/tools/source_icons/scalable/previewmodeG-on.svg
new file mode 100644
index 000000000..4e5e19b56
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeG-on.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeL-off.file b/tools/source_icons/scalable/previewmodeL-off.file
new file mode 100644
index 000000000..7a743f2a3
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeL-off.file
@@ -0,0 +1 @@
+previewmodeL-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeL-off.svg b/tools/source_icons/scalable/previewmodeL-off.svg
new file mode 100644
index 000000000..ea9300e7a
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeL-off.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeL-on.file b/tools/source_icons/scalable/previewmodeL-on.file
new file mode 100644
index 000000000..e7b99191f
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeL-on.file
@@ -0,0 +1 @@
+previewmodeL-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeL-on.svg b/tools/source_icons/scalable/previewmodeL-on.svg
new file mode 100644
index 000000000..41cd85c07
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeL-on.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeR-off.file b/tools/source_icons/scalable/previewmodeR-off.file
new file mode 100644
index 000000000..a18cb0f3d
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeR-off.file
@@ -0,0 +1 @@
+previewmodeR-off.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeR-off.svg b/tools/source_icons/scalable/previewmodeR-off.svg
new file mode 100644
index 000000000..2bb60f3b6
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeR-off.svg
@@ -0,0 +1,81 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/previewmodeR-on.file b/tools/source_icons/scalable/previewmodeR-on.file
new file mode 100644
index 000000000..5901958fb
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeR-on.file
@@ -0,0 +1 @@
+previewmodeR-on.png,w8,actions
diff --git a/tools/source_icons/scalable/previewmodeR-on.svg b/tools/source_icons/scalable/previewmodeR-on.svg
new file mode 100644
index 000000000..0648c48b2
--- /dev/null
+++ b/tools/source_icons/scalable/previewmodeR-on.svg
@@ -0,0 +1,81 @@
+
+
+
+