From d5c60475e577c725cbd31b777334fc3d35e3a91e Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 17 Jan 2020 14:16:54 +0100 Subject: [PATCH 01/38] review mlsharpen --- rtengine/CMakeLists.txt | 1 + rtengine/ipsharpen.cc | 237 +------------------------------------ rtengine/ipsharpenedges.cc | 223 ++++++++++++++++++++++++++++++++++ 3 files changed, 225 insertions(+), 236 deletions(-) create mode 100644 rtengine/ipsharpenedges.cc diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 6bce68d1a..baca55c0a 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -94,6 +94,7 @@ set(RTENGINESOURCEFILES ipretinex.cc ipshadowshighlights.cc ipsharpen.cc + ipsharpenedges.cc ipsoftlight.cc iptransform.cc ipvibrance.cc diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 7198b76c5..78892a024 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -30,7 +30,7 @@ #include "settings.h" #include "sleef.h" -//#define BENCHMARK +#define BENCHMARK #include "StopWatch.h" using namespace std; @@ -385,241 +385,6 @@ BENCHFUN } -// To the extent possible under law, Manuel Llorens -// has waived all copyright and related or neighboring rights to this work. -// This work is published from: Spain. - -// Thanks to Manuel for this excellent job (Jacques Desmis JDC or frej83) -void ImProcFunctions::MLsharpen (LabImage* lab) -{ - // JD: this algorithm maximize clarity of images; it does not play on accutance. It can remove (partially) the effects of the AA filter) - // I think we can use this algorithm alone in most cases, or first to clarify image and if you want a very little USM (unsharp mask sharpening) after... - if (!params->sharpenEdge.enabled) { - return; - } - - MyTime t1e, t2e; - t1e.set(); - - int offset, c, i, j, p, width2; - int width = lab->W, height = lab->H; - float *L, lumH, lumV, lumD1, lumD2, v, contrast, s; - float difL, difR, difT, difB, difLT, difRB, difLB, difRT, wH, wV, wD1, wD2, chmax[3]; - float f1, f2, f3, f4; - float templab; - int iii, kkk; - width2 = 2 * width; - const float epsil = 0.01f; //prevent divide by zero - const float eps2 = 0.001f; //prevent divide by zero - float amount; - amount = params->sharpenEdge.amount / 100.0f; - - if (amount < 0.00001f) { - return; - } - - if (settings->verbose) { - printf ("SharpenEdge amount %f\n", amount); - } - - L = new float[width * height]; - - chmax[0] = 8.0f; - chmax[1] = 3.0f; - chmax[2] = 3.0f; - - int channels; - - if (params->sharpenEdge.threechannels) { - channels = 0; - } else { - channels = 2; - } - - if (settings->verbose) { - printf ("SharpenEdge channels %d\n", channels); - } - - int passes = params->sharpenEdge.passes; - - if (settings->verbose) { - printf ("SharpenEdge passes %d\n", passes); - } - - for (p = 0; p < passes; p++) - for (c = 0; c <= channels; c++) { // c=0 Luminance only - -#ifdef _OPENMP - #pragma omp parallel for private(offset) shared(L) -#endif - - for (offset = 0; offset < width * height; offset++) { - int ii = offset / width; - int kk = offset - ii * width; - - if (c == 0) { - L[offset] = lab->L[ii][kk] / 327.68f; // adjust to RT and to 0..100 - } else if (c == 1) { - L[offset] = lab->a[ii][kk] / 327.68f; - } else { /*if (c==2) */ - L[offset] = lab->b[ii][kk] / 327.68f; - } - } - -#ifdef _OPENMP - #pragma omp parallel for private(j,i,iii,kkk, templab,offset,wH,wV,wD1,wD2,s,lumH,lumV,lumD1,lumD2,v,contrast,f1,f2,f3,f4,difT,difB,difL,difR,difLT,difLB,difRT,difRB) shared(lab,L,amount) -#endif - - for(j = 2; j < height - 2; j++) - for(i = 2, offset = j * width + i; i < width - 2; i++, offset++) { - // weight functions - wH = eps2 + fabs(L[offset + 1] - L[offset - 1]); - wV = eps2 + fabs(L[offset + width] - L[offset - width]); - - s = 1.0f + fabs(wH - wV) / 2.0f; - wD1 = eps2 + fabs(L[offset + width + 1] - L[offset - width - 1]) / s; - wD2 = eps2 + fabs(L[offset + width - 1] - L[offset - width + 1]) / s; - s = wD1; - wD1 /= wD2; - wD2 /= s; - - // initial values - int ii = offset / width; - int kk = offset - ii * width; - - if (c == 0) { - lumH = lumV = lumD1 = lumD2 = v = lab->L[ii][kk] / 327.68f; - } else if (c == 1) { - lumH = lumV = lumD1 = lumD2 = v = lab->a[ii][kk] / 327.68f; - } else { /* if (c==2) */ - lumH = lumV = lumD1 = lumD2 = v = lab->b[ii][kk] / 327.68f; - } - - - // contrast detection - contrast = sqrt(fabs(L[offset + 1] - L[offset - 1]) * fabs(L[offset + 1] - L[offset - 1]) + fabs(L[offset + width] - L[offset - width]) * fabs(L[offset + width] - L[offset - width])) / chmax[c]; - - if (contrast > 1.0f) { - contrast = 1.0f; - } - - // new possible values - if (((L[offset] < L[offset - 1]) && (L[offset] > L[offset + 1])) || ((L[offset] > L[offset - 1]) && (L[offset] < L[offset + 1]))) { - f1 = fabs(L[offset - 2] - L[offset - 1]); - f2 = fabs(L[offset - 1] - L[offset]); - f3 = fabs(L[offset - 1] - L[offset - width]) * fabs(L[offset - 1] - L[offset + width]); - f4 = sqrt(fabs(L[offset - 1] - L[offset - width2]) * fabs(L[offset - 1] - L[offset + width2])); - difL = f1 * f2 * f2 * f3 * f3 * f4; - f1 = fabs(L[offset + 2] - L[offset + 1]); - f2 = fabs(L[offset + 1] - L[offset]); - f3 = fabs(L[offset + 1] - L[offset - width]) * fabs(L[offset + 1] - L[offset + width]); - f4 = sqrt(fabs(L[offset + 1] - L[offset - width2]) * fabs(L[offset + 1] - L[offset + width2])); - difR = f1 * f2 * f2 * f3 * f3 * f4; - - if ((difR > epsil) && (difL > epsil)) { - lumH = (L[offset - 1] * difR + L[offset + 1] * difL) / (difL + difR); - lumH = v * (1.f - contrast) + lumH * contrast; - } - } - - if (((L[offset] < L[offset - width]) && (L[offset] > L[offset + width])) || ((L[offset] > L[offset - width]) && (L[offset] < L[offset + width]))) { - f1 = fabs(L[offset - width2] - L[offset - width]); - f2 = fabs(L[offset - width] - L[offset]); - f3 = fabs(L[offset - width] - L[offset - 1]) * fabs(L[offset - width] - L[offset + 1]); - f4 = sqrt(fabs(L[offset - width] - L[offset - 2]) * fabs(L[offset - width] - L[offset + 2])); - difT = f1 * f2 * f2 * f3 * f3 * f4; - f1 = fabs(L[offset + width2] - L[offset + width]); - f2 = fabs(L[offset + width] - L[offset]); - f3 = fabs(L[offset + width] - L[offset - 1]) * fabs(L[offset + width] - L[offset + 1]); - f4 = sqrt(fabs(L[offset + width] - L[offset - 2]) * fabs(L[offset + width] - L[offset + 2])); - difB = f1 * f2 * f2 * f3 * f3 * f4; - - if ((difB > epsil) && (difT > epsil)) { - lumV = (L[offset - width] * difB + L[offset + width] * difT) / (difT + difB); - lumV = v * (1.f - contrast) + lumV * contrast; - } - } - - if (((L[offset] < L[offset - 1 - width]) && (L[offset] > L[offset + 1 + width])) || ((L[offset] > L[offset - 1 - width]) && (L[offset] < L[offset + 1 + width]))) { - f1 = fabs(L[offset - 2 - width2] - L[offset - 1 - width]); - f2 = fabs(L[offset - 1 - width] - L[offset]); - f3 = fabs(L[offset - 1 - width] - L[offset - width + 1]) * fabs(L[offset - 1 - width] - L[offset + width - 1]); - f4 = sqrt(fabs(L[offset - 1 - width] - L[offset - width2 + 2]) * fabs(L[offset - 1 - width] - L[offset + width2 - 2])); - difLT = f1 * f2 * f2 * f3 * f3 * f4; - f1 = fabs(L[offset + 2 + width2] - L[offset + 1 + width]); - f2 = fabs(L[offset + 1 + width] - L[offset]); - f3 = fabs(L[offset + 1 + width] - L[offset - width + 1]) * fabs(L[offset + 1 + width] - L[offset + width - 1]); - f4 = sqrt(fabs(L[offset + 1 + width] - L[offset - width2 + 2]) * fabs(L[offset + 1 + width] - L[offset + width2 - 2])); - difRB = f1 * f2 * f2 * f3 * f3 * f4; - - if ((difLT > epsil) && (difRB > epsil)) { - lumD1 = (L[offset - 1 - width] * difRB + L[offset + 1 + width] * difLT) / (difLT + difRB); - lumD1 = v * (1.f - contrast) + lumD1 * contrast; - } - } - - if (((L[offset] < L[offset + 1 - width]) && (L[offset] > L[offset - 1 + width])) || ((L[offset] > L[offset + 1 - width]) && (L[offset] < L[offset - 1 + width]))) { - f1 = fabs(L[offset - 2 + width2] - L[offset - 1 + width]); - f2 = fabs(L[offset - 1 + width] - L[offset]); - f3 = fabs(L[offset - 1 + width] - L[offset - width - 1]) * fabs(L[offset - 1 + width] - L[offset + width + 1]); - f4 = sqrt(fabs(L[offset - 1 + width] - L[offset - width2 - 2]) * fabs(L[offset - 1 + width] - L[offset + width2 + 2])); - difLB = f1 * f2 * f2 * f3 * f3 * f4; - f1 = fabs(L[offset + 2 - width2] - L[offset + 1 - width]); - f2 = fabs(L[offset + 1 - width] - L[offset]) * fabs(L[offset + 1 - width] - L[offset]); - f3 = fabs(L[offset + 1 - width] - L[offset + width + 1]) * fabs(L[offset + 1 - width] - L[offset - width - 1]); - f4 = sqrt(fabs(L[offset + 1 - width] - L[offset + width2 + 2]) * fabs(L[offset + 1 - width] - L[offset - width2 - 2])); - difRT = f1 * f2 * f2 * f3 * f3 * f4; - - if ((difLB > epsil) && (difRT > epsil)) { - lumD2 = (L[offset + 1 - width] * difLB + L[offset - 1 + width] * difRT) / (difLB + difRT); - lumD2 = v * (1.f - contrast) + lumD2 * contrast; - } - } - - s = amount; - - // avoid sharpening diagonals too much - if (((fabs(wH / wV) < 0.45f) && (fabs(wH / wV) > 0.05f)) || ((fabs(wV / wH) < 0.45f) && (fabs(wV / wH) > 0.05f))) { - s = amount / 3.0f; - } - - // final mix - if ((wH != 0.0f) && (wV != 0.0f) && (wD1 != 0.0f) && (wD2 != 0.0f)) { - iii = offset / width; - kkk = offset - iii * width; - float provL = lab->L[iii][kkk] / 327.68f; - - if(c == 0) { - if(provL < 92.f) { - templab = v * (1.f - s) + (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2) * s; - } else { - templab = provL; - } - } else { - templab = v * (1.f - s) + (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2) * s; - } - - if (c == 0) { - lab->L[iii][kkk] = fabs(327.68f * templab); // fabs because lab->L always >0 - } else if (c == 1) { - lab->a[iii][kkk] = 327.68f * templab ; - } else if (c == 2) { - lab->b[iii][kkk] = 327.68f * templab ; - } - } - - } - } - - delete [] L; - - t2e.set(); - - if (settings->verbose) { - printf("SharpenEdge gradient %d usec\n", t2e.etime(t1e)); - } -} - // To the extent possible under law, Manuel Llorens // has waived all copyright and related or neighboring rights to this work. // This code is licensed under CC0 v1.0, see license information at diff --git a/rtengine/ipsharpenedges.cc b/rtengine/ipsharpenedges.cc new file mode 100644 index 000000000..4d310abb2 --- /dev/null +++ b/rtengine/ipsharpenedges.cc @@ -0,0 +1,223 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2004-2020 Gabor Horvath + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . +*/ + +#include +#include "improcfun.h" +#include "labimage.h" +#include "procparams.h" +#include "rt_math.h" + +#define BENCHMARK +#include "StopWatch.h" + +using namespace std; +namespace { +#ifdef __SSE2__ +bool inintervall(float a, float b, float c) +{ + return a < std::max(b, c) && a > std::min(b, c); +} + +float selectweight(float a, float b, float low, float high) +{ + const float minVal = std::min(a,b); + const float maxVal = std::max(a,b); + const float res = (minVal < 0.45f * maxVal) ? low : high; + return (minVal > 0.05f * maxVal) ? res : high; +} + +#else +bool inintervall(float a, float b, float c) +{ + return (a < b && a > c) || (a < c && a > b); +} + +float selectweight(float a, float b, float low, float high) +{ + if ((a < 0.45f * b && a > 0.05f * b) || (b < 0.45f * a && b > 0.05f * a)) { + return low; + } else { + return high; + } +} + +#endif +} +namespace rtengine +{ + +// To the extent possible under law, Manuel Llorens +// has waived all copyright and related or neighboring rights to this work. +// This work is published from: Spain. + +// Thanks to Manuel for this excellent job (Jacques Desmis JDC or frej83) +void ImProcFunctions::MLsharpen (LabImage* lab) +{ + // JD: this algorithm maximize clarity of images; it does not play on accutance. It can remove (partially) the effects of the AA filter) + // I think we can use this algorithm alone in most cases, or first to clarify image and if you want a very little USM (unsharp mask sharpening) after... + if (!params->sharpenEdge.enabled || params->sharpenEdge.amount == 0) { + return; + } + +BENCHFUN + + const int width = lab->W, height = lab->H; + constexpr float chmax[3] = {1.f / 8.f, 1.f / 3.f, 1.f / 3.f}; + const int width2 = 2 * width; + constexpr float eps2 = 0.001f; //prevent divide by zero + const float amount = params->sharpenEdge.amount / 100.0f; + const float amountby3 = params->sharpenEdge.amount / 300.0f; + + std::unique_ptr L(new float[width * height]); + + const int channels = params->sharpenEdge.threechannels ? 1 : 3; + const int passes = params->sharpenEdge.passes; + + for (int c = 0; c < channels; ++c) { // c=0 Luminance only + float** channel = c == 0 ? lab->L : c == 1 ? lab->a : lab->b; + for (int p = 0; p < passes; ++p) { +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int i = 0; i < height; ++i) { + for (int j = 0; j < width; ++j) { + L[i * width + j] = channel[i][j] / 327.68f; + } + } + +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic,16) +#endif + + for (int j = 2; j < height - 2; j++) { + for (int i = 2, offset = j * width + i; i < width - 2; i++, offset++) { + // weight functions + const float wH = eps2 + fabs(L[offset + 1] - L[offset - 1]); + const float wV = eps2 + fabs(L[offset + width] - L[offset - width]); + + float s = 2.f / (2.f + fabs(wH - wV)); + float wD1 = eps2 + fabs(L[offset + width + 1] - L[offset - width - 1]) * s; + float wD2 = eps2 + fabs(L[offset + width - 1] - L[offset - width + 1]) * s; + s = wD1; + wD1 /= wD2; + wD2 /= s; + + const float v = L[offset]; + float lumH, lumV, lumD1, lumD2; + lumH = lumV = lumD1 = lumD2 = v; + + // contrast detection + const float contrast = std::min(std::sqrt(SQR(L[offset + 1] - L[offset - 1]) + SQR(L[offset + width] - L[offset - width])) * chmax[c], 1.f); + + // new possible values + if (inintervall(L[offset], L[offset - 1], L[offset + 1])) { + float f1 = fabs(L[offset - 2] - L[offset - 1]); + float f2 = L[offset - 1] - L[offset]; + float f3 = (L[offset - 1] - L[offset - width]) * (L[offset - 1] - L[offset + width]); + float f4 = std::sqrt(fabs(L[offset - 1] - L[offset - width2]) * fabs(L[offset - 1] - L[offset + width2])); + const float difL = f1 * SQR(f2) * SQR(f3) * f4; + if (difL > 0.f) { + f1 = fabs(L[offset + 2] - L[offset + 1]); + f2 = L[offset + 1] - L[offset]; + f3 = (L[offset + 1] - L[offset - width]) * (L[offset + 1] - L[offset + width]); + f4 = std::sqrt(fabs(L[offset + 1] - L[offset - width2]) * fabs(L[offset + 1] - L[offset + width2])); + const float difR = f1 * SQR(f2) * SQR(f3) * f4; + if (difR > 0.f) { + lumH = (L[offset - 1] * difR + L[offset + 1] * difL) / (difL + difR); + lumH = intp(contrast, lumH, v); + } + } + } + + if (inintervall(L[offset], L[offset - width], L[offset + width])) { + float f1 = fabs(L[offset - width2] - L[offset - width]); + float f2 = L[offset - width] - L[offset]; + float f3 = (L[offset - width] - L[offset - 1]) * (L[offset - width] - L[offset + 1]); + float f4 = std::sqrt(fabs(L[offset - width] - L[offset - 2]) * fabs(L[offset - width] - L[offset + 2])); + const float difT = f1 * SQR(f2) * SQR(f3) * f4; + if (difT > 0.f) { + f1 = fabs(L[offset + width2] - L[offset + width]); + f2 = L[offset + width] - L[offset]; + f3 = (L[offset + width] - L[offset - 1]) * (L[offset + width] - L[offset + 1]); + f4 = std::sqrt(fabs(L[offset + width] - L[offset - 2]) * fabs(L[offset + width] - L[offset + 2])); + const float difB = f1 * SQR(f2) * SQR(f3) * f4; + if (difB > 0.f) { + lumV = (L[offset - width] * difB + L[offset + width] * difT) / (difT + difB); + lumV = intp(contrast, lumV, v); + } + } + } + + if (inintervall(L[offset], L[offset - 1 - width], L[offset + 1 + width])) { + float f1 = fabs(L[offset - 2 - width2] - L[offset - 1 - width]); + float f2 = L[offset - 1 - width] - L[offset]; + float f3 = (L[offset - 1 - width] - L[offset - width + 1]) * (L[offset - 1 - width] - L[offset + width - 1]); + float f4 = std::sqrt(fabs(L[offset - 1 - width] - L[offset - width2 + 2]) * fabs(L[offset - 1 - width] - L[offset + width2 - 2])); + const float difLT = f1 * SQR(f2) * SQR(f3) * f4; + if (difLT > 0.f) { + f1 = fabs(L[offset + 2 + width2] - L[offset + 1 + width]); + f2 = L[offset + 1 + width] - L[offset]; + f3 = (L[offset + 1 + width] - L[offset - width + 1]) * (L[offset + 1 + width] - L[offset + width - 1]); + f4 = std::sqrt(fabs(L[offset + 1 + width] - L[offset - width2 + 2]) * fabs(L[offset + 1 + width] - L[offset + width2 - 2])); + const float difRB = f1 * SQR(f2) * SQR(f3) * f4; + if (difRB > 0.f) { + lumD1 = (L[offset - 1 - width] * difRB + L[offset + 1 + width] * difLT) / (difLT + difRB); + lumD1 = intp(contrast, lumD1, v); + } + } + } + + if (inintervall(L[offset], L[offset + 1 - width], L[offset] > L[offset - 1 + width])) { + float f1 = fabs(L[offset - 2 + width2] - L[offset - 1 + width]); + float f2 = L[offset - 1 + width] - L[offset]; + float f3 = (L[offset - 1 + width] - L[offset - width - 1]) * (L[offset - 1 + width] - L[offset + width + 1]); + float f4 = std::sqrt(fabs(L[offset - 1 + width] - L[offset - width2 - 2]) * fabs(L[offset - 1 + width] - L[offset + width2 + 2])); + const float difLB = f1 * SQR(f2) * SQR(f3) * f4; + if (difLB > 0.f) { + f1 = fabs(L[offset + 2 - width2] - L[offset + 1 - width]); + f2 = L[offset + 1 - width] - L[offset]; + f3 = (L[offset + 1 - width] - L[offset + width + 1]) * (L[offset + 1 - width] - L[offset - width - 1]); + f4 = std::sqrt(fabs(L[offset + 1 - width] - L[offset + width2 + 2]) * fabs(L[offset + 1 - width] - L[offset - width2 - 2])); + const float difRT = f1 * SQR(f2) * SQR(f3) * f4; + if (difRT > 0.f) { + lumD2 = (L[offset + 1 - width] * difLB + L[offset - 1 + width] * difRT) / (difLB + difRT); + lumD2 = intp(contrast, lumD2, v); + } + } + } + + // final mix + // avoid sharpening diagonals too much + const float weight = selectweight(wH, wV, amountby3, amount); + + if (c == 0) { + if (v < 92.f) { + channel[j][i] = fabs(327.68f * intp(weight, (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2), v)); // fabs because lab->L always > 0 + } + } else { + channel[j][i] = 327.68f * intp(weight, (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2), v); + } + } + } + } + } +} + +} \ No newline at end of file From c304d3270214cccc1c445b8a1aaeef1e58c7377d Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 17 Jan 2020 14:23:06 +0100 Subject: [PATCH 02/38] mlsharpen review: minor changes --- rtengine/ipsharpen.cc | 2 +- rtengine/ipsharpenedges.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 78892a024..959030dc6 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -30,7 +30,7 @@ #include "settings.h" #include "sleef.h" -#define BENCHMARK +//#define BENCHMARK #include "StopWatch.h" using namespace std; diff --git a/rtengine/ipsharpenedges.cc b/rtengine/ipsharpenedges.cc index 4d310abb2..c42472598 100644 --- a/rtengine/ipsharpenedges.cc +++ b/rtengine/ipsharpenedges.cc @@ -220,4 +220,4 @@ BENCHFUN } } -} \ No newline at end of file +} From 507af11adf521a05cac111625282b906a1bc1e0f Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 17 Jan 2020 16:25:20 +0100 Subject: [PATCH 03/38] mlsharpen: bugfix and speedup --- rtengine/ipsharpenedges.cc | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/rtengine/ipsharpenedges.cc b/rtengine/ipsharpenedges.cc index c42472598..73295e4fa 100644 --- a/rtengine/ipsharpenedges.cc +++ b/rtengine/ipsharpenedges.cc @@ -127,18 +127,18 @@ BENCHFUN const float contrast = std::min(std::sqrt(SQR(L[offset + 1] - L[offset - 1]) + SQR(L[offset + width] - L[offset - width])) * chmax[c], 1.f); // new possible values - if (inintervall(L[offset], L[offset - 1], L[offset + 1])) { + if (inintervall(v, L[offset - 1], L[offset + 1])) { float f1 = fabs(L[offset - 2] - L[offset - 1]); - float f2 = L[offset - 1] - L[offset]; + float f2 = L[offset - 1] - v; float f3 = (L[offset - 1] - L[offset - width]) * (L[offset - 1] - L[offset + width]); - float f4 = std::sqrt(fabs(L[offset - 1] - L[offset - width2]) * fabs(L[offset - 1] - L[offset + width2])); - const float difL = f1 * SQR(f2) * SQR(f3) * f4; + float f4 = std::sqrt(fabs((L[offset - 1] - L[offset - width2]) * (L[offset - 1] - L[offset + width2]))); + const float difL = f1 * SQR(f2 * f3) * f4; if (difL > 0.f) { f1 = fabs(L[offset + 2] - L[offset + 1]); - f2 = L[offset + 1] - L[offset]; + f2 = L[offset + 1] - v; f3 = (L[offset + 1] - L[offset - width]) * (L[offset + 1] - L[offset + width]); - f4 = std::sqrt(fabs(L[offset + 1] - L[offset - width2]) * fabs(L[offset + 1] - L[offset + width2])); - const float difR = f1 * SQR(f2) * SQR(f3) * f4; + f4 = std::sqrt(fabs((L[offset + 1] - L[offset - width2]) * (L[offset + 1] - L[offset + width2]))); + const float difR = f1 * SQR(f2 * f3) * f4; if (difR > 0.f) { lumH = (L[offset - 1] * difR + L[offset + 1] * difL) / (difL + difR); lumH = intp(contrast, lumH, v); @@ -146,18 +146,18 @@ BENCHFUN } } - if (inintervall(L[offset], L[offset - width], L[offset + width])) { + if (inintervall(v, L[offset - width], L[offset + width])) { float f1 = fabs(L[offset - width2] - L[offset - width]); - float f2 = L[offset - width] - L[offset]; + float f2 = L[offset - width] - v; float f3 = (L[offset - width] - L[offset - 1]) * (L[offset - width] - L[offset + 1]); - float f4 = std::sqrt(fabs(L[offset - width] - L[offset - 2]) * fabs(L[offset - width] - L[offset + 2])); - const float difT = f1 * SQR(f2) * SQR(f3) * f4; + float f4 = std::sqrt(fabs((L[offset - width] - L[offset - 2]) * (L[offset - width] - L[offset + 2]))); + const float difT = f1 * SQR(f2 * f3) * f4; if (difT > 0.f) { f1 = fabs(L[offset + width2] - L[offset + width]); - f2 = L[offset + width] - L[offset]; + f2 = L[offset + width] - v; f3 = (L[offset + width] - L[offset - 1]) * (L[offset + width] - L[offset + 1]); - f4 = std::sqrt(fabs(L[offset + width] - L[offset - 2]) * fabs(L[offset + width] - L[offset + 2])); - const float difB = f1 * SQR(f2) * SQR(f3) * f4; + f4 = std::sqrt(fabs((L[offset + width] - L[offset - 2]) * (L[offset + width] - L[offset + 2]))); + const float difB = f1 * SQR(f2 * f3) * f4; if (difB > 0.f) { lumV = (L[offset - width] * difB + L[offset + width] * difT) / (difT + difB); lumV = intp(contrast, lumV, v); @@ -165,18 +165,18 @@ BENCHFUN } } - if (inintervall(L[offset], L[offset - 1 - width], L[offset + 1 + width])) { + if (inintervall(v, L[offset - 1 - width], L[offset + 1 + width])) { float f1 = fabs(L[offset - 2 - width2] - L[offset - 1 - width]); - float f2 = L[offset - 1 - width] - L[offset]; + float f2 = L[offset - 1 - width] - v; float f3 = (L[offset - 1 - width] - L[offset - width + 1]) * (L[offset - 1 - width] - L[offset + width - 1]); - float f4 = std::sqrt(fabs(L[offset - 1 - width] - L[offset - width2 + 2]) * fabs(L[offset - 1 - width] - L[offset + width2 - 2])); - const float difLT = f1 * SQR(f2) * SQR(f3) * f4; + float f4 = std::sqrt(fabs((L[offset - 1 - width] - L[offset - width2 + 2]) * (L[offset - 1 - width] - L[offset + width2 - 2]))); + const float difLT = f1 * SQR(f2 * f3) * f4; if (difLT > 0.f) { f1 = fabs(L[offset + 2 + width2] - L[offset + 1 + width]); - f2 = L[offset + 1 + width] - L[offset]; + f2 = L[offset + 1 + width] - v; f3 = (L[offset + 1 + width] - L[offset - width + 1]) * (L[offset + 1 + width] - L[offset + width - 1]); - f4 = std::sqrt(fabs(L[offset + 1 + width] - L[offset - width2 + 2]) * fabs(L[offset + 1 + width] - L[offset + width2 - 2])); - const float difRB = f1 * SQR(f2) * SQR(f3) * f4; + f4 = std::sqrt(fabs((L[offset + 1 + width] - L[offset - width2 + 2]) * (L[offset + 1 + width] - L[offset + width2 - 2]))); + const float difRB = f1 * SQR(f2 * f3) * f4; if (difRB > 0.f) { lumD1 = (L[offset - 1 - width] * difRB + L[offset + 1 + width] * difLT) / (difLT + difRB); lumD1 = intp(contrast, lumD1, v); @@ -184,18 +184,18 @@ BENCHFUN } } - if (inintervall(L[offset], L[offset + 1 - width], L[offset] > L[offset - 1 + width])) { + if (inintervall(v, L[offset + 1 - width], L[offset - 1 + width])) { float f1 = fabs(L[offset - 2 + width2] - L[offset - 1 + width]); - float f2 = L[offset - 1 + width] - L[offset]; + float f2 = L[offset - 1 + width] - v; float f3 = (L[offset - 1 + width] - L[offset - width - 1]) * (L[offset - 1 + width] - L[offset + width + 1]); - float f4 = std::sqrt(fabs(L[offset - 1 + width] - L[offset - width2 - 2]) * fabs(L[offset - 1 + width] - L[offset + width2 + 2])); - const float difLB = f1 * SQR(f2) * SQR(f3) * f4; + float f4 = std::sqrt(fabs((L[offset - 1 + width] - L[offset - width2 - 2]) * (L[offset - 1 + width] - L[offset + width2 + 2]))); + const float difLB = f1 * SQR(f2 * f3) * f4; if (difLB > 0.f) { f1 = fabs(L[offset + 2 - width2] - L[offset + 1 - width]); - f2 = L[offset + 1 - width] - L[offset]; + f2 = L[offset + 1 - width] - v; f3 = (L[offset + 1 - width] - L[offset + width + 1]) * (L[offset + 1 - width] - L[offset - width - 1]); - f4 = std::sqrt(fabs(L[offset + 1 - width] - L[offset + width2 + 2]) * fabs(L[offset + 1 - width] - L[offset - width2 - 2])); - const float difRT = f1 * SQR(f2) * SQR(f3) * f4; + f4 = std::sqrt(fabs((L[offset + 1 - width] - L[offset + width2 + 2]) * (L[offset + 1 - width] - L[offset - width2 - 2]))); + const float difRT = f1 * SQR(f2 * f3) * f4; if (difRT > 0.f) { lumD2 = (L[offset + 1 - width] * difLB + L[offset - 1 + width] * difRT) / (difLB + difRT); lumD2 = intp(contrast, lumD2, v); From d82ea3af02021f5292c5a49acfb92942b82a25e3 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 17 Jan 2020 23:18:48 +0100 Subject: [PATCH 04/38] reduce some include dependencies --- rtengine/camconst.cc | 4 ++-- rtengine/camconst.h | 12 +++++++++--- rtengine/color.h | 8 +++++++- rtengine/curves.cc | 5 ++--- rtengine/curves.h | 12 ++++++++---- rtengine/diagonalcurves.cc | 2 -- rtengine/iimage.h | 8 +++++++- rtengine/imagedata.h | 8 +++++++- rtengine/improcfun.h | 9 ++++++++- rtengine/previewimage.h | 8 +++++++- rtengine/rtthumbnail.h | 9 +++++++-- rtgui/previewloader.h | 9 +++++++-- 12 files changed, 71 insertions(+), 23 deletions(-) diff --git a/rtengine/camconst.cc b/rtengine/camconst.cc index d136d6a21..c5cfc26fa 100644 --- a/rtengine/camconst.cc +++ b/rtengine/camconst.cc @@ -638,7 +638,7 @@ CameraConst::update_globalGreenEquilibration(bool other) } bool -CameraConstantsStore::parse_camera_constants_file(Glib::ustring filename_) +CameraConstantsStore::parse_camera_constants_file(const Glib::ustring& filename_) { // read the file into a single long string const char *filename = filename_.c_str(); @@ -809,7 +809,7 @@ CameraConstantsStore::~CameraConstantsStore() } } -void CameraConstantsStore::init(Glib::ustring baseDir, Glib::ustring userSettingsDir) +void CameraConstantsStore::init(const Glib::ustring& baseDir, const Glib::ustring& userSettingsDir) { parse_camera_constants_file(Glib::build_filename(baseDir, "camconst.json")); diff --git a/rtengine/camconst.h b/rtengine/camconst.h index 1096e1767..fbc16cb13 100644 --- a/rtengine/camconst.h +++ b/rtengine/camconst.h @@ -3,10 +3,16 @@ */ #pragma once -#include #include #include +namespace Glib +{ + +class ustring; + +} + namespace rtengine { @@ -62,11 +68,11 @@ private: std::map mCameraConstants; CameraConstantsStore(); - bool parse_camera_constants_file(Glib::ustring filename); + bool parse_camera_constants_file(const Glib::ustring& filename); public: ~CameraConstantsStore(); - void init(Glib::ustring baseDir, Glib::ustring userSettingsDir); + void init(const Glib::ustring& baseDir, const Glib::ustring& userSettingsDir); static CameraConstantsStore *getInstance(void); CameraConst *get(const char make[], const char model[]); }; diff --git a/rtengine/color.h b/rtengine/color.h index 211615de1..8e0015c42 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -20,7 +20,6 @@ #pragma once #include -#include #include "rt_math.h" #include "LUT.h" @@ -30,6 +29,13 @@ #define SAT(a,b,c) ((float)max(a,b,c)-(float)min(a,b,c))/(float)max(a,b,c) +namespace Glib +{ + +class ustring; + +} + namespace rtengine { diff --git a/rtengine/curves.cc b/rtengine/curves.cc index b2105a091..35a38d3b8 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -21,8 +21,7 @@ #include #include #include -#include -#include +#include #include "rt_math.h" @@ -2186,7 +2185,7 @@ void PerceptualToneCurve::init() } } -void PerceptualToneCurve::initApplyState(PerceptualToneCurveState & state, Glib::ustring workingSpace) const +void PerceptualToneCurve::initApplyState(PerceptualToneCurveState & state, const Glib::ustring &workingSpace) const { // Get the curve's contrast value, and convert to a chroma scaling diff --git a/rtengine/curves.h b/rtengine/curves.h index bc8193b76..27f5a8adc 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -22,12 +22,9 @@ #include #include -#include - #include "rt_math.h" #include "flatcurvetypes.h" #include "diagonalcurvetypes.h" -#include "pipettebuffer.h" #include "noncopyable.h" #include "LUT.h" #include "sleef.h" @@ -37,6 +34,13 @@ #define CLIPI(a) ((a)>0?((a)<65534?(a):65534):0) +namespace Glib +{ + +class ustring; + +} + using namespace std; namespace rtengine @@ -940,7 +944,7 @@ private: float calculateToneCurveContrastValue() const; public: static void init(); - void initApplyState(PerceptualToneCurveState & state, Glib::ustring workingSpace) const; + void initApplyState(PerceptualToneCurveState & state, const Glib::ustring& workingSpace) const; void BatchApply(const size_t start, const size_t end, float *r, float *g, float *b, const PerceptualToneCurveState &state) const; }; diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index bb20b7cc1..e81f2fe92 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#include -#include #include "curves.h" #include #include diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 7309dd91f..c2e9dfd3b 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -20,7 +20,6 @@ #include -#include #include #include "alignedbuffer.h" @@ -41,6 +40,13 @@ #define CHECK_BOUNDS 0 +namespace Glib +{ + +class ustring; + +} + namespace rtengine { diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index ff8ed4b86..5765d9aec 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -23,12 +23,18 @@ #include #include -#include #include #include "imageio.h" +namespace Glib +{ + +class ustring; + +} + namespace rtexif { diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 8f4ae7771..6538bd6b1 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -19,11 +19,17 @@ #pragma once #include +#include #include "coord2d.h" #include "gamutwarning.h" -#include "pipettebuffer.h" +namespace Glib +{ + +class ustring; + +} template class LUT; @@ -44,6 +50,7 @@ class FramesMetaData; class LensCorrection; class NoiseCurve; class OpacityCurve; +class PipetteBuffer; class ToneCurve; class WavCurve; class WavOpacityCurveBY; diff --git a/rtengine/previewimage.h b/rtengine/previewimage.h index e6c3ea070..2143509a3 100644 --- a/rtengine/previewimage.h +++ b/rtengine/previewimage.h @@ -18,10 +18,16 @@ */ #pragma once -#include #include +namespace Glib +{ + +class ustring; + +} + namespace rtengine { diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index dcc9596f6..c8d657a62 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -18,8 +18,6 @@ */ #pragma once -#include - #include #include "image16.h" @@ -30,6 +28,13 @@ #include "../rtgui/threadutils.h" +namespace Glib +{ + +class ustring; + +} + namespace rtengine { diff --git a/rtgui/previewloader.h b/rtgui/previewloader.h index 9a74ee2eb..a8032fcaf 100644 --- a/rtgui/previewloader.h +++ b/rtgui/previewloader.h @@ -20,10 +20,15 @@ #include -#include - #include "../rtengine/noncopyable.h" +namespace Glib +{ + +class ustring; + +} + class FileBrowserEntry; class PreviewLoaderListener From 54d8efc5f62724a1d07b543090f98401c04b5499 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 17 Jan 2020 23:56:17 +0100 Subject: [PATCH 05/38] reduce include dependecies --- rtengine/guidedfilter.cc | 1 + rtengine/imagesource.h | 1 - rtengine/ipdehaze.cc | 1 + rtengine/rescale.h | 5 ++++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index ad3beec51..f83560cfc 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -29,6 +29,7 @@ * available at https://arxiv.org/abs/1505.00996 */ +#include "array2D.h" #include "boxblur.h" #include "guidedfilter.h" #include "imagefloat.h" diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index e0c26aa9f..2ef2554bc 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -25,7 +25,6 @@ #include "coord2d.h" #include "imagedata.h" -#include "LUT.h" #include "rtengine.h" template diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 28a0f2d57..38e35c612 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -32,6 +32,7 @@ #include #include +#include "array2D.h" #include "color.h" #include "guidedfilter.h" #include "iccstore.h" diff --git a/rtengine/rescale.h b/rtengine/rescale.h index 70974aa48..2138cd8e8 100644 --- a/rtengine/rescale.h +++ b/rtengine/rescale.h @@ -20,9 +20,12 @@ #pragma once -#include "array2D.h" #include "rt_math.h" +template +class array2D; + + namespace rtengine { From c3a86befaaa8eab8aebbeddb46f3b92492f6f3d6 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sat, 18 Jan 2020 11:57:31 +0100 Subject: [PATCH 06/38] Fix broken build --- rtengine/camconst.h | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/camconst.h b/rtengine/camconst.h index fbc16cb13..0c0618671 100644 --- a/rtengine/camconst.h +++ b/rtengine/camconst.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include namespace Glib From bf301b7e4099337d1bbd37c8a02dc72876ecaa1f Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sat, 18 Jan 2020 23:46:48 +0100 Subject: [PATCH 07/38] reduce include depenencies --- rtengine/curves.h | 2 - rtengine/dcrop.cc | 1 + rtengine/dcrop.h | 5 +- rtengine/improccoordinator.h | 1 - rtengine/improcfun.cc | 3 +- rtengine/opthelper.h | 39 +- rtengine/rtengine.h | 1 - rtengine/sleefsseavx.c | 1483 -------------------------------- rtengine/sleefsseavx.h | 1558 +++++++++++++++++++++++++++++++--- rtengine/utils.cc | 1 - rtgui/cropwindow.cc | 1 + rtgui/curveeditor.h | 3 +- rtgui/guiutils.cc | 1 - 13 files changed, 1473 insertions(+), 1626 deletions(-) delete mode 100644 rtengine/sleefsseavx.c diff --git a/rtengine/curves.h b/rtengine/curves.h index 27f5a8adc..d7c35b619 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -30,8 +30,6 @@ #include "sleef.h" #define CURVES_MIN_POLY_POINTS 1000 -#include "rt_math.h" - #define CLIPI(a) ((a)>0?((a)<65534?(a):65534):0) namespace Glib diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 890003ee0..77392a552 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -24,6 +24,7 @@ #include "dcrop.h" #include "image8.h" #include "imagefloat.h" +#include "improccoordinator.h" #include "labimage.h" #include "mytime.h" #include "procparams.h" diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h index c65c1e72f..6667800f9 100644 --- a/rtengine/dcrop.h +++ b/rtengine/dcrop.h @@ -18,11 +18,7 @@ */ #pragma once -#include "improccoordinator.h" #include "rtengine.h" -#include "improcfun.h" -#include "imagesource.h" -#include "procevents.h" #include "pipettebuffer.h" #include "../rtgui/threadutils.h" @@ -30,6 +26,7 @@ namespace rtengine { class Image8; +class CieImage; using namespace procparams; diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 96d1f80ce..8b5b37625 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -27,7 +27,6 @@ #include "imagesource.h" #include "improcfun.h" #include "LUT.h" -#include "procevents.h" #include "rtengine.h" #include "../rtgui/threadutils.h" diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index d5c69773e..6749ff305 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -31,15 +31,16 @@ #include "cieimage.h" #include "clutstore.h" #include "color.h" +#include "colortemp.h" #include "curves.h" #include "dcp.h" #include "EdgePreservingDecomposition.h" #include "iccmatrices.h" #include "iccstore.h" #include "imagesource.h" -#include "improccoordinator.h" #include "improcfun.h" #include "labimage.h" +#include "pipettebuffer.h" #include "procparams.h" #include "rt_math.h" #include "rtengine.h" diff --git a/rtengine/opthelper.h b/rtengine/opthelper.h index b65ede227..f431c0ec9 100644 --- a/rtengine/opthelper.h +++ b/rtengine/opthelper.h @@ -18,27 +18,24 @@ // along with this program. If not, see . // //////////////////////////////////////////////////////////////// +#pragma once -#ifndef OPTHELPER_H - #define OPTHELPER_H +#define pow_F(a,b) (xexpf(b*xlogf(a))) - #define pow_F(a,b) (xexpf(b*xlogf(a))) - - #ifdef __SSE2__ - #include "sleefsseavx.c" - #endif - - #ifdef __GNUC__ - #define RESTRICT __restrict__ - #define LIKELY(x) __builtin_expect (!!(x), 1) - #define UNLIKELY(x) __builtin_expect (!!(x), 0) - #define ALIGNED64 __attribute__ ((aligned (64))) - #define ALIGNED16 __attribute__ ((aligned (16))) - #else - #define RESTRICT - #define LIKELY(x) (x) - #define UNLIKELY(x) (x) - #define ALIGNED64 - #define ALIGNED16 - #endif +#ifdef __SSE2__ + #include "sleefsseavx.h" +#endif + +#ifdef __GNUC__ + #define RESTRICT __restrict__ + #define LIKELY(x) __builtin_expect (!!(x), 1) + #define UNLIKELY(x) __builtin_expect (!!(x), 0) + #define ALIGNED64 __attribute__ ((aligned (64))) + #define ALIGNED16 __attribute__ ((aligned (16))) +#else + #define RESTRICT + #define LIKELY(x) (x) + #define UNLIKELY(x) (x) + #define ALIGNED64 + #define ALIGNED16 #endif diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 0473622c4..ca663c5bc 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -31,7 +31,6 @@ #include "imageformat.h" #include "procevents.h" #include "rawmetadatalocation.h" -#include "rt_math.h" #include "settings.h" #include "../rtgui/threadutils.h" diff --git a/rtengine/sleefsseavx.c b/rtengine/sleefsseavx.c deleted file mode 100644 index 0af516f9b..000000000 --- a/rtengine/sleefsseavx.c +++ /dev/null @@ -1,1483 +0,0 @@ -//////////////////////////////////////////////////////////////// -// -// this code was taken from http://shibatch.sourceforge.net/ -// Many thanks to the author of original version: Naoki Shibata -// -// This version contains modifications made by Ingo Weyrich -// -//////////////////////////////////////////////////////////////// - - -#ifndef SLEEFSSEAVX -#define SLEEFSSEAVX - -#include -#include "rt_math.h" -#ifdef __SSE2__ -#include "helpersse2.h" - -#ifdef ENABLE_AVX -#include "helperavx.h" -#endif - -#ifdef __GNUC__ -#define INLINE __inline -#else -#define INLINE inline -#endif - -#define PI4_A .7853981554508209228515625 -#define PI4_B .794662735614792836713604629039764404296875e-8 -#define PI4_C .306161699786838294306516483068750264552437361480769e-16 -#define M_4_PI 1.273239544735162542821171882678754627704620361328125 - -#define L2U .69314718055966295651160180568695068359375 -#define L2L .28235290563031577122588448175013436025525412068e-12 -#define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 - -#define PI4_Af 0.78515625f -#define PI4_Bf 0.00024127960205078125f -#define PI4_Cf 6.3329935073852539062e-07f -#define PI4_Df 4.9604681473525147339e-10f - -#define L2Uf 0.693145751953125f -#define L2Lf 1.428606765330187045e-06f -#define R_LN2f 1.442695040888963407359924681001892137426645954152985934135449406931f - -#define INFINITYf ((float)rtengine::RT_INFINITY) -#define NANf ((float)rtengine::RT_NAN) - -static INLINE vdouble vadd3(vdouble v0, vdouble v1, vdouble v2) { - return vadd(vadd(v0, v1), v2); -} - -static INLINE vdouble vadd4(vdouble v0, vdouble v1, vdouble v2, vdouble v3) { - return vadd3(vadd(v0, v1), v2, v3); -} - -static INLINE vdouble vadd5(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4) { - return vadd4(vadd(v0, v1), v2, v3, v4); -} - -static INLINE vdouble vadd6(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4, vdouble v5) { - return vadd5(vadd(v0, v1), v2, v3, v4, v5); -} - -static INLINE vdouble vadd7(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4, vdouble v5, vdouble v6) { - return vadd6(vadd(v0, v1), v2, v3, v4, v5, v6); -} - -static INLINE vdouble vsub3(vdouble v0, vdouble v1, vdouble v2) { - return vsub(vsub(v0, v1), v2); -} - -static INLINE vdouble vsub4(vdouble v0, vdouble v1, vdouble v2, vdouble v3) { - return vsub3(vsub(v0, v1), v2, v3); -} - -static INLINE vdouble vsub5(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4) { - return vsub4(vsub(v0, v1), v2, v3, v4); -} - -// - -static INLINE vdouble2 normalize_d(vdouble2 t) { - vdouble2 s; - - s.x = vadd(t.x, t.y); - s.y = vadd(vsub(t.x, s.x), t.y); - - return s; -} - -static INLINE vdouble2 scale_d(vdouble2 d, vdouble s) { - vdouble2 r = {vmul(d.x, s), vmul(d.y, s)}; - return r; -} - -static INLINE vdouble2 add_ss(vdouble x, vdouble y) { - vdouble2 r; - - r.x = vadd(x, y); - r.y = vadd(vsub(x, r.x), y); - - return r; -} - -static INLINE vdouble2 add2_ss(vdouble x, vdouble y) { - vdouble2 r; - - r.x = vadd(x, y); - vdouble v = vsub(r.x, x); - r.y = vadd(vsub(x, vsub(r.x, v)), vsub(y, v)); - - return r; -} - -static INLINE vdouble2 add_ds(vdouble2 x, vdouble y) { - vdouble2 r; - - r.x = vadd(x.x, y); - r.y = vadd3(vsub(x.x, r.x), y, x.y); - - return r; -} - -static INLINE vdouble2 add2_ds(vdouble2 x, vdouble y) { - vdouble2 r; - - r.x = vadd(x.x, y); - vdouble v = vsub(r.x, x.x); - r.y = vadd(vsub(x.x, vsub(r.x, v)), vsub(y, v)); - r.y = vadd(r.y, x.y); - - return r; -} - -static INLINE vdouble2 add_sd(vdouble x, vdouble2 y) { - vdouble2 r; - - r.x = vadd(x, y.x); - r.y = vadd3(vsub(x, r.x), y.x, y.y); - - return r; -} - -static INLINE vdouble2 add_dd(vdouble2 x, vdouble2 y) { - // |x| >= |y| - - vdouble2 r; - - r.x = vadd(x.x, y.x); - r.y = vadd4(vsub(x.x, r.x), y.x, x.y, y.y); - - return r; -} - -static INLINE vdouble2 add2_dd(vdouble2 x, vdouble2 y) { - vdouble2 r; - - r.x = vadd(x.x, y.x); - vdouble v = vsub(r.x, x.x); - r.y = vadd(vsub(x.x, vsub(r.x, v)), vsub(y.x, v)); - r.y = vadd(r.y, vadd(x.y, y.y)); - - return r; -} - -static INLINE vdouble2 div_dd(vdouble2 n, vdouble2 d) { - vdouble t = vrec(d.x); - vdouble dh = vupper(d.x), dl = vsub(d.x, dh); - vdouble th = vupper(t ), tl = vsub(t , th); - vdouble nhh = vupper(n.x), nhl = vsub(n.x, nhh); - - vdouble2 q; - - q.x = vmul(n.x, t); - - vdouble u = vadd5(vsub(vmul(nhh, th), q.x), vmul(nhh, tl), vmul(nhl, th), vmul(nhl, tl), - vmul(q.x, vsub5(vcast_vd_d(1), vmul(dh, th), vmul(dh, tl), vmul(dl, th), vmul(dl, tl)))); - - q.y = vadd(vmul(t, vsub(n.y, vmul(q.x, d.y))), u); - - return q; -} - -static INLINE vdouble2 mul_ss(vdouble x, vdouble y) { - vdouble xh = vupper(x), xl = vsub(x, xh); - vdouble yh = vupper(y), yl = vsub(y, yh); - vdouble2 r; - - r.x = vmul(x, y); - r.y = vadd5(vmul(xh, yh), vneg(r.x), vmul(xl, yh), vmul(xh, yl), vmul(xl, yl)); - - return r; -} - -static INLINE vdouble2 mul_ds(vdouble2 x, vdouble y) { - vdouble xh = vupper(x.x), xl = vsub(x.x, xh); - vdouble yh = vupper(y ), yl = vsub(y , yh); - vdouble2 r; - - r.x = vmul(x.x, y); - r.y = vadd6(vmul(xh, yh), vneg(r.x), vmul(xl, yh), vmul(xh, yl), vmul(xl, yl), vmul(x.y, y)); - - return r; -} - -static INLINE vdouble2 mul_dd(vdouble2 x, vdouble2 y) { - vdouble xh = vupper(x.x), xl = vsub(x.x, xh); - vdouble yh = vupper(y.x), yl = vsub(y.x, yh); - vdouble2 r; - - r.x = vmul(x.x, y.x); - r.y = vadd7(vmul(xh, yh), vneg(r.x), vmul(xl, yh), vmul(xh, yl), vmul(xl, yl), vmul(x.x, y.y), vmul(x.y, y.x)); - - return r; -} - -static INLINE vdouble2 squ_d(vdouble2 x) { - vdouble xh = vupper(x.x), xl = vsub(x.x, xh); - vdouble2 r; - - r.x = vmul(x.x, x.x); - r.y = vadd5(vmul(xh, xh), vneg(r.x), vmul(vadd(xh, xh), xl), vmul(xl, xl), vmul(x.x, vadd(x.y, x.y))); - - return r; -} - -static INLINE vdouble2 rec_s(vdouble d) { - vdouble t = vrec(d); - vdouble dh = vupper(d), dl = vsub(d, dh); - vdouble th = vupper(t), tl = vsub(t, th); - vdouble2 q; - - q.x = t; - q.y = vmul(t, vsub5(vcast_vd_d(1), vmul(dh, th), vmul(dh, tl), vmul(dl, th), vmul(dl, tl))); - - return q; -} - -static INLINE vdouble2 sqrt_d(vdouble2 d) { - vdouble t = vsqrt(vadd(d.x, d.y)); - return scale_d(mul_dd(add2_dd(d, mul_ss(t, t)), rec_s(t)), vcast_vd_d(0.5)); -} - -// - -static INLINE vdouble xldexp(vdouble x, vint q) { return vldexp(x, q); } - -static INLINE vint xilogb(vdouble d) { - vdouble e = vcast_vd_vi(vsubi(vilogbp1(vabs(d)), vcast_vi_i(1))); - e = vsel(vmask_eq(d, vcast_vd_d(0)), vcast_vd_d(-2147483648.0), e); - e = vsel(vmask_eq(vabs(d), vcast_vd_d(rtengine::RT_INFINITY)), vcast_vd_d(2147483647), e); - return vrint_vi_vd(e); -} - -static INLINE vdouble xsin(vdouble d) { - vint q; - vdouble u, s; - - q = vrint_vi_vd(vmul(d, vcast_vd_d(rtengine::RT_1_PI))); - - u = vcast_vd_vi(q); - d = vadd(d, vmul(u, vcast_vd_d(-PI4_A*4))); - d = vadd(d, vmul(u, vcast_vd_d(-PI4_B*4))); - d = vadd(d, vmul(u, vcast_vd_d(-PI4_C*4))); - - s = vmul(d, d); - - d = vsel(vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(1)), vneg(d), d); - - u = vcast_vd_d(-7.97255955009037868891952e-18); - u = vmla(u, s, vcast_vd_d(2.81009972710863200091251e-15)); - u = vmla(u, s, vcast_vd_d(-7.64712219118158833288484e-13)); - u = vmla(u, s, vcast_vd_d(1.60590430605664501629054e-10)); - u = vmla(u, s, vcast_vd_d(-2.50521083763502045810755e-08)); - u = vmla(u, s, vcast_vd_d(2.75573192239198747630416e-06)); - u = vmla(u, s, vcast_vd_d(-0.000198412698412696162806809)); - u = vmla(u, s, vcast_vd_d(0.00833333333333332974823815)); - u = vmla(u, s, vcast_vd_d(-0.166666666666666657414808)); - - u = vmla(s, vmul(u, d), d); - - return u; -} - -static INLINE vdouble xcos(vdouble d) { - vint q; - vdouble u, s; - - q = vrint_vi_vd(vsub(vmul(d, vcast_vd_d(rtengine::RT_1_PI)), vcast_vd_d(0.5))); - q = vaddi(vaddi(q, q), vcast_vi_i(1)); - - u = vcast_vd_vi(q); - d = vadd(d, vmul(u, vcast_vd_d(-PI4_A*2))); - d = vadd(d, vmul(u, vcast_vd_d(-PI4_B*2))); - d = vadd(d, vmul(u, vcast_vd_d(-PI4_C*2))); - - s = vmul(d, d); - - d = vsel(vmaski_eq(vandi(q, vcast_vi_i(2)), vcast_vi_i(0)), vneg(d), d); - - u = vcast_vd_d(-7.97255955009037868891952e-18); - u = vmla(u, s, vcast_vd_d(2.81009972710863200091251e-15)); - u = vmla(u, s, vcast_vd_d(-7.64712219118158833288484e-13)); - u = vmla(u, s, vcast_vd_d(1.60590430605664501629054e-10)); - u = vmla(u, s, vcast_vd_d(-2.50521083763502045810755e-08)); - u = vmla(u, s, vcast_vd_d(2.75573192239198747630416e-06)); - u = vmla(u, s, vcast_vd_d(-0.000198412698412696162806809)); - u = vmla(u, s, vcast_vd_d(0.00833333333333332974823815)); - u = vmla(u, s, vcast_vd_d(-0.166666666666666657414808)); - - u = vmla(s, vmul(u, d), d); - - return u; -} - -static INLINE vdouble2 xsincos(vdouble d) { - vint q; - vmask m; - vdouble u, s, t, rx, ry; - vdouble2 r; - - q = vrint_vi_vd(vmul(d, vcast_vd_d(rtengine::RT_2_PI))); - - s = d; - - u = vcast_vd_vi(q); - s = vmla(u, vcast_vd_d(-PI4_A*2), s); - s = vmla(u, vcast_vd_d(-PI4_B*2), s); - s = vmla(u, vcast_vd_d(-PI4_C*2), s); - - t = s; - - s = vmul(s, s); - - u = vcast_vd_d(1.58938307283228937328511e-10); - u = vmla(u, s, vcast_vd_d(-2.50506943502539773349318e-08)); - u = vmla(u, s, vcast_vd_d(2.75573131776846360512547e-06)); - u = vmla(u, s, vcast_vd_d(-0.000198412698278911770864914)); - u = vmla(u, s, vcast_vd_d(0.0083333333333191845961746)); - u = vmla(u, s, vcast_vd_d(-0.166666666666666130709393)); - u = vmul(vmul(u, s), t); - - rx = vadd(t, u); - - u = vcast_vd_d(-1.13615350239097429531523e-11); - u = vmla(u, s, vcast_vd_d(2.08757471207040055479366e-09)); - u = vmla(u, s, vcast_vd_d(-2.75573144028847567498567e-07)); - u = vmla(u, s, vcast_vd_d(2.48015872890001867311915e-05)); - u = vmla(u, s, vcast_vd_d(-0.00138888888888714019282329)); - u = vmla(u, s, vcast_vd_d(0.0416666666666665519592062)); - u = vmla(u, s, vcast_vd_d(-0.5)); - - ry = vadd(vcast_vd_d(1), vmul(s, u)); - - m = vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(0)); - r.x = vsel(m, rx, ry); - r.y = vsel(m, ry, rx); - - m = vmaski_eq(vandi(q, vcast_vi_i(2)), vcast_vi_i(2)); - r.x = vreinterpret_vd_vm(vxorm(vandm(m, vreinterpret_vm_vd(vcast_vd_d(-0.0))), vreinterpret_vm_vd(r.x))); - - m = vmaski_eq(vandi(vaddi(q, vcast_vi_i(1)), vcast_vi_i(2)), vcast_vi_i(2)); - r.y = vreinterpret_vd_vm(vxorm(vandm(m, vreinterpret_vm_vd(vcast_vd_d(-0.0))), vreinterpret_vm_vd(r.y))); - - m = vmask_isinf(d); - r.x = vsel(m, vcast_vd_d(rtengine::RT_NAN), r.x); - r.y = vsel(m, vcast_vd_d(rtengine::RT_NAN), r.y); - - return r; -} - -static INLINE vdouble xtan(vdouble d) { - vint q; - vdouble u, s, x; - vmask m; - - q = vrint_vi_vd(vmul(d, vcast_vd_d(rtengine::RT_2_PI))); - - u = vcast_vd_vi(q); - x = vadd(d, vmul(u, vcast_vd_d(-PI4_A*2))); - x = vadd(x, vmul(u, vcast_vd_d(-PI4_B*2))); - x = vadd(x, vmul(u, vcast_vd_d(-PI4_C*2))); - - s = vmul(x, x); - - m = vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(1)); - x = vsel(m, vneg(x), x); - - u = vcast_vd_d(1.01419718511083373224408e-05); - u = vmla(u, s, vcast_vd_d(-2.59519791585924697698614e-05)); - u = vmla(u, s, vcast_vd_d(5.23388081915899855325186e-05)); - u = vmla(u, s, vcast_vd_d(-3.05033014433946488225616e-05)); - u = vmla(u, s, vcast_vd_d(7.14707504084242744267497e-05)); - u = vmla(u, s, vcast_vd_d(8.09674518280159187045078e-05)); - u = vmla(u, s, vcast_vd_d(0.000244884931879331847054404)); - u = vmla(u, s, vcast_vd_d(0.000588505168743587154904506)); - u = vmla(u, s, vcast_vd_d(0.00145612788922812427978848)); - u = vmla(u, s, vcast_vd_d(0.00359208743836906619142924)); - u = vmla(u, s, vcast_vd_d(0.00886323944362401618113356)); - u = vmla(u, s, vcast_vd_d(0.0218694882853846389592078)); - u = vmla(u, s, vcast_vd_d(0.0539682539781298417636002)); - u = vmla(u, s, vcast_vd_d(0.133333333333125941821962)); - u = vmla(u, s, vcast_vd_d(0.333333333333334980164153)); - - u = vmla(s, vmul(u, x), x); - - u = vsel(m, vrec(u), u); - - u = vsel(vmask_isinf(d), vcast_vd_d(rtengine::RT_NAN), u); - - return u; -} - -static INLINE vdouble atan2k(vdouble y, vdouble x) { - vdouble s, t, u; - vint q; - vmask p; - - q = vseli_lt(x, vcast_vd_d(0), vcast_vi_i(-2), vcast_vi_i(0)); - x = vabs(x); - - q = vseli_lt(x, y, vaddi(q, vcast_vi_i(1)), q); - p = vmask_lt(x, y); - s = vsel (p, vneg(x), y); - t = vmax (x, y); - - s = vdiv(s, t); - t = vmul(s, s); - - u = vcast_vd_d(-1.88796008463073496563746e-05); - u = vmla(u, t, vcast_vd_d(0.000209850076645816976906797)); - u = vmla(u, t, vcast_vd_d(-0.00110611831486672482563471)); - u = vmla(u, t, vcast_vd_d(0.00370026744188713119232403)); - u = vmla(u, t, vcast_vd_d(-0.00889896195887655491740809)); - u = vmla(u, t, vcast_vd_d(0.016599329773529201970117)); - u = vmla(u, t, vcast_vd_d(-0.0254517624932312641616861)); - u = vmla(u, t, vcast_vd_d(0.0337852580001353069993897)); - u = vmla(u, t, vcast_vd_d(-0.0407629191276836500001934)); - u = vmla(u, t, vcast_vd_d(0.0466667150077840625632675)); - u = vmla(u, t, vcast_vd_d(-0.0523674852303482457616113)); - u = vmla(u, t, vcast_vd_d(0.0587666392926673580854313)); - u = vmla(u, t, vcast_vd_d(-0.0666573579361080525984562)); - u = vmla(u, t, vcast_vd_d(0.0769219538311769618355029)); - u = vmla(u, t, vcast_vd_d(-0.090908995008245008229153)); - u = vmla(u, t, vcast_vd_d(0.111111105648261418443745)); - u = vmla(u, t, vcast_vd_d(-0.14285714266771329383765)); - u = vmla(u, t, vcast_vd_d(0.199999999996591265594148)); - u = vmla(u, t, vcast_vd_d(-0.333333333333311110369124)); - - t = vadd(s, vmul(s, vmul(t, u))); - t = vadd(t, vmul(vcast_vd_vi(q), vcast_vd_d(rtengine::RT_PI/2))); - - return t; -} - -static INLINE vdouble xatan2(vdouble y, vdouble x) { - vdouble r = atan2k(vabs(y), x); - - r = vmulsign(r, x); - r = vsel(vorm(vmask_isinf(x), vmask_eq(x, vcast_vd_d(0))), vsub(vcast_vd_d(rtengine::RT_PI/2), visinf2(x, vmulsign(vcast_vd_d(rtengine::RT_PI/2), x))), r); - r = vsel(vmask_isinf(y), vsub(vcast_vd_d(rtengine::RT_PI/2), visinf2(x, vmulsign(vcast_vd_d(rtengine::RT_PI/4), x))), r); - r = vsel(vmask_eq(y, vcast_vd_d(0)), vsel(vmask_eq(vsign(x), vcast_vd_d(-1.0)), vcast_vd_d(rtengine::RT_PI), vcast_vd_d(0)), r); - - return vsel(vorm(vmask_isnan(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_NAN), vmulsign(r, y)); -} - -static INLINE vdouble xasin(vdouble d) { - vdouble x, y; - x = vadd(vcast_vd_d(1), d); - y = vsub(vcast_vd_d(1), d); - x = vmul(x, y); - x = vsqrt(x); - x = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), atan2k(vabs(d), x)); - return vmulsign(x, d); -} - -static INLINE vdouble xacos(vdouble d) { - vdouble x, y; - x = vadd(vcast_vd_d(1), d); - y = vsub(vcast_vd_d(1), d); - x = vmul(x, y); - x = vsqrt(x); - x = vmulsign(atan2k(x, vabs(d)), d); - y = (vdouble)vandm(vmask_lt(d, vcast_vd_d(0)), (vmask)vcast_vd_d(rtengine::RT_PI)); - x = vadd(x, y); - return x; -} - -static INLINE vdouble xatan(vdouble s) { - vdouble t, u; - vint q; - - q = vseli_lt(s, vcast_vd_d(0), vcast_vi_i(2), vcast_vi_i(0)); - s = vabs(s); - - q = vseli_lt(vcast_vd_d(1), s, vaddi(q, vcast_vi_i(1)), q); - s = vsel(vmask_lt(vcast_vd_d(1), s), vdiv(vcast_vd_d(1), s), s); - - t = vmul(s, s); - - u = vcast_vd_d(-1.88796008463073496563746e-05); - u = vmla(u, t, vcast_vd_d(0.000209850076645816976906797)); - u = vmla(u, t, vcast_vd_d(-0.00110611831486672482563471)); - u = vmla(u, t, vcast_vd_d(0.00370026744188713119232403)); - u = vmla(u, t, vcast_vd_d(-0.00889896195887655491740809)); - u = vmla(u, t, vcast_vd_d(0.016599329773529201970117)); - u = vmla(u, t, vcast_vd_d(-0.0254517624932312641616861)); - u = vmla(u, t, vcast_vd_d(0.0337852580001353069993897)); - u = vmla(u, t, vcast_vd_d(-0.0407629191276836500001934)); - u = vmla(u, t, vcast_vd_d(0.0466667150077840625632675)); - u = vmla(u, t, vcast_vd_d(-0.0523674852303482457616113)); - u = vmla(u, t, vcast_vd_d(0.0587666392926673580854313)); - u = vmla(u, t, vcast_vd_d(-0.0666573579361080525984562)); - u = vmla(u, t, vcast_vd_d(0.0769219538311769618355029)); - u = vmla(u, t, vcast_vd_d(-0.090908995008245008229153)); - u = vmla(u, t, vcast_vd_d(0.111111105648261418443745)); - u = vmla(u, t, vcast_vd_d(-0.14285714266771329383765)); - u = vmla(u, t, vcast_vd_d(0.199999999996591265594148)); - u = vmla(u, t, vcast_vd_d(-0.333333333333311110369124)); - - t = vadd(s, vmul(s, vmul(t, u))); - - t = vsel(vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(1)), vsub(vcast_vd_d(rtengine::RT_PI/2), t), t); - t = vsel(vmaski_eq(vandi(q, vcast_vi_i(2)), vcast_vi_i(2)), vneg(t), t); - - return t; -} - -static INLINE vdouble xlog(vdouble d) { - vdouble x, x2; - vdouble t, m; - vint e; - - e = vilogbp1(vmul(d, vcast_vd_d(0.7071))); - m = vldexp(d, vsubi(vcast_vi_i(0), e)); - - x = vdiv(vadd(vcast_vd_d(-1), m), vadd(vcast_vd_d(1), m)); - x2 = vmul(x, x); - - t = vcast_vd_d(0.148197055177935105296783); - t = vmla(t, x2, vcast_vd_d(0.153108178020442575739679)); - t = vmla(t, x2, vcast_vd_d(0.181837339521549679055568)); - t = vmla(t, x2, vcast_vd_d(0.22222194152736701733275)); - t = vmla(t, x2, vcast_vd_d(0.285714288030134544449368)); - t = vmla(t, x2, vcast_vd_d(0.399999999989941956712869)); - t = vmla(t, x2, vcast_vd_d(0.666666666666685503450651)); - t = vmla(t, x2, vcast_vd_d(2)); - - x = vadd(vmul(x, t), vmul(vcast_vd_d(0.693147180559945286226764), vcast_vd_vi(e))); - - x = vsel(vmask_ispinf(d), vcast_vd_d(rtengine::RT_INFINITY), x); - x = vsel(vmask_gt(vcast_vd_d(0), d), vcast_vd_d(rtengine::RT_NAN), x); - x = vsel(vmask_eq(d, vcast_vd_d(0)), vcast_vd_d(-rtengine::RT_INFINITY), x); - - return x; -} - -static INLINE vdouble xexp(vdouble d) { - vint q = vrint_vi_vd(vmul(d, vcast_vd_d(R_LN2))); - vdouble s, u; - - s = vadd(d, vmul(vcast_vd_vi(q), vcast_vd_d(-L2U))); - s = vadd(s, vmul(vcast_vd_vi(q), vcast_vd_d(-L2L))); - - u = vcast_vd_d(2.08860621107283687536341e-09); - u = vmla(u, s, vcast_vd_d(2.51112930892876518610661e-08)); - u = vmla(u, s, vcast_vd_d(2.75573911234900471893338e-07)); - u = vmla(u, s, vcast_vd_d(2.75572362911928827629423e-06)); - u = vmla(u, s, vcast_vd_d(2.4801587159235472998791e-05)); - u = vmla(u, s, vcast_vd_d(0.000198412698960509205564975)); - u = vmla(u, s, vcast_vd_d(0.00138888888889774492207962)); - u = vmla(u, s, vcast_vd_d(0.00833333333331652721664984)); - u = vmla(u, s, vcast_vd_d(0.0416666666666665047591422)); - u = vmla(u, s, vcast_vd_d(0.166666666666666851703837)); - u = vmla(u, s, vcast_vd_d(0.5)); - - u = vadd(vcast_vd_d(1), vadd(s, vmul(vmul(s, s), u))); - - u = vldexp(u, q); - - u = vsel(vmask_isminf(d), vcast_vd_d(0), u); - - return u; -} - -static INLINE vdouble2 logk(vdouble d) { - vdouble2 x, x2; - vdouble t, m; - vint e; - - e = vilogbp1(vmul(d, vcast_vd_d(0.7071))); - m = vldexp(d, vsubi(vcast_vi_i(0), e)); - - x = div_dd(add2_ss(vcast_vd_d(-1), m), add2_ss(vcast_vd_d(1), m)); - x2 = squ_d(x); - x2 = normalize_d(x2); - - t = vcast_vd_d(0.134601987501262130076155); - t = vmla(t, x2.x, vcast_vd_d(0.132248509032032670243288)); - t = vmla(t, x2.x, vcast_vd_d(0.153883458318096079652524)); - t = vmla(t, x2.x, vcast_vd_d(0.181817427573705403298686)); - t = vmla(t, x2.x, vcast_vd_d(0.222222231326187414840781)); - t = vmla(t, x2.x, vcast_vd_d(0.285714285651261412873718)); - t = vmla(t, x2.x, vcast_vd_d(0.400000000000222439910458)); - t = vmla(t, x2.x, vcast_vd_d(0.666666666666666371239645)); - - return add2_dd(mul_ds(dd(vcast_vd_d(0.693147180559945286226764), vcast_vd_d(2.319046813846299558417771e-17)), - vcast_vd_vi(e)), - add2_dd(scale_d(x, vcast_vd_d(2)), mul_ds(mul_dd(x2, x), t))); -} - -static INLINE vdouble expk(vdouble2 d) { - vdouble u = vmul(vadd(d.x, d.y), vcast_vd_d(R_LN2)); - vint q = vrint_vi_vd(u); - vdouble2 s, t; - - s = add2_ds(d, vmul(vcast_vd_vi(q), vcast_vd_d(-L2U))); - s = add2_ds(s, vmul(vcast_vd_vi(q), vcast_vd_d(-L2L))); - - q = vrint_vi_vd(vmin(vmax(vcast_vd_d(-2047.49), u), vcast_vd_d(2047.49))); - - s = normalize_d(s); - - u = vcast_vd_d(2.51069683420950419527139e-08); - u = vmla(u, s.x, vcast_vd_d(2.76286166770270649116855e-07)); - u = vmla(u, s.x, vcast_vd_d(2.75572496725023574143864e-06)); - u = vmla(u, s.x, vcast_vd_d(2.48014973989819794114153e-05)); - u = vmla(u, s.x, vcast_vd_d(0.000198412698809069797676111)); - u = vmla(u, s.x, vcast_vd_d(0.0013888888939977128960529)); - u = vmla(u, s.x, vcast_vd_d(0.00833333333332371417601081)); - u = vmla(u, s.x, vcast_vd_d(0.0416666666665409524128449)); - u = vmla(u, s.x, vcast_vd_d(0.166666666666666740681535)); - u = vmla(u, s.x, vcast_vd_d(0.500000000000000999200722)); - - t = add_dd(s, mul_ds(squ_d(s), u)); - - t = add_sd(vcast_vd_d(1), t); - u = vadd(t.x, t.y); - u = vldexp(u, q); - - return u; -} - -static INLINE vdouble xpow(vdouble x, vdouble y) { -#if 1 - vmask yisint = vmask_eq(vcast_vd_vi(vrint_vi_vd(y)), y); - vmask yisodd = vandm(vmaski_eq(vandi(vrint_vi_vd(y), vcast_vi_i(1)), vcast_vi_i(1)), yisint); - - vdouble result = expk(mul_ds(logk(vabs(x)), y)); - - //result = vsel(vmask_isnan(result), vcast_vd_d(rtengine::RT_INFINITY), result); - - result = vmul(result, - vsel(vmask_gt(x, vcast_vd_d(0)), - vcast_vd_d(1), - vsel(yisint, - vsel(yisodd, - vcast_vd_d(-1), - vcast_vd_d(1)), - vcast_vd_d(rtengine::RT_NAN)))); - - vdouble efx = vreinterpret_vd_vm(vxorm(vreinterpret_vm_vd(vsub(vabs(x), vcast_vd_d(1))), vsignbit(y))); - - result = vsel(vmask_isinf(y), - vsel(vmask_lt(efx, vcast_vd_d(0)), - vcast_vd_d(0), - vsel(vmask_eq(efx, vcast_vd_d(0)), - vcast_vd_d(1.0), - vcast_vd_d(rtengine::RT_INFINITY))), - result); - - result = vsel(vorm(vmask_isinf(x), vmask_eq(x, vcast_vd_d(0))), - vmul(vsel(yisodd, vsign(x), vcast_vd_d(1)), - vsel(vmask_lt(vsel(vmask_eq(x, vcast_vd_d(0)), vneg(y), y), vcast_vd_d(0)), - vcast_vd_d(0), - vcast_vd_d(rtengine::RT_INFINITY))), - result); - - result = vsel(vorm(vmask_isnan(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_NAN), result); - - result = vsel(vorm(vmask_eq(y, vcast_vd_d(0)), vmask_eq(x, vcast_vd_d(1))), vcast_vd_d(1), result); - - return result; -#else - return expk(mul_ds(logk(x), y)); -#endif -} - -static INLINE vdouble2 expk2(vdouble2 d) { - vdouble u = vmul(vadd(d.x, d.y), vcast_vd_d(R_LN2)); - vint q = vrint_vi_vd(u); - vdouble2 s, t; - - s = add2_ds(d, vmul(vcast_vd_vi(q), vcast_vd_d(-L2U))); - s = add2_ds(s, vmul(vcast_vd_vi(q), vcast_vd_d(-L2L))); - - q = vrint_vi_vd(vmin(vmax(vcast_vd_d(-2047.49), u), vcast_vd_d(2047.49))); - - s = normalize_d(s); - - u = vcast_vd_d(2.51069683420950419527139e-08); - u = vmla(u, s.x, vcast_vd_d(2.76286166770270649116855e-07)); - u = vmla(u, s.x, vcast_vd_d(2.75572496725023574143864e-06)); - u = vmla(u, s.x, vcast_vd_d(2.48014973989819794114153e-05)); - u = vmla(u, s.x, vcast_vd_d(0.000198412698809069797676111)); - u = vmla(u, s.x, vcast_vd_d(0.0013888888939977128960529)); - u = vmla(u, s.x, vcast_vd_d(0.00833333333332371417601081)); - u = vmla(u, s.x, vcast_vd_d(0.0416666666665409524128449)); - u = vmla(u, s.x, vcast_vd_d(0.166666666666666740681535)); - u = vmla(u, s.x, vcast_vd_d(0.500000000000000999200722)); - - t = add_dd(s, mul_ds(squ_d(s), u)); - - t = add_sd(vcast_vd_d(1), t); - - return dd(vldexp(t.x, q), vldexp(t.y, q)); -} - -static INLINE vdouble xsinh(vdouble x) { - vdouble y = vabs(x); - vdouble2 d = expk2(dd(y, vcast_vd_d(0))); - d = add2_dd(d, div_dd(dd(vcast_vd_d(-1), vcast_vd_d(0)), d)); - y = vmul(vadd(d.x, d.y), vcast_vd_d(0.5)); - - y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); - y = vmulsign(y, x); - y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); - - return y; -} - -static INLINE vdouble xcosh(vdouble x) { - vdouble2 d = expk2(dd(x, vcast_vd_d(0))); - d = add2_dd(d, div_dd(dd(vcast_vd_d(1), vcast_vd_d(0)), d)); - vdouble y = vmul(vadd(d.x, d.y), vcast_vd_d(0.5)); - - y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); - y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); - - return y; -} - -static INLINE vdouble xtanh(vdouble x) { - vdouble y = vabs(x); - vdouble2 d = expk2(dd(y, vcast_vd_d(0))); - vdouble2 e = div_dd(dd(vcast_vd_d(1), vcast_vd_d(0)), d); - d = div_dd(add2_dd(d, scale_d(e, vcast_vd_d(-1))), add2_dd(d, e)); - y = d.x + d.y; - - y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(1.0), y); - y = vmulsign(y, x); - y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); - - return y; -} - -static INLINE vdouble2 logk2(vdouble2 d) { - vdouble2 x, x2, m; - vdouble t; - vint e; - - d = normalize_d(d); - e = vilogbp1(vmul(d.x, vcast_vd_d(0.7071))); - m = scale_d(d, vldexp(vcast_vd_d(1), vsubi(vcast_vi_i(0), e))); - - x = div_dd(add2_ds(m, vcast_vd_d(-1)), add2_ds(m, vcast_vd_d(1))); - x2 = squ_d(x); - x2 = normalize_d(x2); - - t = vcast_vd_d(0.134601987501262130076155); - t = vmla(t, x2.x, vcast_vd_d(0.132248509032032670243288)); - t = vmla(t, x2.x, vcast_vd_d(0.153883458318096079652524)); - t = vmla(t, x2.x, vcast_vd_d(0.181817427573705403298686)); - t = vmla(t, x2.x, vcast_vd_d(0.222222231326187414840781)); - t = vmla(t, x2.x, vcast_vd_d(0.285714285651261412873718)); - t = vmla(t, x2.x, vcast_vd_d(0.400000000000222439910458)); - t = vmla(t, x2.x, vcast_vd_d(0.666666666666666371239645)); - - return add2_dd(mul_ds(dd(vcast_vd_d(0.693147180559945286226764), vcast_vd_d(2.319046813846299558417771e-17)), - vcast_vd_vi(e)), - add2_dd(scale_d(x, vcast_vd_d(2)), mul_ds(mul_dd(x2, x), t))); -} - -static INLINE vdouble xasinh(vdouble x) { - vdouble y = vabs(x); - vdouble2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(y, y), vcast_vd_d(1))), y)); - y = vadd(d.x, d.y); - - y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); - y = vmulsign(y, x); - y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); - - return y; -} - -static INLINE vdouble xacosh(vdouble x) { - vdouble2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(x, x), vcast_vd_d(-1))), x)); - vdouble y = vadd(d.x, d.y); - - y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); - y = vsel(vmask_eq(x, vcast_vd_d(1.0)), vcast_vd_d(0.0), y); - y = vsel(vmask_lt(x, vcast_vd_d(1.0)), vcast_vd_d(rtengine::RT_NAN), y); - y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); - - return y; -} - -static INLINE vdouble xatanh(vdouble x) { - vdouble y = vabs(x); - vdouble2 d = logk2(div_dd(add2_ss(vcast_vd_d(1), y), add2_ss(vcast_vd_d(1), -y))); - y = vsel(vmask_gt(y, vcast_vd_d(1.0)), vcast_vd_d(rtengine::RT_NAN), vsel(vmask_eq(y, vcast_vd_d(1.0)), vcast_vd_d(rtengine::RT_INFINITY), vmul(vadd(d.x, d.y), vcast_vd_d(0.5)))); - - y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_NAN), y); - y = vmulsign(y, x); - y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); - - return y; -} - -static INLINE vdouble xcbrt(vdouble d) { - vdouble x, y, q = vcast_vd_d(1.0); - vint e, qu, re; - vdouble t; - - e = vilogbp1(vabs(d)); - d = vldexp(d, vsubi(vcast_vi_i(0), e)); - - t = vadd(vcast_vd_vi(e), vcast_vd_d(6144)); - qu = vtruncate_vi_vd(vdiv(t, vcast_vd_d(3))); - re = vtruncate_vi_vd(vsub(t, vmul(vcast_vd_vi(qu), vcast_vd_d(3)))); - - q = vsel(vmaski_eq(re, vcast_vi_i(1)), vcast_vd_d(1.2599210498948731647672106), q); - q = vsel(vmaski_eq(re, vcast_vi_i(2)), vcast_vd_d(1.5874010519681994747517056), q); - q = vldexp(q, vsubi(qu, vcast_vi_i(2048))); - - q = vmulsign(q, d); - - d = vabs(d); - - x = vcast_vd_d(-0.640245898480692909870982); - x = vmla(x, d, vcast_vd_d(2.96155103020039511818595)); - x = vmla(x, d, vcast_vd_d(-5.73353060922947843636166)); - x = vmla(x, d, vcast_vd_d(6.03990368989458747961407)); - x = vmla(x, d, vcast_vd_d(-3.85841935510444988821632)); - x = vmla(x, d, vcast_vd_d(2.2307275302496609725722)); - - y = vmul(x, x); y = vmul(y, y); x = vsub(x, vmul(vmla(d, y, vneg(x)), vcast_vd_d(1.0 / 3.0))); - y = vmul(vmul(d, x), x); - y = vmul(vsub(y, vmul(vmul(vcast_vd_d(2.0 / 3.0), y), vmla(y, x, vcast_vd_d(-1.0)))), q); - - return y; -} - -static INLINE vdouble xexp2(vdouble a) { - vdouble u = expk(mul_ds(dd(vcast_vd_d(0.69314718055994528623), vcast_vd_d(2.3190468138462995584e-17)), a)); - u = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), u); - u = vsel(vmask_isminf(a), vcast_vd_d(0), u); - return u; -} - -static INLINE vdouble xexp10(vdouble a) { - vdouble u = expk(mul_ds(dd(vcast_vd_d(2.3025850929940459011), vcast_vd_d(-2.1707562233822493508e-16)), a)); - u = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), u); - u = vsel(vmask_isminf(a), vcast_vd_d(0), u); - return u; -} - -static INLINE vdouble xexpm1(vdouble a) { - vdouble2 d = add2_ds(expk2(dd(a, vcast_vd_d(0))), vcast_vd_d(-1.0)); - vdouble x = d.x + d.y; - x = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), x); - x = vsel(vmask_isminf(a), vcast_vd_d(-1), x); - return x; -} - -static INLINE vdouble xlog10(vdouble a) { - vdouble2 d = mul_dd(logk(a), dd(vcast_vd_d(0.43429448190325176116), vcast_vd_d(6.6494347733425473126e-17))); - vdouble x = d.x + d.y; - - x = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), x); - x = vsel(vmask_gt(vcast_vd_d(0), a), vcast_vd_d(rtengine::RT_NAN), x); - x = vsel(vmask_eq(a, vcast_vd_d(0)), vcast_vd_d(-rtengine::RT_INFINITY), x); - - return x; -} - -static INLINE vdouble xlog1p(vdouble a) { - vdouble2 d = logk2(add2_ss(a, vcast_vd_d(1))); - vdouble x = d.x + d.y; - - x = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), x); - x = vsel(vmask_gt(vcast_vd_d(-1), a), vcast_vd_d(rtengine::RT_NAN), x); - x = vsel(vmask_eq(a, vcast_vd_d(-1)), vcast_vd_d(-rtengine::RT_INFINITY), x); - - return x; -} - -// - -typedef struct { - vfloat x, y; -} vfloat2; - -static INLINE vfloat vabsf(vfloat f) { return (vfloat)vandnotm((vmask)vcast_vf_f(-0.0f), (vmask)f); } -static INLINE vfloat vnegf(vfloat f) { return (vfloat)vxorm((vmask)f, (vmask)vcast_vf_f(-0.0f)); } - -#ifdef __SSE4_1__ -// only one instruction when using SSE4.1 -static INLINE vfloat vself(vmask mask, vfloat x, vfloat y) { - return _mm_blendv_ps(y,x,(vfloat)mask); -} - -static INLINE vint vselc(vmask mask, vint x, vint y) { - return _mm_blendv_epi8(y,x,mask); -} - -#else -// three instructions when using SSE2 -static INLINE vfloat vself(vmask mask, vfloat x, vfloat y) { - return (vfloat)vorm(vandm(mask, (vmask)x), vandnotm(mask, (vmask)y)); -} - -static INLINE vint vselc(vmask mask, vint x, vint y) { - return vorm(vandm(mask, (vmask)x), vandnotm(mask, (vmask)y)); -} -#endif - -static INLINE vfloat vselfzero(vmask mask, vfloat x) { - // returns value of x if corresponding mask bits are 1, else returns 0 - // faster than vself(mask, x, ZEROV) - return _mm_and_ps((vfloat)mask, x); -} -static INLINE vfloat vselfnotzero(vmask mask, vfloat x) { - // returns value of x if corresponding mask bits are 0, else returns 0 - // faster than vself(mask, ZEROV, x) - return _mm_andnot_ps((vfloat)mask, x); -} - -static INLINE vint vselizero(vmask mask, vint x) { - // returns value of x if corresponding mask bits are 1, else returns 0 - // faster than vselc(mask, x, ZEROV) - return _mm_and_si128(mask, x); -} -static INLINE vint vselinotzero(vmask mask, vint x) { - // returns value of x if corresponding mask bits are 0, else returns 0 - // faster than vselc(mask, ZEROV, x) - return _mm_andnot_si128(mask, x); -} - -static INLINE vint2 vseli2_lt(vfloat f0, vfloat f1, vint2 x, vint2 y) { - vint2 m2 = vcast_vi2_vm(vmaskf_lt(f0, f1)); - return vori2(vandi2(m2, x), vandnoti2(m2, y)); -} - -static INLINE vmask vsignbitf(vfloat f) { - return vandm((vmask)f, (vmask)vcast_vf_f(-0.0f)); -} - -static INLINE vfloat vmulsignf(vfloat x, vfloat y) { - return (vfloat)vxorm((vmask)x, vsignbitf(y)); -} - -static INLINE vfloat vsignf(vfloat f) { - return (vfloat)vorm((vmask)vcast_vf_f(1.0f), vandm((vmask)vcast_vf_f(-0.0f), (vmask)f)); -} - -static INLINE vmask vmaskf_isinf(vfloat d) { return vmaskf_eq(vabsf(d), vcast_vf_f(INFINITYf)); } -static INLINE vmask vmaskf_ispinf(vfloat d) { return vmaskf_eq(d, vcast_vf_f(INFINITYf)); } -static INLINE vmask vmaskf_isminf(vfloat d) { return vmaskf_eq(d, vcast_vf_f(-INFINITYf)); } -static INLINE vmask vmaskf_isnan(vfloat d) { return vmaskf_neq(d, d); } -// the following is equivalent to vorm(vmaskf_isnan(a), vmaskf_isnan(b)), but faster -static INLINE vmask vmaskf_isnan(vfloat a, vfloat b) { return (vmask)_mm_cmpunord_ps(a, b); } -static INLINE vfloat visinf2f(vfloat d, vfloat m) { return (vfloat)vandm(vmaskf_isinf(d), vorm(vsignbitf(d), (vmask)m)); } -static INLINE vfloat visinff(vfloat d) { return visinf2f(d, vcast_vf_f(1.0f)); } - -static INLINE vint2 vilogbp1f(vfloat d) { - vmask m = vmaskf_lt(d, vcast_vf_f(5.421010862427522E-20f)); - d = vself(m, vmulf(vcast_vf_f(1.8446744073709552E19f), d), d); - vint2 q = vandi2(vsrli2(vcast_vi2_vm(vreinterpret_vm_vf(d)), 23), vcast_vi2_i(0xff)); - q = vsubi2(q, vseli2(m, vcast_vi2_i(64 + 0x7e), vcast_vi2_i(0x7e))); - return q; -} - -static INLINE vfloat vldexpf(vfloat x, vint2 q) { - vfloat u; - vint2 m = vsrai2(q, 31); - m = vslli2(vsubi2(vsrai2(vaddi2(m, q), 6), m), 4); - q = vsubi2(q, vslli2(m, 2)); - u = vreinterpret_vf_vm(vcast_vm_vi2(vslli2(vaddi2(m, vcast_vi2_i(0x7f)), 23))); - x = vmulf(vmulf(vmulf(vmulf(x, u), u), u), u); - u = vreinterpret_vf_vm(vcast_vm_vi2(vslli2(vaddi2(q, vcast_vi2_i(0x7f)), 23))); - return vmulf(x, u); -} - -static INLINE vfloat xsinf(vfloat d) { - vint2 q; - vfloat u, s; - - q = vrint_vi2_vf(vmulf(d, vcast_vf_f((float)rtengine::RT_1_PI))); - - u = vcast_vf_vi2(q); - d = vmlaf(u, vcast_vf_f(-PI4_Af*4), d); - d = vmlaf(u, vcast_vf_f(-PI4_Bf*4), d); - d = vmlaf(u, vcast_vf_f(-PI4_Cf*4), d); - d = vmlaf(u, vcast_vf_f(-PI4_Df*4), d); - - s = vmulf(d, d); - - d = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(1)), vnegf(d), d); - - u = vcast_vf_f(2.6083159809786593541503e-06f); - u = vmlaf(u, s, vcast_vf_f(-0.0001981069071916863322258f)); - u = vmlaf(u, s, vcast_vf_f(0.00833307858556509017944336f)); - u = vmlaf(u, s, vcast_vf_f(-0.166666597127914428710938f)); - - u = vmlaf(s, vmulf(u, d), d); - - return u; -} - -static INLINE vfloat xcosf(vfloat d) { - vint2 q; - vfloat u, s; - - q = vrint_vi2_vf(vsubf(vmulf(d, vcast_vf_f((float)rtengine::RT_1_PI)), vcast_vf_f(0.5f))); - q = vaddi2(vaddi2(q, q), vcast_vi2_i(1)); - - u = vcast_vf_vi2(q); - d = vmlaf(u, vcast_vf_f(-PI4_Af*2), d); - d = vmlaf(u, vcast_vf_f(-PI4_Bf*2), d); - d = vmlaf(u, vcast_vf_f(-PI4_Cf*2), d); - d = vmlaf(u, vcast_vf_f(-PI4_Df*2), d); - - s = vmulf(d, d); - - d = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(2)), vcast_vi2_i(2)), d, vnegf(d)); - - u = vcast_vf_f(2.6083159809786593541503e-06f); - u = vmlaf(u, s, vcast_vf_f(-0.0001981069071916863322258f)); - u = vmlaf(u, s, vcast_vf_f(0.00833307858556509017944336f)); - u = vmlaf(u, s, vcast_vf_f(-0.166666597127914428710938f)); - - u = vmlaf(s, vmulf(u, d), d); - - return u; -} - -static INLINE vfloat2 xsincosf(vfloat d) { - vint2 q; - vmask m; - vfloat u, s, t, rx, ry; - vfloat2 r; - - q = vrint_vi2_vf(vmulf(d, vcast_vf_f((float)rtengine::RT_2_PI))); - - s = d; - - u = vcast_vf_vi2(q); - s = vmlaf(u, vcast_vf_f(-PI4_Af*2), s); - s = vmlaf(u, vcast_vf_f(-PI4_Bf*2), s); - s = vmlaf(u, vcast_vf_f(-PI4_Cf*2), s); - s = vmlaf(u, vcast_vf_f(-PI4_Df*2), s); - - t = s; - - s = vmulf(s, s); - - u = vcast_vf_f(-0.000195169282960705459117889f); - u = vmlaf(u, s, vcast_vf_f(0.00833215750753879547119141f)); - u = vmlaf(u, s, vcast_vf_f(-0.166666537523269653320312f)); - u = vmulf(vmulf(u, s), t); - - rx = vaddf(t, u); - - u = vcast_vf_f(-2.71811842367242206819355e-07f); - u = vmlaf(u, s, vcast_vf_f(2.47990446951007470488548e-05f)); - u = vmlaf(u, s, vcast_vf_f(-0.00138888787478208541870117f)); - u = vmlaf(u, s, vcast_vf_f(0.0416666641831398010253906f)); - u = vmlaf(u, s, vcast_vf_f(-0.5)); - - ry = vaddf(vcast_vf_f(1), vmulf(s, u)); - - m = vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(0)); - r.x = vself(m, rx, ry); - r.y = vself(m, ry, rx); - - m = vmaski2_eq(vandi2(q, vcast_vi2_i(2)), vcast_vi2_i(2)); - r.x = vreinterpret_vf_vm(vxorm(vandm(m, vreinterpret_vm_vf(vcast_vf_f(-0.0))), vreinterpret_vm_vf(r.x))); - - m = vmaski2_eq(vandi2(vaddi2(q, vcast_vi2_i(1)), vcast_vi2_i(2)), vcast_vi2_i(2)); - r.y = vreinterpret_vf_vm(vxorm(vandm(m, vreinterpret_vm_vf(vcast_vf_f(-0.0))), vreinterpret_vm_vf(r.y))); - - m = vmaskf_isinf(d); - r.x = vself(m, vcast_vf_f(rtengine::RT_NAN), r.x); - r.y = vself(m, vcast_vf_f(rtengine::RT_NAN), r.y); - - return r; -} - -static INLINE vfloat xtanf(vfloat d) { - vint2 q; - vmask m; - vfloat u, s, x; - - q = vrint_vi2_vf(vmulf(d, vcast_vf_f((float)(2 * rtengine::RT_1_PI)))); - - x = d; - - u = vcast_vf_vi2(q); - x = vmlaf(u, vcast_vf_f(-PI4_Af*2), x); - x = vmlaf(u, vcast_vf_f(-PI4_Bf*2), x); - x = vmlaf(u, vcast_vf_f(-PI4_Cf*2), x); - x = vmlaf(u, vcast_vf_f(-PI4_Df*2), x); - - s = vmulf(x, x); - - m = vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(1)); - x = vself(m, vnegf(x), x); - - u = vcast_vf_f(0.00927245803177356719970703f); - u = vmlaf(u, s, vcast_vf_f(0.00331984995864331722259521f)); - u = vmlaf(u, s, vcast_vf_f(0.0242998078465461730957031f)); - u = vmlaf(u, s, vcast_vf_f(0.0534495301544666290283203f)); - u = vmlaf(u, s, vcast_vf_f(0.133383005857467651367188f)); - u = vmlaf(u, s, vcast_vf_f(0.333331853151321411132812f)); - - u = vmlaf(s, vmulf(u, x), x); - - u = vself(m, vrecf(u), u); - - u = vself(vmaskf_isinf(d), vcast_vf_f(NANf), u); - - return u; -} - -static INLINE vfloat xatanf(vfloat s) { - vfloat t, u; - vint2 q; - - q = vseli2_lt(s, vcast_vf_f(0.0f), vcast_vi2_i(2), vcast_vi2_i(0)); - s = vabsf(s); - - q = vseli2_lt(vcast_vf_f(1.0f), s, vaddi2(q, vcast_vi2_i(1)), q); - s = vself(vmaskf_lt(vcast_vf_f(1.0f), s), vdivf(vcast_vf_f(1.0f), s), s); - - t = vmulf(s, s); - - u = vcast_vf_f(0.00282363896258175373077393f); - u = vmlaf(u, t, vcast_vf_f(-0.0159569028764963150024414f)); - u = vmlaf(u, t, vcast_vf_f(0.0425049886107444763183594f)); - u = vmlaf(u, t, vcast_vf_f(-0.0748900920152664184570312f)); - u = vmlaf(u, t, vcast_vf_f(0.106347933411598205566406f)); - u = vmlaf(u, t, vcast_vf_f(-0.142027363181114196777344f)); - u = vmlaf(u, t, vcast_vf_f(0.199926957488059997558594f)); - u = vmlaf(u, t, vcast_vf_f(-0.333331018686294555664062f)); - - t = vaddf(s, vmulf(s, vmulf(t, u))); - - t = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(1)), vsubf(vcast_vf_f((float)(rtengine::RT_PI/2)), t), t); - t = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(2)), vcast_vi2_i(2)), vnegf(t), t); - - return t; -} - -static INLINE vfloat atan2kf(vfloat y, vfloat x) { - vfloat s, t, u; - vint2 q; - vmask p; - - q = vseli2_lt(x, vcast_vf_f(0.0f), vcast_vi2_i(-2), vcast_vi2_i(0)); - x = vabsf(x); - - q = vseli2_lt(x, y, vaddi2(q, vcast_vi2_i(1)), q); - p = vmaskf_lt(x, y); - s = vself(p, vnegf(x), y); - t = vmaxf(x, y); - - s = vdivf(s, t); - t = vmulf(s, s); - - u = vcast_vf_f(0.00282363896258175373077393f); - u = vmlaf(u, t, vcast_vf_f(-0.0159569028764963150024414f)); - u = vmlaf(u, t, vcast_vf_f(0.0425049886107444763183594f)); - u = vmlaf(u, t, vcast_vf_f(-0.0748900920152664184570312f)); - u = vmlaf(u, t, vcast_vf_f(0.106347933411598205566406f)); - u = vmlaf(u, t, vcast_vf_f(-0.142027363181114196777344f)); - u = vmlaf(u, t, vcast_vf_f(0.199926957488059997558594f)); - u = vmlaf(u, t, vcast_vf_f(-0.333331018686294555664062f)); - - t = vaddf(s, vmulf(s, vmulf(t, u))); - t = vaddf(t, vmulf(vcast_vf_vi2(q), vcast_vf_f((float)(rtengine::RT_PI/2)))); - - return t; -} - -static INLINE vfloat xatan2f(vfloat y, vfloat x) { - vfloat r = atan2kf(vabsf(y), x); - - r = vmulsignf(r, x); - r = vself(vorm(vmaskf_isinf(x), vmaskf_eq(x, vcast_vf_f(0.0f))), vsubf(vcast_vf_f((float)(rtengine::RT_PI/2)), visinf2f(x, vmulsignf(vcast_vf_f((float)(rtengine::RT_PI/2)), x))), r); - r = vself(vmaskf_isinf(y), vsubf(vcast_vf_f((float)(rtengine::RT_PI/2)), visinf2f(x, vmulsignf(vcast_vf_f((float)(rtengine::RT_PI/4)), x))), r); - r = vself(vmaskf_eq(y, vcast_vf_f(0.0f)), vselfzero(vmaskf_eq(vsignf(x), vcast_vf_f(-1.0f)), vcast_vf_f((float)rtengine::RT_PI)), r); - - return vself(vmaskf_isnan(x, y), vcast_vf_f(NANf), vmulsignf(r, y)); -} - -static INLINE vfloat xasinf(vfloat d) { - vfloat x, y; - x = vaddf(vcast_vf_f(1.0f), d); - y = vsubf(vcast_vf_f(1.0f), d); - x = vmulf(x, y); - x = vsqrtf(x); - x = vself(vmaskf_isnan(x), vcast_vf_f(NANf), atan2kf(vabsf(d), x)); - return vmulsignf(x, d); -} - -static INLINE vfloat xacosf(vfloat d) { - vfloat x, y; - x = vaddf(vcast_vf_f(1.0f), d); - y = vsubf(vcast_vf_f(1.0f), d); - x = vmulf(x, y); - x = vsqrtf(x); - x = vmulsignf(atan2kf(x, vabsf(d)), d); - y = (vfloat)vandm(vmaskf_lt(d, vcast_vf_f(0.0f)), (vmask)vcast_vf_f((float)rtengine::RT_PI)); - x = vaddf(x, y); - return x; -} - -static INLINE vfloat xlogf(vfloat d) { - vfloat x, x2, t, m; - vint2 e; - - e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); - m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); - - x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); - x2 = vmulf(x, x); - - t = vcast_vf_f(0.2371599674224853515625f); - t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); - t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); - t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); - t = vmlaf(t, x2, vcast_vf_f(2.0f)); - - x = vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); - - x = vself(vmaskf_ispinf(d), vcast_vf_f(INFINITYf), x); - x = vself(vmaskf_gt(vcast_vf_f(0), d), vcast_vf_f(NANf), x); - x = vself(vmaskf_eq(d, vcast_vf_f(0)), vcast_vf_f(-INFINITYf), x); - - return x; -} - -static INLINE vfloat xlogf1(vfloat d) { // does xlogf(vmaxf(d, 1.f)) but faster - vfloat x, x2, t, m; - vint2 e; - - e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); - m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); - - x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); - x2 = vmulf(x, x); - - t = vcast_vf_f(0.2371599674224853515625f); - t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); - t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); - t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); - t = vmlaf(t, x2, vcast_vf_f(2.0f)); - - x = vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); - - x = vself(vmaskf_ispinf(d), vcast_vf_f(INFINITYf), x); - x = vselfnotzero(vmaskf_le(d, vcast_vf_f(1.f)), x); - - return x; -} - -static INLINE vfloat xlogf0(vfloat d) { - vfloat x, x2, t, m; - vint2 e; - - e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); - m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); - - x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); - x2 = vmulf(x, x); - - t = vcast_vf_f(0.2371599674224853515625f); - t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); - t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); - t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); - t = vmlaf(t, x2, vcast_vf_f(2.0f)); - - x = vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); - - x = vself(vmaskf_ispinf(d), vcast_vf_f(0), x); - x = vself(vmaskf_gt(vcast_vf_f(0), d), vcast_vf_f(0), x); - x = vself(vmaskf_eq(d, vcast_vf_f(0)), vcast_vf_f(0), x); - - return x; -} - -static INLINE vfloat xlogfNoCheck(vfloat d) { // this version does not check input values. Use it only when you know the input values are > 0 e.g. when filling a lookup table - vfloat x, x2, t, m; - vint2 e; - - e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); - m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); - - x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); - x2 = vmulf(x, x); - - t = vcast_vf_f(0.2371599674224853515625f); - t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); - t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); - t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); - t = vmlaf(t, x2, vcast_vf_f(2.0f)); - - return vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); - -} - -static INLINE vfloat xexpf(vfloat d) { - vint2 q = vrint_vi2_vf(vmulf(d, vcast_vf_f(R_LN2f))); - vfloat s, u; - - s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Uf),d); - s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Lf),s); - - u = vcast_vf_f(0.00136324646882712841033936f); - u = vmlaf(u, s, vcast_vf_f(0.00836596917361021041870117f)); - u = vmlaf(u, s, vcast_vf_f(0.0416710823774337768554688f)); - u = vmlaf(u, s, vcast_vf_f(0.166665524244308471679688f)); - u = vmlaf(u, s, vcast_vf_f(0.499999850988388061523438f)); - - u = vaddf(vcast_vf_f(1.0f), vmlaf(vmulf(s, s), u, s)); - - u = vldexpf(u, q); - - // -104.0 - return vselfnotzero(vmaskf_gt(vcast_vf_f(-104.f), d), u); -} - -static INLINE vfloat xexpfNoCheck(vfloat d) { // this version does not check input values. Use it only when you know the input values are > -104.f e.g. when filling a lookup table - vint2 q = vrint_vi2_vf(vmulf(d, vcast_vf_f(R_LN2f))); - vfloat s, u; - - s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Uf),d); - s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Lf),s); - - u = vcast_vf_f(0.00136324646882712841033936f); - u = vmlaf(u, s, vcast_vf_f(0.00836596917361021041870117f)); - u = vmlaf(u, s, vcast_vf_f(0.0416710823774337768554688f)); - u = vmlaf(u, s, vcast_vf_f(0.166665524244308471679688f)); - u = vmlaf(u, s, vcast_vf_f(0.499999850988388061523438f)); - - u = vaddf(vcast_vf_f(1.0f), vmlaf(vmulf(s, s), u, s)); - - return vldexpf(u, q); -} - -static INLINE vfloat xcbrtf(vfloat d) { - vfloat x, y, q = vcast_vf_f(1.0), t; - vint2 e, qu, re; - - e = vilogbp1f(vabsf(d)); - d = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); - - t = vaddf(vcast_vf_vi2(e), vcast_vf_f(6144)); - qu = vtruncate_vi2_vf(vdivf(t, vcast_vf_f(3))); - re = vtruncate_vi2_vf(vsubf(t, vmulf(vcast_vf_vi2(qu), vcast_vf_f(3)))); - - q = vself(vmaski2_eq(re, vcast_vi2_i(1)), vcast_vf_f(1.2599210498948731647672106f), q); - q = vself(vmaski2_eq(re, vcast_vi2_i(2)), vcast_vf_f(1.5874010519681994747517056f), q); - q = vldexpf(q, vsubi2(qu, vcast_vi2_i(2048))); - - q = vmulsignf(q, d); - d = vabsf(d); - - x = vcast_vf_f(-0.601564466953277587890625f); - x = vmlaf(x, d, vcast_vf_f(2.8208892345428466796875f)); - x = vmlaf(x, d, vcast_vf_f(-5.532182216644287109375f)); - x = vmlaf(x, d, vcast_vf_f(5.898262500762939453125f)); - x = vmlaf(x, d, vcast_vf_f(-3.8095417022705078125f)); - x = vmlaf(x, d, vcast_vf_f(2.2241256237030029296875f)); - - y = vmulf(vmulf(d, x), x); - y = vmulf(vsubf(y, vmulf(vmulf(vcast_vf_f(2.0f / 3.0f), y), vmlaf(y, x, vcast_vf_f(-1.0f)))), q); - - return y; -} - -static INLINE vfloat vclampf(vfloat value, vfloat low, vfloat high) { - // clamps value in [low;high], returns low if value is NaN - return vmaxf(vminf(high, value), low); -} - -static INLINE vfloat SQRV(vfloat a){ - return a * a; -} - -static inline void vswap( vmask condition, vfloat &a, vfloat &b) { - // conditional swap the elements of two vfloats - vfloat temp = vself(condition, a, b); // the values which fit to condition - a = vself(condition, b, a); // the values which fit to inverted condition - b = temp; -} - -static inline float vhadd( vfloat a ) { - // returns a[0] + a[1] + a[2] + a[3] - a += _mm_movehl_ps(a, a); - return _mm_cvtss_f32(_mm_add_ss(a, _mm_shuffle_ps(a, a, 1))); -} - -static inline float vhmin(vfloat a) { - // returns min(a[0], a[1], a[2], a[3]) - a = vminf(a, _mm_movehl_ps(a, a)); - return _mm_cvtss_f32(vminf(a, _mm_shuffle_ps(a, a, 1))); -} - -static inline float vhmax(vfloat a) { - // returns max(a[0], a[1], a[2], a[3]) - a = vmaxf(a, _mm_movehl_ps(a, a)); - return _mm_cvtss_f32(vmaxf(a, _mm_shuffle_ps(a, a, 1))); -} - -static INLINE vfloat vmul2f(vfloat a){ - // fastest way to multiply by 2 - return a + a; -} - -static INLINE vfloat vintpf(vfloat a, vfloat b, vfloat c) { - // calculate a * b + (1 - a) * c (interpolate two values) - // following is valid: - // vintpf(a, b+x, c+x) = vintpf(a, b, c) + x - // vintpf(a, b*x, c*x) = vintpf(a, b, c) * x - return a * (b-c) + c; -} - -static INLINE vfloat vdup(vfloat a){ - // returns { a[0],a[0],a[1],a[1] } - return _mm_unpacklo_ps( a, a ); -} - -static INLINE vfloat vaddc2vfu(float &a) -{ - // loads a[0]..a[7] and returns { a[0]+a[1], a[2]+a[3], a[4]+a[5], a[6]+a[7] } - vfloat a1 = _mm_loadu_ps( &a ); - vfloat a2 = _mm_loadu_ps( (&a) + 4 ); - return _mm_shuffle_ps(a1,a2,_MM_SHUFFLE( 2,0,2,0 )) + _mm_shuffle_ps(a1,a2,_MM_SHUFFLE( 3,1,3,1 )); -} - -static INLINE vfloat vadivapb (vfloat a, vfloat b) { - return a / (a+b); -} - -static INLINE void vconvertrgbrgbrgbrgb2rrrrggggbbbb (const float * src, vfloat &rv, vfloat &gv, vfloat &bv) { // cool function name, isn't it ? :P - // converts a sequence of 4 float RGB triplets to 3 red, green and blue quadruples - rv = _mm_setr_ps(src[0],src[3],src[6],src[9]); - gv = _mm_setr_ps(src[1],src[4],src[7],src[10]); - bv = _mm_setr_ps(src[2],src[5],src[8],src[11]); -} - -#if defined( __SSE4_1__ ) && defined( __x86_64__ ) -static INLINE vfloat vceilf(vfloat x) { - return _mm_round_ps(x, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC); -} - -#else - -static INLINE vfloat vceilf(vfloat x) { - __m128i zerov = _mm_setzero_si128(); - zerov = _mm_cmpeq_epi32(zerov, zerov); - const vfloat onev = (vfloat)_mm_slli_epi32(_mm_srli_epi32(zerov, 25), 23); //create vector 1.0f - const vfloat xi = _mm_cvtepi32_ps(_mm_cvttps_epi32(x)); - return xi + _mm_and_ps(_mm_cmplt_ps(xi, x), onev); -} -#endif - -#endif // __SSE2__ -#endif // SLEEFSSEAVX diff --git a/rtengine/sleefsseavx.h b/rtengine/sleefsseavx.h index 8fe20c54b..c10f4a0c2 100644 --- a/rtengine/sleefsseavx.h +++ b/rtengine/sleefsseavx.h @@ -1,124 +1,897 @@ -#include -#include +//////////////////////////////////////////////////////////////// +// +// this code was taken from http://shibatch.sourceforge.net/ +// Many thanks to the author of original version: Naoki Shibata +// +// This version contains modifications made by Ingo Weyrich +// +//////////////////////////////////////////////////////////////// +#pragma once +#include "rt_math.h" #ifdef __SSE2__ -#define VECTLENDP 2 -#define VECTLENSP 4 - -typedef __m128d vdouble; -typedef __m128i vint; - -typedef __m128 vfloat; -typedef __m128i vint2; -typedef __m128i vmask; - -static vdouble vloadu(double *p) -{ - return _mm_loadu_pd(p); -} -static void vstoreu(double *p, vdouble v) -{ - _mm_storeu_pd(p, v); -} - -static vfloat vloaduf(float *p) -{ - return _mm_loadu_ps(p); -} -static void vstoreuf(float *p, vfloat v) -{ - _mm_storeu_ps(p, v); -} - -static vint2 vloadui2(int32_t *p) -{ - return (vint2)_mm_loadu_si128((__m128i *)p); -} -static void vstoreui2(int32_t *p, vint2 v) -{ - _mm_storeu_si128((__m128i *)p, (__m128i)v); -} -#endif +#include "helpersse2.h" #ifdef ENABLE_AVX -#define VECTLENDP 4 -#define VECTLENSP 8 +#include "helperavx.h" +#endif -typedef __m256d vdouble; -typedef __m128i vint; +#ifdef __GNUC__ +#define INLINE __inline +#else +#define INLINE inline +#endif +#define PI4_A .7853981554508209228515625 +#define PI4_B .794662735614792836713604629039764404296875e-8 +#define PI4_C .306161699786838294306516483068750264552437361480769e-16 +#define M_4_PI 1.273239544735162542821171882678754627704620361328125 -typedef __m256 vfloat; -typedef struct { - vint x, y; -} vint2; +#define L2U .69314718055966295651160180568695068359375 +#define L2L .28235290563031577122588448175013436025525412068e-12 +#define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 -static vdouble vloadu(double *p) -{ - return _mm256_loadu_pd(p); -} -static void vstoreu(double *p, vdouble v) -{ - return _mm256_storeu_pd(p, v); +#define PI4_Af 0.78515625f +#define PI4_Bf 0.00024127960205078125f +#define PI4_Cf 6.3329935073852539062e-07f +#define PI4_Df 4.9604681473525147339e-10f + +#define L2Uf 0.693145751953125f +#define L2Lf 1.428606765330187045e-06f +#define R_LN2f 1.442695040888963407359924681001892137426645954152985934135449406931f + +#define INFINITYf ((float)rtengine::RT_INFINITY) +#define NANf ((float)rtengine::RT_NAN) + +static INLINE vdouble vadd3(vdouble v0, vdouble v1, vdouble v2) { + return vadd(vadd(v0, v1), v2); } -static vfloat vloaduf(float *p) -{ - return _mm256_loadu_ps(p); -} -static void vstoreuf(float *p, vfloat v) -{ - return _mm256_storeu_ps(p, v); +static INLINE vdouble vadd4(vdouble v0, vdouble v1, vdouble v2, vdouble v3) { + return vadd3(vadd(v0, v1), v2, v3); } -static vint2 vloadui2(int32_t *p) -{ - vint2 r; - r.x = _mm_loadu_si128((__m128i *) p ); - r.y = _mm_loadu_si128((__m128i *)(p + 4)); +static INLINE vdouble vadd5(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4) { + return vadd4(vadd(v0, v1), v2, v3, v4); +} + +static INLINE vdouble vadd6(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4, vdouble v5) { + return vadd5(vadd(v0, v1), v2, v3, v4, v5); +} + +static INLINE vdouble vadd7(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4, vdouble v5, vdouble v6) { + return vadd6(vadd(v0, v1), v2, v3, v4, v5, v6); +} + +static INLINE vdouble vsub3(vdouble v0, vdouble v1, vdouble v2) { + return vsub(vsub(v0, v1), v2); +} + +static INLINE vdouble vsub4(vdouble v0, vdouble v1, vdouble v2, vdouble v3) { + return vsub3(vsub(v0, v1), v2, v3); +} + +static INLINE vdouble vsub5(vdouble v0, vdouble v1, vdouble v2, vdouble v3, vdouble v4) { + return vsub4(vsub(v0, v1), v2, v3, v4); +} + +// + +static INLINE vdouble2 normalize_d(vdouble2 t) { + vdouble2 s; + + s.x = vadd(t.x, t.y); + s.y = vadd(vsub(t.x, s.x), t.y); + + return s; +} + +static INLINE vdouble2 scale_d(vdouble2 d, vdouble s) { + vdouble2 r = {vmul(d.x, s), vmul(d.y, s)}; return r; } -static void vstoreui2(int32_t *p, vint2 v) -{ - _mm_storeu_si128((__m128i *) p , v.x); - _mm_storeu_si128((__m128i *)(p + 4), v.y); +static INLINE vdouble2 add_ss(vdouble x, vdouble y) { + vdouble2 r; + + r.x = vadd(x, y); + r.y = vadd(vsub(x, r.x), y); + + return r; } -#endif -typedef struct { +static INLINE vdouble2 add2_ss(vdouble x, vdouble y) { + vdouble2 r; + + r.x = vadd(x, y); + vdouble v = vsub(r.x, x); + r.y = vadd(vsub(x, vsub(r.x, v)), vsub(y, v)); + + return r; +} + +static INLINE vdouble2 add_ds(vdouble2 x, vdouble y) { + vdouble2 r; + + r.x = vadd(x.x, y); + r.y = vadd3(vsub(x.x, r.x), y, x.y); + + return r; +} + +static INLINE vdouble2 add2_ds(vdouble2 x, vdouble y) { + vdouble2 r; + + r.x = vadd(x.x, y); + vdouble v = vsub(r.x, x.x); + r.y = vadd(vsub(x.x, vsub(r.x, v)), vsub(y, v)); + r.y = vadd(r.y, x.y); + + return r; +} + +static INLINE vdouble2 add_sd(vdouble x, vdouble2 y) { + vdouble2 r; + + r.x = vadd(x, y.x); + r.y = vadd3(vsub(x, r.x), y.x, y.y); + + return r; +} + +static INLINE vdouble2 add_dd(vdouble2 x, vdouble2 y) { + // |x| >= |y| + + vdouble2 r; + + r.x = vadd(x.x, y.x); + r.y = vadd4(vsub(x.x, r.x), y.x, x.y, y.y); + + return r; +} + +static INLINE vdouble2 add2_dd(vdouble2 x, vdouble2 y) { + vdouble2 r; + + r.x = vadd(x.x, y.x); + vdouble v = vsub(r.x, x.x); + r.y = vadd(vsub(x.x, vsub(r.x, v)), vsub(y.x, v)); + r.y = vadd(r.y, vadd(x.y, y.y)); + + return r; +} + +static INLINE vdouble2 div_dd(vdouble2 n, vdouble2 d) { + vdouble t = vrec(d.x); + vdouble dh = vupper(d.x), dl = vsub(d.x, dh); + vdouble th = vupper(t ), tl = vsub(t , th); + vdouble nhh = vupper(n.x), nhl = vsub(n.x, nhh); + + vdouble2 q; + + q.x = vmul(n.x, t); + + vdouble u = vadd5(vsub(vmul(nhh, th), q.x), vmul(nhh, tl), vmul(nhl, th), vmul(nhl, tl), + vmul(q.x, vsub5(vcast_vd_d(1), vmul(dh, th), vmul(dh, tl), vmul(dl, th), vmul(dl, tl)))); + + q.y = vadd(vmul(t, vsub(n.y, vmul(q.x, d.y))), u); + + return q; +} + +static INLINE vdouble2 mul_ss(vdouble x, vdouble y) { + vdouble xh = vupper(x), xl = vsub(x, xh); + vdouble yh = vupper(y), yl = vsub(y, yh); + vdouble2 r; + + r.x = vmul(x, y); + r.y = vadd5(vmul(xh, yh), vneg(r.x), vmul(xl, yh), vmul(xh, yl), vmul(xl, yl)); + + return r; +} + +static INLINE vdouble2 mul_ds(vdouble2 x, vdouble y) { + vdouble xh = vupper(x.x), xl = vsub(x.x, xh); + vdouble yh = vupper(y ), yl = vsub(y , yh); + vdouble2 r; + + r.x = vmul(x.x, y); + r.y = vadd6(vmul(xh, yh), vneg(r.x), vmul(xl, yh), vmul(xh, yl), vmul(xl, yl), vmul(x.y, y)); + + return r; +} + +static INLINE vdouble2 mul_dd(vdouble2 x, vdouble2 y) { + vdouble xh = vupper(x.x), xl = vsub(x.x, xh); + vdouble yh = vupper(y.x), yl = vsub(y.x, yh); + vdouble2 r; + + r.x = vmul(x.x, y.x); + r.y = vadd7(vmul(xh, yh), vneg(r.x), vmul(xl, yh), vmul(xh, yl), vmul(xl, yl), vmul(x.x, y.y), vmul(x.y, y.x)); + + return r; +} + +static INLINE vdouble2 squ_d(vdouble2 x) { + vdouble xh = vupper(x.x), xl = vsub(x.x, xh); + vdouble2 r; + + r.x = vmul(x.x, x.x); + r.y = vadd5(vmul(xh, xh), vneg(r.x), vmul(vadd(xh, xh), xl), vmul(xl, xl), vmul(x.x, vadd(x.y, x.y))); + + return r; +} + +static INLINE vdouble2 rec_s(vdouble d) { + vdouble t = vrec(d); + vdouble dh = vupper(d), dl = vsub(d, dh); + vdouble th = vupper(t), tl = vsub(t, th); + vdouble2 q; + + q.x = t; + q.y = vmul(t, vsub5(vcast_vd_d(1), vmul(dh, th), vmul(dh, tl), vmul(dl, th), vmul(dl, tl))); + + return q; +} + +static INLINE vdouble2 sqrt_d(vdouble2 d) { + vdouble t = vsqrt(vadd(d.x, d.y)); + return scale_d(mul_dd(add2_dd(d, mul_ss(t, t)), rec_s(t)), vcast_vd_d(0.5)); +} + +// + +static INLINE vdouble xldexp(vdouble x, vint q) { return vldexp(x, q); } + +static INLINE vint xilogb(vdouble d) { + vdouble e = vcast_vd_vi(vsubi(vilogbp1(vabs(d)), vcast_vi_i(1))); + e = vsel(vmask_eq(d, vcast_vd_d(0)), vcast_vd_d(-2147483648.0), e); + e = vsel(vmask_eq(vabs(d), vcast_vd_d(rtengine::RT_INFINITY)), vcast_vd_d(2147483647), e); + return vrint_vi_vd(e); +} + +static INLINE vdouble xsin(vdouble d) { + vint q; + vdouble u, s; + + q = vrint_vi_vd(vmul(d, vcast_vd_d(rtengine::RT_1_PI))); + + u = vcast_vd_vi(q); + d = vadd(d, vmul(u, vcast_vd_d(-PI4_A*4))); + d = vadd(d, vmul(u, vcast_vd_d(-PI4_B*4))); + d = vadd(d, vmul(u, vcast_vd_d(-PI4_C*4))); + + s = vmul(d, d); + + d = vsel(vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(1)), vneg(d), d); + + u = vcast_vd_d(-7.97255955009037868891952e-18); + u = vmla(u, s, vcast_vd_d(2.81009972710863200091251e-15)); + u = vmla(u, s, vcast_vd_d(-7.64712219118158833288484e-13)); + u = vmla(u, s, vcast_vd_d(1.60590430605664501629054e-10)); + u = vmla(u, s, vcast_vd_d(-2.50521083763502045810755e-08)); + u = vmla(u, s, vcast_vd_d(2.75573192239198747630416e-06)); + u = vmla(u, s, vcast_vd_d(-0.000198412698412696162806809)); + u = vmla(u, s, vcast_vd_d(0.00833333333333332974823815)); + u = vmla(u, s, vcast_vd_d(-0.166666666666666657414808)); + + u = vmla(s, vmul(u, d), d); + + return u; +} + +static INLINE vdouble xcos(vdouble d) { + vint q; + vdouble u, s; + + q = vrint_vi_vd(vsub(vmul(d, vcast_vd_d(rtengine::RT_1_PI)), vcast_vd_d(0.5))); + q = vaddi(vaddi(q, q), vcast_vi_i(1)); + + u = vcast_vd_vi(q); + d = vadd(d, vmul(u, vcast_vd_d(-PI4_A*2))); + d = vadd(d, vmul(u, vcast_vd_d(-PI4_B*2))); + d = vadd(d, vmul(u, vcast_vd_d(-PI4_C*2))); + + s = vmul(d, d); + + d = vsel(vmaski_eq(vandi(q, vcast_vi_i(2)), vcast_vi_i(0)), vneg(d), d); + + u = vcast_vd_d(-7.97255955009037868891952e-18); + u = vmla(u, s, vcast_vd_d(2.81009972710863200091251e-15)); + u = vmla(u, s, vcast_vd_d(-7.64712219118158833288484e-13)); + u = vmla(u, s, vcast_vd_d(1.60590430605664501629054e-10)); + u = vmla(u, s, vcast_vd_d(-2.50521083763502045810755e-08)); + u = vmla(u, s, vcast_vd_d(2.75573192239198747630416e-06)); + u = vmla(u, s, vcast_vd_d(-0.000198412698412696162806809)); + u = vmla(u, s, vcast_vd_d(0.00833333333333332974823815)); + u = vmla(u, s, vcast_vd_d(-0.166666666666666657414808)); + + u = vmla(s, vmul(u, d), d); + + return u; +} + +static INLINE vdouble2 xsincos(vdouble d) { + vint q; + vmask m; + vdouble u, s, t, rx, ry; + vdouble2 r; + + q = vrint_vi_vd(vmul(d, vcast_vd_d(rtengine::RT_2_PI))); + + s = d; + + u = vcast_vd_vi(q); + s = vmla(u, vcast_vd_d(-PI4_A*2), s); + s = vmla(u, vcast_vd_d(-PI4_B*2), s); + s = vmla(u, vcast_vd_d(-PI4_C*2), s); + + t = s; + + s = vmul(s, s); + + u = vcast_vd_d(1.58938307283228937328511e-10); + u = vmla(u, s, vcast_vd_d(-2.50506943502539773349318e-08)); + u = vmla(u, s, vcast_vd_d(2.75573131776846360512547e-06)); + u = vmla(u, s, vcast_vd_d(-0.000198412698278911770864914)); + u = vmla(u, s, vcast_vd_d(0.0083333333333191845961746)); + u = vmla(u, s, vcast_vd_d(-0.166666666666666130709393)); + u = vmul(vmul(u, s), t); + + rx = vadd(t, u); + + u = vcast_vd_d(-1.13615350239097429531523e-11); + u = vmla(u, s, vcast_vd_d(2.08757471207040055479366e-09)); + u = vmla(u, s, vcast_vd_d(-2.75573144028847567498567e-07)); + u = vmla(u, s, vcast_vd_d(2.48015872890001867311915e-05)); + u = vmla(u, s, vcast_vd_d(-0.00138888888888714019282329)); + u = vmla(u, s, vcast_vd_d(0.0416666666666665519592062)); + u = vmla(u, s, vcast_vd_d(-0.5)); + + ry = vadd(vcast_vd_d(1), vmul(s, u)); + + m = vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(0)); + r.x = vsel(m, rx, ry); + r.y = vsel(m, ry, rx); + + m = vmaski_eq(vandi(q, vcast_vi_i(2)), vcast_vi_i(2)); + r.x = vreinterpret_vd_vm(vxorm(vandm(m, vreinterpret_vm_vd(vcast_vd_d(-0.0))), vreinterpret_vm_vd(r.x))); + + m = vmaski_eq(vandi(vaddi(q, vcast_vi_i(1)), vcast_vi_i(2)), vcast_vi_i(2)); + r.y = vreinterpret_vd_vm(vxorm(vandm(m, vreinterpret_vm_vd(vcast_vd_d(-0.0))), vreinterpret_vm_vd(r.y))); + + m = vmask_isinf(d); + r.x = vsel(m, vcast_vd_d(rtengine::RT_NAN), r.x); + r.y = vsel(m, vcast_vd_d(rtengine::RT_NAN), r.y); + + return r; +} + +static INLINE vdouble xtan(vdouble d) { + vint q; + vdouble u, s, x; + vmask m; + + q = vrint_vi_vd(vmul(d, vcast_vd_d(rtengine::RT_2_PI))); + + u = vcast_vd_vi(q); + x = vadd(d, vmul(u, vcast_vd_d(-PI4_A*2))); + x = vadd(x, vmul(u, vcast_vd_d(-PI4_B*2))); + x = vadd(x, vmul(u, vcast_vd_d(-PI4_C*2))); + + s = vmul(x, x); + + m = vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(1)); + x = vsel(m, vneg(x), x); + + u = vcast_vd_d(1.01419718511083373224408e-05); + u = vmla(u, s, vcast_vd_d(-2.59519791585924697698614e-05)); + u = vmla(u, s, vcast_vd_d(5.23388081915899855325186e-05)); + u = vmla(u, s, vcast_vd_d(-3.05033014433946488225616e-05)); + u = vmla(u, s, vcast_vd_d(7.14707504084242744267497e-05)); + u = vmla(u, s, vcast_vd_d(8.09674518280159187045078e-05)); + u = vmla(u, s, vcast_vd_d(0.000244884931879331847054404)); + u = vmla(u, s, vcast_vd_d(0.000588505168743587154904506)); + u = vmla(u, s, vcast_vd_d(0.00145612788922812427978848)); + u = vmla(u, s, vcast_vd_d(0.00359208743836906619142924)); + u = vmla(u, s, vcast_vd_d(0.00886323944362401618113356)); + u = vmla(u, s, vcast_vd_d(0.0218694882853846389592078)); + u = vmla(u, s, vcast_vd_d(0.0539682539781298417636002)); + u = vmla(u, s, vcast_vd_d(0.133333333333125941821962)); + u = vmla(u, s, vcast_vd_d(0.333333333333334980164153)); + + u = vmla(s, vmul(u, x), x); + + u = vsel(m, vrec(u), u); + + u = vsel(vmask_isinf(d), vcast_vd_d(rtengine::RT_NAN), u); + + return u; +} + +static INLINE vdouble atan2k(vdouble y, vdouble x) { + vdouble s, t, u; + vint q; + vmask p; + + q = vseli_lt(x, vcast_vd_d(0), vcast_vi_i(-2), vcast_vi_i(0)); + x = vabs(x); + + q = vseli_lt(x, y, vaddi(q, vcast_vi_i(1)), q); + p = vmask_lt(x, y); + s = vsel (p, vneg(x), y); + t = vmax (x, y); + + s = vdiv(s, t); + t = vmul(s, s); + + u = vcast_vd_d(-1.88796008463073496563746e-05); + u = vmla(u, t, vcast_vd_d(0.000209850076645816976906797)); + u = vmla(u, t, vcast_vd_d(-0.00110611831486672482563471)); + u = vmla(u, t, vcast_vd_d(0.00370026744188713119232403)); + u = vmla(u, t, vcast_vd_d(-0.00889896195887655491740809)); + u = vmla(u, t, vcast_vd_d(0.016599329773529201970117)); + u = vmla(u, t, vcast_vd_d(-0.0254517624932312641616861)); + u = vmla(u, t, vcast_vd_d(0.0337852580001353069993897)); + u = vmla(u, t, vcast_vd_d(-0.0407629191276836500001934)); + u = vmla(u, t, vcast_vd_d(0.0466667150077840625632675)); + u = vmla(u, t, vcast_vd_d(-0.0523674852303482457616113)); + u = vmla(u, t, vcast_vd_d(0.0587666392926673580854313)); + u = vmla(u, t, vcast_vd_d(-0.0666573579361080525984562)); + u = vmla(u, t, vcast_vd_d(0.0769219538311769618355029)); + u = vmla(u, t, vcast_vd_d(-0.090908995008245008229153)); + u = vmla(u, t, vcast_vd_d(0.111111105648261418443745)); + u = vmla(u, t, vcast_vd_d(-0.14285714266771329383765)); + u = vmla(u, t, vcast_vd_d(0.199999999996591265594148)); + u = vmla(u, t, vcast_vd_d(-0.333333333333311110369124)); + + t = vadd(s, vmul(s, vmul(t, u))); + t = vadd(t, vmul(vcast_vd_vi(q), vcast_vd_d(rtengine::RT_PI/2))); + + return t; +} + +static INLINE vdouble xatan2(vdouble y, vdouble x) { + vdouble r = atan2k(vabs(y), x); + + r = vmulsign(r, x); + r = vsel(vorm(vmask_isinf(x), vmask_eq(x, vcast_vd_d(0))), vsub(vcast_vd_d(rtengine::RT_PI/2), visinf2(x, vmulsign(vcast_vd_d(rtengine::RT_PI/2), x))), r); + r = vsel(vmask_isinf(y), vsub(vcast_vd_d(rtengine::RT_PI/2), visinf2(x, vmulsign(vcast_vd_d(rtengine::RT_PI/4), x))), r); + r = vsel(vmask_eq(y, vcast_vd_d(0)), vsel(vmask_eq(vsign(x), vcast_vd_d(-1.0)), vcast_vd_d(rtengine::RT_PI), vcast_vd_d(0)), r); + + return vsel(vorm(vmask_isnan(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_NAN), vmulsign(r, y)); +} + +static INLINE vdouble xasin(vdouble d) { vdouble x, y; -} vdouble2; + x = vadd(vcast_vd_d(1), d); + y = vsub(vcast_vd_d(1), d); + x = vmul(x, y); + x = vsqrt(x); + x = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), atan2k(vabs(d), x)); + return vmulsign(x, d); +} -vdouble xldexp(vdouble x, vint q); -vint xilogb(vdouble d); +static INLINE vdouble xacos(vdouble d) { + vdouble x, y; + x = vadd(vcast_vd_d(1), d); + y = vsub(vcast_vd_d(1), d); + x = vmul(x, y); + x = vsqrt(x); + x = vmulsign(atan2k(x, vabs(d)), d); + y = (vdouble)vandm(vmask_lt(d, vcast_vd_d(0)), (vmask)vcast_vd_d(rtengine::RT_PI)); + x = vadd(x, y); + return x; +} -vdouble xsin(vdouble d); -vdouble xcos(vdouble d); -vdouble2 xsincos(vdouble d); -vdouble xtan(vdouble d); -vdouble xasin(vdouble s); -vdouble xacos(vdouble s); -vdouble xatan(vdouble s); -vdouble xatan2(vdouble y, vdouble x); -vdouble xlog(vdouble d); -vdouble xexp(vdouble d); -vdouble xpow(vdouble x, vdouble y); +static INLINE vdouble xatan(vdouble s) { + vdouble t, u; + vint q; -vdouble xsinh(vdouble d); -vdouble xcosh(vdouble d); -vdouble xtanh(vdouble d); -vdouble xasinh(vdouble s); -vdouble xacosh(vdouble s); -vdouble xatanh(vdouble s); + q = vseli_lt(s, vcast_vd_d(0), vcast_vi_i(2), vcast_vi_i(0)); + s = vabs(s); -vdouble xcbrt(vdouble d); + q = vseli_lt(vcast_vd_d(1), s, vaddi(q, vcast_vi_i(1)), q); + s = vsel(vmask_lt(vcast_vd_d(1), s), vdiv(vcast_vd_d(1), s), s); -vdouble xexp2(vdouble a); -vdouble xexp10(vdouble a); -vdouble xexpm1(vdouble a); -vdouble xlog10(vdouble a); -vdouble xlog1p(vdouble a); + t = vmul(s, s); + + u = vcast_vd_d(-1.88796008463073496563746e-05); + u = vmla(u, t, vcast_vd_d(0.000209850076645816976906797)); + u = vmla(u, t, vcast_vd_d(-0.00110611831486672482563471)); + u = vmla(u, t, vcast_vd_d(0.00370026744188713119232403)); + u = vmla(u, t, vcast_vd_d(-0.00889896195887655491740809)); + u = vmla(u, t, vcast_vd_d(0.016599329773529201970117)); + u = vmla(u, t, vcast_vd_d(-0.0254517624932312641616861)); + u = vmla(u, t, vcast_vd_d(0.0337852580001353069993897)); + u = vmla(u, t, vcast_vd_d(-0.0407629191276836500001934)); + u = vmla(u, t, vcast_vd_d(0.0466667150077840625632675)); + u = vmla(u, t, vcast_vd_d(-0.0523674852303482457616113)); + u = vmla(u, t, vcast_vd_d(0.0587666392926673580854313)); + u = vmla(u, t, vcast_vd_d(-0.0666573579361080525984562)); + u = vmla(u, t, vcast_vd_d(0.0769219538311769618355029)); + u = vmla(u, t, vcast_vd_d(-0.090908995008245008229153)); + u = vmla(u, t, vcast_vd_d(0.111111105648261418443745)); + u = vmla(u, t, vcast_vd_d(-0.14285714266771329383765)); + u = vmla(u, t, vcast_vd_d(0.199999999996591265594148)); + u = vmla(u, t, vcast_vd_d(-0.333333333333311110369124)); + + t = vadd(s, vmul(s, vmul(t, u))); + + t = vsel(vmaski_eq(vandi(q, vcast_vi_i(1)), vcast_vi_i(1)), vsub(vcast_vd_d(rtengine::RT_PI/2), t), t); + t = vsel(vmaski_eq(vandi(q, vcast_vi_i(2)), vcast_vi_i(2)), vneg(t), t); + + return t; +} + +static INLINE vdouble xlog(vdouble d) { + vdouble x, x2; + vdouble t, m; + vint e; + + e = vilogbp1(vmul(d, vcast_vd_d(0.7071))); + m = vldexp(d, vsubi(vcast_vi_i(0), e)); + + x = vdiv(vadd(vcast_vd_d(-1), m), vadd(vcast_vd_d(1), m)); + x2 = vmul(x, x); + + t = vcast_vd_d(0.148197055177935105296783); + t = vmla(t, x2, vcast_vd_d(0.153108178020442575739679)); + t = vmla(t, x2, vcast_vd_d(0.181837339521549679055568)); + t = vmla(t, x2, vcast_vd_d(0.22222194152736701733275)); + t = vmla(t, x2, vcast_vd_d(0.285714288030134544449368)); + t = vmla(t, x2, vcast_vd_d(0.399999999989941956712869)); + t = vmla(t, x2, vcast_vd_d(0.666666666666685503450651)); + t = vmla(t, x2, vcast_vd_d(2)); + + x = vadd(vmul(x, t), vmul(vcast_vd_d(0.693147180559945286226764), vcast_vd_vi(e))); + + x = vsel(vmask_ispinf(d), vcast_vd_d(rtengine::RT_INFINITY), x); + x = vsel(vmask_gt(vcast_vd_d(0), d), vcast_vd_d(rtengine::RT_NAN), x); + x = vsel(vmask_eq(d, vcast_vd_d(0)), vcast_vd_d(-rtengine::RT_INFINITY), x); + + return x; +} + +static INLINE vdouble xexp(vdouble d) { + vint q = vrint_vi_vd(vmul(d, vcast_vd_d(R_LN2))); + vdouble s, u; + + s = vadd(d, vmul(vcast_vd_vi(q), vcast_vd_d(-L2U))); + s = vadd(s, vmul(vcast_vd_vi(q), vcast_vd_d(-L2L))); + + u = vcast_vd_d(2.08860621107283687536341e-09); + u = vmla(u, s, vcast_vd_d(2.51112930892876518610661e-08)); + u = vmla(u, s, vcast_vd_d(2.75573911234900471893338e-07)); + u = vmla(u, s, vcast_vd_d(2.75572362911928827629423e-06)); + u = vmla(u, s, vcast_vd_d(2.4801587159235472998791e-05)); + u = vmla(u, s, vcast_vd_d(0.000198412698960509205564975)); + u = vmla(u, s, vcast_vd_d(0.00138888888889774492207962)); + u = vmla(u, s, vcast_vd_d(0.00833333333331652721664984)); + u = vmla(u, s, vcast_vd_d(0.0416666666666665047591422)); + u = vmla(u, s, vcast_vd_d(0.166666666666666851703837)); + u = vmla(u, s, vcast_vd_d(0.5)); + + u = vadd(vcast_vd_d(1), vadd(s, vmul(vmul(s, s), u))); + + u = vldexp(u, q); + + u = vsel(vmask_isminf(d), vcast_vd_d(0), u); + + return u; +} + +static INLINE vdouble2 logk(vdouble d) { + vdouble2 x, x2; + vdouble t, m; + vint e; + + e = vilogbp1(vmul(d, vcast_vd_d(0.7071))); + m = vldexp(d, vsubi(vcast_vi_i(0), e)); + + x = div_dd(add2_ss(vcast_vd_d(-1), m), add2_ss(vcast_vd_d(1), m)); + x2 = squ_d(x); + x2 = normalize_d(x2); + + t = vcast_vd_d(0.134601987501262130076155); + t = vmla(t, x2.x, vcast_vd_d(0.132248509032032670243288)); + t = vmla(t, x2.x, vcast_vd_d(0.153883458318096079652524)); + t = vmla(t, x2.x, vcast_vd_d(0.181817427573705403298686)); + t = vmla(t, x2.x, vcast_vd_d(0.222222231326187414840781)); + t = vmla(t, x2.x, vcast_vd_d(0.285714285651261412873718)); + t = vmla(t, x2.x, vcast_vd_d(0.400000000000222439910458)); + t = vmla(t, x2.x, vcast_vd_d(0.666666666666666371239645)); + + return add2_dd(mul_ds(dd(vcast_vd_d(0.693147180559945286226764), vcast_vd_d(2.319046813846299558417771e-17)), + vcast_vd_vi(e)), + add2_dd(scale_d(x, vcast_vd_d(2)), mul_ds(mul_dd(x2, x), t))); +} + +static INLINE vdouble expk(vdouble2 d) { + vdouble u = vmul(vadd(d.x, d.y), vcast_vd_d(R_LN2)); + vint q = vrint_vi_vd(u); + vdouble2 s, t; + + s = add2_ds(d, vmul(vcast_vd_vi(q), vcast_vd_d(-L2U))); + s = add2_ds(s, vmul(vcast_vd_vi(q), vcast_vd_d(-L2L))); + + q = vrint_vi_vd(vmin(vmax(vcast_vd_d(-2047.49), u), vcast_vd_d(2047.49))); + + s = normalize_d(s); + + u = vcast_vd_d(2.51069683420950419527139e-08); + u = vmla(u, s.x, vcast_vd_d(2.76286166770270649116855e-07)); + u = vmla(u, s.x, vcast_vd_d(2.75572496725023574143864e-06)); + u = vmla(u, s.x, vcast_vd_d(2.48014973989819794114153e-05)); + u = vmla(u, s.x, vcast_vd_d(0.000198412698809069797676111)); + u = vmla(u, s.x, vcast_vd_d(0.0013888888939977128960529)); + u = vmla(u, s.x, vcast_vd_d(0.00833333333332371417601081)); + u = vmla(u, s.x, vcast_vd_d(0.0416666666665409524128449)); + u = vmla(u, s.x, vcast_vd_d(0.166666666666666740681535)); + u = vmla(u, s.x, vcast_vd_d(0.500000000000000999200722)); + + t = add_dd(s, mul_ds(squ_d(s), u)); + + t = add_sd(vcast_vd_d(1), t); + u = vadd(t.x, t.y); + u = vldexp(u, q); + + return u; +} + +static INLINE vdouble xpow(vdouble x, vdouble y) { +#if 1 + vmask yisint = vmask_eq(vcast_vd_vi(vrint_vi_vd(y)), y); + vmask yisodd = vandm(vmaski_eq(vandi(vrint_vi_vd(y), vcast_vi_i(1)), vcast_vi_i(1)), yisint); + + vdouble result = expk(mul_ds(logk(vabs(x)), y)); + + //result = vsel(vmask_isnan(result), vcast_vd_d(rtengine::RT_INFINITY), result); + + result = vmul(result, + vsel(vmask_gt(x, vcast_vd_d(0)), + vcast_vd_d(1), + vsel(yisint, + vsel(yisodd, + vcast_vd_d(-1), + vcast_vd_d(1)), + vcast_vd_d(rtengine::RT_NAN)))); + + vdouble efx = vreinterpret_vd_vm(vxorm(vreinterpret_vm_vd(vsub(vabs(x), vcast_vd_d(1))), vsignbit(y))); + + result = vsel(vmask_isinf(y), + vsel(vmask_lt(efx, vcast_vd_d(0)), + vcast_vd_d(0), + vsel(vmask_eq(efx, vcast_vd_d(0)), + vcast_vd_d(1.0), + vcast_vd_d(rtengine::RT_INFINITY))), + result); + + result = vsel(vorm(vmask_isinf(x), vmask_eq(x, vcast_vd_d(0))), + vmul(vsel(yisodd, vsign(x), vcast_vd_d(1)), + vsel(vmask_lt(vsel(vmask_eq(x, vcast_vd_d(0)), vneg(y), y), vcast_vd_d(0)), + vcast_vd_d(0), + vcast_vd_d(rtengine::RT_INFINITY))), + result); + + result = vsel(vorm(vmask_isnan(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_NAN), result); + + result = vsel(vorm(vmask_eq(y, vcast_vd_d(0)), vmask_eq(x, vcast_vd_d(1))), vcast_vd_d(1), result); + + return result; +#else + return expk(mul_ds(logk(x), y)); +#endif +} + +static INLINE vdouble2 expk2(vdouble2 d) { + vdouble u = vmul(vadd(d.x, d.y), vcast_vd_d(R_LN2)); + vint q = vrint_vi_vd(u); + vdouble2 s, t; + + s = add2_ds(d, vmul(vcast_vd_vi(q), vcast_vd_d(-L2U))); + s = add2_ds(s, vmul(vcast_vd_vi(q), vcast_vd_d(-L2L))); + + q = vrint_vi_vd(vmin(vmax(vcast_vd_d(-2047.49), u), vcast_vd_d(2047.49))); + + s = normalize_d(s); + + u = vcast_vd_d(2.51069683420950419527139e-08); + u = vmla(u, s.x, vcast_vd_d(2.76286166770270649116855e-07)); + u = vmla(u, s.x, vcast_vd_d(2.75572496725023574143864e-06)); + u = vmla(u, s.x, vcast_vd_d(2.48014973989819794114153e-05)); + u = vmla(u, s.x, vcast_vd_d(0.000198412698809069797676111)); + u = vmla(u, s.x, vcast_vd_d(0.0013888888939977128960529)); + u = vmla(u, s.x, vcast_vd_d(0.00833333333332371417601081)); + u = vmla(u, s.x, vcast_vd_d(0.0416666666665409524128449)); + u = vmla(u, s.x, vcast_vd_d(0.166666666666666740681535)); + u = vmla(u, s.x, vcast_vd_d(0.500000000000000999200722)); + + t = add_dd(s, mul_ds(squ_d(s), u)); + + t = add_sd(vcast_vd_d(1), t); + + return dd(vldexp(t.x, q), vldexp(t.y, q)); +} + +static INLINE vdouble xsinh(vdouble x) { + vdouble y = vabs(x); + vdouble2 d = expk2(dd(y, vcast_vd_d(0))); + d = add2_dd(d, div_dd(dd(vcast_vd_d(-1), vcast_vd_d(0)), d)); + y = vmul(vadd(d.x, d.y), vcast_vd_d(0.5)); + + y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); + y = vmulsign(y, x); + y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); + + return y; +} + +static INLINE vdouble xcosh(vdouble x) { + vdouble2 d = expk2(dd(x, vcast_vd_d(0))); + d = add2_dd(d, div_dd(dd(vcast_vd_d(1), vcast_vd_d(0)), d)); + vdouble y = vmul(vadd(d.x, d.y), vcast_vd_d(0.5)); + + y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); + y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); + + return y; +} + +static INLINE vdouble xtanh(vdouble x) { + vdouble y = vabs(x); + vdouble2 d = expk2(dd(y, vcast_vd_d(0))); + vdouble2 e = div_dd(dd(vcast_vd_d(1), vcast_vd_d(0)), d); + d = div_dd(add2_dd(d, scale_d(e, vcast_vd_d(-1))), add2_dd(d, e)); + y = d.x + d.y; + + y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(1.0), y); + y = vmulsign(y, x); + y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); + + return y; +} + +static INLINE vdouble2 logk2(vdouble2 d) { + vdouble2 x, x2, m; + vdouble t; + vint e; + + d = normalize_d(d); + e = vilogbp1(vmul(d.x, vcast_vd_d(0.7071))); + m = scale_d(d, vldexp(vcast_vd_d(1), vsubi(vcast_vi_i(0), e))); + + x = div_dd(add2_ds(m, vcast_vd_d(-1)), add2_ds(m, vcast_vd_d(1))); + x2 = squ_d(x); + x2 = normalize_d(x2); + + t = vcast_vd_d(0.134601987501262130076155); + t = vmla(t, x2.x, vcast_vd_d(0.132248509032032670243288)); + t = vmla(t, x2.x, vcast_vd_d(0.153883458318096079652524)); + t = vmla(t, x2.x, vcast_vd_d(0.181817427573705403298686)); + t = vmla(t, x2.x, vcast_vd_d(0.222222231326187414840781)); + t = vmla(t, x2.x, vcast_vd_d(0.285714285651261412873718)); + t = vmla(t, x2.x, vcast_vd_d(0.400000000000222439910458)); + t = vmla(t, x2.x, vcast_vd_d(0.666666666666666371239645)); + + return add2_dd(mul_ds(dd(vcast_vd_d(0.693147180559945286226764), vcast_vd_d(2.319046813846299558417771e-17)), + vcast_vd_vi(e)), + add2_dd(scale_d(x, vcast_vd_d(2)), mul_ds(mul_dd(x2, x), t))); +} + +static INLINE vdouble xasinh(vdouble x) { + vdouble y = vabs(x); + vdouble2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(y, y), vcast_vd_d(1))), y)); + y = vadd(d.x, d.y); + + y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); + y = vmulsign(y, x); + y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); + + return y; +} + +static INLINE vdouble xacosh(vdouble x) { + vdouble2 d = logk2(add2_ds(sqrt_d(add2_ds(mul_ss(x, x), vcast_vd_d(-1))), x)); + vdouble y = vadd(d.x, d.y); + + y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_INFINITY), y); + y = vsel(vmask_eq(x, vcast_vd_d(1.0)), vcast_vd_d(0.0), y); + y = vsel(vmask_lt(x, vcast_vd_d(1.0)), vcast_vd_d(rtengine::RT_NAN), y); + y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); + + return y; +} + +static INLINE vdouble xatanh(vdouble x) { + vdouble y = vabs(x); + vdouble2 d = logk2(div_dd(add2_ss(vcast_vd_d(1), y), add2_ss(vcast_vd_d(1), -y))); + y = vsel(vmask_gt(y, vcast_vd_d(1.0)), vcast_vd_d(rtengine::RT_NAN), vsel(vmask_eq(y, vcast_vd_d(1.0)), vcast_vd_d(rtengine::RT_INFINITY), vmul(vadd(d.x, d.y), vcast_vd_d(0.5)))); + + y = vsel(vorm(vmask_isinf(x), vmask_isnan(y)), vcast_vd_d(rtengine::RT_NAN), y); + y = vmulsign(y, x); + y = vsel(vmask_isnan(x), vcast_vd_d(rtengine::RT_NAN), y); + + return y; +} + +static INLINE vdouble xcbrt(vdouble d) { + vdouble x, y, q = vcast_vd_d(1.0); + vint e, qu, re; + vdouble t; + + e = vilogbp1(vabs(d)); + d = vldexp(d, vsubi(vcast_vi_i(0), e)); + + t = vadd(vcast_vd_vi(e), vcast_vd_d(6144)); + qu = vtruncate_vi_vd(vdiv(t, vcast_vd_d(3))); + re = vtruncate_vi_vd(vsub(t, vmul(vcast_vd_vi(qu), vcast_vd_d(3)))); + + q = vsel(vmaski_eq(re, vcast_vi_i(1)), vcast_vd_d(1.2599210498948731647672106), q); + q = vsel(vmaski_eq(re, vcast_vi_i(2)), vcast_vd_d(1.5874010519681994747517056), q); + q = vldexp(q, vsubi(qu, vcast_vi_i(2048))); + + q = vmulsign(q, d); + + d = vabs(d); + + x = vcast_vd_d(-0.640245898480692909870982); + x = vmla(x, d, vcast_vd_d(2.96155103020039511818595)); + x = vmla(x, d, vcast_vd_d(-5.73353060922947843636166)); + x = vmla(x, d, vcast_vd_d(6.03990368989458747961407)); + x = vmla(x, d, vcast_vd_d(-3.85841935510444988821632)); + x = vmla(x, d, vcast_vd_d(2.2307275302496609725722)); + + y = vmul(x, x); y = vmul(y, y); x = vsub(x, vmul(vmla(d, y, vneg(x)), vcast_vd_d(1.0 / 3.0))); + y = vmul(vmul(d, x), x); + y = vmul(vsub(y, vmul(vmul(vcast_vd_d(2.0 / 3.0), y), vmla(y, x, vcast_vd_d(-1.0)))), q); + + return y; +} + +static INLINE vdouble xexp2(vdouble a) { + vdouble u = expk(mul_ds(dd(vcast_vd_d(0.69314718055994528623), vcast_vd_d(2.3190468138462995584e-17)), a)); + u = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), u); + u = vsel(vmask_isminf(a), vcast_vd_d(0), u); + return u; +} + +static INLINE vdouble xexp10(vdouble a) { + vdouble u = expk(mul_ds(dd(vcast_vd_d(2.3025850929940459011), vcast_vd_d(-2.1707562233822493508e-16)), a)); + u = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), u); + u = vsel(vmask_isminf(a), vcast_vd_d(0), u); + return u; +} + +static INLINE vdouble xexpm1(vdouble a) { + vdouble2 d = add2_ds(expk2(dd(a, vcast_vd_d(0))), vcast_vd_d(-1.0)); + vdouble x = d.x + d.y; + x = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), x); + x = vsel(vmask_isminf(a), vcast_vd_d(-1), x); + return x; +} + +static INLINE vdouble xlog10(vdouble a) { + vdouble2 d = mul_dd(logk(a), dd(vcast_vd_d(0.43429448190325176116), vcast_vd_d(6.6494347733425473126e-17))); + vdouble x = d.x + d.y; + + x = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), x); + x = vsel(vmask_gt(vcast_vd_d(0), a), vcast_vd_d(rtengine::RT_NAN), x); + x = vsel(vmask_eq(a, vcast_vd_d(0)), vcast_vd_d(-rtengine::RT_INFINITY), x); + + return x; +} + +static INLINE vdouble xlog1p(vdouble a) { + vdouble2 d = logk2(add2_ss(a, vcast_vd_d(1))); + vdouble x = d.x + d.y; + + x = vsel(vmask_ispinf(a), vcast_vd_d(rtengine::RT_INFINITY), x); + x = vsel(vmask_gt(vcast_vd_d(-1), a), vcast_vd_d(rtengine::RT_NAN), x); + x = vsel(vmask_eq(a, vcast_vd_d(-1)), vcast_vd_d(-rtengine::RT_INFINITY), x); + + return x; +} // @@ -126,15 +899,580 @@ typedef struct { vfloat x, y; } vfloat2; -vfloat xsinf(vfloat d); -vfloat xcosf(vfloat d); -vfloat2 xsincosf(vfloat d); -vfloat xtanf(vfloat d); -vfloat xasinf(vfloat s); -vfloat xacosf(vfloat s); -vfloat xatanf(vfloat s); -vfloat xatan2f(vfloat y, vfloat x); -vfloat xlogf(vfloat d); -vfloat xlogf0(vfloat d); -vfloat xexpf(vfloat d); -vfloat xcbrtf(vfloat s); +static INLINE vfloat vabsf(vfloat f) { return (vfloat)vandnotm((vmask)vcast_vf_f(-0.0f), (vmask)f); } +static INLINE vfloat vnegf(vfloat f) { return (vfloat)vxorm((vmask)f, (vmask)vcast_vf_f(-0.0f)); } + +#ifdef __SSE4_1__ +// only one instruction when using SSE4.1 +static INLINE vfloat vself(vmask mask, vfloat x, vfloat y) { + return _mm_blendv_ps(y,x,(vfloat)mask); +} + +static INLINE vint vselc(vmask mask, vint x, vint y) { + return _mm_blendv_epi8(y,x,mask); +} + +#else +// three instructions when using SSE2 +static INLINE vfloat vself(vmask mask, vfloat x, vfloat y) { + return (vfloat)vorm(vandm(mask, (vmask)x), vandnotm(mask, (vmask)y)); +} + +static INLINE vint vselc(vmask mask, vint x, vint y) { + return vorm(vandm(mask, (vmask)x), vandnotm(mask, (vmask)y)); +} +#endif + +static INLINE vfloat vselfzero(vmask mask, vfloat x) { + // returns value of x if corresponding mask bits are 1, else returns 0 + // faster than vself(mask, x, ZEROV) + return _mm_and_ps((vfloat)mask, x); +} +static INLINE vfloat vselfnotzero(vmask mask, vfloat x) { + // returns value of x if corresponding mask bits are 0, else returns 0 + // faster than vself(mask, ZEROV, x) + return _mm_andnot_ps((vfloat)mask, x); +} + +static INLINE vint vselizero(vmask mask, vint x) { + // returns value of x if corresponding mask bits are 1, else returns 0 + // faster than vselc(mask, x, ZEROV) + return _mm_and_si128(mask, x); +} +static INLINE vint vselinotzero(vmask mask, vint x) { + // returns value of x if corresponding mask bits are 0, else returns 0 + // faster than vselc(mask, ZEROV, x) + return _mm_andnot_si128(mask, x); +} + +static INLINE vint2 vseli2_lt(vfloat f0, vfloat f1, vint2 x, vint2 y) { + vint2 m2 = vcast_vi2_vm(vmaskf_lt(f0, f1)); + return vori2(vandi2(m2, x), vandnoti2(m2, y)); +} + +static INLINE vmask vsignbitf(vfloat f) { + return vandm((vmask)f, (vmask)vcast_vf_f(-0.0f)); +} + +static INLINE vfloat vmulsignf(vfloat x, vfloat y) { + return (vfloat)vxorm((vmask)x, vsignbitf(y)); +} + +static INLINE vfloat vsignf(vfloat f) { + return (vfloat)vorm((vmask)vcast_vf_f(1.0f), vandm((vmask)vcast_vf_f(-0.0f), (vmask)f)); +} + +static INLINE vmask vmaskf_isinf(vfloat d) { return vmaskf_eq(vabsf(d), vcast_vf_f(INFINITYf)); } +static INLINE vmask vmaskf_ispinf(vfloat d) { return vmaskf_eq(d, vcast_vf_f(INFINITYf)); } +static INLINE vmask vmaskf_isminf(vfloat d) { return vmaskf_eq(d, vcast_vf_f(-INFINITYf)); } +static INLINE vmask vmaskf_isnan(vfloat d) { return vmaskf_neq(d, d); } +// the following is equivalent to vorm(vmaskf_isnan(a), vmaskf_isnan(b)), but faster +static INLINE vmask vmaskf_isnan(vfloat a, vfloat b) { return (vmask)_mm_cmpunord_ps(a, b); } +static INLINE vfloat visinf2f(vfloat d, vfloat m) { return (vfloat)vandm(vmaskf_isinf(d), vorm(vsignbitf(d), (vmask)m)); } +static INLINE vfloat visinff(vfloat d) { return visinf2f(d, vcast_vf_f(1.0f)); } + +static INLINE vint2 vilogbp1f(vfloat d) { + vmask m = vmaskf_lt(d, vcast_vf_f(5.421010862427522E-20f)); + d = vself(m, vmulf(vcast_vf_f(1.8446744073709552E19f), d), d); + vint2 q = vandi2(vsrli2(vcast_vi2_vm(vreinterpret_vm_vf(d)), 23), vcast_vi2_i(0xff)); + q = vsubi2(q, vseli2(m, vcast_vi2_i(64 + 0x7e), vcast_vi2_i(0x7e))); + return q; +} + +static INLINE vfloat vldexpf(vfloat x, vint2 q) { + vfloat u; + vint2 m = vsrai2(q, 31); + m = vslli2(vsubi2(vsrai2(vaddi2(m, q), 6), m), 4); + q = vsubi2(q, vslli2(m, 2)); + u = vreinterpret_vf_vm(vcast_vm_vi2(vslli2(vaddi2(m, vcast_vi2_i(0x7f)), 23))); + x = vmulf(vmulf(vmulf(vmulf(x, u), u), u), u); + u = vreinterpret_vf_vm(vcast_vm_vi2(vslli2(vaddi2(q, vcast_vi2_i(0x7f)), 23))); + return vmulf(x, u); +} + +static INLINE vfloat xsinf(vfloat d) { + vint2 q; + vfloat u, s; + + q = vrint_vi2_vf(vmulf(d, vcast_vf_f((float)rtengine::RT_1_PI))); + + u = vcast_vf_vi2(q); + d = vmlaf(u, vcast_vf_f(-PI4_Af*4), d); + d = vmlaf(u, vcast_vf_f(-PI4_Bf*4), d); + d = vmlaf(u, vcast_vf_f(-PI4_Cf*4), d); + d = vmlaf(u, vcast_vf_f(-PI4_Df*4), d); + + s = vmulf(d, d); + + d = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(1)), vnegf(d), d); + + u = vcast_vf_f(2.6083159809786593541503e-06f); + u = vmlaf(u, s, vcast_vf_f(-0.0001981069071916863322258f)); + u = vmlaf(u, s, vcast_vf_f(0.00833307858556509017944336f)); + u = vmlaf(u, s, vcast_vf_f(-0.166666597127914428710938f)); + + u = vmlaf(s, vmulf(u, d), d); + + return u; +} + +static INLINE vfloat xcosf(vfloat d) { + vint2 q; + vfloat u, s; + + q = vrint_vi2_vf(vsubf(vmulf(d, vcast_vf_f((float)rtengine::RT_1_PI)), vcast_vf_f(0.5f))); + q = vaddi2(vaddi2(q, q), vcast_vi2_i(1)); + + u = vcast_vf_vi2(q); + d = vmlaf(u, vcast_vf_f(-PI4_Af*2), d); + d = vmlaf(u, vcast_vf_f(-PI4_Bf*2), d); + d = vmlaf(u, vcast_vf_f(-PI4_Cf*2), d); + d = vmlaf(u, vcast_vf_f(-PI4_Df*2), d); + + s = vmulf(d, d); + + d = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(2)), vcast_vi2_i(2)), d, vnegf(d)); + + u = vcast_vf_f(2.6083159809786593541503e-06f); + u = vmlaf(u, s, vcast_vf_f(-0.0001981069071916863322258f)); + u = vmlaf(u, s, vcast_vf_f(0.00833307858556509017944336f)); + u = vmlaf(u, s, vcast_vf_f(-0.166666597127914428710938f)); + + u = vmlaf(s, vmulf(u, d), d); + + return u; +} + +static INLINE vfloat2 xsincosf(vfloat d) { + vint2 q; + vmask m; + vfloat u, s, t, rx, ry; + vfloat2 r; + + q = vrint_vi2_vf(vmulf(d, vcast_vf_f((float)rtengine::RT_2_PI))); + + s = d; + + u = vcast_vf_vi2(q); + s = vmlaf(u, vcast_vf_f(-PI4_Af*2), s); + s = vmlaf(u, vcast_vf_f(-PI4_Bf*2), s); + s = vmlaf(u, vcast_vf_f(-PI4_Cf*2), s); + s = vmlaf(u, vcast_vf_f(-PI4_Df*2), s); + + t = s; + + s = vmulf(s, s); + + u = vcast_vf_f(-0.000195169282960705459117889f); + u = vmlaf(u, s, vcast_vf_f(0.00833215750753879547119141f)); + u = vmlaf(u, s, vcast_vf_f(-0.166666537523269653320312f)); + u = vmulf(vmulf(u, s), t); + + rx = vaddf(t, u); + + u = vcast_vf_f(-2.71811842367242206819355e-07f); + u = vmlaf(u, s, vcast_vf_f(2.47990446951007470488548e-05f)); + u = vmlaf(u, s, vcast_vf_f(-0.00138888787478208541870117f)); + u = vmlaf(u, s, vcast_vf_f(0.0416666641831398010253906f)); + u = vmlaf(u, s, vcast_vf_f(-0.5)); + + ry = vaddf(vcast_vf_f(1), vmulf(s, u)); + + m = vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(0)); + r.x = vself(m, rx, ry); + r.y = vself(m, ry, rx); + + m = vmaski2_eq(vandi2(q, vcast_vi2_i(2)), vcast_vi2_i(2)); + r.x = vreinterpret_vf_vm(vxorm(vandm(m, vreinterpret_vm_vf(vcast_vf_f(-0.0))), vreinterpret_vm_vf(r.x))); + + m = vmaski2_eq(vandi2(vaddi2(q, vcast_vi2_i(1)), vcast_vi2_i(2)), vcast_vi2_i(2)); + r.y = vreinterpret_vf_vm(vxorm(vandm(m, vreinterpret_vm_vf(vcast_vf_f(-0.0))), vreinterpret_vm_vf(r.y))); + + m = vmaskf_isinf(d); + r.x = vself(m, vcast_vf_f(rtengine::RT_NAN), r.x); + r.y = vself(m, vcast_vf_f(rtengine::RT_NAN), r.y); + + return r; +} + +static INLINE vfloat xtanf(vfloat d) { + vint2 q; + vmask m; + vfloat u, s, x; + + q = vrint_vi2_vf(vmulf(d, vcast_vf_f((float)(2 * rtengine::RT_1_PI)))); + + x = d; + + u = vcast_vf_vi2(q); + x = vmlaf(u, vcast_vf_f(-PI4_Af*2), x); + x = vmlaf(u, vcast_vf_f(-PI4_Bf*2), x); + x = vmlaf(u, vcast_vf_f(-PI4_Cf*2), x); + x = vmlaf(u, vcast_vf_f(-PI4_Df*2), x); + + s = vmulf(x, x); + + m = vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(1)); + x = vself(m, vnegf(x), x); + + u = vcast_vf_f(0.00927245803177356719970703f); + u = vmlaf(u, s, vcast_vf_f(0.00331984995864331722259521f)); + u = vmlaf(u, s, vcast_vf_f(0.0242998078465461730957031f)); + u = vmlaf(u, s, vcast_vf_f(0.0534495301544666290283203f)); + u = vmlaf(u, s, vcast_vf_f(0.133383005857467651367188f)); + u = vmlaf(u, s, vcast_vf_f(0.333331853151321411132812f)); + + u = vmlaf(s, vmulf(u, x), x); + + u = vself(m, vrecf(u), u); + + u = vself(vmaskf_isinf(d), vcast_vf_f(NANf), u); + + return u; +} + +static INLINE vfloat xatanf(vfloat s) { + vfloat t, u; + vint2 q; + + q = vseli2_lt(s, vcast_vf_f(0.0f), vcast_vi2_i(2), vcast_vi2_i(0)); + s = vabsf(s); + + q = vseli2_lt(vcast_vf_f(1.0f), s, vaddi2(q, vcast_vi2_i(1)), q); + s = vself(vmaskf_lt(vcast_vf_f(1.0f), s), vdivf(vcast_vf_f(1.0f), s), s); + + t = vmulf(s, s); + + u = vcast_vf_f(0.00282363896258175373077393f); + u = vmlaf(u, t, vcast_vf_f(-0.0159569028764963150024414f)); + u = vmlaf(u, t, vcast_vf_f(0.0425049886107444763183594f)); + u = vmlaf(u, t, vcast_vf_f(-0.0748900920152664184570312f)); + u = vmlaf(u, t, vcast_vf_f(0.106347933411598205566406f)); + u = vmlaf(u, t, vcast_vf_f(-0.142027363181114196777344f)); + u = vmlaf(u, t, vcast_vf_f(0.199926957488059997558594f)); + u = vmlaf(u, t, vcast_vf_f(-0.333331018686294555664062f)); + + t = vaddf(s, vmulf(s, vmulf(t, u))); + + t = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(1)), vcast_vi2_i(1)), vsubf(vcast_vf_f((float)(rtengine::RT_PI/2)), t), t); + t = vself(vmaski2_eq(vandi2(q, vcast_vi2_i(2)), vcast_vi2_i(2)), vnegf(t), t); + + return t; +} + +static INLINE vfloat atan2kf(vfloat y, vfloat x) { + vfloat s, t, u; + vint2 q; + vmask p; + + q = vseli2_lt(x, vcast_vf_f(0.0f), vcast_vi2_i(-2), vcast_vi2_i(0)); + x = vabsf(x); + + q = vseli2_lt(x, y, vaddi2(q, vcast_vi2_i(1)), q); + p = vmaskf_lt(x, y); + s = vself(p, vnegf(x), y); + t = vmaxf(x, y); + + s = vdivf(s, t); + t = vmulf(s, s); + + u = vcast_vf_f(0.00282363896258175373077393f); + u = vmlaf(u, t, vcast_vf_f(-0.0159569028764963150024414f)); + u = vmlaf(u, t, vcast_vf_f(0.0425049886107444763183594f)); + u = vmlaf(u, t, vcast_vf_f(-0.0748900920152664184570312f)); + u = vmlaf(u, t, vcast_vf_f(0.106347933411598205566406f)); + u = vmlaf(u, t, vcast_vf_f(-0.142027363181114196777344f)); + u = vmlaf(u, t, vcast_vf_f(0.199926957488059997558594f)); + u = vmlaf(u, t, vcast_vf_f(-0.333331018686294555664062f)); + + t = vaddf(s, vmulf(s, vmulf(t, u))); + t = vaddf(t, vmulf(vcast_vf_vi2(q), vcast_vf_f((float)(rtengine::RT_PI/2)))); + + return t; +} + +static INLINE vfloat xatan2f(vfloat y, vfloat x) { + vfloat r = atan2kf(vabsf(y), x); + + r = vmulsignf(r, x); + r = vself(vorm(vmaskf_isinf(x), vmaskf_eq(x, vcast_vf_f(0.0f))), vsubf(vcast_vf_f((float)(rtengine::RT_PI/2)), visinf2f(x, vmulsignf(vcast_vf_f((float)(rtengine::RT_PI/2)), x))), r); + r = vself(vmaskf_isinf(y), vsubf(vcast_vf_f((float)(rtengine::RT_PI/2)), visinf2f(x, vmulsignf(vcast_vf_f((float)(rtengine::RT_PI/4)), x))), r); + r = vself(vmaskf_eq(y, vcast_vf_f(0.0f)), vselfzero(vmaskf_eq(vsignf(x), vcast_vf_f(-1.0f)), vcast_vf_f((float)rtengine::RT_PI)), r); + + return vself(vmaskf_isnan(x, y), vcast_vf_f(NANf), vmulsignf(r, y)); +} + +static INLINE vfloat xasinf(vfloat d) { + vfloat x, y; + x = vaddf(vcast_vf_f(1.0f), d); + y = vsubf(vcast_vf_f(1.0f), d); + x = vmulf(x, y); + x = vsqrtf(x); + x = vself(vmaskf_isnan(x), vcast_vf_f(NANf), atan2kf(vabsf(d), x)); + return vmulsignf(x, d); +} + +static INLINE vfloat xacosf(vfloat d) { + vfloat x, y; + x = vaddf(vcast_vf_f(1.0f), d); + y = vsubf(vcast_vf_f(1.0f), d); + x = vmulf(x, y); + x = vsqrtf(x); + x = vmulsignf(atan2kf(x, vabsf(d)), d); + y = (vfloat)vandm(vmaskf_lt(d, vcast_vf_f(0.0f)), (vmask)vcast_vf_f((float)rtengine::RT_PI)); + x = vaddf(x, y); + return x; +} + +static INLINE vfloat xlogf(vfloat d) { + vfloat x, x2, t, m; + vint2 e; + + e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); + m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); + + x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); + x2 = vmulf(x, x); + + t = vcast_vf_f(0.2371599674224853515625f); + t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); + t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); + t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); + t = vmlaf(t, x2, vcast_vf_f(2.0f)); + + x = vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); + + x = vself(vmaskf_ispinf(d), vcast_vf_f(INFINITYf), x); + x = vself(vmaskf_gt(vcast_vf_f(0), d), vcast_vf_f(NANf), x); + x = vself(vmaskf_eq(d, vcast_vf_f(0)), vcast_vf_f(-INFINITYf), x); + + return x; +} + +static INLINE vfloat xlogf1(vfloat d) { // does xlogf(vmaxf(d, 1.f)) but faster + vfloat x, x2, t, m; + vint2 e; + + e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); + m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); + + x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); + x2 = vmulf(x, x); + + t = vcast_vf_f(0.2371599674224853515625f); + t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); + t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); + t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); + t = vmlaf(t, x2, vcast_vf_f(2.0f)); + + x = vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); + + x = vself(vmaskf_ispinf(d), vcast_vf_f(INFINITYf), x); + x = vselfnotzero(vmaskf_le(d, vcast_vf_f(1.f)), x); + + return x; +} + +static INLINE vfloat xlogf0(vfloat d) { + vfloat x, x2, t, m; + vint2 e; + + e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); + m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); + + x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); + x2 = vmulf(x, x); + + t = vcast_vf_f(0.2371599674224853515625f); + t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); + t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); + t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); + t = vmlaf(t, x2, vcast_vf_f(2.0f)); + + x = vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); + + x = vself(vmaskf_ispinf(d), vcast_vf_f(0), x); + x = vself(vmaskf_gt(vcast_vf_f(0), d), vcast_vf_f(0), x); + x = vself(vmaskf_eq(d, vcast_vf_f(0)), vcast_vf_f(0), x); + + return x; +} + +static INLINE vfloat xlogfNoCheck(vfloat d) { // this version does not check input values. Use it only when you know the input values are > 0 e.g. when filling a lookup table + vfloat x, x2, t, m; + vint2 e; + + e = vilogbp1f(vmulf(d, vcast_vf_f(0.7071f))); + m = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); + + x = vdivf(vaddf(vcast_vf_f(-1.0f), m), vaddf(vcast_vf_f(1.0f), m)); + x2 = vmulf(x, x); + + t = vcast_vf_f(0.2371599674224853515625f); + t = vmlaf(t, x2, vcast_vf_f(0.285279005765914916992188f)); + t = vmlaf(t, x2, vcast_vf_f(0.400005519390106201171875f)); + t = vmlaf(t, x2, vcast_vf_f(0.666666567325592041015625f)); + t = vmlaf(t, x2, vcast_vf_f(2.0f)); + + return vaddf(vmulf(x, t), vmulf(vcast_vf_f(0.693147180559945286226764f), vcast_vf_vi2(e))); + +} + +static INLINE vfloat xexpf(vfloat d) { + vint2 q = vrint_vi2_vf(vmulf(d, vcast_vf_f(R_LN2f))); + vfloat s, u; + + s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Uf),d); + s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Lf),s); + + u = vcast_vf_f(0.00136324646882712841033936f); + u = vmlaf(u, s, vcast_vf_f(0.00836596917361021041870117f)); + u = vmlaf(u, s, vcast_vf_f(0.0416710823774337768554688f)); + u = vmlaf(u, s, vcast_vf_f(0.166665524244308471679688f)); + u = vmlaf(u, s, vcast_vf_f(0.499999850988388061523438f)); + + u = vaddf(vcast_vf_f(1.0f), vmlaf(vmulf(s, s), u, s)); + + u = vldexpf(u, q); + + // -104.0 + return vselfnotzero(vmaskf_gt(vcast_vf_f(-104.f), d), u); +} + +static INLINE vfloat xexpfNoCheck(vfloat d) { // this version does not check input values. Use it only when you know the input values are > -104.f e.g. when filling a lookup table + vint2 q = vrint_vi2_vf(vmulf(d, vcast_vf_f(R_LN2f))); + vfloat s, u; + + s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Uf),d); + s = vmlaf(vcast_vf_vi2(q), vcast_vf_f(-L2Lf),s); + + u = vcast_vf_f(0.00136324646882712841033936f); + u = vmlaf(u, s, vcast_vf_f(0.00836596917361021041870117f)); + u = vmlaf(u, s, vcast_vf_f(0.0416710823774337768554688f)); + u = vmlaf(u, s, vcast_vf_f(0.166665524244308471679688f)); + u = vmlaf(u, s, vcast_vf_f(0.499999850988388061523438f)); + + u = vaddf(vcast_vf_f(1.0f), vmlaf(vmulf(s, s), u, s)); + + return vldexpf(u, q); +} + +static INLINE vfloat xcbrtf(vfloat d) { + vfloat x, y, q = vcast_vf_f(1.0), t; + vint2 e, qu, re; + + e = vilogbp1f(vabsf(d)); + d = vldexpf(d, vsubi2(vcast_vi2_i(0), e)); + + t = vaddf(vcast_vf_vi2(e), vcast_vf_f(6144)); + qu = vtruncate_vi2_vf(vdivf(t, vcast_vf_f(3))); + re = vtruncate_vi2_vf(vsubf(t, vmulf(vcast_vf_vi2(qu), vcast_vf_f(3)))); + + q = vself(vmaski2_eq(re, vcast_vi2_i(1)), vcast_vf_f(1.2599210498948731647672106f), q); + q = vself(vmaski2_eq(re, vcast_vi2_i(2)), vcast_vf_f(1.5874010519681994747517056f), q); + q = vldexpf(q, vsubi2(qu, vcast_vi2_i(2048))); + + q = vmulsignf(q, d); + d = vabsf(d); + + x = vcast_vf_f(-0.601564466953277587890625f); + x = vmlaf(x, d, vcast_vf_f(2.8208892345428466796875f)); + x = vmlaf(x, d, vcast_vf_f(-5.532182216644287109375f)); + x = vmlaf(x, d, vcast_vf_f(5.898262500762939453125f)); + x = vmlaf(x, d, vcast_vf_f(-3.8095417022705078125f)); + x = vmlaf(x, d, vcast_vf_f(2.2241256237030029296875f)); + + y = vmulf(vmulf(d, x), x); + y = vmulf(vsubf(y, vmulf(vmulf(vcast_vf_f(2.0f / 3.0f), y), vmlaf(y, x, vcast_vf_f(-1.0f)))), q); + + return y; +} + +static INLINE vfloat vclampf(vfloat value, vfloat low, vfloat high) { + // clamps value in [low;high], returns low if value is NaN + return vmaxf(vminf(high, value), low); +} + +static INLINE vfloat SQRV(vfloat a){ + return a * a; +} + +static inline void vswap( vmask condition, vfloat &a, vfloat &b) { + // conditional swap the elements of two vfloats + vfloat temp = vself(condition, a, b); // the values which fit to condition + a = vself(condition, b, a); // the values which fit to inverted condition + b = temp; +} + +static inline float vhadd( vfloat a ) { + // returns a[0] + a[1] + a[2] + a[3] + a += _mm_movehl_ps(a, a); + return _mm_cvtss_f32(_mm_add_ss(a, _mm_shuffle_ps(a, a, 1))); +} + +static inline float vhmin(vfloat a) { + // returns min(a[0], a[1], a[2], a[3]) + a = vminf(a, _mm_movehl_ps(a, a)); + return _mm_cvtss_f32(vminf(a, _mm_shuffle_ps(a, a, 1))); +} + +static inline float vhmax(vfloat a) { + // returns max(a[0], a[1], a[2], a[3]) + a = vmaxf(a, _mm_movehl_ps(a, a)); + return _mm_cvtss_f32(vmaxf(a, _mm_shuffle_ps(a, a, 1))); +} + +static INLINE vfloat vmul2f(vfloat a){ + // fastest way to multiply by 2 + return a + a; +} + +static INLINE vfloat vintpf(vfloat a, vfloat b, vfloat c) { + // calculate a * b + (1 - a) * c (interpolate two values) + // following is valid: + // vintpf(a, b+x, c+x) = vintpf(a, b, c) + x + // vintpf(a, b*x, c*x) = vintpf(a, b, c) * x + return a * (b-c) + c; +} + +static INLINE vfloat vdup(vfloat a){ + // returns { a[0],a[0],a[1],a[1] } + return _mm_unpacklo_ps( a, a ); +} + +static INLINE vfloat vaddc2vfu(float &a) +{ + // loads a[0]..a[7] and returns { a[0]+a[1], a[2]+a[3], a[4]+a[5], a[6]+a[7] } + vfloat a1 = _mm_loadu_ps( &a ); + vfloat a2 = _mm_loadu_ps( (&a) + 4 ); + return _mm_shuffle_ps(a1,a2,_MM_SHUFFLE( 2,0,2,0 )) + _mm_shuffle_ps(a1,a2,_MM_SHUFFLE( 3,1,3,1 )); +} + +static INLINE vfloat vadivapb (vfloat a, vfloat b) { + return a / (a+b); +} + +static INLINE void vconvertrgbrgbrgbrgb2rrrrggggbbbb (const float * src, vfloat &rv, vfloat &gv, vfloat &bv) { // cool function name, isn't it ? :P + // converts a sequence of 4 float RGB triplets to 3 red, green and blue quadruples + rv = _mm_setr_ps(src[0],src[3],src[6],src[9]); + gv = _mm_setr_ps(src[1],src[4],src[7],src[10]); + bv = _mm_setr_ps(src[2],src[5],src[8],src[11]); +} + +#if defined( __SSE4_1__ ) && defined( __x86_64__ ) +static INLINE vfloat vceilf(vfloat x) { + return _mm_round_ps(x, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC); +} + +#else + +static INLINE vfloat vceilf(vfloat x) { + __m128i zerov = _mm_setzero_si128(); + zerov = _mm_cmpeq_epi32(zerov, zerov); + const vfloat onev = (vfloat)_mm_slli_epi32(_mm_srli_epi32(zerov, 25), 23); //create vector 1.0f + const vfloat xi = _mm_cvtepi32_ps(_mm_cvttps_epi32(x)); + return xi + _mm_and_ps(_mm_cmplt_ps(xi, x), onev); +} +#endif + +#endif // __SSE2__ diff --git a/rtengine/utils.cc b/rtengine/utils.cc index a07a1235f..0674c9806 100644 --- a/rtengine/utils.cc +++ b/rtengine/utils.cc @@ -22,7 +22,6 @@ #include "rt_math.h" #include "utils.h" -#include "rt_math.h" using namespace std; diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 0a9b81112..edc378700 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -37,6 +37,7 @@ #include "rtsurface.h" #include "../rtengine/dcrop.h" +#include "../rtengine/imagesource.h" #include "../rtengine/procparams.h" #include "../rtengine/rt_math.h" diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index baae8f492..abc0cc10a 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -18,8 +18,8 @@ */ #pragma once -#include "coloredbar.h" #include "editcallbacks.h" +#include "guiutils.h" #include "../rtengine/diagonalcurvetypes.h" #include "../rtengine/flatcurvetypes.h" @@ -28,6 +28,7 @@ class CurveEditorGroup; class CurveEditorSubGroup; +class ColorProvider; class PopUpToggleButton; /* diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 02a28607f..9a4e71ab4 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -20,7 +20,6 @@ #include "guiutils.h" #include "options.h" -#include "../rtengine/rt_math.h" #include "../rtengine/utils.h" #include "../rtengine/procparams.h" #include "rtimage.h" From 544a2e5068e38fa4f57c56159c53ddd0e1d6b38c Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 20 Jan 2020 16:02:30 +0100 Subject: [PATCH 08/38] Fix double promotion in target rtexif --- rtexif/canonattribs.cc | 2 +- rtexif/kodakattribs.cc | 6 +++--- rtexif/nikonattribs.cc | 2 +- rtexif/pentaxattribs.cc | 8 ++++---- rtexif/rtexif.cc | 2 +- rtexif/sonyminoltaattribs.cc | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc index 0e6f7eb2f..5d907e242 100644 --- a/rtexif/canonattribs.cc +++ b/rtexif/canonattribs.cc @@ -1174,7 +1174,7 @@ public: int a = Interpreter::toInt (t, ofs, astype); if (a > 1) { - int i = int (double (powf (2.f, float (a) / 32.f - 4.f)) * 50.f + 0.5f); + int i = static_cast(powf (2.f, static_cast(a) / 32.f - 4.f)) * 50.0 + 0.5; return i; } else { return 0; diff --git a/rtexif/kodakattribs.cc b/rtexif/kodakattribs.cc index a9c168a70..9c7d7d1ee 100644 --- a/rtexif/kodakattribs.cc +++ b/rtexif/kodakattribs.cc @@ -58,7 +58,7 @@ void parseKodakIfdTextualInfo (Tag *textualInfo, Tag* exif_) // Proback645 may have "Lens" but not "Focal Length" float flen = atof (val.c_str()); - if (flen != 0.0) { + if (flen != 0.f) { t = new Tag (exif, lookupAttrib (exifAttribs, "FocalLength")); t->initRational (flen * 32, 32); exif->replaceTag (t); @@ -66,7 +66,7 @@ void parseKodakIfdTextualInfo (Tag *textualInfo, Tag* exif_) } else if (key == "Focal Length") { float flen = atof (val.c_str()); - if (flen != 0.0) { + if (flen != 0.f) { t = new Tag (exif, lookupAttrib (exifAttribs, "FocalLength")); t->initRational (flen * 32, 32); exif->replaceTag (t); @@ -74,7 +74,7 @@ void parseKodakIfdTextualInfo (Tag *textualInfo, Tag* exif_) } else if (key == "Aperture") { float aperture = atof (&val.c_str()[1]); - if (aperture != 0.0) { + if (aperture != 0.f) { t = new Tag (exif, lookupAttrib (exifAttribs, "FNumber")); t->initRational ((int) (aperture * 10), 10); exif->replaceTag (t); diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index 77720dde0..b050b3b87 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -70,7 +70,7 @@ public: int a = t->getValue()[ofs]; if (a > 1) { - int i = int (double (powf (2.f, float (a) / 12.f - 5.f)) * 100.f + 0.5f); + int i = static_cast(powf(2.f, float (a) / 12.f - 5.f)) * 100.0 + 0.5; return i; } else { return 0; diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 898150696..89e5172e8 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -1391,9 +1391,9 @@ public: std::string toString (const Tag* t) const override { int a = t->toInt (0, BYTE); - float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2)); + double b = static_cast(10 * (a >> 2)) * std::pow(4.f, static_cast((a & 0x03) - 2)); - if (b > 1.f) { + if (b > 1.0) { char buffer[32]; sprintf (buffer, "%.2f", b ); return buffer; @@ -1404,9 +1404,9 @@ public: double toDouble (const Tag* t, int ofs) override { int a = t->toInt (ofs, BYTE); - float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2)); + double b = static_cast(10 * (a >> 2)) * std::pow(4.f, static_cast((a & 0x03) - 2)); - if (b > 1.f) { + if (b > 1.0) { return b; } else { return 0.; diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 89ff6cd33..06604ade5 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -2344,7 +2344,7 @@ void ExifManager::parseCIFF (int length, TagDirectory* root) ev = ((short)get2 (f, INTEL)) / 32.0f; fseek (f, 34, SEEK_CUR); - if (shutter > 1e6) { + if (shutter > 1e6f) { shutter = get2 (f, INTEL) / 10.0f; } diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index 4410a4051..11130a577 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -2252,7 +2252,7 @@ public: // Decode the value if (a && a != 254) { // 254 = 'Auto' for CameraSettings3, but we might say the same for CameraSettings & CameraSettings2 (?) - return int (expf ((double (a) / 8.f - 6.f) * logf (2.f)) * 100.f + 0.5f); + return std::exp((a / 8.f - 6.f) * std::log(2.f)) * 100.f + 0.5f; } else { return 0; } From 9dbf0ff6293d3c86254ec3cb04a7cf5ec9acdcc7 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 20 Jan 2020 18:50:24 +0100 Subject: [PATCH 09/38] Fix LGTM issues --- rtexif/pentaxattribs.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 89e5172e8..ea47e6058 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -1391,7 +1391,7 @@ public: std::string toString (const Tag* t) const override { int a = t->toInt (0, BYTE); - double b = static_cast(10 * (a >> 2)) * std::pow(4.f, static_cast((a & 0x03) - 2)); + double b = static_cast(10 * (a >> 2)) * std::pow(4.0, static_cast((a & 0x03) - 2)); if (b > 1.0) { char buffer[32]; @@ -1404,7 +1404,7 @@ public: double toDouble (const Tag* t, int ofs) override { int a = t->toInt (ofs, BYTE); - double b = static_cast(10 * (a >> 2)) * std::pow(4.f, static_cast((a & 0x03) - 2)); + double b = static_cast(10 * (a >> 2)) * std::pow(4.0, static_cast((a & 0x03) - 2)); if (b > 1.0) { return b; From b2443b0e7e8db1d202da2d008a13dbe18ce3fd3d Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 21 Jan 2020 00:16:27 +0100 Subject: [PATCH 10/38] more double promote fixes, still not complete --- rtengine/CA_correct_RT.cc | 16 +++++------ rtengine/EdgePreservingDecomposition.cc | 22 +++++++------- rtengine/PF_correct_RT.cc | 38 +++++++++++++------------ rtengine/ahd_demosaic_RT.cc | 12 ++++---- rtengine/badpixels.cc | 2 +- rtengine/camconst.cc | 4 +-- rtengine/capturesharpening.cc | 8 +++--- rtengine/ciecam02.cc | 10 +++---- rtengine/color.h | 16 +++++------ rtengine/colortemp.cc | 12 ++++---- rtengine/curves.h | 10 +++---- rtengine/dcp.cc | 34 +++++++++++++++------- rtengine/demosaic_algos.cc | 2 +- rtengine/dfmanager.cc | 2 +- rtengine/diagonalcurves.cc | 12 ++++---- rtengine/dirpyr_equalizer.cc | 10 +++---- rtengine/dual_demosaic_RT.cc | 4 +-- rtengine/ffmanager.cc | 2 +- rtengine/green_equil_RT.cc | 10 +++---- rtengine/histmatching.cc | 6 ++-- rtengine/image16.cc | 8 +++--- rtengine/image8.cc | 8 +++--- rtengine/imagefloat.cc | 10 +++---- rtengine/ipdehaze.cc | 6 ++-- rtengine/iplabregions.cc | 8 +++--- rtengine/ipretinex.cc | 12 ++++---- rtengine/ipshadowshighlights.cc | 2 +- rtengine/ipvibrance.cc | 4 +-- rtengine/lmmse_demosaic.cc | 8 +++--- rtengine/procparams.cc | 2 +- rtengine/tmo_fattal02.cc | 12 ++++---- rtengine/xtrans_demosaic.cc | 2 +- rtgui/blackwhite.cc | 10 +++---- rtgui/colorappearance.cc | 2 +- rtgui/colortoning.cc | 20 ++++++------- rtgui/coordinateadjuster.cc | 8 +++--- rtgui/crop.cc | 16 +++++------ rtgui/editwidgets.cc | 20 ++++++------- 38 files changed, 203 insertions(+), 187 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index f4d082199..fa9788af0 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -790,12 +790,12 @@ float* RawImageSource::CA_correct_RT( for (int m = 0; m < polyord; m++) { double powHblock = powHblockInit; for (int n = 0; n < polyord; n++) { - polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * blockwt[vblock * hblsz + hblock]; + polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * static_cast(blockwt[vblock * hblsz + hblock]); powHblock *= hblock; } powVblock *= vblock; } - shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * bstemp[dir] * blockwt[vblock * hblsz + hblock]; + shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * static_cast(bstemp[dir]) * static_cast(blockwt[vblock * hblsz + hblock]); powHblockInit *= hblock; } powVblockInit *= vblock; @@ -848,7 +848,7 @@ float* RawImageSource::CA_correct_RT( for (int top = -border; top < height; top += ts - border2) { for (int left = -border; left < width - (W & 1); left += ts - border2) { memset(bufferThr, 0, buffersizePassTwo); - float lblockshifts[2][2]; + double lblockshifts[2][2]; const int vblock = ((top + border) / (ts - border2)) + 1; const int hblock = ((left + border) / (ts - border2)) + 1; const int bottom = min(top + ts, height + border); @@ -1036,8 +1036,8 @@ float* RawImageSource::CA_correct_RT( } if (!autoCA) { - float hfrac = -((float)(hblock - 0.5) / (hblsz - 2) - 0.5); - float vfrac = -((float)(vblock - 0.5) / (vblsz - 2) - 0.5) * height / width; + double hfrac = -((hblock - 0.5) / (hblsz - 2) - 0.5); + double vfrac = -((vblock - 0.5) / (vblsz - 2) - 0.5) * height / width; lblockshifts[0][0] = 2 * vfrac * cared; lblockshifts[0][1] = 2 * hfrac * cared; lblockshifts[1][0] = 2 * vfrac * cablue; @@ -1058,7 +1058,7 @@ float* RawImageSource::CA_correct_RT( } powVblock *= vblock; } - constexpr float bslim = 3.99; //max allowed CA shift + constexpr double bslim = 3.99f; //max allowed CA shift lblockshifts[0][0] = LIM(lblockshifts[0][0], -bslim, bslim); lblockshifts[0][1] = LIM(lblockshifts[0][1], -bslim, bslim); lblockshifts[1][0] = LIM(lblockshifts[1][0], -bslim, bslim); @@ -1070,14 +1070,14 @@ float* RawImageSource::CA_correct_RT( //some parameters for the bilinear interpolation shiftvfloor[c] = floor((float)lblockshifts[c>>1][0]); shiftvceil[c] = ceil((float)lblockshifts[c>>1][0]); - if (lblockshifts[c>>1][0] < 0.f) { + if (lblockshifts[c>>1][0] < 0.0) { std::swap(shiftvfloor[c], shiftvceil[c]); } shiftvfrac[c] = fabs(lblockshifts[c>>1][0] - shiftvfloor[c]); shifthfloor[c] = floor((float)lblockshifts[c>>1][1]); shifthceil[c] = ceil((float)lblockshifts[c>>1][1]); - if (lblockshifts[c>>1][1] < 0.f) { + if (lblockshifts[c>>1][1] < 0.0) { std::swap(shifthfloor[c], shifthceil[c]); } shifthfrac[c] = fabs(lblockshifts[c>>1][1] - shifthfloor[c]); diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index 700181e1d..04459e88a 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -55,7 +55,7 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl #endif for(int ii = 0; ii < n; ii++) { - rs += r[ii] * s[ii]; + rs += static_cast(r[ii]) * static_cast(s[ii]); } //Search direction d. @@ -84,15 +84,15 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl #endif for(int ii = 0; ii < n; ii++) { - ab += d[ii] * ax[ii]; + ab += static_cast(d[ii]) * static_cast(ax[ii]); } - if(ab == 0.0f) { + if(ab == 0.0) { break; //So unlikely. It means perfectly converged or singular, stop either way. } ab = rs / ab; - + float abf = ab; //Update x and r with this step size. double rms = 0.0; // use double precision for large summations #ifdef _OPENMP @@ -100,15 +100,15 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl #endif for(int ii = 0; ii < n; ii++) { - x[ii] += ab * d[ii]; - r[ii] -= ab * ax[ii]; //"Fast recursive formula", use explicit r = b - Ax occasionally? - rms += r[ii] * r[ii]; + x[ii] += abf * d[ii]; + r[ii] -= abf * ax[ii]; //"Fast recursive formula", use explicit r = b - Ax occasionally? + rms += rtengine::SQR(r[ii]); } rms = sqrtf(rms / n); //Quit? This probably isn't the best stopping condition, but ok. - if(rms < RMSResidual) { + if(rms < static_cast(RMSResidual)) { break; } @@ -129,20 +129,20 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl #endif for(int ii = 0; ii < n; ii++) { - rs += r[ii] * s[ii]; + rs += static_cast(r[ii]) * static_cast(s[ii]); } } ab = rs / ab; - + abf = ab; //Update search direction p. #ifdef _OPENMP #pragma omp parallel for #endif for(int ii = 0; ii < n; ii++) { - d[ii] = s[ii] + ab * d[ii]; + d[ii] = s[ii] + abf * d[ii]; } diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index 9a95b8e2f..15b7b21ee 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -103,7 +103,7 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh) // no precalculated values without SSE => calculate const float HH = xatan2f(lab->b[i][j], lab->a[i][j]); #endif - float chparam = chCurve->getVal((Color::huelab_to_huehsv2(HH))) - 0.5f; // get C=f(H) + float chparam = chCurve->getVal((Color::huelab_to_huehsv2(HH))) - 0.5; // get C=f(H) if (chparam < 0.f) { chparam *= 2.f; // increased action if chparam < 0 @@ -113,25 +113,25 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh) } const float chroma = chromaChfactor * (SQR(lab->a[i][j] - tmpa[i][j]) + SQR(lab->b[i][j] - tmpb[i][j])); // modulate chroma function hue - chromave += chroma; + chromave += static_cast(chroma); fringe[i * width + j] = chroma; } } } chromave /= height * width; - if (chromave > 0.0) { // now as chromave is calculated, we postprocess fringe to reduce the number of divisions in future + const float chromavef = chromave; #ifdef _OPENMP #pragma omp parallel for simd #endif for (int j = 0; j < width * height; j++) { - fringe[j] = 1.f / (fringe[j] + chromave); + fringe[j] = 1.f / (fringe[j] + chromavef); } - const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromave * 5.0f + chromave); + const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromavef * 5.0f + chromavef); const int halfwin = std::ceil(2 * radius) + 1; // Issue 1674: @@ -297,7 +297,7 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres // no precalculated values without SSE => calculate const float HH = xatan2f(srbb[i][j], sraa[i][j]); #endif - float chparam = chCurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5f; //get C=f(H) + float chparam = chCurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5; //get C=f(H) if (chparam < 0.f) { chparam *= 2.f; // increase action if chparam < 0 @@ -307,7 +307,7 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres } const float chroma = chromaChfactor * (SQR(sraa[i][j] - tmaa[i][j]) + SQR(srbb[i][j] - tmbb[i][j])); //modulate chroma function hue - chromave += chroma; + chromave += static_cast(chroma); fringe[i * width + j] = chroma; } } @@ -317,15 +317,16 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres if (chromave > 0.0) { // now as chromave is calculated, we postprocess fringe to reduce the number of divisions in future + const float chromavef = chromave; #ifdef _OPENMP #pragma omp parallel for simd #endif for (int j = 0; j < width * height; j++) { - fringe[j] = 1.f / (fringe[j] + chromave); + fringe[j] = 1.f / (fringe[j] + chromavef); } - const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromave * 5.0f + chromave); + const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromavef * 5.0f + chromavef); const int halfwin = std::ceil(2 * radius) + 1; // Issue 1674: @@ -695,7 +696,7 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { const float chroma = SQR(sraa[i][j] - tmaa[i][j]) + SQR(srbb[i][j] - tmbb[i][j]); - chrommed += chroma; + chrommed += static_cast(chroma); badpix[i * width + j] = chroma; } } @@ -703,15 +704,16 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i chrommed /= height * width; if (chrommed > 0.0) { + const float chrommedf = chrommed; // now as chrommed is calculated, we postprocess badpix to reduce the number of divisions in future - const float threshfactor = 1.f / ((thresh * chrommed) / 33.f + chrommed); + const float threshfactor = 1.f / ((thresh * chrommedf) / 33.f + chrommedf); const int halfwin = std::ceil(2 * radius) + 1; #ifdef _OPENMP #pragma omp parallel #endif { #ifdef __SSE2__ - const vfloat chrommedv = F2V(chrommed); + const vfloat chrommedv = F2V(chrommedf); const vfloat onev = F2V(1.f); #endif #ifdef _OPENMP @@ -726,7 +728,7 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i } #endif for (; j < width; j++) { - badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommed); + badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommedf); } } @@ -1040,7 +1042,7 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { const float chroma = SQR(lab->a[i][j] - tmaa[i][j]) + SQR(lab->b[i][j] - tmbb[i][j]); - chrommed += chroma; + chrommed += static_cast(chroma); badpix[i * width + j] = chroma; } } @@ -1049,13 +1051,13 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl if (chrommed > 0.0) { // now as chrommed is calculated, we postprocess badpix to reduce the number of divisions in future - + const float chrommedf = chrommed; #ifdef _OPENMP #pragma omp parallel #endif { #ifdef __SSE2__ - const vfloat chrommedv = F2V(chrommed); + const vfloat chrommedv = F2V(chrommedf); const vfloat onev = F2V(1.f); #endif #ifdef _OPENMP @@ -1070,12 +1072,12 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl } #endif for (; j < width; j++) { - badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommed); + badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommedf); } } } - const float threshfactor = 1.f / ((thresh * chrommed) / 33.f + chrommed); + const float threshfactor = 1.f / ((thresh * chrommedf) / 33.f + chrommedf); chrom *= 327.68f; chrom *= chrom; diff --git a/rtengine/ahd_demosaic_RT.cc b/rtengine/ahd_demosaic_RT.cc index 064dfd6e1..536726925 100644 --- a/rtengine/ahd_demosaic_RT.cc +++ b/rtengine/ahd_demosaic_RT.cc @@ -52,13 +52,13 @@ void RawImageSource::ahd_demosaic() int width = W, height = H; - constexpr double xyz_rgb[3][3] = { /* XYZ from RGB */ - { 0.412453, 0.357580, 0.180423 }, - { 0.212671, 0.715160, 0.072169 }, - { 0.019334, 0.119193, 0.950227 } + constexpr float xyz_rgb[3][3] = { /* XYZ from RGB */ + { 0.412453f, 0.357580f, 0.180423f }, + { 0.212671f, 0.715160f, 0.072169f }, + { 0.019334f, 0.119193f, 0.950227f } }; - constexpr float d65_white[3] = { 0.950456, 1, 1.088754 }; + constexpr float d65_white[3] = { 0.950456f, 1.f, 1.088754f }; double progress = 0.0; @@ -76,7 +76,7 @@ void RawImageSource::ahd_demosaic() for (unsigned int j = 0; j < 3; j++) { xyz_cam[i][j] = 0; for (int k = 0; k < 3; k++) { - xyz_cam[i][j] += xyz_rgb[i][k] * imatrices.rgb_cam[k][j] / d65_white[i]; + xyz_cam[i][j] += xyz_rgb[i][k] * static_cast(imatrices.rgb_cam[k][j]) / d65_white[i]; } } } diff --git a/rtengine/badpixels.cc b/rtengine/badpixels.cc index 0ae63a618..97294bdf7 100644 --- a/rtengine/badpixels.cc +++ b/rtengine/badpixels.cc @@ -477,7 +477,7 @@ int RawImageSource::interpolateBadPixelsXtrans(const PixelsMap &bitmapBads) int RawImageSource::findHotDeadPixels(PixelsMap &bpMap, const float thresh, const bool findHotPixels, const bool findDeadPixels) const { BENCHFUN - const float varthresh = (20.0 * (thresh / 100.0) + 1.0) / 24.f; + const float varthresh = (20.f * (thresh / 100.f) + 1.f) / 24.f; // counter for dead or hot pixels int counter = 0; diff --git a/rtengine/camconst.cc b/rtengine/camconst.cc index d136d6a21..b809cc30e 100644 --- a/rtengine/camconst.cc +++ b/rtengine/camconst.cc @@ -553,7 +553,7 @@ CameraConst::get_Levels(struct camera_const_levels & lvl, int bw, int iso, float float av = (avh - 1) + (float)k / 3; float aperture = sqrtf(powf(2, av)); - if (fnumber > aperture * 0.97 && fnumber < aperture / 0.97) { + if (fnumber > aperture * 0.97f && fnumber < aperture / 0.97f) { fnumber = fn_tab[avh][k]; it = mApertureScaling.find(fnumber); avh = 7; @@ -579,7 +579,7 @@ CameraConst::get_Levels(struct camera_const_levels & lvl, int bw, int iso, float scaling = it->second; } - if (scaling > 1.0) { + if (scaling > 1.f) { for (int i = 0; i < 4; i++) { lvl.levels[i] *= scaling; diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index 072935dc2..c6b9405b5 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -538,8 +538,8 @@ BENCHFUN constexpr int tileSize = 32; const int border = iterations <= 30 ? 5 : 7; const int fullTileSize = tileSize + 2 * border; - const float cornerRadius = std::min(1.15f, sigma + sigmaCornerOffset); - const float cornerDistance = sqrt(rtengine::SQR(W * 0.5f) + rtengine::SQR(H * 0.5f)); + const double cornerRadius = std::min(1.15f, sigma + sigmaCornerOffset); + const double cornerDistance = sqrt(rtengine::SQR(W * 0.5f) + rtengine::SQR(H * 0.5f)); const float distanceFactor = (cornerRadius - sigma) / cornerDistance; double progress = startVal; @@ -642,7 +642,7 @@ BENCHFUN const float distance = sqrt(rtengine::SQR(i + tileSize / 2 - H / 2) + rtengine::SQR(j + tileSize / 2 - W / 2)); const float sigmaTile = static_cast(sigma) + distanceFactor * distance; if (sigmaTile >= 0.4f) { - if (sigmaTile > 0.84) { // have to use 7x7 kernel + if (sigmaTile > 0.84f) { // have to use 7x7 kernel float lkernel7[7][7]; compute7x7kernel(static_cast(sigma) + distanceFactor * distance, lkernel7); for (int k = 0; k < iterations; ++k) { @@ -731,7 +731,7 @@ BENCHFUN { 0.019334, 0.119193, 0.950227 } }; - float contrast = conrastThreshold / 100.f; + float contrast = conrastThreshold / 100.0; const float clipVal = (ri->get_white(1) - ri->get_cblack(1)) * scale_mul[1]; diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index c7e49b2ed..208ed4366 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -28,7 +28,7 @@ #endif #undef CLIPD -#define CLIPD(a) ((a)>0.0?((a)<1.0?(a):1.0):0.0) +#define CLIPD(a) ((a)>0.f?((a)<1.f?(a):1.f):0.f) #define MAXR(a,b) ((a) > (b) ? (a) : (b)) namespace rtengine @@ -408,7 +408,7 @@ void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float x { n = yb / yw; - if (pilotd == 2.0) { + if (pilotd == 2.f) { d = d_factorfloat ( f, la ); } else { d = pilotd; @@ -434,7 +434,7 @@ void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float x { n = yb / yw; - if (pilotd == 2.0) { + if (pilotd == 2.f) { d = d_factorfloat ( f, la ); } else { d = pilotd; @@ -492,7 +492,7 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q myh = xatan2f ( cb, ca ); if ( myh < 0.0f ) { - myh += (2.f * rtengine::RT_PI); + myh += (2.f * rtengine::RT_PI_F); } a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; @@ -620,7 +620,7 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f myh = xatan2f ( cb, ca ); if ( myh < 0.0f ) { - myh += (2.f * rtengine::RT_PI); + myh += (2.f * rtengine::RT_PI_F); } a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; diff --git a/rtengine/color.h b/rtengine/color.h index 211615de1..845770bbe 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -132,7 +132,7 @@ public: constexpr static double sRGBGammaCurve = 2.4; constexpr static double eps = 216.0 / 24389.0; //0.008856 - constexpr static double eps_max = MAXVALF * eps; //580.40756; + constexpr static double eps_max = MAXVALD * eps; //580.40756; constexpr static double kappa = 24389.0 / 27.0; //903.29630; constexpr static double kappaInv = 27.0 / 24389.0; constexpr static double epsilonExpInv3 = 6.0 / 29.0; @@ -144,8 +144,8 @@ public: constexpr static float D50x = 0.9642f; //0.96422; constexpr static float D50z = 0.8249f; //0.82521; - constexpr static double u0 = 4.0 * D50x / (D50x + 15 + 3 * D50z); - constexpr static double v0 = 9.0 / (D50x + 15 + 3 * D50z); + constexpr static double u0 = 4.0 * static_cast(D50x) / (static_cast(D50x) + 15 + 3 * static_cast(D50z)); + constexpr static double v0 = 9.0 / (static_cast(D50x) + 15 + 3 * static_cast(D50z)); constexpr static double epskap = 8.0; constexpr static float c1By116 = 1.0 / 116.0; @@ -206,7 +206,7 @@ public: static float rgbLuminance(float r, float g, float b, const double workingspace[3][3]) { - return r * workingspace[1][0] + g * workingspace[1][1] + b * workingspace[1][2]; + return static_cast(r) * workingspace[1][0] + static_cast(g) * workingspace[1][1] + static_cast(b) * workingspace[1][2]; } #ifdef __SSE2__ @@ -972,10 +972,10 @@ public: template static inline T interpolatePolarHue_PI (T h1, T h2, U balance) { - float d = h2 - h1; - float f; + T d = h2 - h1; + T f; f = T(balance); - double h; + T h; if (h1 > h2) { std::swap(h1, h2); @@ -986,7 +986,7 @@ public: if (d < T(0) || d < T(0.5) || d > T(1.)) { //there was an inversion here !! d > T(rtengine::RT_PI) h1 += T(1.); h = h1 + f * (h2 - h1); - h = std::fmod(h, 1.); + h = std::fmod(h, T(1.)); } else { h = h1 + f * d; } diff --git a/rtengine/colortemp.cc b/rtengine/colortemp.cc index 02d3e0e6d..525ed339e 100644 --- a/rtengine/colortemp.cc +++ b/rtengine/colortemp.cc @@ -1071,10 +1071,10 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul, double Xwb, Zwb; temp2mulxyz(temp, method, Xwb, Zwb); - float adj = 1.f; + double adj = 1.0; if(equal < 0.9999 || equal > 1.0001 ) { - adj = (100.f + ( 1000.f - (1000.f * (float)equal) ) / 20.f) / 100.f; + adj = (100.0 + ( 1000.0 - (1000.0 * equal) ) / 20.0) / 100.0; } @@ -1389,7 +1389,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul, } for(int i = 0; i < 8; i++) { - CRIs[i] = 100 - 3.0 * DeltaEs[i]; //3.0 coef to adapt ==> same results than CRI "official" + CRIs[i] = 100 - 3.f * DeltaEs[i]; //3.0 coef to adapt ==> same results than CRI "official" } for(int i = 0; i < 8; i++) { @@ -1409,7 +1409,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul, } for(int i = 0; i < N_c; i++) { - CRI[i] = 100 - 3.0 * DeltaE[i]; //3.0 coef to adapt ==> same results than CRI "official" + CRI[i] = 100 - 3.f * DeltaE[i]; //3.0 coef to adapt ==> same results than CRI "official" } for(int i = 0; i < N_c; i++) { @@ -1425,8 +1425,8 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul, quadCRI /= N_c; if(settings->CRI_color != 0) { - printf("CRI_standard=%i CRI:1->8=%i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RTs, (int) CRIs[0], (int) CRIs[1], (int) CRIs[2], (int) CRIs[3], (int) CRIs[4], (int) CRIs[5], (int) CRIs[6], (int) CRIs[7], sqrt(quadCRIs)); - printf("CRI_RT_exten=%i CRI:9->20=%i %i %i %i %i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RT, (int) CRI[8], (int) CRI[9], (int) CRI[10], (int) CRI[11], (int) CRI[12], (int) CRI[13], (int) CRI[14], (int) CRI[15], (int) CRI[16], (int) CRI[17], (int) CRI[18], (int) CRI[19], sqrt(quadCRI)); + printf("CRI_standard=%i CRI:1->8=%i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RTs, (int) CRIs[0], (int) CRIs[1], (int) CRIs[2], (int) CRIs[3], (int) CRIs[4], (int) CRIs[5], (int) CRIs[6], (int) CRIs[7], sqrt(static_cast(quadCRIs))); + printf("CRI_RT_exten=%i CRI:9->20=%i %i %i %i %i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RT, (int) CRI[8], (int) CRI[9], (int) CRI[10], (int) CRI[11], (int) CRI[12], (int) CRI[13], (int) CRI[14], (int) CRI[15], (int) CRI[16], (int) CRI[17], (int) CRI[18], (int) CRI[19], static_cast(sqrt(quadCRI))); } } } diff --git a/rtengine/curves.h b/rtengine/curves.h index bc8193b76..93c7566d7 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -292,11 +292,11 @@ public: } static inline float gamma2 (float x) { - return x <= 0.00304 ? x * 12.92310 : 1.055 * expf(logf(x) / sRGBGammaCurve) - 0.055; + return x <= 0.00304f ? x * 12.92310f : 1.055f * expf(logf(x) / static_cast(sRGBGammaCurve)) - 0.055f; } static inline float igamma2 (float x) { - return x <= 0.03928 ? x / 12.92310 : expf(logf((x + 0.055) / 1.055) * sRGBGammaCurve); + return x <= 0.03928f ? x / 12.92310f : expf(logf((x + 0.055f) / 1.055f) * static_cast(sRGBGammaCurve)); } // gamma function with adjustable parameters static inline double gamma (double x, double gamma, double start, double slope, double mul, double add) @@ -327,8 +327,8 @@ public: #endif static inline float hlcurve (const float exp_scale, const float comp, const float hlrange, float level) { - if (comp > 0.0) { - float val = level + (hlrange - 65536.0); + if (comp > 0.f) { + float val = level + (hlrange - 65536.f); if(val == 0.0f) { // to avoid division by zero val = 0.000001f; @@ -337,7 +337,7 @@ public: float Y = val * exp_scale / hlrange; Y *= comp; - if(Y <= -1.0) { // to avoid log(<=0) + if(Y <= -1.f) { // to avoid log(<=0) Y = -.999999f; } diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 11fe306b8..89256bba4 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -1064,9 +1064,11 @@ void DCPProfile::apply( for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { + double temp = 0.0; for (int k = 0; k < 3; ++k) { - mat[i][j] += work_matrix[i][k] * xyz_cam[k][j]; + temp += work_matrix[i][k] * xyz_cam[k][j]; } + mat[i][j] = temp; } } @@ -1092,9 +1094,11 @@ void DCPProfile::apply( for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { + double temp = 0.0; for (int k = 0; k < 3; ++k) { - pro_photo[i][j] += prophoto_xyz[i][k] * xyz_cam[k][j]; + temp += prophoto_xyz[i][k] * xyz_cam[k][j]; } + pro_photo[i][j] = temp; } } @@ -1102,9 +1106,11 @@ void DCPProfile::apply( for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { + double temp = 0.0; for (int k = 0; k < 3; ++k) { - work[i][j] += work_matrix[i][k] * xyz_prophoto[k][j]; + temp += work_matrix[i][k] * xyz_prophoto[k][j]; } + work[i][j] = temp; } } @@ -1173,27 +1179,35 @@ void DCPProfile::setStep2ApplyState(const Glib::ustring& working_space, bool use mWork = ICCStore::getInstance()->workingSpaceMatrix (working_space); memset(as_out.data->pro_photo, 0, sizeof(as_out.data->pro_photo)); - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + double temp = 0.0; for (int k = 0; k < 3; k++) { - as_out.data->pro_photo[i][j] += prophoto_xyz[i][k] * mWork[k][j]; + temp += prophoto_xyz[i][k] * mWork[k][j]; } + as_out.data->pro_photo[i][j] = temp; + } + } mWork = ICCStore::getInstance()->workingSpaceInverseMatrix (working_space); memset(as_out.data->work, 0, sizeof(as_out.data->work)); - for (int i = 0; i < 3; i++) - for (int j = 0; j < 3; j++) + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + double temp = 0.0; for (int k = 0; k < 3; k++) { - as_out.data->work[i][j] += mWork[i][k] * xyz_prophoto[k][j]; + temp += mWork[i][k] * xyz_prophoto[k][j]; } + as_out.data->work[i][j] = temp; + } + } } } void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int height, int tile_width, const DCPProfileApplyState& as_in) const { -#define FCLIP(a) ((a)>0.0?((a)<65535.5?(a):65535.5):0.0) +#define FCLIP(a) ((a)>0.f?((a)<65535.5f?(a):65535.5f):0.f) #define CLIP01(a) ((a)>0?((a)<1?(a):1):0) float exp_scale = as_in.data->bl_scale; diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 538858a9a..a31415968 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -1069,7 +1069,7 @@ void RawImageSource::dcb_hid(float (*image)[3], int x0, int y0) for (int col = colMin + (FC(y0 - TILEBORDER + row, x0 - TILEBORDER + colMin) & 1), indx = row * CACHESIZE + col; col < colMax; col += 2, indx += 2) { assert(indx - u - 1 >= 0 && indx + u + 1 < u * u); - image[indx][1] = 0.25*(image[indx-1][1]+image[indx+1][1]+image[indx-u][1]+image[indx+u][1]); + image[indx][1] = 0.25f * (image[indx-1][1]+image[indx+1][1]+image[indx-u][1]+image[indx+u][1]); } } diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc index 1fb1d2e1b..6961a4b54 100644 --- a/rtengine/dfmanager.cc +++ b/rtengine/dfmanager.cc @@ -476,7 +476,7 @@ dfInfo* DFManager::find( const std::string &mak, const std::string &mod, int iso } } - return bestD != INFINITY ? &(bestMatch->second) : nullptr ; + return bestD != RT_INFINITY ? &(bestMatch->second) : nullptr ; } } diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index bb20b7cc1..f8b22ed46 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -65,23 +65,23 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) } } - if (x[0] != 0.0f || x[N - 1] != 1.0f) + if (x[0] != 0.0 || x[N - 1] != 1.0) // Special (and very rare) case where all points are on the identity line but // not reaching the limits { identity = false; } - if(x[0] == 0.f && x[1] == 0.f) + if(x[0] == 0.0 && x[1] == 0.0) // Avoid crash when first two points are at x = 0 (git Issue 2888) { - x[1] = 0.01f; + x[1] = 0.01; } - if(x[0] == 1.f && x[1] == 1.f) + if(x[0] == 1.0 && x[1] == 1.0) // Avoid crash when first two points are at x = 1 (100 in gui) (git Issue 2923) { - x[0] = 0.99f; + x[0] = 0.99; } if (!identity) { @@ -97,7 +97,7 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) } } } else if (kind == DCT_Parametric) { - if ((p.size() == 8 || p.size() == 9) && (p.at(4) != 0.0f || p.at(5) != 0.0f || p.at(6) != 0.0f || p.at(7) != 0.0f)) { + if ((p.size() == 8 || p.size() == 9) && (p.at(4) != 0.0 || p.at(5) != 0.0 || p.at(6) != 0.0 || p.at(7) != 0.0)) { identity = false; x = new double[9]; diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index 1f62badcb..0624f4443 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -228,11 +228,11 @@ void fillLut(LUTf &irangefn, int level, double dirpyrThreshold, float mult, floa } const float offs = skinprot == 0.f ? 0.f : -1.f; - constexpr float noise = 2000.f; - const float noisehi = 1.33f * noise * dirpyrThreshold / expf(level * log(3.0)), noiselo = 0.66f * noise * dirpyrThreshold / expf(level * log(3.0)); + constexpr double noise = 2000.0; + const float noisehi = 1.33 * noise * dirpyrThreshold / exp(level * log(3.0)), noiselo = 0.66 * noise * dirpyrThreshold / exp(level * log(3.0)); for (int i = 0; i < 0x20000; i++) { - if (abs(i - 0x10000) > noisehi || multbis < 1.0) { + if (abs(i - 0x10000) > noisehi || multbis < 1.f) { irangefn[i] = multbis + offs; } else { if (abs(i - 0x10000) < noiselo) { @@ -262,7 +262,7 @@ void idirpyr_eq_channel(const float * const * data_coarse, const float * const * buffer[i][j] += irangefn[hipass + 0x10000] * hipass; } } - } else if (skinprot > 0.f) { + } else if (skinprot > 0.0) { #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) #endif @@ -314,7 +314,7 @@ void idirpyr_eq_channelcam(const float * const * data_coarse, const float * cons buffer[i][j] += irangefn[hipass + 0x10000] * hipass; } } - } else if (skinprot > 0.f) { + } else if (skinprot > 0.0) { #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) #endif diff --git a/rtengine/dual_demosaic_RT.cc b/rtengine/dual_demosaic_RT.cc index 93508808c..253468a76 100644 --- a/rtengine/dual_demosaic_RT.cc +++ b/rtengine/dual_demosaic_RT.cc @@ -45,7 +45,7 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const procparams::RAWParams { BENCHFUN - if (contrast == 0.f && !autoContrast) { + if (contrast == 0.0 && !autoContrast) { // contrast == 0.0 means only first demosaicer will be used if(isBayer) { if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4) ) { @@ -103,7 +103,7 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const procparams::RAWParams } // calculate contrast based blend factors to use vng4 in regions with low contrast JaggedArray blend(winw, winh); - float contrastf = contrast / 100.f; + float contrastf = contrast / 100.0; buildBlendMask(L, blend, winw, winh, contrastf, autoContrast); contrast = contrastf * 100.f; diff --git a/rtengine/ffmanager.cc b/rtengine/ffmanager.cc index ce60277e1..c55bc5108 100644 --- a/rtengine/ffmanager.cc +++ b/rtengine/ffmanager.cc @@ -428,7 +428,7 @@ ffInfo* FFManager::find( const std::string &mak, const std::string &mod, const s } } - return bestD != INFINITY ? &(bestMatch->second) : nullptr ; + return bestD != RT_INFINITY ? &(bestMatch->second) : nullptr ; } } diff --git a/rtengine/green_equil_RT.cc b/rtengine/green_equil_RT.cc index fc4f18548..a66bca160 100644 --- a/rtengine/green_equil_RT.cc +++ b/rtengine/green_equil_RT.cc @@ -47,7 +47,7 @@ void RawImageSource::green_equilibrate_global(array2D &rawData) for (int i = border; i < H - border; i++) { double avgg = 0.; for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) { - avgg += rawData[i][j]; + avgg += static_cast(rawData[i][j]); } int ng = (W - 2 * border + (FC(i, border) & 1)) / 2; @@ -71,15 +71,15 @@ void RawImageSource::green_equilibrate_global(array2D &rawData) avgg2 = 1.0; } - double corrg1 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg1 / ng1); - double corrg2 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg2 / ng2); + const float corrg1 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg1 / ng1); + const float corrg2 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg2 / ng2); #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) #endif for (int i = border; i < H - border; i++) { - double corrg = (i & 1) ? corrg2 : corrg1; + const float corrg = (i & 1) ? corrg2 : corrg1; for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) { rawData[i][j] *= corrg; @@ -220,7 +220,7 @@ void RawImageSource::green_equilibrate(const GreenEqulibrateThreshold &thresh, a float tf = thresh(rr, cc); - if (c1 + c2 < 6 * tf * fabs(d1 - d2)) { + if (c1 + c2 < 6 * tf * std::fabs(d1 - d2)) { //pixel interpolation float gin = cfa[rr][cc >> 1]; diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index f5d16866e..0053cb0d4 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -179,7 +179,7 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) }; idx = -1; for (ssize_t i = curve.size()-1; i > 0; i -= 2) { - if (curve[i] <= 0.f) { + if (curve[i] <= 0.0) { idx = i+1; break; } @@ -328,7 +328,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st int tw = target->getWidth(), th = target->getHeight(); float thumb_ratio = float(std::max(sw, sh)) / float(std::min(sw, sh)); float target_ratio = float(std::max(tw, th)) / float(std::min(tw, th)); - if (std::abs(thumb_ratio - target_ratio) > 0.01) { + if (std::abs(thumb_ratio - target_ratio) > 0.01f) { int cx = 0, cy = 0; if (thumb_ratio > target_ratio) { // crop the height @@ -342,7 +342,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st tw -= cw; } if (settings->verbose) { - std::cout << "histogram matching: cropping target to get an aspect ratio of " << round(thumb_ratio * 100)/100.0 << ":1, new size is " << tw << "x" << th << std::endl; + std::cout << "histogram matching: cropping target to get an aspect ratio of " << round(thumb_ratio * 100)/100.f << ":1, new size is " << tw << "x" << th << std::endl; } if (cx || cy) { diff --git a/rtengine/image16.cc b/rtengine/image16.cc index a98d64d51..7013af4b7 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -147,10 +147,10 @@ void Image16::getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, P gm = dgm; bm = dbm; - rm = 1.0 / rm; - gm = 1.0 / gm; - bm = 1.0 / bm; - float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; + rm = 1.f / rm; + gm = 1.f / gm; + bm = 1.f / bm; + float mul_lum = 0.299f * rm + 0.587f * gm + 0.114f * bm; rm /= mul_lum; gm /= mul_lum; bm /= mul_lum; diff --git a/rtengine/image8.cc b/rtengine/image8.cc index 66ad8b60f..f2098962c 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -111,10 +111,10 @@ void Image8::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, P gm = dgm; bm = dbm; - rm = 1.0 / rm; - gm = 1.0 / gm; - bm = 1.0 / bm; - float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; + rm = 1.f / rm; + gm = 1.f / gm; + bm = 1.f / bm; + float mul_lum = 0.299f * rm + 0.587f * gm + 0.114f * bm; rm /= mul_lum; gm /= mul_lum; bm /= mul_lum; diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 1da91a4b4..f905134a0 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -178,10 +178,10 @@ void Imagefloat::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* imag gm = dgm; bm = dbm; - rm = 1.0 / rm; - gm = 1.0 / gm; - bm = 1.0 / bm; - float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; + rm = 1.f / rm; + gm = 1.f / gm; + bm = 1.f / bm; + float mul_lum = 0.299f * rm + 0.587f * gm + 0.114f * bm; rm /= mul_lum; gm /= mul_lum; bm /= mul_lum; @@ -368,7 +368,7 @@ Imagefloat::to16() const void Imagefloat::normalizeFloat(float srcMinVal, float srcMaxVal) { - float scale = MAXVALD / (srcMaxVal - srcMinVal); + float scale = MAXVALF / (srcMaxVal - srcMinVal); int w = width; int h = height; diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 28a0f2d57..2dc0287a1 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -240,9 +240,9 @@ float estimate_ambient_light(const array2D &R, const array2D &G, c float g = G[y][x]; float b = B[y][x]; if (r + g + b >= bright_lim) { - rr += r; - gg += g; - bb += b; + rr += static_cast(r); + gg += static_cast(g); + bb += static_cast(b); ++n; } } diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 6526419f5..786d42e56 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -139,7 +139,7 @@ BENCHFUN auto &hm = hmask[i]; auto &cm = cmask[i]; auto &lm = lmask[i]; - float blend = LIM01((hm ? hm->getVal(h) : 1.f) * (cm ? cm->getVal(c) : 1.f) * (lm ? lm->getVal(l) : 1.f)); + float blend = LIM01((hm ? hm->getVal(h) : 1.0) * (cm ? cm->getVal(c) : 1.0) * (lm ? lm->getVal(l) : 1.0)); Lmask[i][y][x] = abmask[i][y][x] = blend; } } @@ -147,8 +147,8 @@ BENCHFUN } for (int i = begin_idx; i < end_idx; ++i) { - float blur = params->colorToning.labregions[i].maskBlur; - blur = blur < 0.f ? -1.f/blur : 1.f + blur; + double blur = params->colorToning.labregions[i].maskBlur; + blur = blur < 0.0 ? -1.0 / blur : 1.0 + blur; int r1 = max(int(4 / scale * blur + 0.5), 1); int r2 = max(int(25 / scale * blur + 0.5), 1); rtengine::guidedFilter(guide, abmask[i], abmask[i], r1, 0.001, multiThread); @@ -188,7 +188,7 @@ BENCHFUN auto &r = params->colorToning.labregions[i]; abca[i] = abcoord(r.a); abcb[i] = abcoord(r.b); - rs[i] = 1.f + r.saturation / (SGN(r.saturation) > 0 ? 50.f : 100.f); + rs[i] = 1.0 + r.saturation / (SGN(r.saturation) > 0 ? 50.0 : 100.0); slope[i] = r.slope; offset[i] = r.offset; power[i] = r.power; diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index 84f33482f..6768eca93 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -110,8 +110,8 @@ void mean_stddv2( float **dst, float &mean, float &stddv, int W_L, int H_L, floa for (int i = 0; i < H_L; i++ ) for (int j = 0; j < W_L; j++) { - sum += dst[i][j]; - vsquared += (dst[i][j] * dst[i][j]); + sum += static_cast(dst[i][j]); + vsquared += rtengine::SQR(dst[i][j]); lmax = dst[i][j] > lmax ? dst[i][j] : lmax; lmin = dst[i][j] < lmin ? dst[i][j] : lmin; @@ -128,8 +128,8 @@ void mean_stddv2( float **dst, float &mean, float &stddv, int W_L, int H_L, floa } mean = sum / (double) (W_L * H_L); vsquared /= (double) W_L * H_L; - stddv = ( vsquared - (mean * mean) ); - stddv = (float)sqrt(stddv); + stddv = vsquared - rtengine::SQR(mean); + stddv = std::sqrt(stddv); } } @@ -678,9 +678,9 @@ BENCHFUN float valparam; if(useHsl || useHslLin) { - valparam = shcurve->getVal(HH) - 0.5f; + valparam = shcurve->getVal(HH) - 0.5; } else { - valparam = shcurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5f; + valparam = shcurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5; } str *= (1.f + 2.f * valparam); diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index 5c5b6b324..5d5be57e9 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -46,7 +46,7 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab) array2D mask(width, height); array2D L(width, height); - const float radius = float(params->sh.radius) * 10 / scale; + const float radius = params->sh.radius * 10 / scale; LUTf f(lab_mode ? 32768 : 65536); TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index 14e5f3c44..8636ecb95 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -48,7 +48,7 @@ void fillCurveArrayVib (DiagonalCurve* diagCurve, LUTf &outCurve) // change to [0,1] range // apply custom/parametric/NURBS curve, if any // and store result in a temporary array - outCurve[i] = 65535.f * diagCurve->getVal ( double (i) / 65535.0 ); + outCurve[i] = 65535.0 * diagCurve->getVal(i / 65535.0); } } else { outCurve.makeIdentity(); @@ -606,7 +606,7 @@ void ImProcFunctions::vibrance (LabImage* lab) bool inGamut; const float fyy = Color::c1By116 * Lprov + Color::c16By116; - const float yy_ = (Lprov > Color::epskap) ? fyy * fyy*fyy : Lprov / Color::kappaf; + const float yy_ = (Lprov > static_cast(Color::epskap)) ? fyy * fyy*fyy : Lprov / Color::kappaf; float ChprovOld = std::numeric_limits::min(); do { inGamut = true; diff --git a/rtengine/lmmse_demosaic.cc b/rtengine/lmmse_demosaic.cc index f4af1b801..5c4ddffed 100644 --- a/rtengine/lmmse_demosaic.cc +++ b/rtengine/lmmse_demosaic.cc @@ -334,7 +334,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, const array2DlocalContrast.amount = true; diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index feba5c95f..cee57c851 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -308,7 +308,7 @@ float calculateGradients (Array2Df* H, Array2Df* G, int k, bool multithread) // however, the impact is not visible so we ignore this here (*G) (x, y) = sqrt (gx * gx + gy * gy) / divider; - avgGrad += (*G) (x, y); + avgGrad += static_cast((*G) (x, y)); } } @@ -381,7 +381,7 @@ void calculateFiMatrix (Array2Df* FI, Array2Df* gradients[], #endif for ( int y = 0; y < height; y++ ) { for ( int x = 0; x < width; x++ ) { - float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4 : (*gradients[k]) (x, y); + float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4f : (*gradients[k]) (x, y); float a = alfa * avgGrad[k]; float value = pow ((grad + noise) / a, beta - 1.0f); @@ -603,8 +603,8 @@ void tmo_fattal02 (size_t width, // sets index+1 based on the boundary assumption H(N+1)=H(N-1) unsigned int xp1 = (x + 1 >= width ? width - 2 : x + 1); // forward differences in H, so need to use between-points approx of FI - (*Gx) (x, y) = ((*H) (xp1, y) - (*H) (x, y)) * 0.5 * ((*FI) (xp1, y) + (*FI) (x, y)); - (*Gy) (x, y) = ((*H) (x, yp1) - (*H) (x, y)) * 0.5 * ((*FI) (x, yp1) + (*FI) (x, y)); + (*Gx) (x, y) = ((*H) (xp1, y) - (*H) (x, y)) * 0.5f * ((*FI) (xp1, y) + (*FI) (x, y)); + (*Gy) (x, y) = ((*H) (x, yp1) - (*H) (x, y)) * 0.5f * ((*FI) (x, yp1) + (*FI) (x, y)); } } @@ -747,7 +747,7 @@ void transform_ev2normal (Array2Df *A, Array2Df *T, bool multithread) } for (int y = 1 ; y < height - 1 ; y++ ) { - (*A) (0, y) *= 0.5; + (*A) (0, y) *= 0.5f; (*A) (width - 1, y) *= 0.5f; } @@ -912,7 +912,7 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/* for (int y = 0 ; y < height ; y++ ) { for (int x = 0 ; x < width ; x++ ) { - (*F_tr) (x, y) = (*F_tr) (x, y) / (l1[y] + l2[x]); + (*F_tr) (x, y) = static_cast((*F_tr) (x, y)) / (l1[y] + l2[x]); } } diff --git a/rtengine/xtrans_demosaic.cc b/rtengine/xtrans_demosaic.cc index cb1315ed0..b01b0ac1c 100644 --- a/rtengine/xtrans_demosaic.cc +++ b/rtengine/xtrans_demosaic.cc @@ -31,7 +31,7 @@ namespace rtengine { -const double xyz_rgb[3][3] = { // XYZ from RGB +const float xyz_rgb[3][3] = { // XYZ from RGB { 0.412453, 0.357580, 0.180423 }, { 0.212671, 0.715160, 0.072169 }, { 0.019334, 0.119193, 0.950227 } diff --git a/rtgui/blackwhite.cc b/rtgui/blackwhite.cc index 596d99607..ea493d6e1 100644 --- a/rtgui/blackwhite.cc +++ b/rtgui/blackwhite.cc @@ -70,7 +70,7 @@ BlackWhite::BlackWhite (): FoldableToolPanel(this, "blackwhite", M("TP_BWMIX_LAB // -0.1 rad < Hue < 1.6 rad for (int i = 0; i < 7; i++) { - float x = float(i) * (1.0f / 6.0); + float x = float(i) * (1.0f / 6.f); Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); bottomMilestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } @@ -1185,10 +1185,10 @@ void BlackWhite::updateRGBLabel () RGBLabels->set_text( Glib::ustring::compose(M("TP_BWMIX_RGBLABEL"), - Glib::ustring::format(std::fixed, std::setprecision(1), r * 100.), - Glib::ustring::format(std::fixed, std::setprecision(1), g * 100.), - Glib::ustring::format(std::fixed, std::setprecision(1), b * 100.), - Glib::ustring::format(std::fixed, std::setprecision(0), ceil(kcorrec * 100./*(r+g+b)*100.)*/))) + Glib::ustring::format(std::fixed, std::setprecision(1), r * 100.f), + Glib::ustring::format(std::fixed, std::setprecision(1), g * 100.f), + Glib::ustring::format(std::fixed, std::setprecision(1), b * 100.f), + Glib::ustring::format(std::fixed, std::setprecision(0), ceil(kcorrec * 100.f/*(r+g+b)*100.)*/))) ); // We have to update the RGB sliders too if preset values has been chosen diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 62f6eee2c..9468770fc 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -523,7 +523,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" float R, G, B; for (int i = 0; i < 7; i++) { - float x = float (i) * (1.0f / 6.0); + float x = float (i) * (1.0f / 6.f); Color::hsv2rgb01 (x, 0.5f, 0.5f, R, G, B); shape3Milestones.push_back ( GradientMilestone (double (x), double (R), double (G), double (B)) ); } diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index 59768a6ce..ddf917149 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -74,7 +74,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR // whole hue range for (int i = 0; i < 7; i++) { float R, G, B; - float x = float(i) * (1.0f / 6.0); + float x = float(i) * (1.0f / 6.f); Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } @@ -1203,11 +1203,11 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele // the strength applied to the current hue double strength, hue; hlColSat->getValue(strength, hue); - Color::hsv2rgb01(hue / 360.f, 1.f, 1.f, R, G, B); + Color::hsv2rgb01(hue / 360.0, 1.f, 1.f, R, G, B); const double gray = 0.46; - R = (gray * (1.0 - valX)) + R * valX; - G = (gray * (1.0 - valX)) + G * valX; - B = (gray * (1.0 - valX)) + B * valX; + R = (gray * (1.0 - valX)) + static_cast(R) * valX; + G = (gray * (1.0 - valX)) + static_cast(G) * valX; + B = (gray * (1.0 - valX)) + static_cast(B) * valX; } } else if (callerId == 3) { // Slider 2 background if (valY <= 0.5) @@ -1218,17 +1218,17 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele // the strength applied to the current hue double strength, hue; shadowsColSat->getValue(strength, hue); - Color::hsv2rgb01(hue / 360.f, 1.f, 1.f, R, G, B); + Color::hsv2rgb01(hue / 360.0, 1.f, 1.f, R, G, B); const double gray = 0.46; - R = (gray * (1.0 - valX)) + R * valX; - G = (gray * (1.0 - valX)) + G * valX; - B = (gray * (1.0 - valX)) + B * valX; + R = (gray * (1.0 - valX)) + static_cast(R) * valX; + G = (gray * (1.0 - valX)) + static_cast(G) * valX; + B = (gray * (1.0 - valX)) + static_cast(B) * valX; } } else if (callerId == 4) { // color curve vertical and horizontal crosshair Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B); } else if (callerId == ID_LABREGION_HUE) { // TODO - float x = valX - 1.f/6.f; + float x = valX - 1.0/6.0; if (x < 0.f) { x += 1.f; } diff --git a/rtgui/coordinateadjuster.cc b/rtgui/coordinateadjuster.cc index ebf36b7e7..57190cf63 100644 --- a/rtgui/coordinateadjuster.cc +++ b/rtgui/coordinateadjuster.cc @@ -69,14 +69,14 @@ void CoordinateAdjuster::AxisAdjuster::setValue(double newValue) { float range = rangeUpperBound - rangeLowerBound; spinButtonConn.block(true); - spinButton->set_value(newValue * range + rangeLowerBound); + spinButton->set_value(static_cast(newValue) * range + rangeLowerBound); spinButtonConn.block(false); } void CoordinateAdjuster::AxisAdjuster::valueChanged() { float range = rangeUpperBound - rangeLowerBound; - parent->updatePos(idx, (spinButton->get_value() - rangeLowerBound) / range); + parent->updatePos(idx, (static_cast(spinButton->get_value()) - rangeLowerBound) / range); } CoordinateAdjuster::CoordinateAdjuster(CoordinateProvider *provider, CurveEditorSubGroup *parent, const std::vector &axis) @@ -171,7 +171,7 @@ void CoordinateAdjuster::startNumericalAdjustment(const std::vector Gtk::SpinButton *currSpinButton = axisAdjusters.at(i)->spinButton; currSpinButton->set_sensitive(true); float range = axisAdjusters.at(i)->rangeUpperBound - axisAdjusters.at(i)->rangeLowerBound; - currSpinButton->set_range(newBoundaries.at(i).minVal * range + axisAdjusters.at(i)->rangeLowerBound, newBoundaries.at(i).maxVal * range + axisAdjusters.at(i)->rangeLowerBound); + currSpinButton->set_range(newBoundaries.at(i).minVal * static_cast(range) + static_cast(axisAdjusters.at(i)->rangeLowerBound), newBoundaries.at(i).maxVal * static_cast(range) + static_cast(axisAdjusters.at(i)->rangeLowerBound)); } axisAdjusters.at(0)->spinButton->grab_focus(); @@ -200,7 +200,7 @@ void CoordinateAdjuster::switchAdjustedPoint(std::vector &pos, const std // ...narrow the range to the new interval float range = axisAdjusters.at(i)->rangeUpperBound - axisAdjusters.at(i)->rangeLowerBound; - currAxis->spinButton->set_range(newBoundaries.at(i).minVal * range + axisAdjusters.at(i)->rangeLowerBound, newBoundaries.at(i).maxVal * range + axisAdjusters.at(i)->rangeLowerBound); + currAxis->spinButton->set_range(newBoundaries.at(i).minVal * static_cast(range) + static_cast(axisAdjusters.at(i)->rangeLowerBound), newBoundaries.at(i).maxVal * static_cast(range) + static_cast(axisAdjusters.at(i)->rangeLowerBound)); // enable events currAxis->spinButtonConn.block(false); diff --git a/rtgui/crop.cc b/rtgui/crop.cc index 3bdcf14cf..d9d496523 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -1006,7 +1006,7 @@ void Crop::cropWidth1Resized (int &X, int &Y, int &W, int &H, float custom_ratio } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0.f ? custom_ratio : static_cast(getRatio()); H = (int)round(W / r); int Hmax = min(ny + nh, maxh - ny); @@ -1053,7 +1053,7 @@ void Crop::cropWidth2Resized (int &X, int &Y, int &W, int &H, float custom_ratio } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); H = (int)round(W / r); int Hmax = min(ny + nh, maxh - ny); @@ -1101,7 +1101,7 @@ void Crop::cropHeight1Resized (int &X, int &Y, int &W, int &H, float custom_rati } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); W = (int)round(H * r); int Wmax = min(nx + nw, maxw - nx); @@ -1148,7 +1148,7 @@ void Crop::cropHeight2Resized (int &X, int &Y, int &W, int &H, float custom_rati } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); W = (int)round(H * r); int Wmax = min(nx + nw, maxw - nx); @@ -1205,7 +1205,7 @@ void Crop::cropTopLeftResized (int &X, int &Y, int &W, int &H, float custom_rati } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); W = (int)round(H * r); if (W > oldXR) { @@ -1252,7 +1252,7 @@ void Crop::cropTopRightResized (int &X, int &Y, int &W, int &H, float custom_rat } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); W = (int)round(H * r); if (W > maxw - nx) { @@ -1298,7 +1298,7 @@ void Crop::cropBottomLeftResized (int &X, int &Y, int &W, int &H, float custom_r } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); W = (int)round(H * r); if (W > oldXR) { @@ -1342,7 +1342,7 @@ void Crop::cropBottomRightResized (int &X, int &Y, int &W, int &H, float custom_ } if (fixr->get_active() || custom_ratio > 0) { - double r = custom_ratio > 0 ? custom_ratio : getRatio(); + double r = custom_ratio > 0 ? custom_ratio : static_cast(getRatio()); W = (int)round(H * r); if (W > maxw - nx) { diff --git a/rtgui/editwidgets.cc b/rtgui/editwidgets.cc index f7c748744..e67b664db 100644 --- a/rtgui/editwidgets.cc +++ b/rtgui/editwidgets.cc @@ -126,13 +126,13 @@ void Circle::drawInnerGeometry(Cairo::RefPtr &cr, ObjectMOBuffer if (filled && state != INSENSITIVE) { cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0., 2.*rtengine::RT_PI); - if (innerLineWidth > 0.) { + if (innerLineWidth > 0.f) { cr->fill_preserve(); cr->stroke(); } else { cr->fill(); } - } else if (innerLineWidth > 0.) { + } else if (innerLineWidth > 0.f) { cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0., 2.*rtengine::RT_PI); if (state == INSENSITIVE) { @@ -176,7 +176,7 @@ void Circle::drawToMOChannel (Cairo::RefPtr &cr, unsigned short cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0, 2.*rtengine::RT_PI); if (filled) { - if (innerLineWidth > 0.) { + if (innerLineWidth > 0.f) { cr->fill_preserve(); cr->stroke(); } else { @@ -224,7 +224,7 @@ void Line::drawOuterGeometry(Cairo::RefPtr &cr, ObjectMOBuffer * void Line::drawInnerGeometry(Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) { - if ((flags & F_VISIBLE) && innerLineWidth > 0.) { + if ((flags & F_VISIBLE) && innerLineWidth > 0.f) { if (state != INSENSITIVE) { RGBColor color; @@ -383,13 +383,13 @@ void Polyline::drawInnerGeometry(Cairo::RefPtr &cr, ObjectMOBuff } } - if (innerLineWidth > 0.) { + if (innerLineWidth > 0.f) { cr->fill_preserve(); cr->stroke(); } else { cr->fill(); } - } else if (innerLineWidth > 0.) { + } else if (innerLineWidth > 0.f) { rtengine::Coord currPos; for (unsigned int i = 0; i < points.size(); ++i) { @@ -459,7 +459,7 @@ void Polyline::drawToMOChannel (Cairo::RefPtr &cr, unsigned shor } if (filled) { - if (innerLineWidth > 0.) { + if (innerLineWidth > 0.f) { cr->fill_preserve(); cr->stroke(); } else { @@ -576,13 +576,13 @@ void Rectangle::drawInnerGeometry(Cairo::RefPtr &cr, ObjectMOBuf if (filled && state != INSENSITIVE) { cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y); - if (innerLineWidth > 0.) { + if (innerLineWidth > 0.f) { cr->fill_preserve(); cr->stroke(); } else { cr->fill(); } - } else if (innerLineWidth > 0.) { + } else if (innerLineWidth > 0.f) { cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y); if (state == INSENSITIVE) { @@ -634,7 +634,7 @@ void Rectangle::drawToMOChannel(Cairo::RefPtr &cr, unsigned shor cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y); if (filled) { - if (innerLineWidth > 0.) { + if (innerLineWidth > 0.f) { cr->fill_preserve(); cr->stroke(); } else { From 806c086fbcc92c6a11bb714d1bce37b13d41c34b Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 21 Jan 2020 14:01:27 +0100 Subject: [PATCH 11/38] more double promote fixes, still not complete --- rtengine/FTblockDN.cc | 64 ++++++------- rtengine/color.h | 1 + rtengine/hilite_recon.cc | 4 +- rtengine/improcfun.cc | 199 +++++++++++++++++++-------------------- 4 files changed, 134 insertions(+), 134 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 121c8189d..4e5dae42b 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -548,7 +548,7 @@ BENCHFUN const bool denoiseMethodRgb = (dnparams.dmethod == "RGB"); // init luma noisevarL const float noiseluma = static_cast(dnparams.luma); - const float noisevarL = (useNoiseLCurve && (denoiseMethodRgb || !isRAW)) ? static_cast(SQR(((noiseluma + 1.0) / 125.0) * (10. + (noiseluma + 1.0) / 25.0))) : static_cast(SQR((noiseluma / 125.0) * (1.0 + noiseluma / 25.0))); + const float noisevarL = (useNoiseLCurve && (denoiseMethodRgb || !isRAW)) ? SQR(((noiseluma + 1.f) / 125.f) * (10.f + (noiseluma + 1.f) / 25.f)) : SQR((noiseluma / 125.f) * (1.f + noiseluma / 25.f)); const bool denoiseLuminance = (noisevarL > 0.00001f); //printf("NL=%f \n",noisevarL); @@ -635,20 +635,20 @@ BENCHFUN if (dnparams.luma != 0 || dnparams.chroma != 0 || dnparams.methodmed == "Lab" || dnparams.methodmed == "Lonly") { // gamma transform for input data - float gam = dnparams.gamma; - float gamthresh = 0.001f; + double gam = dnparams.gamma; + constexpr double gamthresh = 0.001; if (!isRAW) {//reduce gamma under 1 for Lab mode ==> TIF and JPG - if (gam < 1.9f) { - gam = 1.f - (1.9f - gam) / 3.f; //minimum gamma 0.7 - } else if (gam >= 1.9f && gam <= 3.f) { - gam = (1.4f / 1.1f) * gam - 1.41818f; + if (gam < 1.9) { + gam = 1.0 - (1.9 - gam) / 3.0; //minimum gamma 0.7 + } else if (gam >= 1.9 && gam <= 3.0) { + gam = (1.4 / 1.1) * gam - 1.41818; } } LUTf gamcurve(65536, LUT_CLIP_BELOW); - float gamslope = exp(log(static_cast(gamthresh)) / gam) / gamthresh; + const double gamslope = exp(log(gamthresh) / gam) / gamthresh; if (denoiseMethodRgb) { Color::gammaf2lut(gamcurve, gam, gamthresh, gamslope, 65535.f, 32768.f); @@ -657,9 +657,9 @@ BENCHFUN } // inverse gamma transform for output data - float igam = 1.f / gam; - float igamthresh = gamthresh * gamslope; - float igamslope = 1.f / gamslope; + const float igam = 1.0 / gam; + const float igamthresh = gamthresh * gamslope; + const float igamslope = 1.0 / gamslope; LUTf igamcurve(65536, LUT_CLIP_BELOW); @@ -669,9 +669,9 @@ BENCHFUN Color::gammanf2lut(igamcurve, igam, 32768.f, 65535.f); } - const float gain = pow(2.0f, float(expcomp)); - float params_Ldetail = min(float(dnparams.Ldetail), 99.9f); // max out to avoid div by zero when using noisevar_Ldetail as divisor - float noisevar_Ldetail = SQR(static_cast(SQR(100. - params_Ldetail) + 50.*(100. - params_Ldetail)) * TS * 0.5f); + const float gain = std::pow(2.0, expcomp); + const double params_Ldetail = std::min(dnparams.Ldetail, 99.9); // max out to avoid div by zero when using noisevar_Ldetail as divisor + const float noisevar_Ldetail = SQR(SQR(100. - params_Ldetail) + 50.0 * (100.0 - params_Ldetail) * TS * 0.5); array2D tilemask_in(TS, TS); array2D tilemask_out(TS, TS); @@ -681,13 +681,13 @@ BENCHFUN for (int i = 0; i < TS; ++i) { float i1 = abs((i > TS / 2 ? i - TS + 1 : i)); - float vmask = (i1 < border ? SQR(sin((rtengine::RT_PI * i1) / (2 * border))) : 1.0f); - float vmask2 = (i1 < 2 * border ? SQR(sin((rtengine::RT_PI * i1) / (2 * border))) : 1.0f); + float vmask = (i1 < border ? SQR(sin((rtengine::RT_PI_F * i1) / (2 * border))) : 1.f); + float vmask2 = (i1 < 2 * border ? SQR(sin((rtengine::RT_PI_F * i1) / (2 * border))) : 1.f); for (int j = 0; j < TS; ++j) { float j1 = abs((j > TS / 2 ? j - TS + 1 : j)); - tilemask_in[i][j] = (vmask * (j1 < border ? SQR(sin((rtengine::RT_PI * j1) / (2 * border))) : 1.0f)) + epsilon; - tilemask_out[i][j] = (vmask2 * (j1 < 2 * border ? SQR(sin((rtengine::RT_PI * j1) / (2 * border))) : 1.0f)) + epsilon; + tilemask_in[i][j] = (vmask * (j1 < border ? SQR(sin((rtengine::RT_PI_F * j1) / (2 * border))) : 1.0f)) + epsilon; + tilemask_out[i][j] = (vmask2 * (j1 < 2 * border ? SQR(sin((rtengine::RT_PI_F * j1) / (2 * border))) : 1.0f)) + epsilon; } } @@ -883,19 +883,19 @@ BENCHFUN int height = tilebottom - tiletop; int width2 = (width + 1) / 2; float realred, realblue; - float interm_med = static_cast(dnparams.chroma) / 10.0; + float interm_med = dnparams.chroma / 10.0; float intermred, intermblue; if (dnparams.redchro > 0.) { - intermred = (dnparams.redchro / 10.); + intermred = dnparams.redchro / 10.0; } else { - intermred = static_cast(dnparams.redchro) / 7.0; //increase slower than linear for more sensit + intermred = dnparams.redchro / 7.0; //increase slower than linear for more sensit } if (dnparams.bluechro > 0.) { - intermblue = (dnparams.bluechro / 10.); + intermblue = dnparams.bluechro / 10.0; } else { - intermblue = static_cast(dnparams.bluechro) / 7.0; //increase slower than linear for more sensit + intermblue = dnparams.bluechro / 7.0; //increase slower than linear for more sensit } if (ponder && kall == 2) { @@ -1096,7 +1096,7 @@ BENCHFUN //binary 1 or 0 for each level, eg subsampling = 0 means no subsampling, 1 means subsample //the first level only, 7 means subsample the first three levels, etc. //actual implementation only works with subsampling set to 1 - float interm_medT = static_cast(dnparams.chroma) / 10.0; + float interm_medT = dnparams.chroma / 10.0; bool execwavelet = true; if (!denoiseLuminance && interm_medT < 0.05f && dnparams.median && (dnparams.methodmed == "Lab" || dnparams.methodmed == "Lonly")) { @@ -2121,7 +2121,7 @@ float ImProcFunctions::Mad(const float * DataList, const int datalen) int count_ = count - histo[median - 1]; // interpolate - return (((median - 1) + (datalen / 2 - count_) / (static_cast(count - count_))) / 0.6745); + return (((median - 1) + (datalen / 2 - count_) / (static_cast(count - count_))) / 0.6745f); } float ImProcFunctions::MadRgb(const float * DataList, const int datalen) @@ -2155,7 +2155,7 @@ float ImProcFunctions::MadRgb(const float * DataList, const int datalen) // interpolate delete[] histo; - return (((median - 1) + (datalen / 2 - count_) / (static_cast(count - count_))) / 0.6745); + return (((median - 1) + (datalen / 2 - count_) / (static_cast(count - count_))) / 0.6745f); } @@ -2908,7 +2908,7 @@ void ImProcFunctions::RGB_denoise_infoGamCurve(const procparams::DirPyrDenoisePa bool denoiseMethodRgb = (dnparams.dmethod == "RGB"); if (denoiseMethodRgb) { - gamslope = exp(log(static_cast(gamthresh)) / gam) / gamthresh; + gamslope = exp(log(static_cast(gamthresh)) / static_cast(gam)) / static_cast(gamthresh); Color::gammaf2lut(gamcurve, gam, gamthresh, gamslope, 65535.f, 32768.f); } else { Color::gammanf2lut(gamcurve, gam, 65535.f, 32768.f); @@ -3189,19 +3189,19 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, } float realred, realblue; - float interm_med = static_cast(dnparams.chroma) / 10.0; + float interm_med = dnparams.chroma / 10.0; float intermred, intermblue; if (dnparams.redchro > 0.) { - intermred = (dnparams.redchro / 10.); + intermred = dnparams.redchro / 10.0; } else { - intermred = static_cast(dnparams.redchro) / 7.0; //increase slower than linear for more sensit + intermred = dnparams.redchro / 7.0; //increase slower than linear for more sensit } if (dnparams.bluechro > 0.) { - intermblue = (dnparams.bluechro / 10.); + intermblue = dnparams.bluechro / 10.0; } else { - intermblue = static_cast(dnparams.bluechro) / 7.0; //increase slower than linear for more sensit + intermblue = dnparams.bluechro / 7.0; //increase slower than linear for more sensit } realred = interm_med + intermred; diff --git a/rtengine/color.h b/rtengine/color.h index 845770bbe..998e47ee7 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -147,6 +147,7 @@ public: constexpr static double u0 = 4.0 * static_cast(D50x) / (static_cast(D50x) + 15 + 3 * static_cast(D50z)); constexpr static double v0 = 9.0 / (static_cast(D50x) + 15 + 3 * static_cast(D50z)); constexpr static double epskap = 8.0; + constexpr static float epskapf = epskap; constexpr static float c1By116 = 1.0 / 116.0; constexpr static float c16By116 = 16.0 / 116.0; diff --git a/rtengine/hilite_recon.cc b/rtengine/hilite_recon.cc index 697a5e3d3..a56ff1918 100644 --- a/rtengine/hilite_recon.cc +++ b/rtengine/hilite_recon.cc @@ -496,7 +496,7 @@ void RawImageSource::HLRecovery_inpaint(float** red, float** green, float** blue && blue[i + miny][j + minx] < max_f[2] ) { // if one or more channels is highlight but none are blown, add to highlight accumulator - hipass_sum += channelblur[0][i][j]; + hipass_sum += static_cast(channelblur[0][i][j]); ++hipass_norm; hilite_full[0][i][j] = red[i + miny][j + minx]; @@ -507,7 +507,7 @@ void RawImageSource::HLRecovery_inpaint(float** red, float** green, float** blue } } - const float hipass_ave = 2.f * hipass_sum / (hipass_norm + epsilon); + const float hipass_ave = 2.0 * hipass_sum / (hipass_norm + static_cast(epsilon)); if (plistener) { progress += 0.05; diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index d5c69773e..91c1e2c00 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -137,7 +137,7 @@ void highlightToneCurve(const LUTf &hltonecurve, float *rtemp, float *gtemp, flo float b = btemp[ti * tileSize + tj + k]; float tonefactor = ((r < MAXVALF ? hltonecurve[r] : CurveFactory::hlcurve(exp_scale, comp, hlrange, r)) + (g < MAXVALF ? hltonecurve[g] : CurveFactory::hlcurve(exp_scale, comp, hlrange, g)) + - (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve(exp_scale, comp, hlrange, b))) / 3.0; + (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve(exp_scale, comp, hlrange, b))) / 3.f; // note: tonefactor includes exposure scaling, that is here exposure slider and highlight compression takes place rtemp[ti * tileSize + tj + k] = r * tonefactor; @@ -165,7 +165,7 @@ void highlightToneCurve(const LUTf &hltonecurve, float *rtemp, float *gtemp, flo //float tonefactor = hltonecurve[(0.299f*r+0.587f*g+0.114f*b)]; float tonefactor = ((r < MAXVALF ? hltonecurve[r] : CurveFactory::hlcurve(exp_scale, comp, hlrange, r)) + (g < MAXVALF ? hltonecurve[g] : CurveFactory::hlcurve(exp_scale, comp, hlrange, g)) + - (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve(exp_scale, comp, hlrange, b))) / 3.0; + (b < MAXVALF ? hltonecurve[b] : CurveFactory::hlcurve(exp_scale, comp, hlrange, b))) / 3.f; // note: tonefactor includes exposure scaling, that is here exposure slider and highlight compression takes place rtemp[ti * tileSize + tj] = r * tonefactor; @@ -518,8 +518,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw int width = lab->W, height = lab->H; float minQ = 10000.f; float maxQ = -1000.f; - float Yw; - Yw = 1.0; + double Yw = 1.0; double Xw, Zw; float f = 0.f, nc = 0.f, la, c = 0.f, xw, yw, zw, f2 = 1.f, c2 = 1.f, nc2 = 1.f, yb2; float fl, n, nbb, ncb, aw; //d @@ -596,13 +595,13 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw algepd = true; } - xwd = 100.f * Xwout; - zwd = 100.f * Zwout; - ywd = 100.f / params->colorappearance.greenout;//approximation to simplify + xwd = 100.0 * Xwout; + zwd = 100.0 * Zwout; + ywd = 100.0 / params->colorappearance.greenout;//approximation to simplify - xws = 100.f * Xwsc; - zws = 100.f * Zwsc; - yws = 100.f / params->colorappearance.greensc;//approximation to simplify + xws = 100.0 * Xwsc; + zws = 100.0 * Zwsc; + yws = 100.0 / params->colorappearance.greensc;//approximation to simplify /* @@ -699,20 +698,20 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (alg == 3 || alg == 1) { schr = params->colorappearance.schroma; - if (schr > 0.0) { - schr = schr / 2.0f; //divide sensibility for saturation + if (schr > 0.f) { + schr = schr / 2.f; //divide sensibility for saturation } if (alg == 3) { - if (schr == -100.0f) { + if (schr == -100.f) { schr = -99.f; } - if (schr == 100.0f) { + if (schr == 100.f) { schr = 98.f; } } else { - if (schr == -100.0f) { + if (schr == -100.f) { schr = -99.8f; } } @@ -751,7 +750,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw LUTu hist16J; LUTu hist16Q; - if ((needJ && CAMBrightCurveJ.dirty) || (needQ && CAMBrightCurveQ.dirty) || (std::isnan (mean) && settings->viewinggreySc != 0)) { + if ((needJ && CAMBrightCurveJ.dirty) || (needQ && CAMBrightCurveQ.dirty) || (std::isnan(mean) && settings->viewinggreySc != 0)) { if (needJ) { hist16J (32768); @@ -788,7 +787,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw #endif - for (int i = 0; i < height; i++) + for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { //rough correspondence between L and J float currL = lab->L[i][j] / 327.68f; float koef; //rough correspondence between L and J @@ -849,10 +848,11 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw //hist16Qthr[ (int) (sqrtf ((koef * (lab->L[i][j])) * 32768.f))]++; //for brightness Q : approximation for Q=wh*sqrt(J/100) J not equal L } - sum += koef * lab->L[i][j]; //evaluate mean J to calculate Yb + sum += static_cast(koef) * static_cast(lab->L[i][j]); //evaluate mean J to calculate Yb //sumQ += whestim * sqrt ((koef * (lab->L[i][j])) / 32768.f); //can be used in case of... } + } #ifdef _OPENMP #pragma omp critical @@ -868,8 +868,8 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw } - if (std::isnan (mean)) { - mean = (sum / ((height) * width)) / 327.68f; //for Yb for all image...if one day "pipette" we can adapt Yb for each zone + if (std::isnan(mean)) { + mean = (sum / ((height) * width)) / 327.68; //for Yb for all image...if one day "pipette" we can adapt Yb for each zone } } #ifdef _OPENMP @@ -916,9 +916,9 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw const bool highlight = params->toneCurve.hrenabled; //Get the value if "highlight reconstruction" is activated const int gamu = (params->colorappearance.gamut) ? 1 : 0; - xw = 100.0f * Xw; - yw = 100.0f * Yw; - zw = 100.0f * Zw; + xw = 100.0 * Xw; + yw = 100.0 * Yw; + zw = 100.0 * Zw; float xw1 = 0.f, yw1 = 0.f, zw1 = 0.f, xw2 = 0.f, yw2 = 0.f, zw2 = 0.f; // settings of WB: scene and viewing @@ -2002,9 +2002,9 @@ void ImProcFunctions::moyeqt (Imagefloat* working, float &moyS, float &eqty) for (int i = 0; i < tHh; i++) { for (int j = 0; j < tWw; j++) { - float s = Color::rgb2s (CLIP (working->r (i, j)), CLIP (working->g (i, j)), CLIP (working->b (i, j))); + double s = Color::rgb2s (CLIP (working->r (i, j)), CLIP (working->g (i, j)), CLIP (working->b (i, j))); moy += s; - sqrs += SQR (s); + sqrs += SQR(s); } } @@ -2108,17 +2108,17 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer float toxyz[3][3] = { { - static_cast ( wprof[0][0] / Color::D50x), - static_cast ( wprof[0][1] / Color::D50x), - static_cast ( wprof[0][2] / Color::D50x) + static_cast(wprof[0][0] / static_cast(Color::D50x)), + static_cast(wprof[0][1] / static_cast(Color::D50x)), + static_cast(wprof[0][2] / static_cast(Color::D50x)) }, { - static_cast ( wprof[1][0]), - static_cast ( wprof[1][1]), - static_cast ( wprof[1][2]) + static_cast(wprof[1][0]), + static_cast(wprof[1][1]), + static_cast(wprof[1][2]) }, { - static_cast ( wprof[2][0] / Color::D50z), - static_cast ( wprof[2][1] / Color::D50z), - static_cast ( wprof[2][2] / Color::D50z) + static_cast(wprof[2][0] / static_cast(Color::D50z)), + static_cast(wprof[2][1] / static_cast(Color::D50z)), + static_cast(wprof[2][2] / static_cast(Color::D50z)) } }; float maxFactorToxyz = max (toxyz[1][0], toxyz[1][1], toxyz[1][2]); @@ -2238,10 +2238,10 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer const float film_simulation_strength = static_cast (params->filmSimulation.strength) / 100.0f; - const float exp_scale = pow (2.0, expcomp); - const float comp = (max (0.0, expcomp) + 1.0) * hlcompr / 100.0; - const float shoulder = ((65536.0 / max (1.0f, exp_scale)) * (hlcomprthresh / 200.0)) + 0.1; - const float hlrange = 65536.0 - shoulder; + const float exp_scale = pow(2.0, expcomp); + const float comp = (max(0.0, expcomp) + 1.0) * hlcompr / 100.0; + const float shoulder = ((65536.f / max(1.0f, exp_scale)) * (hlcomprthresh / 200.f)) + 0.1f; + const float hlrange = 65536.f - shoulder; const bool isProPhoto = (params->icm.workingProfile == "ProPhoto"); // extracting data from 'params' to avoid cache flush (to be confirmed) ToneCurveMode curveMode = params->toneCurve.curveMode; @@ -2303,43 +2303,43 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } */ - float RedLow = params->colorToning.redlow / 100.f; - float GreenLow = params->colorToning.greenlow / 100.f; - float BlueLow = params->colorToning.bluelow / 100.f; - float RedMed = params->colorToning.redmed / 100.f; - float GreenMed = params->colorToning.greenmed / 100.f; - float BlueMed = params->colorToning.bluemed / 100.f; - float RedHigh = params->colorToning.redhigh / 100.f; - float GreenHigh = params->colorToning.greenhigh / 100.f; - float BlueHigh = params->colorToning.bluehigh / 100.f; - float SatLow = float (params->colorToning.shadowsColSat.getBottom()) / 100.f; - float SatHigh = float (params->colorToning.hlColSat.getBottom()) / 100.f; + float RedLow = params->colorToning.redlow / 100.0; + float GreenLow = params->colorToning.greenlow / 100.0; + float BlueLow = params->colorToning.bluelow / 100.0; + float RedMed = params->colorToning.redmed / 100.0; + float GreenMed = params->colorToning.greenmed / 100.0; + float BlueMed = params->colorToning.bluemed / 100.0; + float RedHigh = params->colorToning.redhigh / 100.0; + float GreenHigh = params->colorToning.greenhigh / 100.0; + float BlueHigh = params->colorToning.bluehigh / 100.0; + float SatLow = params->colorToning.shadowsColSat.getBottom() / 100.f; + float SatHigh = params->colorToning.hlColSat.getBottom() / 100.f; - float Balan = float (params->colorToning.balance); + float Balan = params->colorToning.balance; - float chMixRR = float (params->chmixer.red[0])/10.f; - float chMixRG = float (params->chmixer.red[1])/10.f; - float chMixRB = float (params->chmixer.red[2])/10.f; - float chMixGR = float (params->chmixer.green[0])/10.f; - float chMixGG = float (params->chmixer.green[1])/10.f; - float chMixGB = float (params->chmixer.green[2])/10.f; - float chMixBR = float (params->chmixer.blue[0])/10.f; - float chMixBG = float (params->chmixer.blue[1])/10.f; - float chMixBB = float (params->chmixer.blue[2])/10.f; + float chMixRR = params->chmixer.red[0] / 10.f; + float chMixRG = params->chmixer.red[1] / 10.f; + float chMixRB = params->chmixer.red[2] / 10.f; + float chMixGR = params->chmixer.green[0] / 10.f; + float chMixGG = params->chmixer.green[1] / 10.f; + float chMixGB = params->chmixer.green[2] / 10.f; + float chMixBR = params->chmixer.blue[0] / 10.f; + float chMixBG = params->chmixer.blue[1] / 10.f; + float chMixBB = params->chmixer.blue[2] / 10.f; bool blackwhite = params->blackwhite.enabled; bool complem = params->blackwhite.enabledcc; - float bwr = float (params->blackwhite.mixerRed); - float bwg = float (params->blackwhite.mixerGreen); - float bwb = float (params->blackwhite.mixerBlue); - float bwrgam = float (params->blackwhite.gammaRed); - float bwggam = float (params->blackwhite.gammaGreen); - float bwbgam = float (params->blackwhite.gammaBlue); - float mixerOrange = float (params->blackwhite.mixerOrange); - float mixerYellow = float (params->blackwhite.mixerYellow); - float mixerCyan = float (params->blackwhite.mixerCyan); - float mixerMagenta = float (params->blackwhite.mixerMagenta); - float mixerPurple = float (params->blackwhite.mixerPurple); + float bwr = params->blackwhite.mixerRed; + float bwg = params->blackwhite.mixerGreen; + float bwb = params->blackwhite.mixerBlue; + float bwrgam = params->blackwhite.gammaRed; + float bwggam = params->blackwhite.gammaGreen; + float bwbgam = params->blackwhite.gammaBlue; + float mixerOrange = params->blackwhite.mixerOrange; + float mixerYellow = params->blackwhite.mixerYellow; + float mixerCyan = params->blackwhite.mixerCyan; + float mixerMagenta = params->blackwhite.mixerMagenta; + float mixerPurple = params->blackwhite.mixerPurple; int algm = 0; if (params->blackwhite.method == "Desaturation") { @@ -2720,7 +2720,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer //HSV equalizer if (hCurveEnabled) { - h = (hCurve->getVal (double (h)) - 0.5) * 2.f + h; + h = (hCurve->getVal(h) - 0.5) * 2.0 + static_cast(h); if (h > 1.0f) { h -= 1.0f; @@ -2751,7 +2751,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } //shift value - float valparam = vCurve->getVal ((double)h) - 0.5f; + float valparam = vCurve->getVal(h) - 0.5; valparam *= (1.f - SQR (SQR (1.f - min (s, 1.0f)))); if (valparam > 0.00001f) { @@ -3063,7 +3063,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer if (bwlCurveEnabled) { L /= 32768.f; double hr = Color::huelab_to_huehsv2 (HH); - float valparam = float ((bwlCurve->getVal (hr) - 0.5f) * 2.0f); //get l_r=f(H) + float valparam = (bwlCurve->getVal(hr) - 0.5) * 2.0; //get l_r=f(H) float kcc = (CC / 70.f); //take Chroma into account...70 "middle" of chromaticity (arbitrary and simple), one can imagine other algorithme //reduct action for low chroma and increase action for high chroma valparam *= kcc; @@ -3317,9 +3317,9 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer for (int i = 0; i < tH; i++) { for (int j = 0; j < tW; j++) { - nr += tmpImage->r (i, j); - ng += tmpImage->g (i, j); - nb += tmpImage->b (i, j); + nr += static_cast(tmpImage->r(i, j)); + ng += static_cast(tmpImage->g(i, j)); + nb += static_cast(tmpImage->b(i, j)); } } @@ -4385,8 +4385,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW float factnoise = 1.f; if (params->dirpyrDenoise.enabled) { - factnoise = (1.f + params->dirpyrDenoise.chroma / 500.f); //levels=5 -// if(yyyy) factnoise=(1.f+params->dirpyrDenoise.chroma/100.f);//levels=7 + factnoise = 1.0 + params->dirpyrDenoise.chroma / 500.0; //levels=5 } const float scaleConst = 100.0f / 100.1f; @@ -4564,7 +4563,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW float l_r;//Luminance Lab in 0..1 l_r = Lprov1 / 100.f; { - float valparam = float ((lhCurve->getVal (Color::huelab_to_huehsv2 (HH)) - 0.5f)); //get l_r=f(H) + float valparam = lhCurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5; //get l_r=f(H) float valparamneg; valparamneg = valparam; float kcc = (CC / amountchroma); //take Chroma into account...40 "middle low" of chromaticity (arbitrary and simple), one can imagine other algorithme @@ -4597,9 +4596,9 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW float fx = (0.002f * aprov1) + fy; float fz = fy - (0.005f * bprov1); - float x_ = 65535.0f * Color::f2xyz (fx) * Color::D50x; - float z_ = 65535.0f * Color::f2xyz (fz) * Color::D50z; - float y_ = (Lprov1 > Color::epskap) ? 65535.0 * fy * fy * fy : 65535.0 * Lprov1 / Color::kappa; + float x_ = 65535.f * Color::f2xyz (fx) * Color::D50x; + float z_ = 65535.f * Color::f2xyz (fz) * Color::D50z; + float y_ = Lprov1 > Color::epskapf ? 65535.f * fy * fy * fy : 65535.f * Lprov1 / Color::kappaf; float R, G, B; Color::xyz2rgb (x_, y_, z_, R, G, B, wip); @@ -4627,7 +4626,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW // calculate C=f(H) if (chutili) { double hr = Color::huelab_to_huehsv2 (HH); - float chparam = float ((chCurve->getVal (hr) - 0.5f) * 2.0f); //get C=f(H) + float chparam = (chCurve->getVal(hr) - 0.5) * 2.0; //get C=f(H) float chromaChfactor = 1.0f + chparam; atmp *= chromaChfactor;//apply C=f(H) btmp *= chromaChfactor; @@ -4635,9 +4634,9 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW if (hhutili) { // H=f(H) //hue Lab in -PI +PI - float valparam = float ((hhCurve->getVal (Color::huelab_to_huehsv2 (HH)) - 0.5f) * 1.7f) + HH; //get H=f(H) 1.7 optimisation ! + float valparam = (hhCurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5) * 1.7 + static_cast(HH); //get H=f(H) 1.7 optimisation ! HH = valparam; - sincosval = xsincosf (HH); + sincosval = xsincosf(HH); } if (!bwToning) { @@ -4713,11 +4712,11 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW deltaHH = protect_redhcur; //transition hue - if (chromaCfactor > 0.0) { + if (chromaCfactor > 0.f) { Color::scalered ( rstprotection, chromaCfactor, 0.0, HH, deltaHH, scale, scaleext); //1.0 } - if (chromaCfactor > 1.0) { + if (chromaCfactor > 1.f) { float interm = (chromaCfactor - 1.0f) * 100.0f; factorskin = 1.0f + (interm * scale) / 100.0f; factorskinext = 1.0f + (interm * scaleext) / 100.0f; @@ -4774,11 +4773,11 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW deltaHH = protect_redhcur; //transition hue - if (chromaCfactor > 0.0) { + if (chromaCfactor > 0.f) { Color::scalered ( rstprotection, chromaCfactor, 0.0, HH, deltaHH, scale, scaleext); //1.0 } - if (chromaCfactor > 1.0) { + if (chromaCfactor > 1.f) { float interm = (chromaCfactor - 1.0f) * 100.0f; factorskin = 1.0f + (interm * scale) / 100.0f; factorskinext = 1.0f + (interm * scaleext) / 100.0f; @@ -5061,7 +5060,7 @@ void ImProcFunctions::impulsedenoise (LabImage* lab) if (params->impulseDenoise.enabled && lab->W >= 8 && lab->H >= 8) { - impulse_nr (lab, (float)params->impulseDenoise.thresh / 20.0 ); + impulse_nr(lab, params->impulseDenoise.thresh / 20.0); } } @@ -5071,7 +5070,7 @@ void ImProcFunctions::impulsedenoisecam (CieImage* ncie, float **buffers[3]) if (params->impulseDenoise.enabled && ncie->W >= 8 && ncie->H >= 8) { - impulse_nrcam (ncie, (float)params->impulseDenoise.thresh / 20.0, buffers ); + impulse_nrcam(ncie, params->impulseDenoise.thresh / 20.0, buffers); } } @@ -5141,7 +5140,7 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi float sca = params->epd.scale; float gamm = params->epd.gamma; float rew = params->epd.reweightingIterates; - float Qpro = ( 4.0 / c_) * ( a_w + 4.0 ) ; //estimate Q max if J=100.0 + float Qpro = (4.f / c_) * (a_w + 4.f) ; //estimate Q max if J=100.0 float *Qpr = ncie->Q_p[0]; if (settings->verbose) { @@ -5172,7 +5171,7 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi //Auto select number of iterates. Note that p->EdgeStopping = 0 makes a Gaussian blur. if (Iterates == 0) { - Iterates = (unsigned int) (edgest * 15.0); + Iterates = edgest * 15.f; } //Jacques Desmis : always Iterates=5 for compatibility images between preview and output @@ -5399,7 +5398,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double octile[count] += histogram[j]; if (octile[count] > sum / 8.f || (count == 7 && octile[count] > sum / 16.f)) { - octile[count] = xlog (1. + j) / log (2.f); + octile[count] = xlog(1. + j) / log(2.0); count++;// = min(count+1,7); } } @@ -5412,7 +5411,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double octile[count] += histogram[j]; if (octile[count] > sum / 8.f || (count == 7 && octile[count] > sum / 16.f)) { - octile[count] = xlog (1. + j) / log (2.f); + octile[count] = xlog(1. + j) / log(2.0); count++;// = min(count+1,7); } } @@ -5487,7 +5486,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double } //compute clipped white point - unsigned int clippable = (int) (sum * clip / 100.f ); + unsigned int clippable = (int) (static_cast(sum) * clip / 100.0 ); clipped = 0; int whiteclip = (imax) - 1; @@ -5546,8 +5545,8 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double hlcomprthresh = 0; //this is a series approximation of the actual formula for comp, //which is a transcendental equation - float comp = (gain * ((float)whiteclip) / scale - 1.f) * 2.3f; // 2.3 instead of 2 to increase slightly comp - hlcompr = (int) (100.*comp / (max (0.0, expcomp) + 1.0)); + double comp = (gain * whiteclip / scale - 1.f) * 2.3f; // 2.3 instead of 2 to increase slightly comp + hlcompr = 100.0 * comp / (max(0.0, expcomp) + 1.0); hlcompr = max (0, min (100, hlcompr)); //now find brightness if gain didn't bring ave to midgray using @@ -5555,9 +5554,9 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double float midtmp = gain * sqrt (median * ave) / scale; if (midtmp < 0.1f) { - bright = (midgray - midtmp) * 15.0 / (midtmp); + bright = (midgray - midtmp) * 15.f / (midtmp); } else { - bright = (midgray - midtmp) * 15.0 / (0.10833 - 0.0833 * midtmp); + bright = (midgray - midtmp) * 15.f / (0.10833f - 0.0833f * midtmp); } bright = 0.25 */*(median/ave)*(hidev/lodev)*/max (0, bright); From 914daffa39b223b01859e5c7956e2ef8cff1de0a Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 22 Jan 2020 00:11:39 +0100 Subject: [PATCH 12/38] more double promote fixes, still not complete --- rtengine/CMakeLists.txt | 1 + rtengine/color.cc | 1379 +----------------------------------- rtengine/color.h | 8 +- rtengine/curves.cc | 1 + rtengine/munselllch.cc | 1232 ++++++++++++++++++++++++++++++++ rtengine/rawimagesource.cc | 1 + rtengine/rtthumbnail.cc | 1 + 7 files changed, 1241 insertions(+), 1382 deletions(-) create mode 100644 rtengine/munselllch.cc diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 6bce68d1a..e41202832 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -105,6 +105,7 @@ set(RTENGINESOURCEFILES lj92.c lmmse_demosaic.cc loadinitial.cc + munselllch.cc myfile.cc panasonic_decoders.cc pdaflinesfilter.cc diff --git a/rtengine/color.cc b/rtengine/color.cc index 8d20fb9ba..e998b665c 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -16,6 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include #include "rtengine.h" #include "color.h" @@ -2997,1384 +2998,6 @@ void Color::LabGamutMunsell(float *labL, float *laba, float *labb, const int N, } -/* - * MunsellLch correction - * Copyright (c) 2012 Jacques Desmis - * - * Find the right LUT and calculate the correction - */ -void Color::MunsellLch (float lum, float hue, float chrom, float memChprov, float &correction, int zone, float &lbe, bool &correctL) -{ - - int x = int(memChprov); - int y = int(chrom); - - //begin PB correction + sky - if(zone == 1) { - if(lum > 5.0) { - if(lum < 15.0) { - if( (hue >= (_15PB10[x] - 0.035)) && (hue < (_15PB10[x] + 0.052) && x <= 45)) { - if(y > 49) { - y = 49; - } - - correction = _15PB10[y] - _15PB10[x] ; - lbe = _15PB10[y]; - correctL = true; - } else if (( hue >= ( _3PB10[x] - 0.052)) && (hue < (_45PB10[x] + _3PB10[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _3PB10[y] - _3PB10[x]; - lbe = _3PB10[y]; - correctL = true; - } else if (( hue >= (_45PB10[x] + _3PB10[x]) / 2.0) && (hue < (_45PB10[x] + 0.052)) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _45PB10[y] - _45PB10[x] ; - lbe = _45PB10[y]; - correctL = true; - } else if (( hue >= (_6PB10[x] - 0.052) && (hue < (_6PB10[x] + _75PB10[x]) / 2.0))) { - correction = _6PB10[y] - _6PB10[x] ; - lbe = _6PB10[y]; - correctL = true; - } else if (( hue >= (_6PB10[x] + _75PB10[x]) / 2.0) && (hue < (_9PB10[x] + _75PB10[x]) / 2.0)) { - correction = _75PB10[y] - _75PB10[x] ; - lbe = _75PB10[y]; - correctL = true; - } else if (( hue >= (_9PB10[x] + _75PB10[x]) / 2.0) && (hue < (_9PB10[x] + _10PB10[x]) / 2.0)) { - correction = _9PB10[y] - _9PB10[x] ; - lbe = _9PB10[y]; - correctL = true; - } else if (( hue >= (_10PB10[x] + _9PB10[x]) / 2.0) && (hue < (_1P10[x] + _10PB10[x]) / 2.0)) { - correction = _10PB10[y] - _10PB10[x] ; - lbe = _10PB10[y]; - correctL = true; - } else if (( hue >= (_10PB10[x] + _1P10[x]) / 2.0) && (hue < (_1P10[x] + _4P10[x]) / 2.0)) { - correction = _1P10[y] - _1P10[x]; - lbe = _1P10[y]; - correctL = true; - } else if (( hue >= (_1P10[x] + _4P10[x]) / 2.0) && (hue < (0.035 + _4P10[x]) / 2.0)) { - correction = _4P10[y] - _4P10[x] ; - lbe = _4P10[y]; - correctL = true; - } - } else if (lum < 25.0) { - if( (hue >= (_15PB20[x] - 0.035)) && (hue < (_15PB20[x] + _3PB20[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _15PB20[y] - _15PB20[x] ; - lbe = _15PB20[y]; - correctL = true; - } else if (( hue >= (_15PB20[x] + _3PB20[x]) / 2.0) && (hue < (_45PB20[x] + _3PB20[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _3PB20[y] - _3PB20[x] ; - lbe = _3PB20[y]; - correctL = true; - } else if (( hue >= (_45PB20[x] + _3PB20[x]) / 2.0) && (hue < ( _45PB20[x] + 0.052)) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _45PB20[y] - _45PB20[x] ; - lbe = _45PB20[y]; - correctL = true; - } else if (( hue >= (_45PB20[x] + 0.052)) && (hue < (_6PB20[x] + _75PB20[x]) / 2.0)) { - correction = _6PB20[y] - _6PB20[x]; - lbe = _6PB20[y]; - correctL = true; - } else if (( hue >= (_6PB20[x] + _75PB20[x]) / 2.0) && (hue < (_9PB20[x] + _75PB20[x]) / 2.0)) { - correction = _75PB20[y] - _75PB20[x] ; - lbe = _75PB20[y]; - correctL = true; - } else if (( hue >= (_9PB20[x] + _75PB20[x]) / 2.0) && (hue < (_9PB20[x] + _10PB20[x]) / 2.0)) { - correction = _9PB20[y] - _9PB20[x] ; - lbe = _9PB20[y]; - correctL = true; - } else if (( hue >= (_10PB20[x] + _9PB20[x]) / 2.0) && (hue < (_1P20[x] + _10PB20[x]) / 2.0)) { - correction = _10PB20[y] - _10PB20[x] ; - lbe = _10PB20[y]; - correctL = true; - } else if (( hue >= (_10PB20[x] + _1P20[x]) / 2.0) && (hue < (_1P20[x] + _4P20[x]) / 2.0)) { - correction = _1P20[y] - _1P20[x] ; - lbe = _1P20[y]; - correctL = true; - } else if (( hue >= (_1P20[x] + _4P20[x]) / 2.0) && (hue < (0.035 + _4P20[x]) / 2.0)) { - correction = _4P20[y] - _4P20[x] ; - lbe = _4P20[y]; - correctL = true; - } - } else if (lum < 35.0) { - if( (hue >= (_15PB30[x] - 0.035)) && (hue < (_15PB30[x] + _3PB30[x]) / 2.0) && x <= 85 ) { - if(y > 89) { - y = 89; - } - - correction = _15PB30[y] - _15PB30[x] ; - lbe = _15PB30[y]; - correctL = true; - } else if (( hue >= (_15PB30[x] + _3PB30[x]) / 2.0) && (hue < (_45PB30[x] + _3PB30[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _3PB30[y] - _3PB30[x] ; - lbe = _3PB30[y]; - correctL = true; - } else if (( hue >= (_45PB30[x] + _3PB30[x]) / 2.0) && (hue < (_45PB30[x] + 0.052)) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _45PB30[y] - _45PB30[x] ; - lbe = _45PB30[y]; - correctL = true; - } else if (( hue >= ( _45PB30[x] + 0.052)) && (hue < (_6PB30[x] + _75PB30[x]) / 2.0)) { - correction = _6PB30[y] - _6PB30[x] ; - lbe = _6PB30[y]; - correctL = true; - } else if (( hue >= (_6PB30[x] + _75PB30[x]) / 2.0) && (hue < (_9PB30[x] + _75PB30[x]) / 2.0)) { - correction = _75PB30[y] - _75PB30[x] ; - lbe = _75PB30[y] ; - correctL = true; - } else if (( hue >= (_9PB30[x] + _75PB30[x]) / 2.0) && (hue < (_9PB30[x] + _10PB30[x]) / 2.0)) { - correction = _9PB30[y] - _9PB30[x] ; - lbe = _9PB30[y]; - correctL = true; - } else if (( hue >= (_10PB30[x] + _9PB30[x]) / 2.0) && (hue < (_1P30[x] + _10PB30[x]) / 2.0)) { - correction = _10PB30[y] - _10PB30[x] ; - lbe = _10PB30[y]; - correctL = true; - } else if (( hue >= (_10PB30[x] + _1P30[x]) / 2.0) && (hue < (_1P30[x] + _4P30[x]) / 2.0)) { - correction = _1P30[y] - _1P30[x] ; - lbe = _1P30[y]; - correctL = true; - } else if (( hue >= (_1P30[x] + _4P30[x]) / 2.0) && (hue < (0.035 + _4P30[x]) / 2.0)) { - correction = _4P30[y] - _4P30[x] ; - lbe = _4P30[y]; - correctL = true; - } - } else if (lum < 45.0) { - if( (hue <= (_05PB40[x] + _15PB40[x]) / 2.0) && (hue > (_05PB40[x] + _10B40[x]) / 2.0) && x < 75 ) { - if(y > 75) { - y = 75; - } - - correction = _05PB40[y] - _05PB40[x] ; - lbe = _05PB40[y]; - correctL = true; - } else if( (hue <= (_05PB40[x] + _10B40[x]) / 2.0) && (hue > (_10B40[x] + _9B40[x]) / 2.0) && x < 70 ) { - if(y > 70) { - y = 70; - } - - correction = _10B40[y] - _10B40[x] ; - lbe = _10B40[y]; - correctL = true; - } else if( (hue <= (_10B40[x] + _9B40[x]) / 2.0) && (hue > (_9B40[x] + _7B40[x]) / 2.0) && x < 70 ) { - if(y > 70) { - y = 70; - } - - correction = _9B40[y] - _9B40[x] ; - lbe = _9B40[y]; - correctL = true; - } else if( (hue <= (_9B40[x] + _7B40[x]) / 2.0) && (hue > (_5B40[x] + _7B40[x]) / 2.0) && x < 70 ) { - if(y > 70) { - y = 70; - } - - correction = _7B40[y] - _7B40[x] ; - lbe = _7B40[y]; - correctL = true; - } else if (( hue <= (_5B40[x] + _7B40[x]) / 2.0) && (hue > (_5B40[x] - 0.035)) && x < 70) { - if(y > 70) { - y = 70; // - } - - correction = _5B40[y] - _5B40[x] ; - lbe = _5B40[y]; - correctL = true; - } - - else if( (hue >= (_15PB40[x] - 0.035)) && (hue < (_15PB40[x] + _3PB40[x]) / 2.0) && x <= 85 ) { - if(y > 89) { - y = 89; - } - - correction = _15PB40[y] - _15PB40[x] ; - lbe = _15PB40[y]; - correctL = true; - } else if (( hue >= (_15PB40[x] + _3PB40[x]) / 2.0) && (hue < (_45PB40[x] + _3PB40[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _3PB40[y] - _3PB40[x] ; - lbe = _3PB40[y]; - correctL = true; - } else if (( hue >= (_45PB40[x] + _3PB40[x]) / 2.0) && (hue < (_45PB40[x] + 0.052)) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _45PB40[y] - _45PB40[x] ; - lbe = _45PB40[y] ; - correctL = true; - } else if (( hue >= (_45PB40[x] + 0.052)) && (hue < (_6PB40[x] + _75PB40[x]) / 2.0)) { - correction = _6PB40[y] - _6PB40[x] ; - lbe = _6PB40[y]; - correctL = true; - } else if (( hue >= (_6PB40[x] + _75PB40[x]) / 2.0) && (hue < (_9PB40[x] + _75PB40[x]) / 2.0)) { - correction = _75PB40[y] - _75PB40[x] ; - lbe = _75PB40[y]; - correctL = true; - } else if (( hue >= (_9PB40[x] + _75PB40[x]) / 2.0) && (hue < (_9PB40[x] + _10PB40[x]) / 2.0)) { - correction = _9PB40[y] - _9PB40[x] ; - lbe = _9PB40[y]; - correctL = true; - } else if (( hue >= (_10PB40[x] + _9PB40[x]) / 2.0) && (hue < (_1P40[x] + _10PB40[x]) / 2.0)) { - correction = _10PB40[y] - _10PB40[x] ; - lbe = _10PB40[y]; - correctL = true; - } else if (( hue >= (_10PB40[x] + _1P40[x]) / 2.0) && (hue < (_1P40[x] + _4P40[x]) / 2.0)) { - correction = _1P40[y] - _1P40[x] ; - lbe = _1P40[y]; - correctL = true; - } else if (( hue >= (_1P40[x] + _4P40[x]) / 2.0) && (hue < (0.035 + _4P40[x]) / 2.0)) { - correction = _4P40[y] - _4P40[x] ; - lbe = _4P40[y]; - correctL = true; - } - } else if (lum < 55.0) { - if( (hue <= (_05PB50[x] + _15PB50[x]) / 2.0) && (hue > (_05PB50[x] + _10B50[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _05PB50[y] - _05PB50[x] ; - lbe = _05PB50[y]; - correctL = true; - } else if( (hue <= (_05PB50[x] + _10B50[x]) / 2.0) && (hue > (_10B50[x] + _9B50[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _10B50[y] - _10B50[x] ; - lbe = _10B50[y]; - correctL = true; - } else if( (hue <= (_10B50[x] + _9B50[x]) / 2.0) && (hue > (_9B50[x] + _7B50[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _9B50[y] - _9B50[x] ; - lbe = _9B50[y]; - correctL = true; - } else if( (hue <= (_9B50[x] + _7B50[x]) / 2.0) && (hue > (_5B50[x] + _7B50[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _7B50[y] - _7B50[x] ; - lbe = _7B50[y]; - correctL = true; - } else if (( hue <= (_5B50[x] + _7B50[x]) / 2.0) && (hue > (_5B50[x] - 0.035)) && x < 79) { - if(y > 79) { - y = 79; // - } - - correction = _5B50[y] - _5B50[x] ; - lbe = _5B50[y]; - correctL = true; - } - - else if( (hue >= (_15PB50[x] - 0.035)) && (hue < (_15PB50[x] + _3PB50[x]) / 2.0) && x <= 85 ) { - if(y > 89) { - y = 89; - } - - correction = _15PB50[y] - _15PB50[x] ; - lbe = _15PB50[y]; - correctL = true; - } else if (( hue >= (_15PB50[x] + _3PB50[x]) / 2.0) && (hue < (_45PB50[x] + _3PB50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _3PB50[y] - _3PB50[x] ; - lbe = _3PB50[y]; - correctL = true; - } else if (( hue >= (_45PB50[x] + _3PB50[x]) / 2.0) && (hue < (_6PB50[x] + _45PB50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _45PB50[y] - _45PB50[x] ; - lbe = _45PB50[y]; - correctL = true; - } else if (( hue >= (_6PB50[x] + _45PB50[x]) / 2.0) && (hue < (_6PB50[x] + _75PB50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _6PB50[y] - _6PB50[x] ; - lbe = _6PB50[y]; - correctL = true; - } else if (( hue >= (_6PB50[x] + _75PB50[x]) / 2.0) && (hue < (_9PB50[x] + _75PB50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _75PB50[y] - _75PB50[x] ; - lbe = _75PB50[y]; - correctL = true; - } else if (( hue >= (_9PB50[x] + _75PB50[x]) / 2.0) && (hue < (_9PB50[x] + _10PB50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _9PB50[y] - _9PB50[x] ; - lbe = _9PB50[y]; - correctL = true; - } else if (( hue >= (_10PB50[x] + _9PB50[x]) / 2.0) && (hue < (_1P50[x] + _10PB50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _10PB50[y] - _10PB50[x] ; - lbe = _10PB50[y]; - correctL = true; - } else if (( hue >= (_10PB50[x] + _1P50[x]) / 2.0) && (hue < (_1P50[x] + _4P50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _1P50[y] - _1P50[x] ; - lbe = _1P50[y]; - correctL = true; - } else if (( hue >= (_1P50[x] + _4P50[x]) / 2.0) && (hue < (0.035 + _4P50[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _4P50[y] - _4P50[x] ; - lbe = _4P50[y]; - correctL = true; - } - } else if (lum < 65.0) { - if( (hue <= (_05PB60[x] + _15PB60[x]) / 2.0) && (hue > (_05PB60[x] + _10B60[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _05PB60[y] - _05PB60[x] ; - lbe = _05PB60[y]; - correctL = true; - } else if( (hue <= (_05PB60[x] + _10B60[x]) / 2.0) && (hue > (_10B60[x] + _9B60[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _10B60[y] - _10B60[x] ; - lbe = _10B60[y]; - correctL = true; - } else if( (hue <= (_10B60[x] + _9B60[x]) / 2.0) && (hue > (_9B60[x] + _7B60[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _9B60[y] - _9B60[x] ; - lbe = _9B60[y]; - correctL = true; - } else if( (hue <= (_9B60[x] + _7B60[x]) / 2.0) && (hue > (_5B60[x] + _7B60[x]) / 2.0) && x < 79 ) { - if(y > 79) { - y = 79; - } - - correction = _7B60[y] - _7B60[x] ; - lbe = _7B60[y]; - correctL = true; - } else if (( hue <= (_5B60[x] + _7B60[x]) / 2.0) && (hue > (_5B60[x] - 0.035)) && x < 79) { - if(y > 79) { - y = 79; // - } - - correction = _5B60[y] - _5B60[x] ; - lbe = _5B60[y]; - correctL = true; - } - - else if( (hue >= (_15PB60[x] - 0.035)) && (hue < (_15PB60[x] + _3PB60[x]) / 2.0) && x <= 85 ) { - if(y > 89) { - y = 89; - } - - correction = _15PB60[y] - _15PB60[x] ; - lbe = _15PB60[y]; - correctL = true; - } else if (( hue >= (_15PB60[x] + _3PB60[x]) / 2.0) && (hue < (_45PB60[x] + _3PB60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _3PB60[y] - _3PB60[x] ; - lbe = _3PB60[y]; - correctL = true; - } else if (( hue >= (_45PB60[x] + _3PB60[x]) / 2.0) && (hue < (_6PB60[x] + _45PB60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _45PB60[y] - _45PB60[x] ; - lbe = _45PB60[y]; - correctL = true; - } else if (( hue >= (_6PB60[x] + _45PB60[x]) / 2.0) && (hue < (_6PB60[x] + _75PB60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _6PB60[y] - _6PB60[x] ; - lbe = _6PB60[y]; - correctL = true; - } else if (( hue >= (_6PB60[x] + _75PB60[x]) / 2.0) && (hue < (_9PB60[x] + _75PB60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _75PB60[y] - _75PB60[x] ; - lbe = _75PB60[y]; - correctL = true; - } else if (( hue >= (_9PB60[x] + _75PB60[x]) / 2.0) && (hue < (_9PB60[x] + _10PB60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _9PB60[y] - _9PB60[x] ; - lbe = _9PB60[y]; - correctL = true; - } else if (( hue >= (_10PB60[x] + _9PB60[x]) / 2.0) && (hue < (_1P60[x] + _10PB60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _10PB60[y] - _10PB60[x] ; - lbe = _10PB60[y]; - correctL = true; - } else if (( hue >= (_10PB60[x] + _1P60[x]) / 2.0) && (hue < (_1P60[x] + _4P60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _1P60[y] - _1P60[x] ; - lbe = _1P60[y]; - correctL = true; - } else if (( hue >= (_1P60[x] + _4P60[x]) / 2.0) && (hue < (0.035 + _4P60[x]) / 2.0) && x <= 85) { - if(y > 89) { - y = 89; - } - - correction = _4P60[y] - _4P60[x] ; - lbe = _4P60[y]; - correctL = true; - } - } else if (lum < 75.0) { - if( (hue <= (_05PB70[x] + _15PB70[x]) / 2.0) && (hue > (_05PB70[x] + _10B70[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _05PB70[y] - _05PB70[x] ; - lbe = _05PB70[y]; - correctL = true; - } else if( (hue <= (_05PB70[x] + _10B70[x]) / 2.0) && (hue > (_10B70[x] + _9B70[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _10B70[y] - _10B70[x] ; - lbe = _10B70[y]; - correctL = true; - } else if( (hue <= (_10B70[x] + _9B70[x]) / 2.0) && (hue > (_9B70[x] + _7B70[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _9B70[y] - _9B70[x] ; - lbe = _9B70[y]; - correctL = true; - } else if( (hue <= (_9B70[x] + _7B70[x]) / 2.0) && (hue > (_5B70[x] + _7B70[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _7B70[y] - _7B70[x] ; - lbe = _7B70[y]; - correctL = true; - } else if (( hue <= (_5B70[x] + _7B70[x]) / 2.0) && (hue > (_5B70[x] - 0.035)) && x < 50) { - if(y > 49) { - y = 49; // - } - - correction = _5B70[y] - _5B70[x] ; - lbe = _5B70[y]; - correctL = true; - } - - else if( (hue >= (_15PB70[x] - 0.035)) && (hue < (_15PB70[x] + _3PB70[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _15PB70[y] - _15PB70[x] ; - lbe = _15PB70[y]; - correctL = true; - } else if (( hue >= (_45PB70[x] + _3PB70[x]) / 2.0) && (hue < (_6PB70[x] + _45PB70[x]) / 2.0) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _45PB70[y] - _45PB70[x] ; - lbe = _45PB70[y]; - correctL = true; - } else if (( hue >= (_6PB70[x] + _45PB70[x]) / 2.0) && (hue < (_6PB70[x] + _75PB70[x]) / 2.0) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _6PB70[y] - _6PB70[x] ; - lbe = _6PB70[y]; - correctL = true; - } else if (( hue >= (_6PB70[x] + _75PB70[x]) / 2.0) && (hue < (_9PB70[x] + _75PB70[x]) / 2.0) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _75PB70[y] - _75PB70[x] ; - lbe = _75PB70[y]; - correctL = true; - } else if (( hue >= (_9PB70[x] + _75PB70[x]) / 2.0) && (hue < (_9PB70[x] + 0.035)) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _9PB70[y] - _9PB70[x] ; - lbe = _9PB70[y]; - correctL = true; - } - } else if (lum < 85.0) { - if( (hue <= (_05PB80[x] + _15PB80[x]) / 2.0) && (hue > (_05PB80[x] + _10B80[x]) / 2.0) && x < 40 ) { - if(y > 39) { - y = 39; - } - - correction = _05PB80[y] - _05PB80[x] ; - lbe = _05PB80[y] ; - correctL = true; - } else if( (hue <= (_05PB80[x] + _10B80[x]) / 2.0) && (hue > (_10B80[x] + _9B80[x]) / 2.0) && x < 40 ) { - if(y > 39) { - y = 39; - } - - correction = _10B80[y] - _10B80[x] ; - lbe = _10B80[y]; - correctL = true; - } else if( (hue <= (_10B80[x] + _9B80[x]) / 2.0) && (hue > (_9B80[x] + _7B80[x]) / 2.0) && x < 40 ) { - if(y > 39) { - y = 39; - } - - correction = _9B80[y] - _9B80[x] ; - lbe = _9B80[y]; - correctL = true; - } else if( (hue <= (_9B80[x] + _7B80[x]) / 2.0) && (hue > (_5B80[x] + _7B80[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _7B80[y] - _7B80[x] ; - lbe = _7B80[y]; - correctL = true; - } else if (( hue <= (_5B80[x] + _7B80[x]) / 2.0) && (hue > (_5B80[x] - 0.035)) && x < 50) { - if(y > 49) { - y = 49; // - } - - correction = _5B80[y] - _5B80[x] ; - lbe = _5B80[y]; - correctL = true; - } - - else if( (hue >= (_15PB80[x] - 0.035)) && (hue < (_15PB80[x] + _3PB80[x]) / 2.0) && x < 50 ) { - if(y > 49) { - y = 49; - } - - correction = _15PB80[y] - _15PB80[x] ; - lbe = _15PB80[y]; - correctL = true; - } else if (( hue >= (_45PB80[x] + _3PB80[x]) / 2.0) && (hue < (_6PB80[x] + _45PB80[x]) / 2.0) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _45PB80[y] - _45PB80[x] ; - lbe = _45PB80[y]; - correctL = true; - } else if (( hue >= (_6PB80[x] + _45PB80[x]) / 2.0) && (hue < (_6PB80[x] + _75PB80[x]) / 2.0) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _6PB80[y] - _6PB80[x] ; - lbe = _6PB80[y]; - correctL = true; - } else if (( hue >= (_6PB80[x] + _75PB80[x]) / 2.0) && (hue < (_9PB80[x] + _75PB80[x]) / 2.0) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _75PB80[y] - _75PB80[x] ; - lbe = _75PB80[y]; - correctL = true; - } else if (( hue >= (_9PB80[x] + _75PB80[x]) / 2.0) && (hue < (_9PB80[x] + 0.035)) && x < 50) { - if(y > 49) { - y = 49; - } - - correction = _9PB80[y] - _9PB80[x] ; - lbe = _9PB80[y]; - correctL = true; - } - } - } - } - // end PB correction - - //red yellow correction - else if(zone == 2) { - if(lum > 15.0) { - if(lum < 25.0) { - if( (hue <= (_10YR20[x] + 0.035)) && (hue > (_10YR20[x] + _85YR20[x]) / 2.0) && x <= 45) { - if(y > 49) { - y = 49; - } - - correction = _10YR20[y] - _10YR20[x] ; - lbe = _10YR20[y]; - correctL = true; - } else if (( hue <= (_85YR20[x] + _10YR20[x]) / 2.0) && (hue > (_85YR20[x] + 0.035) && x <= 45)) { - if(y > 49) { - y = 49; - } - - correction = _85YR20[y] - _85YR20[x] ; - lbe = _85YR20[y]; - correctL = true; - } - } else if (lum < 35.0) { - if( (hue <= (_10YR30[x] + 0.035)) && (hue > (_10YR30[x] + _85YR30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10YR30[y] - _10YR30[x] ; - lbe = _10YR30[y]; - correctL = true; - } else if( (hue <= (_10YR30[x] + _85YR30[x]) / 2.0) && (hue > (_85YR30[x] + _7YR30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _85YR30[y] - _85YR30[x] ; - lbe = _85YR30[y]; - correctL = true; - } else if (( hue <= (_85YR30[x] + _7YR30[x]) / 2.0) && (hue > (_7YR30[x] + _55YR30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7YR30[y] - _7YR30[x] ; - lbe = _7YR30[y]; - correctL = true; - } else if (( hue <= (_7YR30[x] + _55YR30[x]) / 2.0) && (hue > (_55YR30[x] + _4YR30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _55YR30[y] - _55YR30[x] ; - lbe = _55YR30[y]; - correctL = true; - } else if (( hue <= (_55YR30[x] + _4YR30[x]) / 2.0) && (hue > (_4YR30[x] + _25YR30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _4YR30[y] - _4YR30[x] ; - lbe = _4YR30[y]; - correctL = true; - } else if (( hue <= (_4YR30[x] + _25YR30[x]) / 2.0) && (hue > (_25YR30[x] + _10R30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _25YR30[y] - _25YR30[x] ; - lbe = _25YR30[y]; - correctL = true; - } else if (( hue <= (_25YR30[x] + _10R30[x]) / 2.0) && (hue > (_10R30[x] + _9R30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10R30[y] - _10R30[x] ; - lbe = _10R30[y]; - correctL = true; - } else if (( hue <= (_10R30[x] + _9R30[x]) / 2.0) && (hue > (_9R30[x] + _7R30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _9R30[y] - _9R30[x] ; - lbe = _9R30[y]; - correctL = true; - } else if (( hue <= (_9R30[x] + _7R30[x]) / 2.0) && (hue > (_7R30[x] - 0.035)) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7R30[y] - _7R30[x] ; - lbe = _7R30[y] ; - correctL = true; - } - } else if (lum < 45.0) { - if( (hue <= (_10YR40[x] + 0.035)) && (hue > (_10YR40[x] + _85YR40[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10YR40[y] - _10YR40[x] ; - lbe = _10YR40[y]; - correctL = true; - } else if( (hue <= (_10YR40[x] + _85YR40[x]) / 2.0) && (hue > (_85YR40[x] + _7YR40[x]) / 2.0) && x < 85 ) { - if(y > 89) { - y = 89; - } - - correction = _85YR40[y] - _85YR40[x] ; - lbe = _85YR40[y]; - correctL = true; - } else if (( hue <= (_85YR40[x] + _7YR40[x]) / 2.0) && (hue > (_7YR40[x] + _55YR40[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7YR40[y] - _7YR40[x] ; - lbe = _7YR40[y]; - correctL = true; - } else if (( hue <= (_7YR40[x] + _55YR40[x]) / 2.0) && (hue > (_55YR40[x] + _4YR40[x]) / 2.0) && x < 85 ) { - if(y > 89) { - y = 89; - } - - correction = _55YR40[y] - _55YR40[x] ; - lbe = _55YR40[y]; - correctL = true; - } else if (( hue <= (_55YR40[x] + _4YR40[x]) / 2.0) && (hue > (_4YR40[x] + _25YR40[x]) / 2.0) && x < 85 ) { - if(y > 89) { - y = 89; - } - - correction = _4YR40[y] - _4YR40[x] ; - lbe = _4YR40[y]; - correctL = true; - } else if (( hue <= (_4YR40[x] + _25YR40[x]) / 2.0) && (hue > (_25YR40[x] + _10R40[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _25YR40[y] - _25YR40[x] ; - lbe = _25YR40[y] ; - correctL = true; - } else if (( hue <= (_25YR40[x] + _10R40[x]) / 2.0) && (hue > (_10R40[x] + _9R40[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10R40[y] - _10R40[x] ; - lbe = _10R40[y]; - correctL = true; - } else if (( hue <= (_10R40[x] + _9R40[x]) / 2.0) && (hue > (_9R40[x] + _7R40[x]) / 2.0) && x < 85 ) { - if(y > 89) { - y = 89; - } - - correction = _9R40[y] - _9R40[x] ; - lbe = _9R40[y]; - correctL = true; - } else if (( hue <= (_9R40[x] + _7R40[x]) / 2.0) && (hue > (_7R40[x] - 0.035)) && x < 85 ) { - if(y > 89) { - y = 89; - } - - correction = _7R40[y] - _7R40[x] ; - lbe = _7R40[y]; - correctL = true; - } - } else if (lum < 55.0) { - if( (hue <= (_10YR50[x] + 0.035)) && (hue > (_10YR50[x] + _85YR50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10YR50[y] - _10YR50[x] ; - lbe = _10YR50[y]; - correctL = true; - } else if( (hue <= (_10YR50[x] + _85YR50[x]) / 2.0) && (hue > (_85YR50[x] + _7YR50[x]) / 2.0) && x < 85 ) { - if(y > 89) { - y = 89; - } - - correction = _85YR50[y] - _85YR50[x] ; - lbe = _85YR50[y]; - correctL = true; - } else if (( hue <= (_85YR50[x] + _7YR50[x]) / 2.0) && (hue > (_7YR50[x] + _55YR50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7YR50[y] - _7YR50[x] ; - lbe = _7YR50[y]; - correctL = true; - } else if (( hue <= (_7YR50[x] + _55YR50[x]) / 2.0) && (hue > (_55YR50[x] + _4YR50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _55YR50[y] - _55YR50[x] ; - lbe = _55YR50[y]; - correctL = true; - } else if (( hue <= (_55YR50[x] + _4YR50[x]) / 2.0) && (hue > (_4YR50[x] + _25YR50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _4YR50[y] - _4YR50[x] ; - lbe = _4YR50[y]; - correctL = true; - } else if (( hue <= (_4YR50[x] + _25YR50[x]) / 2.0) && (hue > (_25YR50[x] + _10R50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _25YR50[y] - _25YR50[x] ; - lbe = _25YR50[y]; - correctL = true; - } else if (( hue <= (_25YR50[x] + _10R50[x]) / 2.0) && (hue > (_10R50[x] + _9R50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10R50[y] - _10R50[x] ; - lbe = _10R50[y]; - correctL = true; - } else if (( hue <= (_10R50[x] + _9R50[x]) / 2.0) && (hue > (_9R50[x] + _7R50[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _9R50[y] - _9R50[x] ; - lbe = _9R50[y]; - correctL = true; - } else if (( hue <= (_9R50[x] + _7R50[x]) / 2.0) && (hue > (_7R50[x] - 0.035)) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7R50[y] - _7R50[x] ; - lbe = _7R50[y]; - correctL = true; - } - } else if (lum < 65.0) { - if( (hue <= (_10YR60[x] + 0.035)) && (hue > (_10YR60[x] + _85YR60[x]) / 2.0)) { - ; - correction = _10YR60[y] - _10YR60[x] ; - lbe = _10YR60[y]; - correctL = true; - } else if( (hue <= (_10YR60[x] + _85YR60[x]) / 2.0) && (hue > (_85YR60[x] + _7YR60[x]) / 2.0) ) { - ; - correction = _85YR60[y] - _85YR60[x] ; - lbe = _85YR60[y]; - correctL = true; - } else if (( hue <= (_85YR60[x] + _7YR60[x]) / 2.0) && (hue > (_7YR60[x] + _55YR60[x]) / 2.0)) { - correction = _7YR60[y] - _7YR60[x] ; - lbe = _7YR60[y]; - correctL = true; - } else if (( hue <= (_7YR60[x] + _55YR60[x]) / 2.0) && (hue > (_55YR60[x] + _4YR60[x]) / 2.0)) { - correction = _55YR60[y] - _55YR60[x] ; - lbe = _55YR60[y]; - correctL = true; - } else if (( hue <= (_55YR60[x] + _4YR60[x]) / 2.0) && (hue > (_4YR60[x] + _25YR60[x]) / 2.0)) { - correction = _4YR60[y] - _4YR60[x] ; - lbe = _4YR60[y]; - correctL = true; - } else if (( hue <= (_4YR60[x] + _25YR60[x]) / 2.0) && (hue > (_25YR60[x] + _10R60[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _25YR60[y] - _25YR60[x] ; - lbe = _25YR60[y]; - correctL = true; - } else if (( hue <= (_25YR60[x] + _10R60[x]) / 2.0) && (hue > (_10R60[x] + _9R60[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10R60[y] - _10R60[x] ; - lbe = _10R60[y]; - correctL = true; - } else if (( hue <= (_10R60[x] + _9R60[x]) / 2.0) && (hue > (_9R60[x] + _7R60[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _9R60[y] - _9R60[x] ; - lbe = _9R60[y]; - correctL = true; - } else if (( hue <= (_9R60[x] + _7R60[x]) / 2.0) && (hue > (_7R60[x] - 0.035)) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7R60[y] - _7R60[x] ; - lbe = _7R60[y]; - correctL = true; - } - } else if (lum < 75.0) { - if( (hue <= (_10YR70[x] + 0.035)) && (hue > (_10YR70[x] + _85YR70[x]) / 2.0)) { - correction = _10YR70[y] - _10YR70[x] ; - lbe = _10YR70[y]; - correctL = true; - } else if( (hue <= (_10YR70[x] + _85YR70[x]) / 2.0) && (hue > (_85YR70[x] + _7YR70[x]) / 2.0)) { - correction = _85YR70[y] - _85YR70[x] ; - lbe = _85YR70[y]; - correctL = true; - } - - if (( hue <= (_85YR70[x] + _7YR70[x]) / 2.0) && (hue > (_7YR70[x] + _55YR70[x]) / 2.0)) { - correction = _7YR70[y] - _7YR70[x] ; - lbe = _7YR70[y]; - correctL = true; - } else if (( hue <= (_7YR70[x] + _55YR70[x]) / 2.0) && (hue > (_55YR70[x] + _4YR70[x]) / 2.0)) { - correction = _55YR70[y] - _55YR70[x] ; - lbe = _55YR70[y]; - correctL = true; - } else if (( hue <= (_55YR70[x] + _4YR70[x]) / 2.0) && (hue > (_4YR70[x] + _25YR70[x]) / 2.0)) { - correction = _4YR70[y] - _4YR70[x] ; - lbe = _4YR70[y]; - correctL = true; - } else if (( hue <= (_4YR70[x] + _25YR70[x]) / 2.0) && (hue > (_25YR70[x] + _10R70[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _25YR70[y] - _25YR70[x] ; - lbe = _25YR70[y]; - correctL = true; - } else if (( hue <= (_25YR70[x] + _10R70[x]) / 2.0) && (hue > (_10R70[x] + _9R70[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10R70[y] - _10R70[x] ; - lbe = _10R70[y]; - correctL = true; - } else if (( hue <= (_10R70[x] + _9R70[x]) / 2.0) && (hue > (_9R70[x] + _7R70[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _9R70[y] - _9R70[x] ; - lbe = _9R70[y] ; - correctL = true; - } else if (( hue <= (_9R70[x] + _7R70[x]) / 2.0) && (hue > (_7R70[x] - 0.035)) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7R70[y] - _7R70[x] ; - lbe = _7R70[y]; - correctL = true; - } - } else if (lum < 85.0) { - if( (hue <= (_10YR80[x] + 0.035)) && (hue > (_10YR80[x] + _85YR80[x]) / 2.0)) { - correction = _10YR80[y] - _10YR80[x] ; - lbe = _10YR80[y]; - correctL = true; - } else if( (hue <= (_10YR80[x] + _85YR80[x]) / 2.0) && (hue > (_85YR80[x] + _7YR80[x]) / 2.0)) { - correction = _85YR80[y] - _85YR80[x] ; - lbe = _85YR80[y]; - } else if (( hue <= (_85YR80[x] + _7YR80[x]) / 2.0) && (hue > (_7YR80[x] + _55YR80[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _7YR80[y] - _7YR80[x] ; - lbe = _7YR80[y]; - correctL = true; - } else if (( hue <= (_7YR80[x] + _55YR80[x]) / 2.0) && (hue > (_55YR80[x] + _4YR80[x]) / 2.0) && x < 45) { - correction = _55YR80[y] - _55YR80[x] ; - lbe = _55YR80[y]; - correctL = true; - } else if (( hue <= (_55YR80[x] + _4YR80[x]) / 2.0) && (hue > (_4YR80[x] - 0.035) && x < 45)) { - if(y > 49) { - y = 49; - } - - correction = _4YR80[y] - _4YR80[x] ; - lbe = _4YR80[y] ; - correctL = true; - } - } else if (lum < 95.0) { - if( (hue <= (_10YR90[x] + 0.035)) && (hue > (_10YR90[x] - 0.035) && x < 85)) { - if(y > 89) { - y = 89; - } - - correction = _10YR90[y] - _10YR90[x] ; - lbe = _10YR90[y]; - correctL = true; - } else if ( hue <= (_85YR90[x] + 0.035) && hue > (_85YR90[x] - 0.035) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _85YR90[y] - _85YR90[x] ; - lbe = _85YR90[y]; - correctL = true; - } else if (( hue <= (_55YR90[x] + 0.035) && (hue > (_55YR90[x] - 0.035) && x < 45))) { - if(y > 49) { - y = 49; - } - - correction = _55YR90[y] - _55YR90[x] ; - lbe = _55YR90[y]; - correctL = true; - } - } - } - } - //end red yellow - - //Green yellow correction - else if(zone == 3) { - if (lum >= 25.0) { - if (lum < 35.0) { - if( (hue <= (_7G30[x] + 0.035)) && (hue > (_7G30[x] + _5G30[x]) / 2.0) ) { - correction = _7G30[y] - _7G30[x] ; - lbe = _7G30[y]; - correctL = true; - } else if( (hue <= (_7G30[x] + _5G30[x]) / 2.0) && (hue > (_5G30[x] + _25G30[x]) / 2.0)) { - correction = _5G30[y] - _5G30[x] ; - lbe = _5G30[y]; - correctL = true; - } else if (( hue <= (_25G30[x] + _5G30[x]) / 2.0) && (hue > (_25G30[x] + _1G30[x]) / 2.0)) { - correction = _25G30[y] - _25G30[x] ; - lbe = _25G30[y]; - correctL = true; - } else if (( hue <= (_1G30[x] + _25G30[x]) / 2.0) && (hue > (_1G30[x] + _10GY30[x]) / 2.0)) { - correction = _1G30[y] - _1G30[x] ; - lbe = _1G30[y]; - correctL = true; - } else if (( hue <= (_1G30[x] + _10GY30[x]) / 2.0) && (hue > (_10GY30[x] + _75GY30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10GY30[y] - _10GY30[x] ; - lbe = _10GY30[y]; - correctL = true; - } else if (( hue <= (_10GY30[x] + _75GY30[x]) / 2.0) && (hue > (_75GY30[x] + _5GY30[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _75GY30[y] - _75GY30[x] ; - lbe = _75GY30[y]; - correctL = true; - } else if (( hue <= (_5GY30[x] + _75GY30[x]) / 2.0) && (hue > (_5GY30[x] - 0.035)) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _5GY30[y] - _5GY30[x] ; - lbe = _5GY30[y] ; - correctL = true; - } - } else if (lum < 45.0) { - if( (hue <= (_7G40[x] + 0.035)) && (hue > (_7G40[x] + _5G40[x]) / 2.0) ) { - correction = _7G40[y] - _7G40[x] ; - lbe = _7G40[y]; - correctL = true; - } else if( (hue <= (_7G40[x] + _5G40[x]) / 2.0) && (hue > (_5G40[x] + _25G40[x]) / 2.0)) { - correction = _5G40[y] - _5G40[x] ; - lbe = _5G40[y]; - correctL = true; - } else if (( hue <= (_25G40[x] + _5G40[x]) / 2.0) && (hue > (_25G40[x] + _1G40[x]) / 2.0)) { - correction = _25G40[y] - _25G40[x] ; - lbe = _25G40[y]; - correctL = true; - } else if (( hue <= (_1G40[x] + _25G40[x]) / 2.0) && (hue > (_1G40[x] + _10GY40[x]) / 2.0)) { - correction = _1G40[y] - _1G40[x] ; - lbe = _1G40[y]; - correctL = true; - } else if (( hue <= (_1G40[x] + _10GY40[x]) / 2.0) && (hue > (_10GY40[x] + _75GY40[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _10GY40[y] - _10GY40[x] ; - lbe = _10GY40[y]; - correctL = true; - } else if (( hue <= (_10GY40[x] + _75GY40[x]) / 2.0) && (hue > (_75GY40[x] + _5GY40[x]) / 2.0) && x < 85) { - if(y > 89) { - y = 89; - } - - correction = _75GY40[y] - _75GY40[x] ; - lbe = _75GY40[y]; - correctL = true; - } else if (( hue <= (_5GY40[x] + _75GY40[x]) / 2.0) && (hue > (_5GY40[x] - 0.035)) && x < 85) { - if(y > 89) { - y = 89; // - } - - correction = _5GY40[y] - _5GY40[x] ; - lbe = _5GY40[y]; - correctL = true; - } - } else if (lum < 55.0) { - if( (hue <= (_7G50[x] + 0.035)) && (hue > (_7G50[x] + _5G50[x]) / 2.0) ) { - correction = _7G50[y] - _7G50[x] ; - lbe = _7G50[y]; - correctL = true; - } else if( (hue <= (_7G50[x] + _5G50[x]) / 2.0) && (hue > (_5G50[x] + _25G50[x]) / 2.0)) { - correction = _5G50[y] - _5G50[x] ; - lbe = _5G50[y]; - correctL = true; - } else if (( hue <= (_25G50[x] + _5G50[x]) / 2.0) && (hue > (_25G50[x] + _1G50[x]) / 2.0)) { - correction = _25G50[y] - _25G50[x] ; - lbe = _25G50[y]; - correctL = true; - } else if (( hue <= (_1G50[x] + _25G50[x]) / 2.0) && (hue > (_1G50[x] + _10GY50[x]) / 2.0)) { - correction = _1G50[y] - _1G50[x] ; - lbe = _1G50[y]; - correctL = true; - } else if (( hue <= (_1G50[x] + _10GY50[x]) / 2.0) && (hue > (_10GY50[x] + _75GY50[x]) / 2.0)) { - correction = _10GY50[y] - _10GY50[x] ; - lbe = _10GY50[y]; - correctL = true; - } else if (( hue <= (_10GY50[x] + _75GY50[x]) / 2.0) && (hue > (_75GY50[x] + _5GY50[x]) / 2.0)) { - correction = _75GY50[y] - _75GY50[x] ; - lbe = _75GY50[y]; - correctL = true; - } else if (( hue <= (_5GY50[x] + _75GY50[x]) / 2.0) && (hue > (_5GY50[x] - 0.035))) { - correction = _5GY50[y] - _5GY50[x] ; - lbe = _5GY50[y]; - correctL = true; - } - } else if (lum < 65.0) { - if( (hue <= (_7G60[x] + 0.035)) && (hue > (_7G60[x] + _5G60[x]) / 2.0) ) { - correction = _7G60[y] - _7G60[x] ; - lbe = _7G60[y]; - correctL = true; - } else if( (hue <= (_7G60[x] + _5G60[x]) / 2.0) && (hue > (_5G60[x] + _25G60[x]) / 2.0)) { - correction = _5G60[y] - _5G60[x] ; - lbe = _5G60[y]; - correctL = true; - } else if (( hue <= (_25G60[x] + _5G60[x]) / 2.0) && (hue > (_25G60[x] + _1G60[x]) / 2.0)) { - correction = _25G60[y] - _25G60[x] ; - lbe = _25G60[y]; - correctL = true; - } else if (( hue <= (_1G60[x] + _25G60[x]) / 2.0) && (hue > (_1G60[x] + _10GY60[x]) / 2.0)) { - correction = _1G60[y] - _1G60[x] ; - lbe = _1G60[y]; - correctL = true; - } else if (( hue <= (_1G60[x] + _10GY60[x]) / 2.0) && (hue > (_10GY60[x] + _75GY60[x]) / 2.0)) { - correction = _10GY60[y] - _10GY60[x] ; - lbe = _10GY60[y]; - correctL = true; - } else if (( hue <= (_10GY60[x] + _75GY60[x]) / 2.0) && (hue > (_75GY60[x] + _5GY60[x]) / 2.0)) { - correction = _75GY60[y] - _75GY60[x] ; - lbe = _75GY60[y] ; - correctL = true; - } else if (( hue <= (_5GY60[x] + _75GY60[x]) / 2.0) && (hue > (_5GY60[x] - 0.035))) { - correction = _5GY60[y] - _5GY60[x] ; - lbe = _5GY60[y]; - correctL = true; - } - } else if (lum < 75.0) { - if( (hue <= (_7G70[x] + 0.035)) && (hue > (_7G70[x] + _5G70[x]) / 2.0) ) { - correction = _7G70[y] - _7G70[x] ; - lbe = _7G70[y]; - correctL = true; - } else if( (hue <= (_7G70[x] + _5G70[x]) / 2.0) && (hue > (_5G70[x] + _25G70[x]) / 2.0)) { - correction = _5G70[y] - _5G70[x] ; - lbe = _5G70[y]; - correctL = true; - } else if (( hue <= (_25G70[x] + _5G70[x]) / 2.0) && (hue > (_25G70[x] + _1G70[x]) / 2.0)) { - correction = _25G70[y] - _25G70[x] ; - lbe = _25G70[y]; - correctL = true; - } else if (( hue <= (_1G70[x] + _25G70[x]) / 2.0) && (hue > (_1G70[x] + _10GY70[x]) / 2.0)) { - correction = _1G70[y] - _1G70[x] ; - lbe = _1G70[y] ; - correctL = true; - } else if (( hue <= (_1G70[x] + _10GY70[x]) / 2.0) && (hue > (_10GY70[x] + _75GY70[x]) / 2.0)) { - correction = _10GY70[y] - _10GY70[x] ; - lbe = _10GY70[y]; - correctL = true; - } else if (( hue <= (_10GY70[x] + _75GY70[x]) / 2.0) && (hue > (_75GY70[x] + _5GY70[x]) / 2.0)) { - correction = _75GY70[y] - _75GY70[x] ; - lbe = _75GY70[y]; - correctL = true; - } else if (( hue <= (_5GY70[x] + _75GY70[x]) / 2.0) && (hue > (_5GY70[x] - 0.035))) { - correction = _5GY70[y] - _5GY70[x] ; - lbe = _5GY70[y]; - correctL = true; - } - } else if (lum < 85.0) { - if( (hue <= (_7G80[x] + 0.035)) && (hue > (_7G80[x] + _5G80[x]) / 2.0) ) { - correction = _7G80[y] - _7G80[x] ; - lbe = _7G80[y]; - correctL = true; - } else if( (hue <= (_7G80[x] + _5G80[x]) / 2.0) && (hue > (_5G80[x] + _25G80[x]) / 2.0)) { - correction = _5G80[y] - _5G80[x] ; - lbe = _5G80[y]; - correctL = true; - } else if (( hue <= (_25G80[x] + _5G80[x]) / 2.0) && (hue > (_25G80[x] + _1G80[x]) / 2.0)) { - correction = _25G80[y] - _25G80[x] ; - lbe = _25G80[y]; - correctL = true; - } else if (( hue <= (_1G80[x] + _25G80[x]) / 2.0) && (hue > (_1G80[x] + _10GY80[x]) / 2.0)) { - correction = _1G80[y] - _1G80[x] ; - lbe = _1G80[y]; - correctL = true; - } else if (( hue <= (_1G80[x] + _10GY80[x]) / 2.0) && (hue > (_10GY80[x] + _75GY80[x]) / 2.0)) { - correction = _10GY80[y] - _10GY80[x] ; - lbe = _10GY80[y]; - correctL = true; - } else if (( hue <= (_10GY80[x] + _75GY80[x]) / 2.0) && (hue > (_75GY80[x] + _5GY80[x]) / 2.0)) { - correction = _75GY80[y] - _75GY80[x] ; - lbe = _75GY80[y]; - correctL = true; - } else if (( hue <= (_5GY80[x] + _75GY80[x]) / 2.0) && (hue > (_5GY80[x] - 0.035))) { - correction = _5GY80[y] - _5GY80[x] ; - lbe = _5GY80[y]; - correctL = true; - } - } - } - } - //end green yellow - - //Red purple correction : only for L < 30 - else if(zone == 4) { - if (lum > 5.0) { - if (lum < 15.0) { - if( (hue <= (_5R10[x] + 0.035)) && (hue > (_5R10[x] - 0.043)) && x < 45) { - if(y > 44) { - y = 44; - } - - correction = _5R10[y] - _5R10[x] ; - lbe = _5R10[y]; - correctL = true; - } else if( (hue <= (_25R10[x] + 0.043)) && (hue > (_25R10[x] + _10RP10[x]) / 2.0) && x < 45 ) { - if(y > 44) { - y = 44; - } - - correction = _25R10[y] - _25R10[x] ; - lbe = _25R10[y]; - correctL = true; - } else if ( (hue <= (_25R10[x] + _10RP10[x]) / 2.0) && (hue > (_10RP10[x] - 0.035) ) && x < 45) { - if(y > 44) { - y = 44; - } - - correction = _10RP10[y] - _10RP10[x] ; - lbe = _10RP10[y]; - correctL = true; - } - } else if (lum < 25.0) { - if( (hue <= (_5R20[x] + 0.035)) && (hue > (_5R20[x] + _25R20[x]) / 2.0) && x < 70 ) { - if(y > 70) { - y = 70; - } - - correction = _5R20[y] - _5R20[x] ; - lbe = _5R20[y]; - correctL = true; - } else if( (hue <= (_5R20[x] + _25R20[x]) / 2.0) && (hue > (_10RP20[x] + _25R20[x]) / 2.0) && x < 70) { - if(y > 70) { - y = 70; - } - - correction = _25R20[y] - _25R20[x] ; - lbe = _25R20[y]; - correctL = true; - } else if (( hue <= (_10RP20[x] + _25R20[x]) / 2.0) && (hue > (_10RP20[x] - 0.035)) && x < 70) { - if(y > 70) { - y = 70; - } - - correction = _10RP20[y] - _10RP20[x] ; - lbe = _10RP20[y]; - correctL = true; - } - } else if (lum < 35.0) { - if( (hue <= (_5R30[x] + 0.035)) && (hue > (_5R30[x] + _25R30[x]) / 2.0) && x < 85 ) { - if(y > 85) { - y = 85; - } - - correction = _5R30[y] - _5R30[x] ; - lbe = _5R30[y]; - correctL = true; - } else if( (hue <= (_5R30[x] + _25R30[x]) / 2.0) && (hue > (_10RP30[x] + _25R30[x]) / 2.0) && x < 85) { - if(y > 85) { - y = 85; - } - - correction = _25R30[y] - _25R30[x] ; - lbe = _25R30[y]; - correctL = true; - } else if (( hue <= (_10RP30[x] + _25R30[x]) / 2.0) && (hue > (_10RP30[x] - 0.035)) && x < 85) { - if(y > 85) { - y = 85; - } - - correction = _10RP30[y] - _10RP30[x] ; - lbe = _10RP30[y]; - correctL = true; - } - } - } - } - - //end red purple -} - - /* * SkinSat * Copyright (c)2011 Jacques Desmis diff --git a/rtengine/color.h b/rtengine/color.h index 998e47ee7..b48b1e907 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -20,16 +20,16 @@ #pragma once #include -#include #include "rt_math.h" #include "LUT.h" -#include "iccmatrices.h" #include "lcms2.h" #include "sleef.h" -#define SAT(a,b,c) ((float)max(a,b,c)-(float)min(a,b,c))/(float)max(a,b,c) - +namespace Glib +{ +class ustring; +} namespace rtengine { diff --git a/rtengine/curves.cc b/rtengine/curves.cc index b2105a091..ac1f9fccc 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -33,6 +33,7 @@ #include "opthelper.h" #include "ciecam02.h" #include "color.h" +#include "iccmatrices.h" #include "iccstore.h" using namespace std; diff --git a/rtengine/munselllch.cc b/rtengine/munselllch.cc new file mode 100644 index 000000000..b1ec305f6 --- /dev/null +++ b/rtengine/munselllch.cc @@ -0,0 +1,1232 @@ +/* +* This file is part of RawTherapee. +* +* Copyright (c) 2004-2010 Gabor Horvath +* +* RawTherapee is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* RawTherapee is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with RawTherapee. If not, see . +*/ + +#include "color.h" + +using namespace std; + +namespace rtengine +{ + +/* + * MunsellLch correction + * Copyright (c) 2012 Jacques Desmis + * Copyright (c) 2020 Ingo Weyrich + * + * Find the right LUT and calculate the correction + */ +void Color::MunsellLch (float lum, float hue, float chrom, float memChprov, float &correction, int zone, float &lbe, bool &correctL) +{ + + const int x = memChprov; + int y = chrom; + + //begin PB correction + sky + if (zone == 1) { + if (lum > 5.f) { + if (lum < 15.f) { + if (x <= 45 && (hue >= (_15PB10[x] - 0.035f)) && (hue < (_15PB10[x] + 0.052f))) { + if (y > 49) { + y = 49; + } + correction = _15PB10[y] - _15PB10[x] ; + lbe = _15PB10[y]; + correctL = true; + } else if (x <= 85 && (hue >= ( _3PB10[x] - 0.052f)) && (hue < (_45PB10[x] + _3PB10[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _3PB10[y] - _3PB10[x]; + lbe = _3PB10[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_45PB10[x] + _3PB10[x]) * 0.5f) && (hue < (_45PB10[x] + 0.052f))) { + if (y > 89) { + y = 89; + } + correction = _45PB10[y] - _45PB10[x] ; + lbe = _45PB10[y]; + correctL = true; + } else if ((hue >= (_6PB10[x] - 0.052f) && (hue < (_6PB10[x] + _75PB10[x]) * 0.5f))) { + correction = _6PB10[y] - _6PB10[x] ; + lbe = _6PB10[y]; + correctL = true; + } else if ((hue >= (_6PB10[x] + _75PB10[x]) * 0.5f) && (hue < (_9PB10[x] + _75PB10[x]) * 0.5f)) { + correction = _75PB10[y] - _75PB10[x] ; + lbe = _75PB10[y]; + correctL = true; + } else if ((hue >= (_9PB10[x] + _75PB10[x]) * 0.5f) && (hue < (_9PB10[x] + _10PB10[x]) * 0.5f)) { + correction = _9PB10[y] - _9PB10[x] ; + lbe = _9PB10[y]; + correctL = true; + } else if ((hue >= (_10PB10[x] + _9PB10[x]) * 0.5f) && (hue < (_1P10[x] + _10PB10[x]) * 0.5f)) { + correction = _10PB10[y] - _10PB10[x] ; + lbe = _10PB10[y]; + correctL = true; + } else if ((hue >= (_10PB10[x] + _1P10[x]) * 0.5f) && (hue < (_1P10[x] + _4P10[x]) * 0.5f)) { + correction = _1P10[y] - _1P10[x]; + lbe = _1P10[y]; + correctL = true; + } else if ((hue >= (_1P10[x] + _4P10[x]) * 0.5f) && (hue < (0.035f + _4P10[x]) * 0.5f)) { + correction = _4P10[y] - _4P10[x] ; + lbe = _4P10[y]; + correctL = true; + } + } else if (lum < 25.f) { + if (x <= 85 && (hue >= (_15PB20[x] - 0.035f)) && (hue < (_15PB20[x] + _3PB20[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _15PB20[y] - _15PB20[x] ; + lbe = _15PB20[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB20[x] + _3PB20[x]) * 0.5f) && (hue < (_45PB20[x] + _3PB20[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _3PB20[y] - _3PB20[x] ; + lbe = _3PB20[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_45PB20[x] + _3PB20[x]) * 0.5f) && (hue < ( _45PB20[x] + 0.052f))) { + if (y > 89) { + y = 89; + } + correction = _45PB20[y] - _45PB20[x] ; + lbe = _45PB20[y]; + correctL = true; + } else if ((hue >= (_45PB20[x] + 0.052f)) && (hue < (_6PB20[x] + _75PB20[x]) * 0.5f)) { + correction = _6PB20[y] - _6PB20[x]; + lbe = _6PB20[y]; + correctL = true; + } else if ((hue >= (_6PB20[x] + _75PB20[x]) * 0.5f) && (hue < (_9PB20[x] + _75PB20[x]) * 0.5f)) { + correction = _75PB20[y] - _75PB20[x] ; + lbe = _75PB20[y]; + correctL = true; + } else if ((hue >= (_9PB20[x] + _75PB20[x]) * 0.5f) && (hue < (_9PB20[x] + _10PB20[x]) * 0.5f)) { + correction = _9PB20[y] - _9PB20[x] ; + lbe = _9PB20[y]; + correctL = true; + } else if ((hue >= (_10PB20[x] + _9PB20[x]) * 0.5f) && (hue < (_1P20[x] + _10PB20[x]) * 0.5f)) { + correction = _10PB20[y] - _10PB20[x] ; + lbe = _10PB20[y]; + correctL = true; + } else if ((hue >= (_10PB20[x] + _1P20[x]) * 0.5f) && (hue < (_1P20[x] + _4P20[x]) * 0.5f)) { + correction = _1P20[y] - _1P20[x] ; + lbe = _1P20[y]; + correctL = true; + } else if ((hue >= (_1P20[x] + _4P20[x]) * 0.5f) && (hue < (0.035f + _4P20[x]) * 0.5f)) { + correction = _4P20[y] - _4P20[x] ; + lbe = _4P20[y]; + correctL = true; + } + } else if (lum < 35.f) { + if (x <= 85 && (hue >= (_15PB30[x] - 0.035f)) && (hue < (_15PB30[x] + _3PB30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _15PB30[y] - _15PB30[x] ; + lbe = _15PB30[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB30[x] + _3PB30[x]) * 0.5f) && (hue < (_45PB30[x] + _3PB30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _3PB30[y] - _3PB30[x] ; + lbe = _3PB30[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_45PB30[x] + _3PB30[x]) * 0.5f) && (hue < (_45PB30[x] + 0.052f))) { + if (y > 89) { + y = 89; + } + correction = _45PB30[y] - _45PB30[x] ; + lbe = _45PB30[y]; + correctL = true; + } else if ((hue >= ( _45PB30[x] + 0.052f)) && (hue < (_6PB30[x] + _75PB30[x]) * 0.5f)) { + correction = _6PB30[y] - _6PB30[x] ; + lbe = _6PB30[y]; + correctL = true; + } else if ((hue >= (_6PB30[x] + _75PB30[x]) * 0.5f) && (hue < (_9PB30[x] + _75PB30[x]) * 0.5f)) { + correction = _75PB30[y] - _75PB30[x] ; + lbe = _75PB30[y] ; + correctL = true; + } else if ((hue >= (_9PB30[x] + _75PB30[x]) * 0.5f) && (hue < (_9PB30[x] + _10PB30[x]) * 0.5f)) { + correction = _9PB30[y] - _9PB30[x] ; + lbe = _9PB30[y]; + correctL = true; + } else if ((hue >= (_10PB30[x] + _9PB30[x]) * 0.5f) && (hue < (_1P30[x] + _10PB30[x]) * 0.5f)) { + correction = _10PB30[y] - _10PB30[x] ; + lbe = _10PB30[y]; + correctL = true; + } else if ((hue >= (_10PB30[x] + _1P30[x]) * 0.5f) && (hue < (_1P30[x] + _4P30[x]) * 0.5f)) { + correction = _1P30[y] - _1P30[x] ; + lbe = _1P30[y]; + correctL = true; + } else if ((hue >= (_1P30[x] + _4P30[x]) * 0.5f) && (hue < (0.035f + _4P30[x]) * 0.5f)) { + correction = _4P30[y] - _4P30[x] ; + lbe = _4P30[y]; + correctL = true; + } + } else if (lum < 45.f) { + if (x < 75 && (hue <= (_05PB40[x] + _15PB40[x]) * 0.5f) && (hue > (_05PB40[x] + _10B40[x]) * 0.5f)) { + if (y > 75) { + y = 75; + } + correction = _05PB40[y] - _05PB40[x] ; + lbe = _05PB40[y]; + correctL = true; + } else if (x < 70 && (hue <= (_05PB40[x] + _10B40[x]) * 0.5f) && (hue > (_10B40[x] + _9B40[x]) * 0.5f)) { + if (y > 70) { + y = 70; + } + correction = _10B40[y] - _10B40[x] ; + lbe = _10B40[y]; + correctL = true; + } else if (x < 70 && (hue <= (_10B40[x] + _9B40[x]) * 0.5f) && (hue > (_9B40[x] + _7B40[x]) * 0.5f)) { + if (y > 70) { + y = 70; + } + correction = _9B40[y] - _9B40[x] ; + lbe = _9B40[y]; + correctL = true; + } else if (x < 70 && (hue <= (_9B40[x] + _7B40[x]) * 0.5f) && (hue > (_5B40[x] + _7B40[x]) * 0.5f)) { + if (y > 70) { + y = 70; + } + correction = _7B40[y] - _7B40[x] ; + lbe = _7B40[y]; + correctL = true; + } else if (x < 70 && (hue <= (_5B40[x] + _7B40[x]) * 0.5f) && (hue > (_5B40[x] - 0.035f))) { + if (y > 70) { + y = 70; // + } + correction = _5B40[y] - _5B40[x] ; + lbe = _5B40[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB40[x] - 0.035f)) && (hue < (_15PB40[x] + _3PB40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _15PB40[y] - _15PB40[x] ; + lbe = _15PB40[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB40[x] + _3PB40[x]) * 0.5f) && (hue < (_45PB40[x] + _3PB40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _3PB40[y] - _3PB40[x] ; + lbe = _3PB40[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_45PB40[x] + _3PB40[x]) * 0.5f) && (hue < (_45PB40[x] + 0.052f))) { + if (y > 89) { + y = 89; + } + correction = _45PB40[y] - _45PB40[x] ; + lbe = _45PB40[y] ; + correctL = true; + } else if ((hue >= (_45PB40[x] + 0.052f)) && (hue < (_6PB40[x] + _75PB40[x]) * 0.5f)) { + correction = _6PB40[y] - _6PB40[x] ; + lbe = _6PB40[y]; + correctL = true; + } else if ((hue >= (_6PB40[x] + _75PB40[x]) * 0.5f) && (hue < (_9PB40[x] + _75PB40[x]) * 0.5f)) { + correction = _75PB40[y] - _75PB40[x] ; + lbe = _75PB40[y]; + correctL = true; + } else if ((hue >= (_9PB40[x] + _75PB40[x]) * 0.5f) && (hue < (_9PB40[x] + _10PB40[x]) * 0.5f)) { + correction = _9PB40[y] - _9PB40[x] ; + lbe = _9PB40[y]; + correctL = true; + } else if ((hue >= (_10PB40[x] + _9PB40[x]) * 0.5f) && (hue < (_1P40[x] + _10PB40[x]) * 0.5f)) { + correction = _10PB40[y] - _10PB40[x] ; + lbe = _10PB40[y]; + correctL = true; + } else if ((hue >= (_10PB40[x] + _1P40[x]) * 0.5f) && (hue < (_1P40[x] + _4P40[x]) * 0.5f)) { + correction = _1P40[y] - _1P40[x] ; + lbe = _1P40[y]; + correctL = true; + } else if ((hue >= (_1P40[x] + _4P40[x]) * 0.5f) && (hue < (0.035f + _4P40[x]) * 0.5f)) { + correction = _4P40[y] - _4P40[x] ; + lbe = _4P40[y]; + correctL = true; + } + } else if (lum < 55.f) { + if (x < 79 && (hue <= (_05PB50[x] + _15PB50[x]) * 0.5f) && (hue > (_05PB50[x] + _10B50[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _05PB50[y] - _05PB50[x] ; + lbe = _05PB50[y]; + correctL = true; + } else if (x < 79 && (hue <= (_05PB50[x] + _10B50[x]) * 0.5f) && (hue > (_10B50[x] + _9B50[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _10B50[y] - _10B50[x] ; + lbe = _10B50[y]; + correctL = true; + } else if (x < 79 && (hue <= (_10B50[x] + _9B50[x]) * 0.5f) && (hue > (_9B50[x] + _7B50[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _9B50[y] - _9B50[x] ; + lbe = _9B50[y]; + correctL = true; + } else if (x < 79 && (hue <= (_9B50[x] + _7B50[x]) * 0.5f) && (hue > (_5B50[x] + _7B50[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _7B50[y] - _7B50[x] ; + lbe = _7B50[y]; + correctL = true; + } else if (x < 79 && (hue <= (_5B50[x] + _7B50[x]) * 0.5f) && (hue > (_5B50[x] - 0.035f))) { + if (y > 79) { + y = 79; // + } + correction = _5B50[y] - _5B50[x] ; + lbe = _5B50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB50[x] - 0.035f)) && (hue < (_15PB50[x] + _3PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _15PB50[y] - _15PB50[x] ; + lbe = _15PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB50[x] + _3PB50[x]) * 0.5f) && (hue < (_45PB50[x] + _3PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _3PB50[y] - _3PB50[x] ; + lbe = _3PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_45PB50[x] + _3PB50[x]) * 0.5f) && (hue < (_6PB50[x] + _45PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _45PB50[y] - _45PB50[x] ; + lbe = _45PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_6PB50[x] + _45PB50[x]) * 0.5f) && (hue < (_6PB50[x] + _75PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _6PB50[y] - _6PB50[x] ; + lbe = _6PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_6PB50[x] + _75PB50[x]) * 0.5f) && (hue < (_9PB50[x] + _75PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _75PB50[y] - _75PB50[x] ; + lbe = _75PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_9PB50[x] + _75PB50[x]) * 0.5f) && (hue < (_9PB50[x] + _10PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9PB50[y] - _9PB50[x] ; + lbe = _9PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_10PB50[x] + _9PB50[x]) * 0.5f) && (hue < (_1P50[x] + _10PB50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10PB50[y] - _10PB50[x] ; + lbe = _10PB50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_10PB50[x] + _1P50[x]) * 0.5f) && (hue < (_1P50[x] + _4P50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _1P50[y] - _1P50[x] ; + lbe = _1P50[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_1P50[x] + _4P50[x]) * 0.5f) && (hue < (0.035f + _4P50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _4P50[y] - _4P50[x] ; + lbe = _4P50[y]; + correctL = true; + } + } else if (lum < 65.f) { + if (x < 79 && (hue <= (_05PB60[x] + _15PB60[x]) * 0.5f) && (hue > (_05PB60[x] + _10B60[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _05PB60[y] - _05PB60[x] ; + lbe = _05PB60[y]; + correctL = true; + } else if (x < 79 && (hue <= (_05PB60[x] + _10B60[x]) * 0.5f) && (hue > (_10B60[x] + _9B60[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _10B60[y] - _10B60[x] ; + lbe = _10B60[y]; + correctL = true; + } else if (x < 79 && (hue <= (_10B60[x] + _9B60[x]) * 0.5f) && (hue > (_9B60[x] + _7B60[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _9B60[y] - _9B60[x] ; + lbe = _9B60[y]; + correctL = true; + } else if (x < 79 && (hue <= (_9B60[x] + _7B60[x]) * 0.5f) && (hue > (_5B60[x] + _7B60[x]) * 0.5f)) { + if (y > 79) { + y = 79; + } + correction = _7B60[y] - _7B60[x] ; + lbe = _7B60[y]; + correctL = true; + } else if (x < 79 && (hue <= (_5B60[x] + _7B60[x]) * 0.5f) && (hue > (_5B60[x] - 0.035f))) { + if (y > 79) { + y = 79; // + } + correction = _5B60[y] - _5B60[x] ; + lbe = _5B60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB60[x] - 0.035f)) && (hue < (_15PB60[x] + _3PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _15PB60[y] - _15PB60[x] ; + lbe = _15PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_15PB60[x] + _3PB60[x]) * 0.5f) && (hue < (_45PB60[x] + _3PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _3PB60[y] - _3PB60[x] ; + lbe = _3PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_45PB60[x] + _3PB60[x]) * 0.5f) && (hue < (_6PB60[x] + _45PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _45PB60[y] - _45PB60[x] ; + lbe = _45PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_6PB60[x] + _45PB60[x]) * 0.5f) && (hue < (_6PB60[x] + _75PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _6PB60[y] - _6PB60[x] ; + lbe = _6PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_6PB60[x] + _75PB60[x]) * 0.5f) && (hue < (_9PB60[x] + _75PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _75PB60[y] - _75PB60[x] ; + lbe = _75PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_9PB60[x] + _75PB60[x]) * 0.5f) && (hue < (_9PB60[x] + _10PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9PB60[y] - _9PB60[x] ; + lbe = _9PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_10PB60[x] + _9PB60[x]) * 0.5f) && (hue < (_1P60[x] + _10PB60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10PB60[y] - _10PB60[x] ; + lbe = _10PB60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_10PB60[x] + _1P60[x]) * 0.5f) && (hue < (_1P60[x] + _4P60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _1P60[y] - _1P60[x] ; + lbe = _1P60[y]; + correctL = true; + } else if (x <= 85 && (hue >= (_1P60[x] + _4P60[x]) * 0.5f) && (hue < (0.035f + _4P60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _4P60[y] - _4P60[x] ; + lbe = _4P60[y]; + correctL = true; + } + } else if (lum < 75.f) { + if (x < 50 && (hue <= (_05PB70[x] + _15PB70[x]) * 0.5f) && (hue > (_05PB70[x] + _10B70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _05PB70[y] - _05PB70[x] ; + lbe = _05PB70[y]; + correctL = true; + } else if (x < 50 && (hue <= (_05PB70[x] + _10B70[x]) * 0.5f) && (hue > (_10B70[x] + _9B70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _10B70[y] - _10B70[x] ; + lbe = _10B70[y]; + correctL = true; + } else if (x < 50 && (hue <= (_10B70[x] + _9B70[x]) * 0.5f) && (hue > (_9B70[x] + _7B70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _9B70[y] - _9B70[x] ; + lbe = _9B70[y]; + correctL = true; + } else if (x < 50 && (hue <= (_9B70[x] + _7B70[x]) * 0.5f) && (hue > (_5B70[x] + _7B70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _7B70[y] - _7B70[x] ; + lbe = _7B70[y]; + correctL = true; + } else if (x < 50 && (hue <= (_5B70[x] + _7B70[x]) * 0.5f) && (hue > (_5B70[x] - 0.035f))) { + if (y > 49) { + y = 49; // + } + correction = _5B70[y] - _5B70[x] ; + lbe = _5B70[y]; + correctL = true; + } else if (x < 50 && (hue >= (_15PB70[x] - 0.035f)) && (hue < (_15PB70[x] + _3PB70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _15PB70[y] - _15PB70[x] ; + lbe = _15PB70[y]; + correctL = true; + } else if (x < 50 && (hue >= (_45PB70[x] + _3PB70[x]) * 0.5f) && (hue < (_6PB70[x] + _45PB70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _45PB70[y] - _45PB70[x] ; + lbe = _45PB70[y]; + correctL = true; + } else if (x < 50 && (hue >= (_6PB70[x] + _45PB70[x]) * 0.5f) && (hue < (_6PB70[x] + _75PB70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _6PB70[y] - _6PB70[x] ; + lbe = _6PB70[y]; + correctL = true; + } else if (x < 50 && (hue >= (_6PB70[x] + _75PB70[x]) * 0.5f) && (hue < (_9PB70[x] + _75PB70[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _75PB70[y] - _75PB70[x] ; + lbe = _75PB70[y]; + correctL = true; + } else if (x < 50 && (hue >= (_9PB70[x] + _75PB70[x]) * 0.5f) && (hue < (_9PB70[x] + 0.035f))) { + if (y > 49) { + y = 49; + } + correction = _9PB70[y] - _9PB70[x] ; + lbe = _9PB70[y]; + correctL = true; + } + } else if (lum < 85.f) { + if (x < 40 && (hue <= (_05PB80[x] + _15PB80[x]) * 0.5f) && (hue > (_05PB80[x] + _10B80[x]) * 0.5f)) { + if (y > 39) { + y = 39; + } + correction = _05PB80[y] - _05PB80[x] ; + lbe = _05PB80[y] ; + correctL = true; + } else if (x < 40 && (hue <= (_05PB80[x] + _10B80[x]) * 0.5f) && (hue > (_10B80[x] + _9B80[x]) * 0.5f)) { + if (y > 39) { + y = 39; + } + correction = _10B80[y] - _10B80[x] ; + lbe = _10B80[y]; + correctL = true; + } else if (x < 40 && (hue <= (_10B80[x] + _9B80[x]) * 0.5f) && (hue > (_9B80[x] + _7B80[x]) * 0.5f)) { + if (y > 39) { + y = 39; + } + correction = _9B80[y] - _9B80[x] ; + lbe = _9B80[y]; + correctL = true; + } else if (x < 50 &&(hue <= (_9B80[x] + _7B80[x]) * 0.5f) && (hue > (_5B80[x] + _7B80[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _7B80[y] - _7B80[x] ; + lbe = _7B80[y]; + correctL = true; + } else if (x < 50 && (hue <= (_5B80[x] + _7B80[x]) * 0.5f) && (hue > (_5B80[x] - 0.035f))) { + if (y > 49) { + y = 49; // + } + correction = _5B80[y] - _5B80[x] ; + lbe = _5B80[y]; + correctL = true; + } else if (x < 50 && (hue >= (_15PB80[x] - 0.035f)) && (hue < (_15PB80[x] + _3PB80[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _15PB80[y] - _15PB80[x] ; + lbe = _15PB80[y]; + correctL = true; + } else if (x < 50 && (hue >= (_45PB80[x] + _3PB80[x]) * 0.5f) && (hue < (_6PB80[x] + _45PB80[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _45PB80[y] - _45PB80[x] ; + lbe = _45PB80[y]; + correctL = true; + } else if (x < 50 && (hue >= (_6PB80[x] + _45PB80[x]) * 0.5f) && (hue < (_6PB80[x] + _75PB80[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _6PB80[y] - _6PB80[x] ; + lbe = _6PB80[y]; + correctL = true; + } else if (x < 50 && (hue >= (_6PB80[x] + _75PB80[x]) * 0.5f) && (hue < (_9PB80[x] + _75PB80[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _75PB80[y] - _75PB80[x] ; + lbe = _75PB80[y]; + correctL = true; + } else if (x < 50 && (hue >= (_9PB80[x] + _75PB80[x]) * 0.5f) && (hue < (_9PB80[x] + 0.035f))) { + if (y > 49) { + y = 49; + } + correction = _9PB80[y] - _9PB80[x] ; + lbe = _9PB80[y]; + correctL = true; + } + } + } + } else if (zone == 2) { //red yellow correction + if (lum > 15.f) { + if (lum < 25.f) { + if (x <= 45 && (hue <= (_10YR20[x] + 0.035f)) && (hue > (_10YR20[x] + _85YR20[x]) * 0.5f)) { + if (y > 49) { + y = 49; + } + correction = _10YR20[y] - _10YR20[x] ; + lbe = _10YR20[y]; + correctL = true; + } else if (x <= 45 && (hue <= (_85YR20[x] + _10YR20[x]) * 0.5f) && (hue > (_85YR20[x] + 0.035f))) { + if (y > 49) { + y = 49; + } + correction = _85YR20[y] - _85YR20[x] ; + lbe = _85YR20[y]; + correctL = true; + } + } else if (lum < 35.f) { + if (x < 85 && (hue <= (_10YR30[x] + 0.035f)) && (hue > (_10YR30[x] + _85YR30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10YR30[y] - _10YR30[x] ; + lbe = _10YR30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10YR30[x] + _85YR30[x]) * 0.5f) && (hue > (_85YR30[x] + _7YR30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _85YR30[y] - _85YR30[x] ; + lbe = _85YR30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_85YR30[x] + _7YR30[x]) * 0.5f) && (hue > (_7YR30[x] + _55YR30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _7YR30[y] - _7YR30[x] ; + lbe = _7YR30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_7YR30[x] + _55YR30[x]) * 0.5f) && (hue > (_55YR30[x] + _4YR30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _55YR30[y] - _55YR30[x] ; + lbe = _55YR30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_55YR30[x] + _4YR30[x]) * 0.5f) && (hue > (_4YR30[x] + _25YR30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _4YR30[y] - _4YR30[x] ; + lbe = _4YR30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_4YR30[x] + _25YR30[x]) * 0.5f) && (hue > (_25YR30[x] + _10R30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _25YR30[y] - _25YR30[x] ; + lbe = _25YR30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_25YR30[x] + _10R30[x]) * 0.5f) && (hue > (_10R30[x] + _9R30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10R30[y] - _10R30[x] ; + lbe = _10R30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10R30[x] + _9R30[x]) * 0.5f) && (hue > (_9R30[x] + _7R30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9R30[y] - _9R30[x] ; + lbe = _9R30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_9R30[x] + _7R30[x]) * 0.5f) && (hue > (_7R30[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + + correction = _7R30[y] - _7R30[x] ; + lbe = _7R30[y] ; + correctL = true; + } + } else if (lum < 45.f) { + if (x < 85 && (hue <= (_10YR40[x] + 0.035f)) && (hue > (_10YR40[x] + _85YR40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10YR40[y] - _10YR40[x] ; + lbe = _10YR40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10YR40[x] + _85YR40[x]) * 0.5f) && (hue > (_85YR40[x] + _7YR40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _85YR40[y] - _85YR40[x] ; + lbe = _85YR40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_85YR40[x] + _7YR40[x]) * 0.5f) && (hue > (_7YR40[x] + _55YR40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _7YR40[y] - _7YR40[x] ; + lbe = _7YR40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_7YR40[x] + _55YR40[x]) * 0.5f) && (hue > (_55YR40[x] + _4YR40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _55YR40[y] - _55YR40[x] ; + lbe = _55YR40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_55YR40[x] + _4YR40[x]) * 0.5f) && (hue > (_4YR40[x] + _25YR40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _4YR40[y] - _4YR40[x] ; + lbe = _4YR40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_4YR40[x] + _25YR40[x]) * 0.5f) && (hue > (_25YR40[x] + _10R40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _25YR40[y] - _25YR40[x] ; + lbe = _25YR40[y] ; + correctL = true; + } else if (x < 85 && (hue <= (_25YR40[x] + _10R40[x]) * 0.5f) && (hue > (_10R40[x] + _9R40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10R40[y] - _10R40[x] ; + lbe = _10R40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10R40[x] + _9R40[x]) * 0.5f) && (hue > (_9R40[x] + _7R40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9R40[y] - _9R40[x] ; + lbe = _9R40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_9R40[x] + _7R40[x]) * 0.5f) && (hue > (_7R40[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + correction = _7R40[y] - _7R40[x] ; + lbe = _7R40[y]; + correctL = true; + } + } else if (lum < 55.f) { + if (x < 85 && (hue <= (_10YR50[x] + 0.035f)) && (hue > (_10YR50[x] + _85YR50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10YR50[y] - _10YR50[x] ; + lbe = _10YR50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10YR50[x] + _85YR50[x]) * 0.5f) && (hue > (_85YR50[x] + _7YR50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _85YR50[y] - _85YR50[x] ; + lbe = _85YR50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_85YR50[x] + _7YR50[x]) * 0.5f) && (hue > (_7YR50[x] + _55YR50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _7YR50[y] - _7YR50[x] ; + lbe = _7YR50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_7YR50[x] + _55YR50[x]) * 0.5f) && (hue > (_55YR50[x] + _4YR50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _55YR50[y] - _55YR50[x] ; + lbe = _55YR50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_55YR50[x] + _4YR50[x]) * 0.5f) && (hue > (_4YR50[x] + _25YR50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _4YR50[y] - _4YR50[x] ; + lbe = _4YR50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_4YR50[x] + _25YR50[x]) * 0.5f) && (hue > (_25YR50[x] + _10R50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _25YR50[y] - _25YR50[x] ; + lbe = _25YR50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_25YR50[x] + _10R50[x]) * 0.5f) && (hue > (_10R50[x] + _9R50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10R50[y] - _10R50[x] ; + lbe = _10R50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10R50[x] + _9R50[x]) * 0.5f) && (hue > (_9R50[x] + _7R50[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9R50[y] - _9R50[x] ; + lbe = _9R50[y]; + correctL = true; + } else if (x < 85 && (hue <= (_9R50[x] + _7R50[x]) * 0.5f) && (hue > (_7R50[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + correction = _7R50[y] - _7R50[x] ; + lbe = _7R50[y]; + correctL = true; + } + } else if (lum < 65.f) { + if ((hue <= (_10YR60[x] + 0.035f)) && (hue > (_10YR60[x] + _85YR60[x]) * 0.5f)) { + correction = _10YR60[y] - _10YR60[x] ; + lbe = _10YR60[y]; + correctL = true; + } else if ((hue <= (_10YR60[x] + _85YR60[x]) * 0.5f) && (hue > (_85YR60[x] + _7YR60[x]) * 0.5f)) { + correction = _85YR60[y] - _85YR60[x] ; + lbe = _85YR60[y]; + correctL = true; + } else if ((hue <= (_85YR60[x] + _7YR60[x]) * 0.5f) && (hue > (_7YR60[x] + _55YR60[x]) * 0.5f)) { + correction = _7YR60[y] - _7YR60[x] ; + lbe = _7YR60[y]; + correctL = true; + } else if ((hue <= (_7YR60[x] + _55YR60[x]) * 0.5f) && (hue > (_55YR60[x] + _4YR60[x]) * 0.5f)) { + correction = _55YR60[y] - _55YR60[x] ; + lbe = _55YR60[y]; + correctL = true; + } else if ((hue <= (_55YR60[x] + _4YR60[x]) * 0.5f) && (hue > (_4YR60[x] + _25YR60[x]) * 0.5f)) { + correction = _4YR60[y] - _4YR60[x] ; + lbe = _4YR60[y]; + correctL = true; + } else if (x < 85 && (hue <= (_4YR60[x] + _25YR60[x]) * 0.5f) && (hue > (_25YR60[x] + _10R60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _25YR60[y] - _25YR60[x] ; + lbe = _25YR60[y]; + correctL = true; + } else if (x < 85 && (hue <= (_25YR60[x] + _10R60[x]) * 0.5f) && (hue > (_10R60[x] + _9R60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10R60[y] - _10R60[x] ; + lbe = _10R60[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10R60[x] + _9R60[x]) * 0.5f) && (hue > (_9R60[x] + _7R60[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9R60[y] - _9R60[x] ; + lbe = _9R60[y]; + correctL = true; + } else if (x < 85 && (hue <= (_9R60[x] + _7R60[x]) * 0.5f) && (hue > (_7R60[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + correction = _7R60[y] - _7R60[x] ; + lbe = _7R60[y]; + correctL = true; + } + } else if (lum < 75.f) { + if ((hue <= (_10YR70[x] + 0.035f)) && (hue > (_10YR70[x] + _85YR70[x]) * 0.5f)) { + correction = _10YR70[y] - _10YR70[x] ; + lbe = _10YR70[y]; + correctL = true; + } else if ((hue <= (_10YR70[x] + _85YR70[x]) * 0.5f) && (hue > (_85YR70[x] + _7YR70[x]) * 0.5f)) { + correction = _85YR70[y] - _85YR70[x] ; + lbe = _85YR70[y]; + correctL = true; + } else if ((hue <= (_85YR70[x] + _7YR70[x]) * 0.5f) && (hue > (_7YR70[x] + _55YR70[x]) * 0.5f)) { + correction = _7YR70[y] - _7YR70[x] ; + lbe = _7YR70[y]; + correctL = true; + } else if ((hue <= (_7YR70[x] + _55YR70[x]) * 0.5f) && (hue > (_55YR70[x] + _4YR70[x]) * 0.5f)) { + correction = _55YR70[y] - _55YR70[x] ; + lbe = _55YR70[y]; + correctL = true; + } else if ((hue <= (_55YR70[x] + _4YR70[x]) * 0.5f) && (hue > (_4YR70[x] + _25YR70[x]) * 0.5f)) { + correction = _4YR70[y] - _4YR70[x] ; + lbe = _4YR70[y]; + correctL = true; + } else if (x < 85 && (hue <= (_4YR70[x] + _25YR70[x]) * 0.5f) && (hue > (_25YR70[x] + _10R70[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _25YR70[y] - _25YR70[x] ; + lbe = _25YR70[y]; + correctL = true; + } else if (x < 85 && (hue <= (_25YR70[x] + _10R70[x]) * 0.5f) && (hue > (_10R70[x] + _9R70[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10R70[y] - _10R70[x] ; + lbe = _10R70[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10R70[x] + _9R70[x]) * 0.5f) && (hue > (_9R70[x] + _7R70[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _9R70[y] - _9R70[x] ; + lbe = _9R70[y] ; + correctL = true; + } else if (x < 85 && (hue <= (_9R70[x] + _7R70[x]) * 0.5f) && (hue > (_7R70[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + correction = _7R70[y] - _7R70[x] ; + lbe = _7R70[y]; + correctL = true; + } + } else if (lum < 85.f) { + if ((hue <= (_10YR80[x] + 0.035f)) && (hue > (_10YR80[x] + _85YR80[x]) * 0.5f)) { + correction = _10YR80[y] - _10YR80[x] ; + lbe = _10YR80[y]; + correctL = true; + } else if ((hue <= (_10YR80[x] + _85YR80[x]) * 0.5f) && (hue > (_85YR80[x] + _7YR80[x]) * 0.5f)) { + correction = _85YR80[y] - _85YR80[x] ; + lbe = _85YR80[y]; + } else if (x < 85 && (hue <= (_85YR80[x] + _7YR80[x]) * 0.5f) && (hue > (_7YR80[x] + _55YR80[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _7YR80[y] - _7YR80[x] ; + lbe = _7YR80[y]; + correctL = true; + } else if (x < 45 && (hue <= (_7YR80[x] + _55YR80[x]) * 0.5f) && (hue > (_55YR80[x] + _4YR80[x]) * 0.5f)) { + correction = _55YR80[y] - _55YR80[x] ; + lbe = _55YR80[y]; + correctL = true; + } else if (x < 45 && (hue <= (_55YR80[x] + _4YR80[x]) * 0.5f) && (hue > (_4YR80[x] - 0.035f))) { + if (y > 49) { + y = 49; + } + correction = _4YR80[y] - _4YR80[x] ; + lbe = _4YR80[y] ; + correctL = true; + } + } else if (lum < 95.f) { + if (x < 85 && (hue <= (_10YR90[x] + 0.035f)) && (hue > (_10YR90[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + correction = _10YR90[y] - _10YR90[x] ; + lbe = _10YR90[y]; + correctL = true; + } else if (x < 85 && hue <= (_85YR90[x] + 0.035f) && hue > (_85YR90[x] - 0.035f)) { + if (y > 89) { + y = 89; + } + correction = _85YR90[y] - _85YR90[x] ; + lbe = _85YR90[y]; + correctL = true; + } else if (x < 45 && (hue <= (_55YR90[x] + 0.035f) && (hue > (_55YR90[x] - 0.035f)))) { + if (y > 49) { + y = 49; + } + correction = _55YR90[y] - _55YR90[x] ; + lbe = _55YR90[y]; + correctL = true; + } + } + } + } else if (zone == 3) { // //Green yellow correction + if (lum >= 25.f) { + if (lum < 35.f) { + if ((hue <= (_7G30[x] + 0.035f)) && (hue > (_7G30[x] + _5G30[x]) * 0.5f)) { + correction = _7G30[y] - _7G30[x] ; + lbe = _7G30[y]; + correctL = true; + } else if ((hue <= (_7G30[x] + _5G30[x]) * 0.5f) && (hue > (_5G30[x] + _25G30[x]) * 0.5f)) { + correction = _5G30[y] - _5G30[x] ; + lbe = _5G30[y]; + correctL = true; + } else if ((hue <= (_25G30[x] + _5G30[x]) * 0.5f) && (hue > (_25G30[x] + _1G30[x]) * 0.5f)) { + correction = _25G30[y] - _25G30[x] ; + lbe = _25G30[y]; + correctL = true; + } else if ((hue <= (_1G30[x] + _25G30[x]) * 0.5f) && (hue > (_1G30[x] + _10GY30[x]) * 0.5f)) { + correction = _1G30[y] - _1G30[x] ; + lbe = _1G30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_1G30[x] + _10GY30[x]) * 0.5f) && (hue > (_10GY30[x] + _75GY30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10GY30[y] - _10GY30[x] ; + lbe = _10GY30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10GY30[x] + _75GY30[x]) * 0.5f) && (hue > (_75GY30[x] + _5GY30[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _75GY30[y] - _75GY30[x] ; + lbe = _75GY30[y]; + correctL = true; + } else if (x < 85 && (hue <= (_5GY30[x] + _75GY30[x]) * 0.5f) && (hue > (_5GY30[x] - 0.035f))) { + if (y > 89) { + y = 89; + } + correction = _5GY30[y] - _5GY30[x] ; + lbe = _5GY30[y] ; + correctL = true; + } + } else if (lum < 45.f) { + if ((hue <= (_7G40[x] + 0.035f)) && (hue > (_7G40[x] + _5G40[x]) * 0.5f)) { + correction = _7G40[y] - _7G40[x] ; + lbe = _7G40[y]; + correctL = true; + } else if ((hue <= (_7G40[x] + _5G40[x]) * 0.5f) && (hue > (_5G40[x] + _25G40[x]) * 0.5f)) { + correction = _5G40[y] - _5G40[x] ; + lbe = _5G40[y]; + correctL = true; + } else if ((hue <= (_25G40[x] + _5G40[x]) * 0.5f) && (hue > (_25G40[x] + _1G40[x]) * 0.5f)) { + correction = _25G40[y] - _25G40[x] ; + lbe = _25G40[y]; + correctL = true; + } else if ((hue <= (_1G40[x] + _25G40[x]) * 0.5f) && (hue > (_1G40[x] + _10GY40[x]) * 0.5f)) { + correction = _1G40[y] - _1G40[x] ; + lbe = _1G40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_1G40[x] + _10GY40[x]) * 0.5f) && (hue > (_10GY40[x] + _75GY40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _10GY40[y] - _10GY40[x] ; + lbe = _10GY40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_10GY40[x] + _75GY40[x]) * 0.5f) && (hue > (_75GY40[x] + _5GY40[x]) * 0.5f)) { + if (y > 89) { + y = 89; + } + correction = _75GY40[y] - _75GY40[x] ; + lbe = _75GY40[y]; + correctL = true; + } else if (x < 85 && (hue <= (_5GY40[x] + _75GY40[x]) * 0.5f) && (hue > (_5GY40[x] - 0.035f))) { + if (y > 89) { + y = 89; // + } + correction = _5GY40[y] - _5GY40[x] ; + lbe = _5GY40[y]; + correctL = true; + } + } else if (lum < 55.f) { + if ((hue <= (_7G50[x] + 0.035f)) && (hue > (_7G50[x] + _5G50[x]) * 0.5f)) { + correction = _7G50[y] - _7G50[x] ; + lbe = _7G50[y]; + correctL = true; + } else if ((hue <= (_7G50[x] + _5G50[x]) * 0.5f) && (hue > (_5G50[x] + _25G50[x]) * 0.5f)) { + correction = _5G50[y] - _5G50[x] ; + lbe = _5G50[y]; + correctL = true; + } else if ((hue <= (_25G50[x] + _5G50[x]) * 0.5f) && (hue > (_25G50[x] + _1G50[x]) * 0.5f)) { + correction = _25G50[y] - _25G50[x] ; + lbe = _25G50[y]; + correctL = true; + } else if ((hue <= (_1G50[x] + _25G50[x]) * 0.5f) && (hue > (_1G50[x] + _10GY50[x]) * 0.5f)) { + correction = _1G50[y] - _1G50[x] ; + lbe = _1G50[y]; + correctL = true; + } else if ((hue <= (_1G50[x] + _10GY50[x]) * 0.5f) && (hue > (_10GY50[x] + _75GY50[x]) * 0.5f)) { + correction = _10GY50[y] - _10GY50[x] ; + lbe = _10GY50[y]; + correctL = true; + } else if ((hue <= (_10GY50[x] + _75GY50[x]) * 0.5f) && (hue > (_75GY50[x] + _5GY50[x]) * 0.5f)) { + correction = _75GY50[y] - _75GY50[x] ; + lbe = _75GY50[y]; + correctL = true; + } else if ((hue <= (_5GY50[x] + _75GY50[x]) * 0.5f) && (hue > (_5GY50[x] - 0.035f))) { + correction = _5GY50[y] - _5GY50[x] ; + lbe = _5GY50[y]; + correctL = true; + } + } else if (lum < 65.f) { + if ((hue <= (_7G60[x] + 0.035f)) && (hue > (_7G60[x] + _5G60[x]) * 0.5f)) { + correction = _7G60[y] - _7G60[x] ; + lbe = _7G60[y]; + correctL = true; + } else if ((hue <= (_7G60[x] + _5G60[x]) * 0.5f) && (hue > (_5G60[x] + _25G60[x]) * 0.5f)) { + correction = _5G60[y] - _5G60[x] ; + lbe = _5G60[y]; + correctL = true; + } else if ((hue <= (_25G60[x] + _5G60[x]) * 0.5f) && (hue > (_25G60[x] + _1G60[x]) * 0.5f)) { + correction = _25G60[y] - _25G60[x] ; + lbe = _25G60[y]; + correctL = true; + } else if ((hue <= (_1G60[x] + _25G60[x]) * 0.5f) && (hue > (_1G60[x] + _10GY60[x]) * 0.5f)) { + correction = _1G60[y] - _1G60[x] ; + lbe = _1G60[y]; + correctL = true; + } else if ((hue <= (_1G60[x] + _10GY60[x]) * 0.5f) && (hue > (_10GY60[x] + _75GY60[x]) * 0.5f)) { + correction = _10GY60[y] - _10GY60[x] ; + lbe = _10GY60[y]; + correctL = true; + } else if ((hue <= (_10GY60[x] + _75GY60[x]) * 0.5f) && (hue > (_75GY60[x] + _5GY60[x]) * 0.5f)) { + correction = _75GY60[y] - _75GY60[x] ; + lbe = _75GY60[y] ; + correctL = true; + } else if ((hue <= (_5GY60[x] + _75GY60[x]) * 0.5f) && (hue > (_5GY60[x] - 0.035f))) { + correction = _5GY60[y] - _5GY60[x] ; + lbe = _5GY60[y]; + correctL = true; + } + } else if (lum < 75.f) { + if ((hue <= (_7G70[x] + 0.035f)) && (hue > (_7G70[x] + _5G70[x]) * 0.5f)) { + correction = _7G70[y] - _7G70[x] ; + lbe = _7G70[y]; + correctL = true; + } else if ((hue <= (_7G70[x] + _5G70[x]) * 0.5f) && (hue > (_5G70[x] + _25G70[x]) * 0.5f)) { + correction = _5G70[y] - _5G70[x] ; + lbe = _5G70[y]; + correctL = true; + } else if ((hue <= (_25G70[x] + _5G70[x]) * 0.5f) && (hue > (_25G70[x] + _1G70[x]) * 0.5f)) { + correction = _25G70[y] - _25G70[x] ; + lbe = _25G70[y]; + correctL = true; + } else if ((hue <= (_1G70[x] + _25G70[x]) * 0.5f) && (hue > (_1G70[x] + _10GY70[x]) * 0.5f)) { + correction = _1G70[y] - _1G70[x] ; + lbe = _1G70[y] ; + correctL = true; + } else if ((hue <= (_1G70[x] + _10GY70[x]) * 0.5f) && (hue > (_10GY70[x] + _75GY70[x]) * 0.5f)) { + correction = _10GY70[y] - _10GY70[x] ; + lbe = _10GY70[y]; + correctL = true; + } else if ((hue <= (_10GY70[x] + _75GY70[x]) * 0.5f) && (hue > (_75GY70[x] + _5GY70[x]) * 0.5f)) { + correction = _75GY70[y] - _75GY70[x] ; + lbe = _75GY70[y]; + correctL = true; + } else if ((hue <= (_5GY70[x] + _75GY70[x]) * 0.5f) && (hue > (_5GY70[x] - 0.035f))) { + correction = _5GY70[y] - _5GY70[x] ; + lbe = _5GY70[y]; + correctL = true; + } + } else if (lum < 85.f) { + if ((hue <= (_7G80[x] + 0.035f)) && (hue > (_7G80[x] + _5G80[x]) * 0.5f)) { + correction = _7G80[y] - _7G80[x] ; + lbe = _7G80[y]; + correctL = true; + } else if ((hue <= (_7G80[x] + _5G80[x]) * 0.5f) && (hue > (_5G80[x] + _25G80[x]) * 0.5f)) { + correction = _5G80[y] - _5G80[x] ; + lbe = _5G80[y]; + correctL = true; + } else if ((hue <= (_25G80[x] + _5G80[x]) * 0.5f) && (hue > (_25G80[x] + _1G80[x]) * 0.5f)) { + correction = _25G80[y] - _25G80[x] ; + lbe = _25G80[y]; + correctL = true; + } else if ((hue <= (_1G80[x] + _25G80[x]) * 0.5f) && (hue > (_1G80[x] + _10GY80[x]) * 0.5f)) { + correction = _1G80[y] - _1G80[x] ; + lbe = _1G80[y]; + correctL = true; + } else if ((hue <= (_1G80[x] + _10GY80[x]) * 0.5f) && (hue > (_10GY80[x] + _75GY80[x]) * 0.5f)) { + correction = _10GY80[y] - _10GY80[x] ; + lbe = _10GY80[y]; + correctL = true; + } else if ((hue <= (_10GY80[x] + _75GY80[x]) * 0.5f) && (hue > (_75GY80[x] + _5GY80[x]) * 0.5f)) { + correction = _75GY80[y] - _75GY80[x] ; + lbe = _75GY80[y]; + correctL = true; + } else if ((hue <= (_5GY80[x] + _75GY80[x]) * 0.5f) && (hue > (_5GY80[x] - 0.035f))) { + correction = _5GY80[y] - _5GY80[x] ; + lbe = _5GY80[y]; + correctL = true; + } + } + } + } else if (zone == 4) { //Red purple correction : only for L < 30 + if (lum > 5.f) { + if (lum < 15.f && x < 45) { + y = std::min(y, 44); + if ((hue <= (_5R10[x] + 0.035f)) && (hue > (_5R10[x] - 0.043f))) { + correction = _5R10[y] - _5R10[x] ; + lbe = _5R10[y]; + correctL = true; + } else if ((hue <= (_25R10[x] + 0.043f)) && (hue > (_25R10[x] + _10RP10[x]) * 0.5f)) { + correction = _25R10[y] - _25R10[x] ; + lbe = _25R10[y]; + correctL = true; + } else if ((hue <= (_25R10[x] + _10RP10[x]) * 0.5f) && (hue > (_10RP10[x] - 0.035f))) { + correction = _10RP10[y] - _10RP10[x] ; + lbe = _10RP10[y]; + correctL = true; + } + } else if (lum < 25.f && x < 70) { + y = std::min(y, 70); + if ((hue <= (_5R20[x] + 0.035f)) && (hue > (_5R20[x] + _25R20[x]) * 0.5f)) { + correction = _5R20[y] - _5R20[x] ; + lbe = _5R20[y]; + correctL = true; + } else if ((hue <= (_5R20[x] + _25R20[x]) * 0.5f) && (hue > (_10RP20[x] + _25R20[x]) * 0.5f)) { + correction = _25R20[y] - _25R20[x] ; + lbe = _25R20[y]; + correctL = true; + } else if ( (hue <= (_10RP20[x] + _25R20[x]) * 0.5f) && (hue > (_10RP20[x] - 0.035f))) { + correction = _10RP20[y] - _10RP20[x] ; + lbe = _10RP20[y]; + correctL = true; + } + } else if (lum < 35.f && x < 85) { + y = rtengine::min(y, 85); + if ((hue <= (_5R30[x] + 0.035f)) && (hue > (_5R30[x] + _25R30[x]) * 0.5f)) { + correction = _5R30[y] - _5R30[x] ; + lbe = _5R30[y]; + correctL = true; + } else if ((hue <= (_5R30[x] + _25R30[x]) * 0.5f) && (hue > (_10RP30[x] + _25R30[x]) * 0.5f)) { + correction = _25R30[y] - _25R30[x] ; + lbe = _25R30[y]; + correctL = true; + } else if ((hue <= (_10RP30[x] + _25R30[x]) * 0.5f) && (hue > (_10RP30[x] - 0.035f))) { + correction = _10RP30[y] - _10RP30[x] ; + lbe = _10RP30[y]; + correctL = true; + } + } + } + } + //end red purple +} +} diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 18fc18f58..56c6ac479 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -25,6 +25,7 @@ #include "dcp.h" #include "dfmanager.h" #include "ffmanager.h" +#include "iccmatrices.h" #include "iccstore.h" #include "imagefloat.h" #include "improcfun.h" diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 9da601e2a..e526f6e30 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -31,6 +31,7 @@ #include "colortemp.h" #include "curves.h" #include "dcp.h" +#include "iccmatrices.h" #include "iccstore.h" #include "image8.h" #include "improcfun.h" From 9a4ade6f203bbb459582b8c7706a509e937724c7 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 23 Jan 2020 22:18:46 +0100 Subject: [PATCH 13/38] devirtualize method calls by declaring classes and methods final --- rtengine/curves.h | 4 ++-- rtengine/iimage.h | 20 +++++++++---------- rtengine/image16.h | 2 +- rtengine/image8.h | 2 +- rtengine/imagedata.h | 4 ++-- rtengine/imagefloat.h | 2 +- rtengine/imagesource.h | 10 +++++----- rtengine/improccoordinator.h | 2 +- rtengine/processingjob.h | 2 +- rtengine/rawimagesource.h | 2 +- rtexif/pentaxattribs.cc | 2 +- rtexif/rtexif.h | 10 +++++----- rtexif/sonyminoltaattribs.cc | 4 ++-- rtgui/adjuster.h | 2 +- rtgui/batchqueueentry.h | 2 +- rtgui/batchtoolpanelcoord.h | 2 +- rtgui/coloredbar.h | 2 +- rtgui/coordinateadjuster.h | 2 +- rtgui/cropwindow.h | 2 +- rtgui/diagonalcurveeditorsubgroup.h | 2 +- rtgui/editcallbacks.h | 6 +++--- rtgui/exifpanel.h | 2 +- rtgui/filebrowser.h | 2 +- rtgui/filebrowserentry.h | 2 +- rtgui/filecatalog.h | 2 +- rtgui/flatcurveeditorsubgroup.h | 2 +- rtgui/guiutils.h | 30 ++++++++++++++--------------- rtgui/histogrampanel.h | 6 +++--- rtgui/iccprofilecreator.h | 2 +- rtgui/imagearea.h | 2 +- rtgui/imageareapanel.h | 2 +- rtgui/inspector.h | 2 +- rtgui/iptcpanel.h | 2 +- rtgui/lockablecolorpicker.h | 2 +- rtgui/mydiagonalcurve.h | 2 +- rtgui/myflatcurve.h | 2 +- rtgui/navigator.h | 2 +- rtgui/partialpastedlg.h | 2 +- rtgui/popupbutton.h | 2 +- rtgui/preferences.h | 2 +- rtgui/previewhandler.h | 2 +- rtgui/profilepanel.h | 2 +- rtgui/progressconnector.h | 2 +- rtgui/renamedlg.h | 2 +- rtgui/rtimage.h | 2 +- rtgui/rtwindow.h | 2 +- rtgui/saveasdlg.h | 2 +- rtgui/shcselector.h | 2 +- rtgui/splash.h | 4 ++-- rtgui/thresholdselector.h | 8 ++++---- rtgui/thumbbrowserbase.h | 8 ++++---- rtgui/toolpanel.h | 12 ++++++------ rtgui/toolpanelcoord.h | 4 ++-- 53 files changed, 104 insertions(+), 104 deletions(-) diff --git a/rtengine/curves.h b/rtengine/curves.h index bc8193b76..1f07e6dbe 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -454,7 +454,7 @@ public: virtual bool isIdentity () const = 0; }; -class DiagonalCurve : public Curve +class DiagonalCurve final : public Curve { protected: @@ -476,7 +476,7 @@ public: }; }; -class FlatCurve : public Curve, public rtengine::NonCopyable +class FlatCurve final : public Curve, public rtengine::NonCopyable { private: diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 7309dd91f..f44c01320 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -658,7 +658,7 @@ public: /* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image */ - void allocate (int W, int H) override + void allocate (int W, int H) override final { if (W == width && H == height) { @@ -746,7 +746,7 @@ public: } } - void rotate (int deg) override + void rotate (int deg) override final { if (deg == 90) { @@ -873,7 +873,7 @@ public: } } - void hflip () override + void hflip () override final { int width2 = width / 2; @@ -905,7 +905,7 @@ public: #endif } - void vflip () override + void vflip () override final { int height2 = height / 2; @@ -989,7 +989,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override final { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1328,7 +1328,7 @@ public: * If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image or to free up it's memory with "allocate (0,0);" */ - void allocate (int W, int H) override + void allocate (int W, int H) override final { if (W == width && H == height) { @@ -1382,7 +1382,7 @@ public: memcpy (dest->data, data, 3 * width * height * sizeof(T)); } - void rotate (int deg) override + void rotate (int deg) override final { if (deg == 90) { @@ -1516,7 +1516,7 @@ public: } } - void hflip () override + void hflip () override final { int width2 = width / 2; @@ -1552,7 +1552,7 @@ public: } } - void vflip () override + void vflip () override final { AlignedBuffer lBuffer(3 * width); @@ -1619,7 +1619,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override final { histogram.clear(); avg_r = avg_g = avg_b = 0.; diff --git a/rtengine/image16.h b/rtengine/image16.h index d0053cbfc..de9288f2d 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -29,7 +29,7 @@ namespace rtengine class Image8; class Imagefloat; -class Image16 : public IImage16, public ImageIO +class Image16 final : public IImage16, public ImageIO { public: diff --git a/rtengine/image8.h b/rtengine/image8.h index f125dccf8..c11d9d7fc 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -27,7 +27,7 @@ namespace rtengine { class Imagefloat; -class Image8 : public IImage8, public ImageIO +class Image8 final : public IImage8, public ImageIO { public: diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index ff8ed4b86..28d32c5f0 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -38,7 +38,7 @@ class TagDirectory; namespace rtengine { -class FrameData +class FrameData final { protected: @@ -95,7 +95,7 @@ public: int getRating () const; }; -class FramesData : public FramesMetaData { +class FramesData final : public FramesMetaData { private: // frame's root IFD, can be a file root IFD or a SUB-IFD std::vector> frames; diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 4a2b2f7e1..cd08daf70 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -34,7 +34,7 @@ class LabImage; /* * Image type used by most tools; expected range: [0.0 ; 65535.0] */ -class Imagefloat : public IImagefloat, public ImageIO +class Imagefloat final : public IImagefloat, public ImageIO { public: diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index e0c26aa9f..d1fa5896e 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -143,11 +143,11 @@ public: virtual void setProgressListener (ProgressListener* pl) {} - void increaseRef () override + void increaseRef () override final { references++; } - void decreaseRef () override + void decreaseRef () override final { references--; @@ -175,15 +175,15 @@ public: return dirpyrdenoiseExpComp; } // functions inherited from the InitialImage interface - Glib::ustring getFileName () override + Glib::ustring getFileName () override final { return fileName; } - cmsHPROFILE getEmbeddedProfile () override + cmsHPROFILE getEmbeddedProfile () override final { return embProfile; } - const FramesMetaData* getMetaData () override + const FramesMetaData* getMetaData () override final { return idata; } diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 96d1f80ce..724443ecd 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -55,7 +55,7 @@ class Crop; * but using this class' LUT and other precomputed parameters. The main preview area is displaying a non framed Crop object, * while detail windows are framed Crop objects. */ -class ImProcCoordinator : public StagedImageProcessor +class ImProcCoordinator final : public StagedImageProcessor { friend class Crop; diff --git a/rtengine/processingjob.h b/rtengine/processingjob.h index 6cdc6bd7c..9c3846958 100644 --- a/rtengine/processingjob.h +++ b/rtengine/processingjob.h @@ -24,7 +24,7 @@ namespace rtengine { -class ProcessingJobImpl : public ProcessingJob +class ProcessingJobImpl final : public ProcessingJob { public: diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index bd460c61b..6be02f6d6 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -37,7 +37,7 @@ class DiagonalCurve; class RetinextransmissionCurve; class RetinexgaintransmissionCurve; -class RawImageSource : public ImageSource +class RawImageSource final : public ImageSource { private: static DiagonalCurve *phaseOneIccCurve; diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 898150696..14f204b08 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -696,7 +696,7 @@ public: }; PAColorSpaceInterpreter paColorSpaceInterpreter; -class PALensTypeInterpreter : public IntLensInterpreter< int > +class PALensTypeInterpreter final: public IntLensInterpreter< int > { public: PALensTypeInterpreter () diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index c37533352..1a956a4a5 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -163,14 +163,14 @@ public: // Try to get the Tag in the current directory and in subdirectories // if lookUpward = true, it will scan the parents TagDirectory up to the root one, // but w/o looking into their subdirs - virtual Tag* findTag (const char* name, bool lookUpward = false) const; + Tag* findTag (const char* name, bool lookUpward = false) const; // Find a all Tags with the given name by scanning the whole tag tree std::vector findTags (const char* name); // Find a all Tags with the given ID by scanning the whole tag tree std::vector findTags (int ID); // Try to get the Tag in the current directory and in parent directories // (won't look into subdirs) - virtual Tag* findTagUpward (const char* name) const; + Tag* findTagUpward (const char* name) const; bool getXMPTagValue (const char* name, char* value) const; void keepTag (int ID); @@ -191,10 +191,10 @@ public: virtual TagDirectory* clone (TagDirectory* parent) const; void applyChange (const std::string &field, const Glib::ustring &value); - virtual void printAll (unsigned int level = 0) const; // reentrant debug function, keep level=0 on first call ! - virtual bool CPBDump (const Glib::ustring &commFName, const Glib::ustring &imageFName, const Glib::ustring &profileFName, const Glib::ustring &defaultPParams, + void printAll (unsigned int level = 0) const; // reentrant debug function, keep level=0 on first call ! + bool CPBDump (const Glib::ustring &commFName, const Glib::ustring &imageFName, const Glib::ustring &profileFName, const Glib::ustring &defaultPParams, const CacheImageData* cfs, const bool flagMode, Glib::KeyFile *keyFile = nullptr, Glib::ustring tagDirName = "") const; - virtual void sort (); + void sort (); }; // a table of tags: id are offset from beginning and not identifiers diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index 4410a4051..82323cede 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -541,7 +541,7 @@ public: }; SAAntiBlurInterpreter saAntiBlurInterpreter; -class SALensIDInterpreter : public IntLensInterpreter +class SALensIDInterpreter final : public IntLensInterpreter { public: SALensIDInterpreter () @@ -1192,7 +1192,7 @@ public: }; SALensIDInterpreter saLensIDInterpreter; -class SALensID2Interpreter : public IntLensInterpreter< int > +class SALensID2Interpreter final : public IntLensInterpreter< int > { public: SALensID2Interpreter () diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index 59250bc81..143268786 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -33,7 +33,7 @@ public: typedef double(*double2double_fun)(double val); -class Adjuster : public Gtk::Grid +class Adjuster final : public Gtk::Grid { protected: diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index c4cd48615..f06b65046 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -50,7 +50,7 @@ struct BatchQueueEntryIdleHelper { int pending; }; -class BatchQueueEntry : public ThumbBrowserEntryBase, public BQEntryUpdateListener, public rtengine::NonCopyable +class BatchQueueEntry final : public ThumbBrowserEntryBase, public BQEntryUpdateListener, public rtengine::NonCopyable { guint8* opreview; diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index 7a5fe77ed..ea11f97c8 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -28,7 +28,7 @@ class FilePanel; class Thumbnail; -class BatchToolPanelCoordinator : +class BatchToolPanelCoordinator final : public ToolPanelCoordinator, public FileSelectionChangeListener, public BatchPParamsChangeListener, diff --git a/rtgui/coloredbar.h b/rtgui/coloredbar.h index 6cc121cd5..69cfa47d1 100644 --- a/rtgui/coloredbar.h +++ b/rtgui/coloredbar.h @@ -30,7 +30,7 @@ * the bar itself, i.e. use render_background (depending on its Gtk::Style) * */ -class ColoredBar : private BackBuffer, public ColorCaller +class ColoredBar final : private BackBuffer, public ColorCaller { private: diff --git a/rtgui/coordinateadjuster.h b/rtgui/coordinateadjuster.h index 70fe42233..24edc707a 100644 --- a/rtgui/coordinateadjuster.h +++ b/rtgui/coordinateadjuster.h @@ -69,7 +69,7 @@ public: * * The position of the Axis in the vector will be used in the communication between the Adjuster and the Provider to identify the Axis */ -class CoordinateAdjuster : public Gtk::FlowBox +class CoordinateAdjuster final : public Gtk::FlowBox { public: diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h index 491124ad5..623653d2d 100644 --- a/rtgui/cropwindow.h +++ b/rtgui/cropwindow.h @@ -54,7 +54,7 @@ public: }; class ImageArea; -class CropWindow : public LWButtonListener, public CropDisplayHandler, public EditCoordSystem, public ObjectMOBuffer, public rtengine::NonCopyable +class CropWindow final : public LWButtonListener, public CropDisplayHandler, public EditCoordSystem, public ObjectMOBuffer, public rtengine::NonCopyable { static bool initialized; diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index a077da807..9b1f67462 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -27,7 +27,7 @@ class DiagonalCurveEditor; class MyDiagonalCurve; -class DiagonalCurveEditorSubGroup : +class DiagonalCurveEditorSubGroup final : public CurveEditorSubGroup, public SHCListener, public AdjusterListener, diff --git a/rtgui/editcallbacks.h b/rtgui/editcallbacks.h index c2efcf53e..ee357c2f7 100644 --- a/rtgui/editcallbacks.h +++ b/rtgui/editcallbacks.h @@ -129,19 +129,19 @@ public: @param picked True if the cursor is still above the the same object than on button pressed and with the same modifier keys. If false, the user moved the cursor away or the modifier key is different, so the element is considered as NOT selected. @return true if the preview has to be redrawn, false otherwise */ - virtual bool pick1 (bool picked); + bool pick1 (bool picked); /** @brief Triggered when the user is releasing mouse button 2 while in action==ES_ACTION_PICKING mode @param picked True if the cursor is still above the the same object than on button pressed and with the same modifier keys. If false, the user moved the cursor away or the modifier key is different, so the element is considered as NOT selected. @return true if the preview has to be redrawn, false otherwise */ - virtual bool pick2 (bool picked); + bool pick2 (bool picked); /** @brief Triggered when the user is releasing mouse button 3 while in action==ES_ACTION_PICKING mode @param picked True if the cursor is still above the the same object than on button pressed and with the same modifier keys. If false, the user moved the cursor away or the modifier key is different, so the element is considered as NOT selected. @return true if the preview has to be redrawn, false otherwise */ - virtual bool pick3 (bool picked); + bool pick3 (bool picked); /** @brief Get the geometry to be shown to the user */ const std::vector& getVisibleGeometry (); diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h index 0894c21ad..d336d83f9 100644 --- a/rtgui/exifpanel.h +++ b/rtgui/exifpanel.h @@ -25,7 +25,7 @@ #include "toolpanel.h" #include "../rtexif/rtexif.h" -class ExifPanel : +class ExifPanel final : public Gtk::VBox, public ToolPanel { diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 86ab59395..53f3f1f2b 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -56,7 +56,7 @@ public: /* * Class handling actions common to all thumbnails of the file browser */ -class FileBrowser : public ThumbBrowserBase, +class FileBrowser final : public ThumbBrowserBase, public LWButtonListener, public ExportPanelListener, public ProfileStoreListener, diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h index ea5140ed6..67b953514 100644 --- a/rtgui/filebrowserentry.h +++ b/rtgui/filebrowserentry.h @@ -43,7 +43,7 @@ struct FileBrowserEntryIdleHelper { }; class FileThumbnailButtonSet; -class FileBrowserEntry : public ThumbBrowserEntryBase, +class FileBrowserEntry final : public ThumbBrowserEntryBase, public ThumbnailListener, public ThumbImageUpdateListener, public rtengine::NonCopyable diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index 8f7e5618f..b94d049d0 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -43,7 +43,7 @@ class ToolBar; * - handling the thumbnail toolbar, * - monitoring the directory (for any change) */ -class FileCatalog : public Gtk::VBox, +class FileCatalog final : public Gtk::VBox, public PreviewLoaderListener, public FilterPanelListener, public FileBrowserListener, diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index c358dde3b..865a0ef83 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -27,7 +27,7 @@ class FlatCurveEditor; class MyFlatCurve; -class FlatCurveEditorSubGroup: +class FlatCurveEditorSubGroup final : public CurveEditorSubGroup, public rtengine::NonCopyable { diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 97c72513b..d4c91734a 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -92,7 +92,7 @@ private: * } * */ -class GThreadLock +class GThreadLock final { public: GThreadLock() @@ -110,7 +110,7 @@ public: * * Will relock on destruction. */ -class GThreadUnLock +class GThreadUnLock final { public: GThreadUnLock() @@ -125,7 +125,7 @@ public: #pragma GCC diagnostic pop -class ConnectionBlocker +class ConnectionBlocker final { public: explicit ConnectionBlocker (Gtk::Widget *associatedWidget, sigc::connection& connection) : connection (associatedWidget ? &connection : nullptr), wasBlocked(false) @@ -152,7 +152,7 @@ private: /** * @brief Glue box to control visibility of the MyExpender's content ; also handle the frame around it */ -class ExpanderBox: public Gtk::EventBox +class ExpanderBox final : public Gtk::EventBox { private: Gtk::Container *pC; @@ -185,7 +185,7 @@ public: * * Warning: once you've instantiated this class with a text label or a widget label, you won't be able to revert to the other solution. */ -class MyExpander : public Gtk::VBox +class MyExpander final : public Gtk::VBox { public: typedef sigc::signal type_signal_enabled_toggled; @@ -295,7 +295,7 @@ public: /** * @brief subclass of Gtk::ScrolledWindow in order to handle the scrollwheel */ -class MyScrolledWindow : public Gtk::ScrolledWindow +class MyScrolledWindow final : public Gtk::ScrolledWindow { bool on_scroll_event (GdkEventScroll* event) override; @@ -310,7 +310,7 @@ public: /** * @brief subclass of Gtk::ScrolledWindow in order to handle the large toolbars (wider than available space) */ -class MyScrolledToolbar : public Gtk::ScrolledWindow +class MyScrolledToolbar final : public Gtk::ScrolledWindow { bool on_scroll_event (GdkEventScroll* event) override; @@ -340,7 +340,7 @@ public: /** * @brief subclass of Gtk::ComboBoxText in order to handle the scrollwheel */ -class MyComboBoxText : public Gtk::ComboBoxText +class MyComboBoxText final : public Gtk::ComboBoxText { int naturalWidth, minimumWidth; sigc::connection myConnection; @@ -360,7 +360,7 @@ public: /** * @brief subclass of Gtk::SpinButton in order to handle the scrollwheel */ -class MySpinButton : public Gtk::SpinButton +class MySpinButton final : public Gtk::SpinButton { protected: @@ -375,7 +375,7 @@ public: /** * @brief subclass of Gtk::HScale in order to handle the scrollwheel */ -class MyHScale : public Gtk::HScale +class MyHScale final : public Gtk::HScale { bool on_scroll_event (GdkEventScroll* event) override; @@ -385,7 +385,7 @@ class MyHScale : public Gtk::HScale /** * @brief subclass of Gtk::FileChooserButton in order to handle the scrollwheel */ -class MyFileChooserButton: public Gtk::Button { +class MyFileChooserButton final : public Gtk::Button { private: void show_chooser(); @@ -473,14 +473,14 @@ typedef enum RTNav { /** * @brief Handle the switch between text and image to be displayed in the HBox (to be used in a button/toolpanel) */ -class TextOrIcon : public Gtk::HBox +class TextOrIcon final : public Gtk::HBox { public: TextOrIcon (const Glib::ustring &filename, const Glib::ustring &labelTx, const Glib::ustring &tooltipTx); }; -class MyImageMenuItem : public Gtk::MenuItem +class MyImageMenuItem final : public Gtk::MenuItem { private: Gtk::Grid *box; @@ -493,7 +493,7 @@ public: const Gtk::Label* getLabel () const; }; -class MyProgressBar : public Gtk::ProgressBar +class MyProgressBar final : public Gtk::ProgressBar { private: int w; @@ -512,7 +512,7 @@ public: /** * @brief Define a gradient milestone */ -class GradientMilestone +class GradientMilestone final { public: double position; diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h index 4fd21bcc2..cec44ed03 100644 --- a/rtgui/histogrampanel.h +++ b/rtgui/histogrampanel.h @@ -53,7 +53,7 @@ public: double log (double vsize, double val); }; -class HistogramRGBArea : public Gtk::DrawingArea, public BackBuffer, private HistogramScaling, public rtengine::NonCopyable +class HistogramRGBArea final : public Gtk::DrawingArea, public BackBuffer, private HistogramScaling, public rtengine::NonCopyable { private: typedef const double (*TMatrix)[3]; @@ -116,7 +116,7 @@ public: virtual void toggleButtonMode() = 0; }; -class HistogramArea : public Gtk::DrawingArea, public BackBuffer, private HistogramScaling, public rtengine::NonCopyable +class HistogramArea final : public Gtk::DrawingArea, public BackBuffer, private HistogramScaling, public rtengine::NonCopyable { public: typedef sigc::signal type_signal_factor_changed; @@ -174,7 +174,7 @@ private: void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; -class HistogramPanel : public Gtk::Grid, public PointerMotionListener, public DrawModeListener, public rtengine::NonCopyable +class HistogramPanel final : public Gtk::Grid, public PointerMotionListener, public DrawModeListener, public rtengine::NonCopyable { protected: diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 2cd19e14f..8ee46a71d 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -27,7 +27,7 @@ class RTWindow; -class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener +class ICCProfileCreator final : public Gtk::Dialog, public AdjusterListener { private: diff --git a/rtgui/imagearea.h b/rtgui/imagearea.h index 28b52dcd2..586bba7a7 100644 --- a/rtgui/imagearea.h +++ b/rtgui/imagearea.h @@ -34,7 +34,7 @@ class ImageAreaPanel; -class ImageArea : +class ImageArea final : public Gtk::DrawingArea, public CropWindowListener, public EditDataProvider, diff --git a/rtgui/imageareapanel.h b/rtgui/imageareapanel.h index 831371dbb..f52ca9060 100644 --- a/rtgui/imageareapanel.h +++ b/rtgui/imageareapanel.h @@ -22,7 +22,7 @@ class ImageArea; -class ImageAreaPanel : +class ImageAreaPanel final : public Gtk::VBox { diff --git a/rtgui/inspector.h b/rtgui/inspector.h index 8338259bf..1526f90be 100644 --- a/rtgui/inspector.h +++ b/rtgui/inspector.h @@ -40,7 +40,7 @@ public: //~InspectorBuffer(); }; -class Inspector : public Gtk::DrawingArea +class Inspector final : public Gtk::DrawingArea { private: diff --git a/rtgui/iptcpanel.h b/rtgui/iptcpanel.h index 15d117f87..100904d1a 100644 --- a/rtgui/iptcpanel.h +++ b/rtgui/iptcpanel.h @@ -25,7 +25,7 @@ #include "guiutils.h" #include "toolpanel.h" -class IPTCPanel : +class IPTCPanel final : public Gtk::VBox, public ToolPanel { diff --git a/rtgui/lockablecolorpicker.h b/rtgui/lockablecolorpicker.h index 77d2e8e9f..baeea41ef 100644 --- a/rtgui/lockablecolorpicker.h +++ b/rtgui/lockablecolorpicker.h @@ -33,7 +33,7 @@ public: virtual void switchPickerVisibility(bool isVisible) = 0; }; -class LockableColorPicker : BackBuffer +class LockableColorPicker final : BackBuffer { public: enum class Size { diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index b38373006..b2b83c02e 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -41,7 +41,7 @@ public: std::vector x, y; // in case of parametric curves the curve parameters are stored in vector x. In other cases these vectors store the coordinates of the bullets. }; -class MyDiagonalCurve : public MyCurve +class MyDiagonalCurve final : public MyCurve { private: IdleRegister idle_register; diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index 88d651a05..5da1d09ad 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -66,7 +66,7 @@ public: double centerY; }; -class MyFlatCurve : public MyCurve +class MyFlatCurve final : public MyCurve { protected: diff --git a/rtgui/navigator.h b/rtgui/navigator.h index c1c23c6dc..e9d40e309 100644 --- a/rtgui/navigator.h +++ b/rtgui/navigator.h @@ -25,7 +25,7 @@ class PreviewWindow; -class Navigator : +class Navigator final : public Gtk::Frame, public PointerMotionListener { diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 1403e7c1b..75e18e83c 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -34,7 +34,7 @@ class ProcParams; struct ParamsEdited; -class PartialPasteDlg : public Gtk::Dialog +class PartialPasteDlg final : public Gtk::Dialog { public: diff --git a/rtgui/popupbutton.h b/rtgui/popupbutton.h index 87b1b73a6..a67339a9f 100644 --- a/rtgui/popupbutton.h +++ b/rtgui/popupbutton.h @@ -24,7 +24,7 @@ #include "popupcommon.h" -class PopUpButton : +class PopUpButton final : public Gtk::Button, public PopUpCommon { diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 76a104ffa..a6cbe7939 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -29,7 +29,7 @@ class RTWindow; class Splash; -class Preferences : +class Preferences final : public Gtk::Dialog, public ProfileStoreListener { diff --git a/rtgui/previewhandler.h b/rtgui/previewhandler.h index d9c91f6ad..4fd9a1e82 100644 --- a/rtgui/previewhandler.h +++ b/rtgui/previewhandler.h @@ -44,7 +44,7 @@ struct PreviewHandlerIdleHelper { int pending; }; -class PreviewHandler : public rtengine::PreviewImageListener, public rtengine::NonCopyable +class PreviewHandler final : public rtengine::PreviewImageListener, public rtengine::NonCopyable { private: friend int setImageUI (void* data); diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index b3c968682..c3a125c49 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -49,7 +49,7 @@ class PartialProfile; } class RTImage; -class ProfilePanel : +class ProfilePanel final : public Gtk::Grid, public PParamsChangeListener, public ProfileStoreListener, diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h index f4d1d8f7e..90c9f67f0 100644 --- a/rtgui/progressconnector.h +++ b/rtgui/progressconnector.h @@ -28,7 +28,7 @@ #undef THREAD_PRIORITY_NORMAL -class PLDBridge : +class PLDBridge final : public rtengine::ProgressListener { public: diff --git a/rtgui/renamedlg.h b/rtgui/renamedlg.h index f9447fbac..3c92965f8 100644 --- a/rtgui/renamedlg.h +++ b/rtgui/renamedlg.h @@ -26,7 +26,7 @@ class CacheImageData; -class RenameDialog : +class RenameDialog final : public Gtk::Dialog { diff --git a/rtgui/rtimage.h b/rtgui/rtimage.h index b68becd82..eb1930d28 100644 --- a/rtgui/rtimage.h +++ b/rtgui/rtimage.h @@ -25,7 +25,7 @@ /** * @brief A derived class of Gtk::Image in order to handle theme-related icon sets. */ -class RTImage : public Gtk::Image, public RTScalable +class RTImage final : public Gtk::Image, public RTScalable { static double dpiBack; // used to keep track of master dpi change static int scaleBack; // used to keep track of master scale change diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index 4791ac6c1..c493c2db4 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -35,7 +35,7 @@ class BatchQueuePanel; class EditorPanel; class FilePanel; class PLDBridge; -class RTWindow : +class RTWindow final : public Gtk::Window, public rtengine::ProgressListener, public rtengine::NonCopyable diff --git a/rtgui/saveasdlg.h b/rtgui/saveasdlg.h index 448b37fd7..445452a54 100644 --- a/rtgui/saveasdlg.h +++ b/rtgui/saveasdlg.h @@ -22,7 +22,7 @@ #include "saveformatpanel.h" -class SaveAsDialog : +class SaveAsDialog final : public Gtk::Dialog, public FormatChangeListener { diff --git a/rtgui/shcselector.h b/rtgui/shcselector.h index 5c4421e0a..e03ca8e06 100644 --- a/rtgui/shcselector.h +++ b/rtgui/shcselector.h @@ -29,7 +29,7 @@ public: virtual void shcChanged() = 0; }; -class SHCSelector : public Gtk::DrawingArea, BackBuffer +class SHCSelector final : public Gtk::DrawingArea, BackBuffer { protected: diff --git a/rtgui/splash.h b/rtgui/splash.h index 363c51489..bc63cef91 100644 --- a/rtgui/splash.h +++ b/rtgui/splash.h @@ -20,7 +20,7 @@ #include -class SplashImage : +class SplashImage final : public Gtk::DrawingArea { @@ -39,7 +39,7 @@ public: }; //class Splash : public Gtk::Window { -class Splash : public Gtk::Dialog +class Splash final : public Gtk::Dialog { private: diff --git a/rtgui/thresholdselector.h b/rtgui/thresholdselector.h index f948b56ad..886b82fbd 100644 --- a/rtgui/thresholdselector.h +++ b/rtgui/thresholdselector.h @@ -113,10 +113,10 @@ protected: void updateBackBuffer(); Gtk::SizeRequestMode get_request_mode_vfunc () const override; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override final; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override final; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override final; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override final; void on_realize () override; bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; bool on_button_press_event (GdkEventButton* event) override; diff --git a/rtgui/thumbbrowserbase.h b/rtgui/thumbbrowserbase.h index b4caac0a9..e1f24594c 100644 --- a/rtgui/thumbbrowserbase.h +++ b/rtgui/thumbbrowserbase.h @@ -60,10 +60,10 @@ class ThumbBrowserBase : bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; Gtk::SizeRequestMode get_request_mode_vfunc () const override; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override final; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override final; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override final; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override final; bool on_button_press_event (GdkEventButton* event) override; bool on_button_release_event (GdkEventButton* event) override; diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index aecf1f39f..069654128 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -143,7 +143,7 @@ public: this->batchMode = batchMode; } - virtual Glib::ustring getToolName () { + Glib::ustring getToolName () { return toolName; } }; @@ -164,11 +164,11 @@ public: FoldableToolPanel(Gtk::Box* content, Glib::ustring toolName, Glib::ustring UILabel, bool need11 = false, bool useEnabled = false); - MyExpander* getExpander() override + MyExpander* getExpander() override final { return exp; } - void setExpanded (bool expanded) override + void setExpanded (bool expanded) override final { if (exp) { exp->set_expanded( expanded ); @@ -186,7 +186,7 @@ public: exp->show(); } } - bool getExpanded () override + bool getExpanded () override final { if (exp) { return exp->get_expanded(); @@ -194,11 +194,11 @@ public: return false; } - void setParent (Gtk::Box* parent) override + void setParent (Gtk::Box* parent) override final { parentContainer = parent; } - Gtk::Box* getParent () override + Gtk::Box* getParent () override final { return parentContainer; } diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 4313f6d12..17f14673d 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -318,7 +318,7 @@ public: int getSpotWBRectSize() const override; void cropSelectionReady() override; void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr) override; - ToolBar* getToolBar() const override; + ToolBar* getToolBar() const override final; CropGUIListener* startCropEditing(Thumbnail* thm = nullptr) override; void updateTPVScrollbar (bool hide); @@ -326,7 +326,7 @@ public: // ToolBarListener interface void toolSelected (ToolMode tool) override; - void editModeSwitchedOff () override; + void editModeSwitchedOff () override final; void setEditProvider (EditDataProvider *provider); From 0d2ffb5e611629872a7a985f466e9a0cda6a7f35 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 24 Jan 2020 14:53:41 +0100 Subject: [PATCH 14/38] more final fixes --- rtengine/camconst.h | 4 ++-- rtengine/cieimage.h | 2 +- rtengine/dcrop.h | 2 +- rtengine/dfmanager.h | 4 ++-- rtengine/ffmanager.h | 4 ++-- rtengine/iccstore.h | 4 ++-- rtengine/iimage.h | 20 ++++++++++---------- rtengine/imagesource.h | 10 +++++----- rtengine/labimage.h | 2 +- rtgui/thresholdselector.h | 8 ++++---- rtgui/thumbbrowserbase.h | 8 ++++---- rtgui/toolpanel.h | 10 +++++----- rtgui/toolpanelcoord.h | 6 +++--- 13 files changed, 42 insertions(+), 42 deletions(-) diff --git a/rtengine/camconst.h b/rtengine/camconst.h index 1096e1767..c014a3322 100644 --- a/rtengine/camconst.h +++ b/rtengine/camconst.h @@ -14,7 +14,7 @@ struct camera_const_levels { int levels[4]; }; -class CameraConst +class CameraConst final { private: std::string make_model; @@ -56,7 +56,7 @@ public: void update_globalGreenEquilibration(bool other); }; -class CameraConstantsStore +class CameraConstantsStore final { private: std::map mCameraConstants; diff --git a/rtengine/cieimage.h b/rtengine/cieimage.h index fea675cd4..329c0ba74 100644 --- a/rtengine/cieimage.h +++ b/rtengine/cieimage.h @@ -23,7 +23,7 @@ namespace rtengine { -class CieImage : +class CieImage final : public NonCopyable { private: diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h index c65c1e72f..8feeb4f90 100644 --- a/rtengine/dcrop.h +++ b/rtengine/dcrop.h @@ -35,7 +35,7 @@ using namespace procparams; class ImProcCoordinator; -class Crop : public DetailedCrop, public PipetteBuffer +class Crop final : public DetailedCrop, public PipetteBuffer { protected: diff --git a/rtengine/dfmanager.h b/rtengine/dfmanager.h index 216dcfc53..b23981ffb 100644 --- a/rtengine/dfmanager.h +++ b/rtengine/dfmanager.h @@ -31,7 +31,7 @@ namespace rtengine { class RawImage; -class dfInfo +class dfInfo final { public: @@ -74,7 +74,7 @@ protected: void updateRawImage(); }; -class DFManager +class DFManager final { public: void init(const Glib::ustring &pathname); diff --git a/rtengine/ffmanager.h b/rtengine/ffmanager.h index 80ef5fa1c..f3303f12b 100644 --- a/rtengine/ffmanager.h +++ b/rtengine/ffmanager.h @@ -29,7 +29,7 @@ namespace rtengine { class RawImage; -class ffInfo +class ffInfo final { public: @@ -71,7 +71,7 @@ protected: void updateRawImage(); }; -class FFManager +class FFManager final { public: void init(const Glib::ustring &pathname); diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h index 731a155bb..117124122 100644 --- a/rtengine/iccstore.h +++ b/rtengine/iccstore.h @@ -39,7 +39,7 @@ namespace procparams typedef const double(*TMatrix)[3]; -class ProfileContent +class ProfileContent final { public: ProfileContent(); @@ -54,7 +54,7 @@ private: std::string data; }; -class ICCStore +class ICCStore final { public: enum class ProfileType { diff --git a/rtengine/iimage.h b/rtengine/iimage.h index f44c01320..c4e6b7d14 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -658,7 +658,7 @@ public: /* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image */ - void allocate (int W, int H) override final + void allocate (int W, int H) final { if (W == width && H == height) { @@ -746,7 +746,7 @@ public: } } - void rotate (int deg) override final + void rotate (int deg) final { if (deg == 90) { @@ -873,7 +873,7 @@ public: } } - void hflip () override final + void hflip () final { int width2 = width / 2; @@ -905,7 +905,7 @@ public: #endif } - void vflip () override final + void vflip () final { int height2 = height / 2; @@ -989,7 +989,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override final + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const final { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1328,7 +1328,7 @@ public: * If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image or to free up it's memory with "allocate (0,0);" */ - void allocate (int W, int H) override final + void allocate (int W, int H) final { if (W == width && H == height) { @@ -1382,7 +1382,7 @@ public: memcpy (dest->data, data, 3 * width * height * sizeof(T)); } - void rotate (int deg) override final + void rotate (int deg) final { if (deg == 90) { @@ -1516,7 +1516,7 @@ public: } } - void hflip () override final + void hflip () final { int width2 = width / 2; @@ -1552,7 +1552,7 @@ public: } } - void vflip () override final + void vflip () final { AlignedBuffer lBuffer(3 * width); @@ -1619,7 +1619,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override final + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const final { histogram.clear(); avg_r = avg_g = avg_b = 0.; diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index d1fa5896e..75b160e10 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -143,11 +143,11 @@ public: virtual void setProgressListener (ProgressListener* pl) {} - void increaseRef () override final + void increaseRef () final { references++; } - void decreaseRef () override final + void decreaseRef () final { references--; @@ -175,15 +175,15 @@ public: return dirpyrdenoiseExpComp; } // functions inherited from the InitialImage interface - Glib::ustring getFileName () override final + Glib::ustring getFileName () final { return fileName; } - cmsHPROFILE getEmbeddedProfile () override final + cmsHPROFILE getEmbeddedProfile () final { return embProfile; } - const FramesMetaData* getMetaData () override final + const FramesMetaData* getMetaData () final { return idata; } diff --git a/rtengine/labimage.h b/rtengine/labimage.h index 79f003b07..7140d9de0 100644 --- a/rtengine/labimage.h +++ b/rtengine/labimage.h @@ -23,7 +23,7 @@ namespace rtengine { -class LabImage +class LabImage final { private: void allocLab(size_t w, size_t h); diff --git a/rtgui/thresholdselector.h b/rtgui/thresholdselector.h index 886b82fbd..4ae86560e 100644 --- a/rtgui/thresholdselector.h +++ b/rtgui/thresholdselector.h @@ -113,10 +113,10 @@ protected: void updateBackBuffer(); Gtk::SizeRequestMode get_request_mode_vfunc () const override; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override final; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override final; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override final; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override final; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const final; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const final; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const final; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const final; void on_realize () override; bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; bool on_button_press_event (GdkEventButton* event) override; diff --git a/rtgui/thumbbrowserbase.h b/rtgui/thumbbrowserbase.h index e1f24594c..69017b183 100644 --- a/rtgui/thumbbrowserbase.h +++ b/rtgui/thumbbrowserbase.h @@ -60,10 +60,10 @@ class ThumbBrowserBase : bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; Gtk::SizeRequestMode get_request_mode_vfunc () const override; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override final; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override final; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override final; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override final; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const final; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const final; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const final; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const final; bool on_button_press_event (GdkEventButton* event) override; bool on_button_release_event (GdkEventButton* event) override; diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 069654128..12b3eebcc 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -164,11 +164,11 @@ public: FoldableToolPanel(Gtk::Box* content, Glib::ustring toolName, Glib::ustring UILabel, bool need11 = false, bool useEnabled = false); - MyExpander* getExpander() override final + MyExpander* getExpander() final { return exp; } - void setExpanded (bool expanded) override final + void setExpanded (bool expanded) final { if (exp) { exp->set_expanded( expanded ); @@ -186,7 +186,7 @@ public: exp->show(); } } - bool getExpanded () override final + bool getExpanded () final { if (exp) { return exp->get_expanded(); @@ -194,11 +194,11 @@ public: return false; } - void setParent (Gtk::Box* parent) override final + void setParent (Gtk::Box* parent) final { parentContainer = parent; } - Gtk::Box* getParent () override final + Gtk::Box* getParent () final { return parentContainer; } diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 17f14673d..0fc1a9070 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -314,11 +314,11 @@ public: // imageareatoollistener interface void spotWBselected(int x, int y, Thumbnail* thm = nullptr) override; - void sharpMaskSelected(bool sharpMask) override; + void sharpMaskSelected(bool sharpMask) override final; int getSpotWBRectSize() const override; void cropSelectionReady() override; void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr) override; - ToolBar* getToolBar() const override final; + ToolBar* getToolBar() const final; CropGUIListener* startCropEditing(Thumbnail* thm = nullptr) override; void updateTPVScrollbar (bool hide); @@ -326,7 +326,7 @@ public: // ToolBarListener interface void toolSelected (ToolMode tool) override; - void editModeSwitchedOff () override final; + void editModeSwitchedOff () final; void setEditProvider (EditDataProvider *provider); From 1150a4352f318ff80b94bad06291489f1846d9d0 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Fri, 7 Feb 2020 00:47:24 -0800 Subject: [PATCH 15/38] Re-enable a private LENSFUNDBDIR on Win32 and UNIX Restores a few lines in CMakeLists.txt 2cc8918 removed for non-APPLE systems. --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c60fa37c..6d51503d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -252,6 +252,12 @@ if(NOT DEFINED APPDATADIR) endif() endif() +if (NOT APPLE) + if(DEFINED LENSFUNDBDIR AND NOT IS_ABSOLUTE "${LENSFUNDBDIR}") + set(LENSFUNDBDIR "${DATADIR}/${LENSFUNDBDIR}") + endif() +endif() + if(APPLE) if("${CODESIGNID}") set(CODESIGNID "${CODESIGNID}" CACHE STRING "Codesigning Identity") From 4221fdf31e43658cef98ad660ad398b8ae81b8d7 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 7 Feb 2020 13:52:25 +0100 Subject: [PATCH 16/38] fix regression in Canon sRAW/mRAW black level computation, taken from ART, fixes #5638 --- rtengine/dcraw.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 812f122b3..0284b3f1d 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9868,6 +9868,7 @@ void CLASS identify() filters = 0; tiff_samples = colors = 3; load_raw = &CLASS canon_sraw_load_raw; + FORC4 cblack[c] = 0; // ALB } else if (!strcmp(model,"PowerShot 600")) { height = 613; width = 854; From 0bec7719fea97a3eacf260883e61d629c7c02040 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Fri, 7 Feb 2020 10:49:01 -0800 Subject: [PATCH 17/38] macos: fix some script errors by re-ordering ops --- tools/osx/macosx_bundle.sh | 124 ++++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 51 deletions(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index f21915cab..08740f696 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -114,60 +114,31 @@ msg "Copying release files:" ditto "${CMAKE_BUILD_TYPE}/MacOS" "${MACOS}" ditto "Resources" "${RESOURCES}" +# Copy the Lensfun database into the app bundle +mkdir -p "${RESOURCES}/share/lensfun" +ditto ${LOCAL_PREFIX}/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" + +# Copy liblensfun to Frameworks +ditto ${LOCAL_PREFIX}/local/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks/liblensfun.2.dylib" + +# Copy libomp to Frameworks +ditto ${LOCAL_PREFIX}/local/lib/libomp.dylib "${CONTENTS}/Frameworks" + msg "Copying dependencies from ${GTK_PREFIX}:" CheckLink "${EXECUTABLE}" -msg "Copying library modules from ${GTK_PREFIX}:" -ditto --arch "${arch}" {"${GTK_PREFIX}/lib","${LIB}"}/gdk-pixbuf-2.0 -ditto --arch "${arch}" {"${GTK_PREFIX}/lib","${LIB}"}/gtk-3.0 - -msg "Removing static libraries and cache files:" -find -E "${LIB}" -type f -regex '.*\.(a|la|cache)$' | while read -r; do rm "${REPLY}"; done - -msg "Copying configuration files from ${GTK_PREFIX}:" -install -d "${ETC}/gtk-3.0" - -# Make Frameworks folder flat -ditto "${LIB}"/gdk-pixbuf-2.0/2*/loaders/*.so "${LIB}" -ditto "${LIB}"/gtk-3.0/3*/immodules/*.{dylib,so} "${LIB}" -rm -r "${LIB}"/gtk-3.0 -rm -r "${LIB}"/gdk-pixbuf-2.0 - -"${LOCAL_PREFIX}"/local/bin/gdk-pixbuf-query-loaders "${LIB}"/libpix*.so > "${ETC}"/gtk-3.0/gdk-pixbuf.loaders -"${LOCAL_PREFIX}"/local/bin/gtk-query-immodules-3.0 "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules -sed -i "" -e "s|${PWD}/RawTherapee.app/Contents/|/Applications/RawTherapee.app/Contents/|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" -sed -i "" -e "s|/opt/local/|/usr/|" "${ETC}/gtk-3.0/gtk.immodules" - -mkdir -p ${RESOURCES}/share/glib-2.0 -ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/glib-2.0/schemas -"${LOCAL_PREFIX}/local/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" - -msg "Copying shared files from ${GTK_PREFIX}:" -ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/mime - -# GTK3 themes -ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css -ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css -# Adwaita icons -iconfolders=("16x16/actions" "16x16/devices" "16x16/mimetypes" "16x16/places" "16x16/status" "48x48/devices") -for f in "${iconfolders[@]}"; do - mkdir -p ${RESOURCES}/share/icons/Adwaita/${f} - ditto ${LOCAL_PREFIX}/local/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} -done -ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/icons/Adwaita/index.theme -"${LOCAL_PREFIX}/local/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" -ditto "${LOCAL_PREFIX}/local/share/icons/hicolor" "${RESOURCES}/share/icons/hicolor" - # Copy libjpeg-turbo ("62") into the app bundle ditto ${LOCAL_PREFIX}/local/lib/libjpeg.62.dylib "${CONTENTS}/Frameworks/libjpeg.62.dylib" # Copy libexpat into the app bundle (which is keg-only) - if [[ -d /usr/local/Cellar/expat ]]; then ditto /usr/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks"; else ditto "${EXPATLIB}" "${CONTENTS}/Frameworks/libexpat.1.dylib"; fi # Copy libz into the app bundle ditto ${LOCAL_PREFIX}/local/lib/libz.1.dylib "${CONTENTS}/Frameworks" +# Copy libpng16 to the app bundle +ditto ${LOCAL_PREFIX}/local/lib/libpng16.16.dylib "${CONTENTS}/Frameworks/libpng16.16.dylib" + # Copy libtiff 5 into the app bundle ditto ${LOCAL_PREFIX}/local/lib/libtiff.5.dylib "${CONTENTS}/Frameworks/libtiff.5.dylib" @@ -181,6 +152,43 @@ ditto ${LOCAL_PREFIX}/local/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks/lible # Copy libomp to Frameworks ditto ${LOCAL_PREFIX}/local/lib/libomp.dylib "${CONTENTS}/Frameworks" +# Prepare GTK+3 installation +msg "Copying configuration files from ${GTK_PREFIX}:" +install -d "${ETC}/gtk-3.0" +msg "Copying library modules from ${GTK_PREFIX}:" +ditto --arch "${arch}" {"${GTK_PREFIX}/lib","${LIB}"}/gdk-pixbuf-2.0 +ditto --arch "${arch}" {"${GTK_PREFIX}/lib","${LIB}"}/gtk-3.0 +msg "Removing static libraries and cache files:" +find -E "${LIB}" -type f -regex '.*\.(a|la|cache)$' | while read -r; do rm "${REPLY}"; done + +# Make Frameworks folder flat +msg "Flattening the Frameworks folder" +ditto "${LIB}"/gdk-pixbuf-2.0/2*/loaders/*.so "${LIB}" +ditto "${LIB}"/gtk-3.0/3*/immodules/*.{dylib,so} "${LIB}" +rm -r "${LIB}"/gtk-3.0 +rm -r "${LIB}"/gdk-pixbuf-2.0 + +msg "Build glib database:" +mkdir -p ${RESOURCES}/share/glib-2.0 +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/glib-2.0/schemas +"${LOCAL_PREFIX}/local/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" + +# GTK+3 themes +msg "Copy GTK+3 theme and icon resources:" +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css + +# Adwaita icons +msg "Copy Adwaita icons" +iconfolders=("16x16/actions" "16x16/devices" "16x16/mimetypes" "16x16/places" "16x16/status" "48x48/devices") +for f in "${iconfolders[@]}"; do + mkdir -p ${RESOURCES}/share/icons/Adwaita/${f} + ditto ${LOCAL_PREFIX}/local/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} +done +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/icons/Adwaita/index.theme +"${LOCAL_PREFIX}/local/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" +ditto "${LOCAL_PREFIX}/local/share/icons/hicolor" "${RESOURCES}/share/icons/hicolor" + # Install names find -E "${CONTENTS}" -type f -regex '.*/(rawtherapee-cli|rawtherapee|.*\.(dylib|so))' | while read -r x; do msg "Modifying install names: ${x}" @@ -194,7 +202,23 @@ find -E "${CONTENTS}" -type f -regex '.*/(rawtherapee-cli|rawtherapee|.*\.(dylib } | bash -v done +# fix @rpath in Frameworks +msg "Registering @rpath in Frameworks folder:" +for frameworklibs in ${CONTENTS}/Frameworks/* ; do + echo " install_name_tool -delete_rpath /opt/local/lib '${frameworklibs}'" | bash -v + echo " install_name_tool -add_rpath /Applications/RawTherapee.app/Contents/Frameworks '${frameworklibs}'" | bash -v +done +# pixbuf loaders & immodules +msg "Build GTK3 databases:" +"${LOCAL_PREFIX}"/local/bin/gdk-pixbuf-query-loaders "${LIB}"/libpix*.so > "${ETC}"/gtk-3.0/gdk-pixbuf.loaders +"${LOCAL_PREFIX}"/local/bin/gtk-query-immodules-3.0 "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules +sed -i "" -e "s|${PWD}/RawTherapee.app/Contents/|/Applications/RawTherapee.app/Contents/|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" +sed -i "" -e "s|/opt/local/|/usr/|" "${ETC}/gtk-3.0/gtk.immodules" + +# Mime directory +msg "Copying shared files from ${GTK_PREFIX}:" +ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/mime msg "Installing required application bundle files:" PROJECT_SOURCE_DATA_DIR="${PROJECT_SOURCE_DIR}/tools/osx" @@ -203,7 +227,7 @@ ditto "${PROJECT_SOURCE_DIR}/build/Resources" "${RESOURCES}" # Note: executable is renamed to 'rawtherapee-bin'. mkdir "${MACOS}/bin" ditto "${MACOS}/rawtherapee" "${MACOS}/bin/rawtherapee-bin" -rm "${MACOS}/rawtherappe" +rm "${MACOS}/rawtherapee" install -m 0755 "${PROJECT_SOURCE_DATA_DIR}/executable_loader.in" "${MACOS}/rawtherapee" # App bundle resources ditto "${PROJECT_SOURCE_DATA_DIR}/"{rawtherapee,profile}.icns "${RESOURCES}" @@ -218,15 +242,13 @@ plutil -convert xml1 "${CONTENTS}/Info.plist" plutil -convert xml1 "${CONTENTS}/MacOS/bin/Info.plist" update-mime-database -V "${CONTENTS}/Resources/share/mime" +# Append an LC_RPATH msg "Registering @rpath into the executable:" echo " install_name_tool -add_rpath /Applications/RawTherapee.app/Contents/Frameworks '${MACOS}/bin/rawtherapee-bin'" | bash -v echo " install_name_tool -add_rpath /Applications/RawTherapee.app/Contents/Frameworks '${EXECUTABLE}-cli'" | bash -v -for frameworklibs in ${CONTENTS}/Frameworks/* ; do - echo " install_name_tool -delete_rpath /opt/local/lib '${frameworklibs}'" | bash -v - echo " install_name_tool -add_rpath /Applications/RawTherapee.app/Contents/Frameworks '${frameworklibs}'" | bash -v -done # Sign the app +msg "Codesigning:" CODESIGNID="$(cmake .. -LA -N | grep "CODESIGNID" | cut -d "=" -f2)" if ! test -z "$CODESIGNID" ; then install -m 0644 "${PROJECT_SOURCE_DATA_DIR}/rt.entitlements" "${CONTENTS}/Entitlements.plist" @@ -237,17 +259,16 @@ codesign -v -s "${CODESIGNID}" -i "com.rawtherapee.rawtherapee-bin" -o runtime - for frameworklibs in ${CONTENTS}/Frameworks/* ; do codesign -v -s "${CODESIGNID}" -i "com.rawtherapee.rawtherapee-bin" -o runtime --timestamp "${frameworklibs}" done -codesign --deep --preserve-metadata=identifier,entitlements,runtime --timestamp --strict -v -s "${CODESIGNID}" -i "com.rawtherapee.rawtherapee" -o runtime --entitlements "${CONTENTS}/Entitlements.plist" "${APP}" +codesign --deep --preserve-metadata=identifier,entitlements,runtime --timestamp --strict -v -s "${CODESIGNID}" -i "com.rawtherapee.RawTherapee" -o runtime --entitlements "${CONTENTS}/Entitlements.plist" "${APP}" spctl -a -vvvv "${APP}" fi # Notarize the app - NOTARY="$(cmake .. -LA -N | grep "NOTARY" | cut -d "=" -f2)" if ! test -z "$NOTARY" ; then msg "Notarizing the application:" ditto -c -k --sequesterRsrc --keepParent "${APP}" "${APP}.zip" - uuid=`xcrun altool --notarize-app --primary-bundle-id "com.rawtherapee.rawtherapee" ${NOTARY} --file "${APP}.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'` + uuid=`xcrun altool --notarize-app --primary-bundle-id "com.rawtherapee.RawTherapee" ${NOTARY} --file "${APP}.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'` echo "Result= $uuid" # Display identifier string sleep 15 while : @@ -329,7 +350,6 @@ function CreateDmg { done fi - # Zip disk image for redistribution msg "Zipping disk image for redistribution:" @@ -340,3 +360,5 @@ function CreateDmg { rm -rf "${srcDir}" } CreateDmg +msg "Finishing build:" +echo "Script complete." From 8f291c3ff2adc66b5db846a9053cd1bebd0e9c55 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 7 Feb 2020 20:18:35 +0100 Subject: [PATCH 18/38] Be -Wunused-macros clean --- CMakeLists.txt | 2 +- rtengine/FTblockDN.cc | 1 - rtengine/dcraw.cc | 3 --- rtengine/iccstore.cc | 1 - rtengine/image16.cc | 2 -- rtengine/image8.cc | 2 -- rtengine/improcfun.cc | 3 --- rtengine/ipwavelet.cc | 7 ------- rtengine/jdatasrc.cc | 5 ----- rtengine/klt/selectGoodFeatures.cc | 1 - rtengine/rtthumbnail.cc | 2 -- rtengine/stdimagesource.cc | 1 - rtexif/canonattribs.cc | 3 --- rtexif/fujiattribs.cc | 3 --- rtexif/kodakattribs.cc | 3 --- rtexif/nikonattribs.cc | 4 ---- rtexif/olympusattribs.cc | 4 ---- rtexif/panasonicattribs.cc | 4 ---- rtexif/pentaxattribs.cc | 3 --- rtexif/sonyminoltaattribs.cc | 4 ---- rtexif/stdattribs.cc | 4 ---- rtgui/filecatalog.cc | 2 -- 22 files changed, 1 insertion(+), 63 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d51503d6..13c648de0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -402,7 +402,7 @@ if(WITH_PROF) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") endif() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Wcast-qual -Wno-deprecated-declarations -Wno-unused-result") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Wcast-qual -Wno-deprecated-declarations -Wno-unused-result -Wunused-macros") if(OPTION_OMP) find_package(OpenMP) if(OPENMP_FOUND) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 121c8189d..b13920c2a 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -56,7 +56,6 @@ #define TS 64 // Tile size #define offset 25 // shift between tiles -#define fTS ((TS/2+1)) // second dimension of Fourier tiles #define blkrad 1 // radius of block averaging #define epsilon 0.001f/(TS*TS) //tolerance diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 0284b3f1d..537bf1334 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -94,7 +94,6 @@ #ifdef WIN32 #include #include -#define snprintf _snprintf #define strcasecmp stricmp #define strncasecmp strnicmp typedef __int64 INT64; @@ -158,7 +157,6 @@ const float d65_white[3] = { 0.950456, 1, 1.088754 }; #define MIN(a,b) rtengine::min(a,static_cast<__typeof__(a)>(b)) #define MAX(a,b) rtengine::max(a,static_cast<__typeof__(a)>(b)) #define LIM(x,min,max) rtengine::LIM(x,static_cast<__typeof__(x)>(min),static_cast<__typeof__(x)>(max)) -#define ULIM(x,y,z) rtengine::median(x,static_cast<__typeof__(x)>(y),static_cast<__typeof__(x)>(z)) #define CLIP(x) rtengine::CLIP(x) #define SWAP(a,b) { a=a+b; b=a-b; a=a-b; } @@ -11022,7 +11020,6 @@ void CLASS nikon_14bit_load_raw() /*RT*/#undef MIN /*RT*/#undef ABS /*RT*/#undef LIM -/*RT*/#undef ULIM /*RT*/#undef CLIP #ifdef __GNUC__ #pragma GCC diagnostic pop diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index aea03664e..9d7024bff 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -43,7 +43,6 @@ #include "color.h" #include "cJSON.h" -#define inkc_constant 0x696E6B43 namespace { diff --git a/rtengine/image16.cc b/rtengine/image16.cc index a98d64d51..4bcd9d5c0 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -187,8 +187,6 @@ void Image16::getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, P gm /= area; bm /= area; -#define GCLIP( x ) Color::gamma_srgb(CLIP(x)) - #ifdef _OPENMP #pragma omp parallel { diff --git a/rtengine/image8.cc b/rtengine/image8.cc index 66ad8b60f..8784c962e 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -151,8 +151,6 @@ void Image8::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, P gm /= area; bm /= area; -#define GCLIP( x ) Color::gamma_srgb(CLIP(x)) - #ifdef _OPENMP #pragma omp parallel { diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 6749ff305..1bb7e417a 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -55,9 +55,6 @@ #include "mytime.h" #endif -#undef CLIPD -#define CLIPD(a) ((a)>0.0f?((a)<1.0f?(a):1.0f):0.0f) - namespace { using namespace rtengine; diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 7c0dc368b..be64be0fc 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -50,13 +50,6 @@ #include "cplx_wavelet_dec.h" -#define TS 64 // Tile size -#define offset 25 // shift between tiles -#define fTS ((TS/2+1)) // second dimension of Fourier tiles -#define blkrad 1 // radius of block averaging - -#define epsilon 0.001f/(TS*TS) //tolerance - namespace rtengine { diff --git a/rtengine/jdatasrc.cc b/rtengine/jdatasrc.cc index 8c04a14a2..e461b60f5 100644 --- a/rtengine/jdatasrc.cc +++ b/rtengine/jdatasrc.cc @@ -25,11 +25,6 @@ #define JFREAD(file,buf,sizeofbuf) \ ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file))) -#define JFWRITE(file,buf,sizeofbuf) \ - ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file))) - - - /* Expanded data source object for stdio input */ namespace diff --git a/rtengine/klt/selectGoodFeatures.cc b/rtengine/klt/selectGoodFeatures.cc index 20e67fb2e..ccd7681db 100644 --- a/rtengine/klt/selectGoodFeatures.cc +++ b/rtengine/klt/selectGoodFeatures.cc @@ -9,7 +9,6 @@ #include /* fflush() */ #include /* memset() */ #include /* fsqrt() */ -#define fsqrt(X) sqrt(X) /* Our includes */ #include "base.h" diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 9da601e2a..a25f70749 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -511,8 +511,6 @@ Thumbnail* Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, RawMetaDataL ((filter >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)==0 || !filter) #define FISGREEN(filter,row,col) \ ((filter >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)==1 || !filter) -#define FISBLUE(filter,row,col) \ - ((filter >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)==2 || !filter) RawMetaDataLocation Thumbnail::loadMetaDataFromRaw (const Glib::ustring& fname) { diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 1cb11e94d..271818303 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -53,7 +53,6 @@ template T** allocArray (int W, int H) return t; } -#define HR_SCALE 2 StdImageSource::StdImageSource () : ImageSource(), img(nullptr), plistener(nullptr), full(false), max{}, rgbSourceModified(false) { diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc index ee451c7d7..c434634dc 100644 --- a/rtexif/canonattribs.cc +++ b/rtexif/canonattribs.cc @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CANONATTRIBS_ -#define _CANONATTRIBS_ #include #include @@ -2142,5 +2140,4 @@ const TagAttrib canonAttribs[] = { { -1, AC_DONTWRITE, 0, nullptr, 0, AUTO, "", nullptr} }; } -#endif diff --git a/rtexif/fujiattribs.cc b/rtexif/fujiattribs.cc index 0eaa505f6..ffbf3a0be 100644 --- a/rtexif/fujiattribs.cc +++ b/rtexif/fujiattribs.cc @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FUJIATTRIBS_ -#define _FUJIATTRIBS_ #include "rtexif.h" @@ -312,5 +310,4 @@ const TagAttrib fujiAttribs[] = { { -1, AC_DONTWRITE, 0, nullptr, 0, AUTO, "", nullptr} }; } -#endif diff --git a/rtexif/kodakattribs.cc b/rtexif/kodakattribs.cc index a9c168a70..619925760 100644 --- a/rtexif/kodakattribs.cc +++ b/rtexif/kodakattribs.cc @@ -1,8 +1,6 @@ /* * This file is part of RawTherapee. */ -#ifndef _KODAKATTRIBS_ -#define _KODAKATTRIBS_ #include #include "rtexif.h" @@ -161,5 +159,4 @@ const TagAttrib kodakIfdAttribs[] = { }; } -#endif diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index 2ef37b8fb..9c52f3b8a 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _NIKONATTRIBS_ -#define _NIKONATTRIBS_ #include #include @@ -1229,5 +1227,3 @@ const TagAttrib nikon3Attribs[] = { }; } -#endif - diff --git a/rtexif/olympusattribs.cc b/rtexif/olympusattribs.cc index f590b8154..ec7ab98c7 100644 --- a/rtexif/olympusattribs.cc +++ b/rtexif/olympusattribs.cc @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _OLYMPUSATTRIBS_ -#define _OLYMPUSATTRIBS_ #include #include @@ -850,5 +848,3 @@ const TagAttrib olympusAttribs[] = { { -1, AC_DONTWRITE, 0, nullptr, 0, AUTO, "", nullptr} }; } -#endif - diff --git a/rtexif/panasonicattribs.cc b/rtexif/panasonicattribs.cc index 3062824cf..4ebcf2447 100644 --- a/rtexif/panasonicattribs.cc +++ b/rtexif/panasonicattribs.cc @@ -1,8 +1,6 @@ /* * This file is part of RawTherapee. */ -#ifndef _PANASONICATTRIBS_ -#define _PANASONICATTRIBS_ #include #include "rtexif.h" @@ -138,5 +136,3 @@ const TagAttrib panasonicRawAttribs[] = { }; } -#endif - diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 0e866b09f..abc25b7a1 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PENTAXATTRIBS_ -#define _PENTAXATTRIBS_ #include #include @@ -2216,7 +2214,6 @@ const TagAttrib pentaxCameraInfoAttribs[] = { }; } -#endif diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index 722b11faf..ee41b2a9b 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -15,8 +15,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SONYMINOLTAATTRIBS_ -#define _SONYMINOLTAATTRIBS_ #include @@ -2499,6 +2497,4 @@ const TagAttrib sonyCameraSettingsAttribs3[] = { {-1, AC_DONTWRITE, 0, 0, 0, AUTO, "", NULL}};*/ } -#endif - diff --git a/rtexif/stdattribs.cc b/rtexif/stdattribs.cc index 8e076152d..be7a28a5c 100644 --- a/rtexif/stdattribs.cc +++ b/rtexif/stdattribs.cc @@ -17,8 +17,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _STDATTRIBS_ -#define _STDATTRIBS_ #include #include @@ -927,5 +925,3 @@ const TagAttrib ifdAttribs[] = { { -1, AC_DONTWRITE, 0, nullptr, 0, AUTO, "", nullptr} }; } - -#endif diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index bb34072e2..102c17daf 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -45,8 +45,6 @@ using namespace std; -#define CHECKTIME 2000 - FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : filepanel(filepanel), selectedDirectoryId(1), From 97dfa4e4af68b98996a5e19e000723061a961488 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 7 Feb 2020 22:01:58 +0100 Subject: [PATCH 19/38] Some more -Wunused-macros fixes --- rtengine/rawimagesource.cc | 11 +---------- rtgui/editorpanel.cc | 6 +++--- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 18fc18f58..e084a5156 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -49,10 +49,6 @@ #endif #include "opthelper.h" -#define clipretinex( val, minv, maxv ) (( val = (val < minv ? minv : val ) ) > maxv ? maxv : val ) - -#undef CLIPD -#define CLIPD(a) ((a)>0.0f?((a)<1.0f?(a):1.0f):0.0f) namespace { @@ -426,10 +422,8 @@ namespace rtengine { #undef ABS -#undef DIST #define ABS(a) ((a)<0?-(a):(a)) -#define DIST(a,b) (ABS(a-b)) RawImageSource::RawImageSource () : ImageSource() @@ -2916,7 +2910,7 @@ lab2ProphotoRgbD50(float L, float A, float B, float& r, float& g, float& b) float X; float Y; float Z; -#define CLIP01(a) ((a)>0?((a)<1?(a):1):0) + { // convert from Lab to XYZ float x, y, z, fx, fy, fz; @@ -2951,9 +2945,6 @@ lab2ProphotoRgbD50(float L, float A, float B, float& r, float& g, float& b) r = prophoto_xyz[0][0] * X + prophoto_xyz[0][1] * Y + prophoto_xyz[0][2] * Z; g = prophoto_xyz[1][0] * X + prophoto_xyz[1][1] * Y + prophoto_xyz[1][2] * Z; b = prophoto_xyz[2][0] * X + prophoto_xyz[2][1] * Y + prophoto_xyz[2][2] * Z; - // r = CLIP01(r); - // g = CLIP01(g); - // b = CLIP01(b); } // Converts raw image including ICC input profile to working space - floating point version diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 806af8b2e..5ac2930b5 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -61,7 +61,7 @@ void setprogressStrUI(double val, const Glib::ustring str, MyProgressBar* pProgr } } - +#if !defined(__APPLE__) // monitor profile not supported on apple bool find_default_monitor_profile (GdkWindow *rootwin, Glib::ustring &defprof, Glib::ustring &defprofname) { #ifdef WIN32 @@ -91,7 +91,7 @@ bool find_default_monitor_profile (GdkWindow *rootwin, Glib::ustring &defprof, G ReleaseDC (NULL, hDC); } -#elif !defined(__APPLE__) +#elif // taken from geeqie (image.c) and adapted // Originally licensed as GPL v2+, with the following copyright: // * Copyright (C) 2006 John Ellis @@ -129,7 +129,7 @@ bool find_default_monitor_profile (GdkWindow *rootwin, Glib::ustring &defprof, G #endif return false; } - +#endif } From fcbb9f55b6467ba92964cfcadbacf263ccb3fe02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Sat, 8 Feb 2020 08:45:38 +0100 Subject: [PATCH 20/38] Fix non-Apple build --- rtgui/editorpanel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 5ac2930b5..6a0d41878 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -91,7 +91,7 @@ bool find_default_monitor_profile (GdkWindow *rootwin, Glib::ustring &defprof, G ReleaseDC (NULL, hDC); } -#elif +#else // taken from geeqie (image.c) and adapted // Originally licensed as GPL v2+, with the following copyright: // * Copyright (C) 2006 John Ellis From 291abfd7a705122420af7874c109c4fea712dada Mon Sep 17 00:00:00 2001 From: scx Date: Sat, 8 Feb 2020 12:56:40 +0100 Subject: [PATCH 21/38] Install additional icons - Install 32x32 icon - Install 64x64 icon - Install scalable icon --- rtdata/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index 46722ba01..76804c0f0 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -29,9 +29,12 @@ if(UNIX) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR}) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-16.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-24.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-32.png" DESTINATION "${ICONSDIR}/hicolor/32x32/apps" RENAME rawtherapee.png) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-48.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-64.png" DESTINATION "${ICONSDIR}/hicolor/64x64/apps" RENAME rawtherapee.png) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-128.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/png/rawtherapee-logo-256.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/svg/rt-logo.svg" DESTINATION "${ICONSDIR}/hicolor/scalable/apps" RENAME rawtherapee.svg) endif() install(FILES ${LANGUAGEFILES} DESTINATION "${DATADIR}/languages") From acdb3c32ddbcc7c78075a9e75e2e8803e88e0694 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 9 Feb 2020 12:02:57 +0100 Subject: [PATCH 22/38] MLsharpen: cleanup --- rtengine/ipsharpenedges.cc | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/rtengine/ipsharpenedges.cc b/rtengine/ipsharpenedges.cc index 73295e4fa..8dd12c836 100644 --- a/rtengine/ipsharpenedges.cc +++ b/rtengine/ipsharpenedges.cc @@ -23,13 +23,9 @@ #include "procparams.h" #include "rt_math.h" -#define BENCHMARK -#include "StopWatch.h" - -using namespace std; namespace { #ifdef __SSE2__ -bool inintervall(float a, float b, float c) +bool inintervalLoRo(float a, float b, float c) { return a < std::max(b, c) && a > std::min(b, c); } @@ -43,7 +39,7 @@ float selectweight(float a, float b, float low, float high) } #else -bool inintervall(float a, float b, float c) +bool inintervalLoRo(float a, float b, float c) { return (a < b && a > c) || (a < c && a > b); } @@ -75,8 +71,6 @@ void ImProcFunctions::MLsharpen (LabImage* lab) return; } -BENCHFUN - const int width = lab->W, height = lab->H; constexpr float chmax[3] = {1.f / 8.f, 1.f / 3.f, 1.f / 3.f}; const int width2 = 2 * width; @@ -127,7 +121,7 @@ BENCHFUN const float contrast = std::min(std::sqrt(SQR(L[offset + 1] - L[offset - 1]) + SQR(L[offset + width] - L[offset - width])) * chmax[c], 1.f); // new possible values - if (inintervall(v, L[offset - 1], L[offset + 1])) { + if (inintervalLoRo(v, L[offset - 1], L[offset + 1])) { float f1 = fabs(L[offset - 2] - L[offset - 1]); float f2 = L[offset - 1] - v; float f3 = (L[offset - 1] - L[offset - width]) * (L[offset - 1] - L[offset + width]); @@ -146,7 +140,7 @@ BENCHFUN } } - if (inintervall(v, L[offset - width], L[offset + width])) { + if (inintervalLoRo(v, L[offset - width], L[offset + width])) { float f1 = fabs(L[offset - width2] - L[offset - width]); float f2 = L[offset - width] - v; float f3 = (L[offset - width] - L[offset - 1]) * (L[offset - width] - L[offset + 1]); @@ -165,7 +159,7 @@ BENCHFUN } } - if (inintervall(v, L[offset - 1 - width], L[offset + 1 + width])) { + if (inintervalLoRo(v, L[offset - 1 - width], L[offset + 1 + width])) { float f1 = fabs(L[offset - 2 - width2] - L[offset - 1 - width]); float f2 = L[offset - 1 - width] - v; float f3 = (L[offset - 1 - width] - L[offset - width + 1]) * (L[offset - 1 - width] - L[offset + width - 1]); @@ -184,7 +178,7 @@ BENCHFUN } } - if (inintervall(v, L[offset + 1 - width], L[offset - 1 + width])) { + if (inintervalLoRo(v, L[offset + 1 - width], L[offset - 1 + width])) { float f1 = fabs(L[offset - 2 + width2] - L[offset - 1 + width]); float f2 = L[offset - 1 + width] - v; float f3 = (L[offset - 1 + width] - L[offset - width - 1]) * (L[offset - 1 + width] - L[offset + width + 1]); From d9a62aa27af2d3fa930d370c7ed524451cac81d4 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 9 Feb 2020 14:14:46 +0100 Subject: [PATCH 23/38] Fix LGTM alerts --- rtengine/ipsharpenedges.cc | 48 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/rtengine/ipsharpenedges.cc b/rtengine/ipsharpenedges.cc index 8dd12c836..6a44ee40a 100644 --- a/rtengine/ipsharpenedges.cc +++ b/rtengine/ipsharpenedges.cc @@ -75,8 +75,8 @@ void ImProcFunctions::MLsharpen (LabImage* lab) constexpr float chmax[3] = {1.f / 8.f, 1.f / 3.f, 1.f / 3.f}; const int width2 = 2 * width; constexpr float eps2 = 0.001f; //prevent divide by zero - const float amount = params->sharpenEdge.amount / 100.0f; - const float amountby3 = params->sharpenEdge.amount / 300.0f; + const float amount = params->sharpenEdge.amount / 100.0; + const float amountby3 = params->sharpenEdge.amount / 300.0; std::unique_ptr L(new float[width * height]); @@ -103,12 +103,12 @@ void ImProcFunctions::MLsharpen (LabImage* lab) for (int j = 2; j < height - 2; j++) { for (int i = 2, offset = j * width + i; i < width - 2; i++, offset++) { // weight functions - const float wH = eps2 + fabs(L[offset + 1] - L[offset - 1]); - const float wV = eps2 + fabs(L[offset + width] - L[offset - width]); + const float wH = eps2 + std::fabs(L[offset + 1] - L[offset - 1]); + const float wV = eps2 + std::fabs(L[offset + width] - L[offset - width]); - float s = 2.f / (2.f + fabs(wH - wV)); - float wD1 = eps2 + fabs(L[offset + width + 1] - L[offset - width - 1]) * s; - float wD2 = eps2 + fabs(L[offset + width - 1] - L[offset - width + 1]) * s; + float s = 2.f / (2.f + std::fabs(wH - wV)); + float wD1 = eps2 + std::fabs(L[offset + width + 1] - L[offset - width - 1]) * s; + float wD2 = eps2 + std::fabs(L[offset + width - 1] - L[offset - width + 1]) * s; s = wD1; wD1 /= wD2; wD2 /= s; @@ -122,16 +122,16 @@ void ImProcFunctions::MLsharpen (LabImage* lab) // new possible values if (inintervalLoRo(v, L[offset - 1], L[offset + 1])) { - float f1 = fabs(L[offset - 2] - L[offset - 1]); + float f1 = std::fabs(L[offset - 2] - L[offset - 1]); float f2 = L[offset - 1] - v; float f3 = (L[offset - 1] - L[offset - width]) * (L[offset - 1] - L[offset + width]); - float f4 = std::sqrt(fabs((L[offset - 1] - L[offset - width2]) * (L[offset - 1] - L[offset + width2]))); + float f4 = std::sqrt(std::fabs((L[offset - 1] - L[offset - width2]) * (L[offset - 1] - L[offset + width2]))); const float difL = f1 * SQR(f2 * f3) * f4; if (difL > 0.f) { - f1 = fabs(L[offset + 2] - L[offset + 1]); + f1 = std::fabs(L[offset + 2] - L[offset + 1]); f2 = L[offset + 1] - v; f3 = (L[offset + 1] - L[offset - width]) * (L[offset + 1] - L[offset + width]); - f4 = std::sqrt(fabs((L[offset + 1] - L[offset - width2]) * (L[offset + 1] - L[offset + width2]))); + f4 = std::sqrt(std::fabs((L[offset + 1] - L[offset - width2]) * (L[offset + 1] - L[offset + width2]))); const float difR = f1 * SQR(f2 * f3) * f4; if (difR > 0.f) { lumH = (L[offset - 1] * difR + L[offset + 1] * difL) / (difL + difR); @@ -141,16 +141,16 @@ void ImProcFunctions::MLsharpen (LabImage* lab) } if (inintervalLoRo(v, L[offset - width], L[offset + width])) { - float f1 = fabs(L[offset - width2] - L[offset - width]); + float f1 = std::fabs(L[offset - width2] - L[offset - width]); float f2 = L[offset - width] - v; float f3 = (L[offset - width] - L[offset - 1]) * (L[offset - width] - L[offset + 1]); - float f4 = std::sqrt(fabs((L[offset - width] - L[offset - 2]) * (L[offset - width] - L[offset + 2]))); + float f4 = std::sqrt(std::fabs((L[offset - width] - L[offset - 2]) * (L[offset - width] - L[offset + 2]))); const float difT = f1 * SQR(f2 * f3) * f4; if (difT > 0.f) { - f1 = fabs(L[offset + width2] - L[offset + width]); + f1 = std::fabs(L[offset + width2] - L[offset + width]); f2 = L[offset + width] - v; f3 = (L[offset + width] - L[offset - 1]) * (L[offset + width] - L[offset + 1]); - f4 = std::sqrt(fabs((L[offset + width] - L[offset - 2]) * (L[offset + width] - L[offset + 2]))); + f4 = std::sqrt(std::fabs((L[offset + width] - L[offset - 2]) * (L[offset + width] - L[offset + 2]))); const float difB = f1 * SQR(f2 * f3) * f4; if (difB > 0.f) { lumV = (L[offset - width] * difB + L[offset + width] * difT) / (difT + difB); @@ -160,16 +160,16 @@ void ImProcFunctions::MLsharpen (LabImage* lab) } if (inintervalLoRo(v, L[offset - 1 - width], L[offset + 1 + width])) { - float f1 = fabs(L[offset - 2 - width2] - L[offset - 1 - width]); + float f1 = std::fabs(L[offset - 2 - width2] - L[offset - 1 - width]); float f2 = L[offset - 1 - width] - v; float f3 = (L[offset - 1 - width] - L[offset - width + 1]) * (L[offset - 1 - width] - L[offset + width - 1]); - float f4 = std::sqrt(fabs((L[offset - 1 - width] - L[offset - width2 + 2]) * (L[offset - 1 - width] - L[offset + width2 - 2]))); + float f4 = std::sqrt(std::fabs((L[offset - 1 - width] - L[offset - width2 + 2]) * (L[offset - 1 - width] - L[offset + width2 - 2]))); const float difLT = f1 * SQR(f2 * f3) * f4; if (difLT > 0.f) { - f1 = fabs(L[offset + 2 + width2] - L[offset + 1 + width]); + f1 = std::fabs(L[offset + 2 + width2] - L[offset + 1 + width]); f2 = L[offset + 1 + width] - v; f3 = (L[offset + 1 + width] - L[offset - width + 1]) * (L[offset + 1 + width] - L[offset + width - 1]); - f4 = std::sqrt(fabs((L[offset + 1 + width] - L[offset - width2 + 2]) * (L[offset + 1 + width] - L[offset + width2 - 2]))); + f4 = std::sqrt(std::fabs((L[offset + 1 + width] - L[offset - width2 + 2]) * (L[offset + 1 + width] - L[offset + width2 - 2]))); const float difRB = f1 * SQR(f2 * f3) * f4; if (difRB > 0.f) { lumD1 = (L[offset - 1 - width] * difRB + L[offset + 1 + width] * difLT) / (difLT + difRB); @@ -179,16 +179,16 @@ void ImProcFunctions::MLsharpen (LabImage* lab) } if (inintervalLoRo(v, L[offset + 1 - width], L[offset - 1 + width])) { - float f1 = fabs(L[offset - 2 + width2] - L[offset - 1 + width]); + float f1 = std::fabs(L[offset - 2 + width2] - L[offset - 1 + width]); float f2 = L[offset - 1 + width] - v; float f3 = (L[offset - 1 + width] - L[offset - width - 1]) * (L[offset - 1 + width] - L[offset + width + 1]); - float f4 = std::sqrt(fabs((L[offset - 1 + width] - L[offset - width2 - 2]) * (L[offset - 1 + width] - L[offset + width2 + 2]))); + float f4 = std::sqrt(std::fabs((L[offset - 1 + width] - L[offset - width2 - 2]) * (L[offset - 1 + width] - L[offset + width2 + 2]))); const float difLB = f1 * SQR(f2 * f3) * f4; if (difLB > 0.f) { - f1 = fabs(L[offset + 2 - width2] - L[offset + 1 - width]); + f1 = std::fabs(L[offset + 2 - width2] - L[offset + 1 - width]); f2 = L[offset + 1 - width] - v; f3 = (L[offset + 1 - width] - L[offset + width + 1]) * (L[offset + 1 - width] - L[offset - width - 1]); - f4 = std::sqrt(fabs((L[offset + 1 - width] - L[offset + width2 + 2]) * (L[offset + 1 - width] - L[offset - width2 - 2]))); + f4 = std::sqrt(std::fabs((L[offset + 1 - width] - L[offset + width2 + 2]) * (L[offset + 1 - width] - L[offset - width2 - 2]))); const float difRT = f1 * SQR(f2 * f3) * f4; if (difRT > 0.f) { lumD2 = (L[offset + 1 - width] * difLB + L[offset - 1 + width] * difRT) / (difLB + difRT); @@ -203,7 +203,7 @@ void ImProcFunctions::MLsharpen (LabImage* lab) if (c == 0) { if (v < 92.f) { - channel[j][i] = fabs(327.68f * intp(weight, (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2), v)); // fabs because lab->L always > 0 + channel[j][i] = std::fabs(327.68f * intp(weight, (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2), v)); // fabs because lab->L always > 0 } } else { channel[j][i] = 327.68f * intp(weight, (lumH * wH + lumV * wV + lumD1 * wD1 + lumD2 * wD2) / (wH + wV + wD1 + wD2), v); From 2c831a11a7a164685e51169e7696ffc50f7e04e5 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 9 Feb 2020 23:34:12 +0100 Subject: [PATCH 24/38] more double promote fixes --- rtengine/capturesharpening.cc | 18 +++++----- rtengine/filmnegativeproc.cc | 12 +++---- rtengine/filmnegativethumb.cc | 4 +-- rtengine/hilite_recon.cc | 4 +-- rtengine/improccoordinator.cc | 4 +-- rtengine/improcfun.cc | 10 +++--- rtengine/ipsharpen.cc | 22 ++++++------ rtengine/iptransform.cc | 64 +++++++++++++++++------------------ 8 files changed, 68 insertions(+), 70 deletions(-) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index b5b74e140..4dcdd0734 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -761,13 +761,13 @@ bool checkForStop(float** tmpIThr, float** iterCheck, int fullTileSize, int bord return false; } -void CaptureDeconvSharpening (float** luminance, const float* const * oldLuminance, const float * const * blend, int W, int H, double sigma, double sigmaCornerOffset, int iterations, bool checkIterStop, rtengine::ProgressListener* plistener, double startVal, double endVal) +void CaptureDeconvSharpening (float** luminance, const float* const * oldLuminance, const float * const * blend, int W, int H, float sigma, float sigmaCornerOffset, int iterations, bool checkIterStop, rtengine::ProgressListener* plistener, double startVal, double endVal) { BENCHFUN - const bool is9x9 = (sigma <= 1.50 && sigmaCornerOffset == 0.0); - const bool is7x7 = (sigma <= 1.15 && sigmaCornerOffset == 0.0); - const bool is5x5 = (sigma <= 0.84 && sigmaCornerOffset == 0.0); - const bool is3x3 = (sigma < 0.6 && sigmaCornerOffset == 0.0); + const bool is9x9 = (sigma <= 1.5f && sigmaCornerOffset == 0.f); + const bool is7x7 = (sigma <= 1.15f && sigmaCornerOffset == 0.f); + const bool is5x5 = (sigma <= 0.84f && sigmaCornerOffset == 0.f); + const bool is3x3 = (sigma < 0.6f && sigmaCornerOffset == 0.f); float kernel13[13][13]; float kernel9[9][9]; float kernel7[7][7]; @@ -906,11 +906,11 @@ BENCHFUN } } } else { - if (sigmaCornerOffset != 0.0) { + if (sigmaCornerOffset != 0.f) { const float distance = sqrt(rtengine::SQR(i + tileSize / 2 - H / 2) + rtengine::SQR(j + tileSize / 2 - W / 2)); const float sigmaTile = static_cast(sigma) + distanceFactor * distance; if (sigmaTile >= 0.4f) { - if (sigmaTile > 1.50) { // have to use 13x13 kernel + if (sigmaTile > 1.5f) { // have to use 13x13 kernel float lkernel13[13][13]; compute13x13kernel(static_cast(sigma) + distanceFactor * distance, lkernel13); for (int k = 0; k < iterations; ++k) { @@ -921,7 +921,7 @@ BENCHFUN break; } } - } else if (sigmaTile > 1.15) { // have to use 9x9 kernel + } else if (sigmaTile > 1.15f) { // have to use 9x9 kernel float lkernel9[9][9]; compute9x9kernel(static_cast(sigma) + distanceFactor * distance, lkernel9); for (int k = 0; k < iterations; ++k) { @@ -932,7 +932,7 @@ BENCHFUN break; } } - } else if (sigmaTile > 0.84) { // have to use 7x7 kernel + } else if (sigmaTile > 0.84f) { // have to use 7x7 kernel float lkernel7[7][7]; compute7x7kernel(static_cast(sigma) + distanceFactor * distance, lkernel7); for (int k = 0; k < iterations; ++k) { diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 1f27983ed..c7de3c483 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -122,8 +122,8 @@ bool rtengine::RawImageSource::getFilmNegativeExponents(Coord2D spotA, Coord2D s } if (settings->verbose) { - printf("Clear film values: R=%g G=%g B=%g\n", clearVals[0], clearVals[1], clearVals[2]); - printf("Dense film values: R=%g G=%g B=%g\n", denseVals[0], denseVals[1], denseVals[2]); + printf("Clear film values: R=%g G=%g B=%g\n", static_cast(clearVals[0]), static_cast(clearVals[1]), static_cast(clearVals[2])); + printf("Dense film values: R=%g G=%g B=%g\n", static_cast(denseVals[0]), static_cast(denseVals[1]), static_cast(denseVals[2])); } const float denseGreenRatio = clearVals[1] / denseVals[1]; @@ -141,12 +141,12 @@ bool rtengine::RawImageSource::getFilmNegativeExponents(Coord2D spotA, Coord2D s if (ch == 1) { newExps[ch] = 1.f; // Green is the reference channel } else { - newExps[ch] = CLAMP(logBase(clearVals[ch] / denseVals[ch], denseGreenRatio), 0.3f, 4.f); + newExps[ch] = rtengine::LIM(logBase(clearVals[ch] / denseVals[ch], denseGreenRatio), 0.3f, 4.f); } } if (settings->verbose) { - printf("New exponents: R=%g G=%g B=%g\n", newExps[0], newExps[1], newExps[2]); + printf("New exponents: R=%g G=%g B=%g\n", static_cast(newExps[0]), static_cast(newExps[1]), static_cast(newExps[2])); } return true; @@ -246,8 +246,8 @@ void rtengine::RawImageSource::filmNegativeProcess(const procparams::FilmNegativ if (settings->verbose) { printf("Sample count: %zu, %zu, %zu\n", cvs[0].size(), cvs[1].size(), cvs[2].size()); - printf("Medians: %g %g %g\n", medians[0], medians[1], medians[2] ); - printf("Computed multipliers: %g %g %g\n", mults[0], mults[1], mults[2] ); + printf("Medians: %g %g %g\n", static_cast(medians[0]), static_cast(medians[1]), static_cast(medians[2])); + printf("Computed multipliers: %g %g %g\n", static_cast(mults[0]), static_cast(mults[1]), static_cast(mults[2])); printf("Median calc time us: %d\n", t3.etime(t2)); } diff --git a/rtengine/filmnegativethumb.cc b/rtengine/filmnegativethumb.cc index b31432a55..003fab8e0 100644 --- a/rtengine/filmnegativethumb.cc +++ b/rtengine/filmnegativethumb.cc @@ -89,8 +89,8 @@ void rtengine::Thumbnail::processFilmNegative( const float bmult = (MAX_OUT_VALUE / (bmed * 24)) ; if (settings->verbose) { - printf("Thumbnail channel medians: %g %g %g\n", rmed, gmed, bmed); - printf("Thumbnail computed multipliers: %g %g %g\n", rmult, gmult, bmult); + printf("Thumbnail channel medians: %g %g %g\n", static_cast(rmed), static_cast(gmed), static_cast(bmed)); + printf("Thumbnail computed multipliers: %g %g %g\n", static_cast(rmult), static_cast(gmult), static_cast(bmult)); } #ifdef __SSE2__ diff --git a/rtengine/hilite_recon.cc b/rtengine/hilite_recon.cc index a56ff1918..1ba42a68b 100644 --- a/rtengine/hilite_recon.cc +++ b/rtengine/hilite_recon.cc @@ -323,7 +323,7 @@ void RawImageSource::HLRecovery_inpaint(float** red, float** green, float** blue if (settings->verbose) { for (int c = 0; c < 3; ++c) { - printf("chmax[%d] : %f\tclmax[%d] : %f\tratio[%d] : %f\n", c, chmax[c], c, clmax[c], c, chmax[c] / clmax[c]); + printf("chmax[%d] : %f\tclmax[%d] : %f\tratio[%d] : %f\n", c, static_cast(chmax[c]), c, static_cast(clmax[c]), c, static_cast(chmax[c] / clmax[c])); } } @@ -366,7 +366,7 @@ void RawImageSource::HLRecovery_inpaint(float** red, float** green, float** blue if (settings->verbose) { for (int c = 0; c < 3; ++c) { - printf("correction factor[%d] : %f\n", c, factor[c]); + printf("correction factor[%d] : %f\n", c, static_cast(factor[c])); } } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index e915a11b0..c14e889ad 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -734,7 +734,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) if (params->blackwhite.enabled && params->blackwhite.autoc && abwListener) { if (settings->verbose) { - printf("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB); + printf("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", static_cast(bwAutoR), static_cast(bwAutoG), static_cast(bwAutoB)); } abwListener->BWChanged((float) rrm, (float) ggm, (float) bbm); @@ -871,7 +871,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f))); E_V += params->toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV E_V += log2(params->raw.expos); // exposure raw white point ; log2 ==> linear to EV - adap = powf(2.f, E_V - 3.f); // cd / m2 + adap = pow(2.0, E_V - 3.0); // cd / m2 // end calculation adaptation scene luminosity } diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 236f3c672..7ade3e92c 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -5142,7 +5142,7 @@ void ImProcFunctions::EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wi float *Qpr = ncie->Q_p[0]; if (settings->verbose) { - printf ("minQ=%f maxQ=%f Qpro=%f\n", minQ, maxQ, Qpro); + printf ("minQ=%f maxQ=%f Qpro=%f\n", static_cast(minQ), static_cast(maxQ), static_cast(Qpro)); } if (maxQ > Qpro) { @@ -5563,7 +5563,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double contr = (int) 50.0f * (1.1f - ospread); contr = max (0, min (100, contr)); //take gamma into account - double whiteclipg = (int) (CurveFactory::gamma2 (whiteclip * corr / 65536.0) * 65536.0); + double whiteclipg = (int) (CurveFactory::gamma2(whiteclip * static_cast(corr) / 65536.0) * 65536.0); float gavg = 0.; @@ -5585,7 +5585,7 @@ void ImProcFunctions::getAutoExp (const LUTu &histogram, int histcompr, double } } - whiteclipg = CurveFactory::igamma2 ((float) (whiteclipg / 65535.0)) * 65535.0; //need to inverse gamma transform to get correct exposure compensation parameter + whiteclipg = CurveFactory::igamma2(whiteclipg / 65535.0) * 65535.0; //need to inverse gamma transform to get correct exposure compensation parameter //correction with gamma black = (int) ((65535 * black) / whiteclipg); @@ -5820,8 +5820,8 @@ void ImProcFunctions::lab2rgb (const LabImage &src, Imagefloat &dst, const Glib: */ void ImProcFunctions::colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread) { - const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; - const float scaling = ColorToningParams::LABGRID_CORR_SCALE; + const double factor = ColorToningParams::LABGRID_CORR_MAX * 3.0; + const double scaling = ColorToningParams::LABGRID_CORR_SCALE; float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor / scaling; float a_base = params->colorToning.labgridALow / scaling; float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor / scaling; diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 959030dc6..0e46cd596 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -103,7 +103,7 @@ void sharpenHaloCtrl (float** luminance, float** blurmap, float** base, float** void dcdamping (float** aI, float** aO, float damping, int W, int H) { - const float dampingFac = -2.0 / (damping * damping); + const float dampingFac = -2.f / (damping * damping); #ifdef __SSE2__ vfloat Iv, Ov, Uv, zerov, onev, fourv, fivev, dampingFacv, Tv, Wv, Lv; @@ -163,7 +163,7 @@ namespace rtengine void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, const float * const * blend, int W, int H, const procparams::SharpeningParams &sharpenParam, double Scale) { - if (sharpenParam.deconvamount == 0 && sharpenParam.blurradius < 0.25f) { + if (sharpenParam.deconvamount == 0 && sharpenParam.blurradius < 0.25) { return; } BENCHFUN @@ -180,7 +180,7 @@ BENCHFUN JaggedArray* blurbuffer = nullptr; - if (sharpenParam.blurradius >= 0.25f) { + if (sharpenParam.blurradius >= 0.25) { blurbuffer = new JaggedArray(W, H); JaggedArray &blur = *blurbuffer; #ifdef _OPENMP @@ -229,7 +229,7 @@ BENCHFUN } } - if (sharpenParam.blurradius >= 0.25f) { + if (sharpenParam.blurradius >= 0.25) { JaggedArray &blur = *blurbuffer; #ifdef _OPENMP #pragma omp for @@ -255,7 +255,7 @@ void ImProcFunctions::sharpening (LabImage* lab, const procparams::SharpeningPar // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); - float contrast = sharpenParam.contrast / 100.f; + float contrast = sharpenParam.contrast / 100.0; buildBlendMask(lab->L, blend, W, H, contrast); if(showMask) { @@ -292,7 +292,7 @@ BENCHFUN JaggedArray blur(W, H); - if (sharpenParam.blurradius >= 0.25f) { + if (sharpenParam.blurradius >= 0.25) { #ifdef _OPENMP #pragma omp parallel #endif @@ -372,7 +372,7 @@ BENCHFUN delete [] b3; } - if (sharpenParam.blurradius >= 0.25f) { + if (sharpenParam.blurradius >= 0.25) { #ifdef _OPENMP #pragma omp parallel for #endif @@ -405,10 +405,10 @@ BENCHFUN // k=2 matrix 5x5 k=1 matrix 3x3 const int width = W, height = H; const int unif = params->sharpenMicro.uniformity; - const float amount = (k == 1 ? 2.7f : 1.f) * params->sharpenMicro.amount / 1500.0f; //amount 2000.0 quasi no artifacts ==> 1500 = maximum, after artifacts, 25/9 if 3x3 + const float amount = (k == 1 ? 2.7 : 1.) * params->sharpenMicro.amount / 1500.0; //amount 2000.0 quasi no artifacts ==> 1500 = maximum, after artifacts, 25/9 if 3x3 if (settings->verbose) { - printf ("Micro-contrast amount %f\n", amount); + printf ("Micro-contrast amount %f\n", static_cast(amount)); printf ("Micro-contrast uniformity %i\n", unif); } @@ -439,7 +439,7 @@ BENCHFUN // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); - float contrast = params->sharpenMicro.contrast / 100.f; + float contrast = params->sharpenMicro.contrast / 100.0; buildBlendMask(luminance, blend, W, H, contrast); #ifdef _OPENMP @@ -648,7 +648,7 @@ void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2, bool showMask) // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); - float contrast = params->sharpening.contrast / 100.f; + float contrast = params->sharpening.contrast / 100.0; buildBlendMask(ncie->sh_p, blend, W, H, contrast); if(showMask) { #ifdef _OPENMP diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index 9e7c61dcf..b0dc55b2f 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -689,11 +689,11 @@ static void calcGradientParams (int oW, int oH, const GradientParams& gradient, gp.ta = tan (gradient_angle); gp.xc = w * gradient_center_x; gp.yc = h * gradient_center_y; - gp.ys = sqrt ((float)h * h + (float)w * w) * (gradient_span / cos (gradient_angle)); - gp.ys_inv = 1.0 / gp.ys; - gp.top_edge_0 = gp.yc - gp.ys / 2.0; + gp.ys = rtengine::norm2(static_cast(h), static_cast(w)) * (gradient_span / cos(gradient_angle)); + gp.ys_inv = 1.f / gp.ys; + gp.top_edge_0 = gp.yc - gp.ys / 2.f; - if (gp.ys < 1.0 / h) { + if (h * gp.ys < 1.f) { gp.ys_inv = 0; gp.ys = 0; } @@ -723,7 +723,7 @@ static float calcGradientFactor (const struct grad_params& gp, int x, int y) val = 1.f - pow3 (xcosf (val)); } - return gp.scale + val * (1.0 - gp.scale); + return gp.scale + val * (1.f - gp.scale); } } else { int gy = gp.transpose ? x : y; @@ -747,7 +747,7 @@ static float calcGradientFactor (const struct grad_params& gp, int x, int y) val = 1.f - pow3 (xcosf (val)); } - return gp.scale + val * (1.0 - gp.scale); + return gp.scale + val * (1.f - gp.scale); } } } @@ -766,7 +766,7 @@ static void calcPCVignetteParams (int fW, int fH, int oW, int oH, const PCVignet { // ellipse formula: (x/a)^2 + (y/b)^2 = 1 - double roundness = pcvignette.roundness / 100.0; + float roundness = pcvignette.roundness / 100.f; pcv.feather = pcvignette.feather / 100.0; if (crop.enabled) { @@ -783,42 +783,40 @@ static void calcPCVignetteParams (int fW, int fH, int oW, int oH, const PCVignet pcv.h = oH; } - pcv.fadeout_mul = 1.0 / (0.05 * sqrtf (oW * oW + oH * oH)); + pcv.fadeout_mul = 20.0 / rtengine::norm2(static_cast(oW), static_cast(oW)); float short_side = (pcv.w < pcv.h) ? pcv.w : pcv.h; float long_side = (pcv.w > pcv.h) ? pcv.w : pcv.h; pcv.sep = 2; pcv.sepmix = 0; - pcv.oe_a = sqrt (2.0) * long_side * 0.5; + pcv.oe_a = std::sqrt(2.f) * long_side * 0.5f; pcv.oe_b = pcv.oe_a * short_side / long_side; - pcv.ie_mul = (1.0 / sqrt (2.0)) * (1.0 - pcv.feather); + pcv.ie_mul = (1.f - pcv.feather) / std::sqrt(2.f); pcv.is_super_ellipse_mode = false; pcv.is_portrait = (pcv.w < pcv.h); - if (roundness < 0.5) { + if (roundness < 0.5f) { // make super-ellipse of higher and higher degree pcv.is_super_ellipse_mode = true; - float sepf = 2 + 4 * powf (1.0 - 2 * roundness, 1.3); // gamma 1.3 used to balance the effect in the 0.0...0.5 roundness range + float sepf = 2 + 4 * std::pow(1.f - 2 * roundness, 1.3f); // gamma 1.3 used to balance the effect in the 0.0...0.5 roundness range pcv.sep = ((int)sepf) & ~0x1; - pcv.sepmix = (sepf - pcv.sep) * 0.5; // 0.0 to 1.0 - pcv.oe1_a = powf (2.0, 1.0 / pcv.sep) * long_side * 0.5; + pcv.sepmix = (sepf - pcv.sep) * 0.5f; // 0.0 to 1.0 + pcv.oe1_a = std::pow(2.f, 1.f / pcv.sep) * long_side * 0.5f; pcv.oe1_b = pcv.oe1_a * short_side / long_side; - pcv.ie1_mul = (1.0 / powf (2.0, 1.0 / pcv.sep)) * (1.0 - pcv.feather); - pcv.oe2_a = powf (2.0, 1.0 / (pcv.sep + 2)) * long_side * 0.5; + pcv.ie1_mul = (1.f - pcv.feather) / std::pow(2.f, 1.f / pcv.sep); + pcv.oe2_a = std::pow(2.f, 1.f / (pcv.sep + 2)) * long_side * 0.5f; pcv.oe2_b = pcv.oe2_a * short_side / long_side; - pcv.ie2_mul = (1.0 / powf (2.0, 1.0 / (pcv.sep + 2))) * (1.0 - pcv.feather); - } - - if (roundness > 0.5) { + pcv.ie2_mul = (1.f - pcv.feather) / std::pow(2.f, 1.f / (pcv.sep + 2)); + } else if (roundness > 0.5f) { // scale from fitted ellipse towards circle - float rad = sqrtf (pcv.w * pcv.w + pcv.h * pcv.h) / 2.0; + float rad = rtengine::norm2(static_cast(pcv.w), static_cast(pcv.h)) / 2.f; float diff_a = rad - pcv.oe_a; float diff_b = rad - pcv.oe_b; - pcv.oe_a = pcv.oe_a + diff_a * 2 * (roundness - 0.5); - pcv.oe_b = pcv.oe_b + diff_b * 2 * (roundness - 0.5); + pcv.oe_a = pcv.oe_a + diff_a * 2 * (roundness - 0.5f); + pcv.oe_b = pcv.oe_b + diff_b * 2 * (roundness - 0.5f); } - pcv.scale = powf (2, -pcvignette.strength); + pcv.scale = std::pow(2, -pcvignette.strength); if (pcvignette.strength >= 6.0) { pcv.scale = 0.0; @@ -954,23 +952,23 @@ void ImProcFunctions::transformLuminanceOnly (Imagefloat* original, Imagefloat* double r = sqrt (vig_x_d * vig_x_d + vig_y_d * vig_y_d); if (darkening) { - factor /= std::max (v + mul * tanh (b * (maxRadius - r) / maxRadius), 0.001); + factor /= std::max (v + mul * tanh(b * (maxRadius - r) / maxRadius), 0.001); } else { - factor = v + mul * tanh (b * (maxRadius - r) / maxRadius); + factor = v + mul * tanh(b * (maxRadius - r) / maxRadius); } } if (applyGradient) { - factor *= calcGradientFactor (gp, cx + x, cy + y); + factor *= static_cast(calcGradientFactor(gp, cx + x, cy + y)); } if (applyPCVignetting) { - factor *= calcPCVignetteFactor (pcv, cx + x, cy + y); + factor *= static_cast(calcPCVignetteFactor(pcv, cx + x, cy + y)); } - transformed->r (y, x) = original->r (y, x) * factor; - transformed->g (y, x) = original->g (y, x) * factor; - transformed->b (y, x) = original->b (y, x) * factor; + transformed->r(y, x) = static_cast(original->r(y, x)) * factor; + transformed->g(y, x) = static_cast(original->g(y, x)) * factor; + transformed->b(y, x) = static_cast(original->b(y, x)) * factor; } } } @@ -1147,11 +1145,11 @@ void ImProcFunctions::transformGeneral(bool highQuality, Imagefloat *original, I } if (enableGradient) { - vignmul *= calcGradientFactor(gp, cx + x, cy + y); + vignmul *= static_cast(calcGradientFactor(gp, cx + x, cy + y)); } if (enablePCVignetting) { - vignmul *= calcPCVignetteFactor(pcv, cx + x, cy + y); + vignmul *= static_cast(calcPCVignetteFactor(pcv, cx + x, cy + y)); } if (yc > 0 && yc < original->getHeight() - 2 && xc > 0 && xc < original->getWidth() - 2) { From f0b5ca02e7f9649db5354db6313885ee4b4fbbb7 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 10 Feb 2020 16:22:42 +0100 Subject: [PATCH 25/38] More double promote fixes --- rtengine/imagesource.h | 2 +- rtengine/ipwavelet.cc | 27 +++---- rtengine/rawimage.cc | 41 +++++----- rtengine/rawimagesource.cc | 63 +++++++-------- rtengine/shmap.cc | 115 ++++++++++++--------------- rtengine/shmap.h | 2 - rtengine/simpleprocess.cc | 8 +- rtgui/cropwindow.cc | 2 +- rtgui/defringe.cc | 2 +- rtgui/diagonalcurveeditorsubgroup.cc | 6 +- rtgui/dirpyrequalizer.cc | 4 +- rtgui/gradient.cc | 4 +- rtgui/histogrampanel.cc | 20 ++--- rtgui/hsvequalizer.cc | 2 +- rtgui/labcurve.cc | 2 +- rtgui/labgrid.cc | 16 ++-- rtgui/lockablecolorpicker.cc | 14 ++-- 17 files changed, 155 insertions(+), 175 deletions(-) diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 76f4e435a..96711c1a0 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -85,7 +85,7 @@ protected: public: ImageSource () : references (1), redAWBMul(-1.), greenAWBMul(-1.), blueAWBMul(-1.), - embProfile(nullptr), idata(nullptr), dirpyrdenoiseExpComp(INFINITY) {} + embProfile(nullptr), idata(nullptr), dirpyrdenoiseExpComp(RT_INFINITY) {} ~ImageSource () override {} virtual int load (const Glib::ustring &fname) = 0; diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index be64be0fc..0e621b254 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -897,10 +897,10 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const //init for edge and denoise float vari[4]; - vari[0] = 8.f * SQR((cp.lev0n / 125.0) * (1.0 + cp.lev0n / 25.0)); - vari[1] = 8.f * SQR((cp.lev1n / 125.0) * (1.0 + cp.lev1n / 25.0)); - vari[2] = 8.f * SQR((cp.lev2n / 125.0) * (1.0 + cp.lev2n / 25.0)); - vari[3] = 8.f * SQR((cp.lev3n / 125.0) * (1.0 + cp.lev3n / 25.0)); + vari[0] = 8.f * SQR((cp.lev0n / 125.f) * (1.f + cp.lev0n / 25.f)); + vari[1] = 8.f * SQR((cp.lev1n / 125.f) * (1.f + cp.lev1n / 25.f)); + vari[2] = 8.f * SQR((cp.lev2n / 125.f) * (1.f + cp.lev2n / 25.f)); + vari[3] = 8.f * SQR((cp.lev3n / 125.f) * (1.f + cp.lev3n / 25.f)); if((cp.lev0n > 0.1f || cp.lev1n > 0.1f || cp.lev2n > 0.1f || cp.lev3n > 0.1f) && cp.noiseena) { int edge = 1; @@ -1116,7 +1116,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const float Chprov1 = sqrtf(SQR(a) + SQR(b)); yBuffer[col] = (Chprov1 == 0.f) ? 1.f : a / Chprov1; xBuffer[col] = (Chprov1 == 0.f) ? 0.f : b / Chprov1; - chprovBuffer[col] = Chprov1 / 327.68; + chprovBuffer[col] = Chprov1 / 327.68f; } } @@ -1280,7 +1280,7 @@ void ImProcFunctions::Aver( float * RESTRICT DataList, int datalen, float &aver for(int i = 0; i < datalen; i++) { if(DataList[i] >= thres) { - averaP += DataList[i]; + averaP += static_cast(DataList[i]); if(DataList[i] > lmax) { lmax = DataList[i]; @@ -1288,7 +1288,7 @@ void ImProcFunctions::Aver( float * RESTRICT DataList, int datalen, float &aver countP++; } else if(DataList[i] < -thres) { - averaN += DataList[i]; + averaN += static_cast(DataList[i]); if(DataList[i] < lmin) { lmin = DataList[i]; @@ -1334,10 +1334,10 @@ void ImProcFunctions::Sigma( float * RESTRICT DataList, int datalen, float aver for(int i = 0; i < datalen; i++) { if(DataList[i] >= thres) { - variP += SQR(DataList[i] - averagePlus); + variP += static_cast(SQR(DataList[i] - averagePlus)); countP++; } else if(DataList[i] <= -thres) { - variN += SQR(DataList[i] - averageNeg); + variN += static_cast(SQR(DataList[i] - averageNeg)); countN++; } } @@ -1613,7 +1613,7 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float * #endif for (int i = 0; i < W_L * H_L; i++) { - avedbl += WavCoeffs_L0[i]; + avedbl += static_cast(WavCoeffs_L0[i]); } #ifdef _OPENMP @@ -1702,7 +1702,7 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float * #pragma omp parallel num_threads(wavNestedLevels) if(wavNestedLevels>1) #endif { - if(contrast != 0.f && cp.resena && max0 > 0.0) { // contrast = 0.f means that all will be multiplied by 1.f, so we can skip this step + if(contrast != 0.f && cp.resena && max0 > 0.f) { // contrast = 0.f means that all will be multiplied by 1.f, so we can skip this step { #ifdef _OPENMP #pragma omp for @@ -2011,7 +2011,7 @@ void ImProcFunctions::WaveletAandBAllAB(wavelet_decomposition &WaveletCoeffs_a, editWhatever->v(i,j) = valpar; } */ - float valparam = float((hhCurve->getVal(Color::huelab_to_huehsv2(hueR)) - 0.5f) * 1.7f) + hueR; //get H=f(H) 1.7 optimisation ! + float valparam = (static_cast(hhCurve->getVal(Color::huelab_to_huehsv2(hueR))) - 0.5f) * 1.7f + hueR; //get H=f(H) 1.7 optimisation ! float2 sincosval = xsincosf(valparam); WavCoeffs_a0[i * W_L + j] = chR * sincosval.y; WavCoeffs_b0[i * W_L + j] = chR * sincosval.x; @@ -3016,9 +3016,8 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit if(Chutili) { int i_i = i / W_L; int j_j = i - i_i * W_L; - double lr; float modhue2 = varhue[i_i][j_j]; - float valparam = float((ChCurve->getVal(lr = Color::huelab_to_huehsv2(modhue2)) - 0.5f)); //get valparam=f(H) + float valparam = static_cast(ChCurve->getVal(Color::huelab_to_huehsv2(modhue2))) - 0.5f; //get valparam=f(H) if(valparam > 0.f) { scale2 = 1.f + 3.f * valparam; //arbitrary value diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 4421e4af4..34d5d961c 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -171,7 +171,7 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac } for (int c = 0; c < 4; c++) { - dsumthr[c] += sum[c]; + dsumthr[c] += static_cast(sum[c]); } skip_block2: @@ -195,7 +195,7 @@ skip_block2: } for(int c = 0; c < 4; c++) { - dsum[c] -= cblack_[c] * dsum[c + 4]; + dsum[c] -= static_cast(cblack_[c]) * dsum[c + 4]; } } else if(isXtrans()) { @@ -241,7 +241,7 @@ skip_block2: } for (int c = 0; c < 8; c++) { - dsumthr[c] += sum[c]; + dsumthr[c] += static_cast(sum[c]); } skip_block3: @@ -365,18 +365,14 @@ skip_block: } for (dmin = DBL_MAX, dmax = c = 0; c < 4; c++) { - if (dmin > pre_mul_[c]) { - dmin = pre_mul_[c]; - } - - if (dmax < pre_mul_[c]) { - dmax = pre_mul_[c]; - } + dmin = rtengine::min(dmin, pre_mul_[c]); + dmax = rtengine::max(dmax, pre_mul_[c]); } for (c = 0; c < 4; c++) { int sat = this->get_white(c) - cblack_[c]; - scale_mul_[c] = (pre_mul_[c] /= dmax) * 65535.0 / sat; + pre_mul_[c] /= static_cast(dmax); + scale_mul_[c] = pre_mul_[c] * 65535.f / sat; } if (settings->verbose) { @@ -387,25 +383,30 @@ skip_block: asn[c] = 0; } - if (asn[c] > dmax) { + if (asn[c] > static_cast(dmax)) { dmax = asn[c]; } } for (c = 0; c < 4; c++) { - asn[c] /= dmax; + asn[c] /= static_cast(dmax); } printf("cam_mul:[%f %f %f %f], AsShotNeutral:[%f %f %f %f]\n", - cam_mul[0], cam_mul[1], cam_mul[2], cam_mul[3], asn[0], asn[1], asn[2], asn[3]); + static_cast(cam_mul[0]), static_cast(cam_mul[1]), + static_cast(cam_mul[2]), static_cast(cam_mul[3]), + static_cast(asn[0]), static_cast(asn[1]), static_cast(asn[2]), static_cast(asn[3])); printf("pre_mul:[%f %f %f %f], scale_mul:[%f %f %f %f], cblack:[%f %f %f %f]\n", - pre_mul_[0], pre_mul_[1], pre_mul_[2], pre_mul_[3], - scale_mul_[0], scale_mul_[1], scale_mul_[2], scale_mul_[3], - cblack_[0], cblack_[1], cblack_[2], cblack_[3]); + static_cast(pre_mul_[0]), static_cast(pre_mul_[1]), + static_cast(pre_mul_[2]), static_cast(pre_mul_[3]), + static_cast(scale_mul_[0]), static_cast(scale_mul_[1]), + static_cast(scale_mul_[2]), static_cast(scale_mul_[3]), + static_cast(cblack_[0]), static_cast(cblack_[1]), + static_cast(cblack_[2]), static_cast(cblack_[3])); printf("rgb_cam:[ [ %f %f %f], [%f %f %f], [%f %f %f] ]%s\n", - rgb_cam[0][0], rgb_cam[1][0], rgb_cam[2][0], - rgb_cam[0][1], rgb_cam[1][1], rgb_cam[2][1], - rgb_cam[0][2], rgb_cam[1][2], rgb_cam[2][2], + static_cast(rgb_cam[0][0]), static_cast(rgb_cam[1][0]), static_cast(rgb_cam[2][0]), + static_cast(rgb_cam[0][1]), static_cast(rgb_cam[1][1]), static_cast(rgb_cam[2][1]), + static_cast(rgb_cam[0][2]), static_cast(rgb_cam[1][2]), static_cast(rgb_cam[2][2]), (!this->isBayer()) ? " (not bayer)" : ""); } diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 003e018a4..fcc85f2c6 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include +#include #include #include "camconst.h" @@ -98,7 +99,7 @@ void transLineFuji (const float* const red, const float* const green, const floa { // Fuji SuperCCD rotation + coarse rotation - int start = ABS(fw - i); + int start = std::abs(fw - i); int w = fw * 2 + 1; int h = (imheight - fw) * 2 + 1; int end = min(h + fw - i, w - fw + i); @@ -422,10 +423,6 @@ void transLineD1x (const float* const red, const float* const green, const float namespace rtengine { -#undef ABS - -#define ABS(a) ((a)<0?-(a):(a)) - RawImageSource::RawImageSource () : ImageSource() , W(0), H(0) @@ -615,7 +612,7 @@ float calculate_scale_mul(float scale_mul[4], const float pre_mul_[4], const flo { if (isMono || colors == 1) { for (int c = 0; c < 4; c++) { - scale_mul[c] = 65535.0 / (c_white[c] - c_black[c]); + scale_mul[c] = 65535.f / (c_white[c] - c_black[c]); } } else { float pre_mul[4]; @@ -631,7 +628,7 @@ float calculate_scale_mul(float scale_mul[4], const float pre_mul_[4], const flo float maxpremul = max(pre_mul[0], pre_mul[1], pre_mul[2], pre_mul[3]); for (int c = 0; c < 4; c++) { - scale_mul[c] = (pre_mul[c] / maxpremul) * 65535.0 / (c_white[c] - c_black[c]); + scale_mul[c] = (pre_mul[c] / maxpremul) * 65535.f / (c_white[c] - c_black[c]); } } @@ -670,7 +667,7 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima || (ri->getSensorType() == ST_BAYER && raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO)); for (int i = 0; i < 4; ++i) { - c_white[i] = (ri->get_white(i) - cblacksom[i]) / raw.expos + cblacksom[i]; + c_white[i] = (ri->get_white(i) - cblacksom[i]) / static_cast(raw.expos) + cblacksom[i]; } float gain = calculate_scale_mul(new_scale_mul, new_pre_mul, c_white, cblacksom, isMono, ri->get_colors()); @@ -679,21 +676,21 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima bm = new_scale_mul[2] / scale_mul[2] * gain; //fprintf(stderr, "camera gain: %f, current wb gain: %f, diff in stops %f\n", camInitialGain, gain, log2(camInitialGain) - log2(gain)); } else { - // old scaling: used a fixed reference gain based on camera (as-shot) white balance - - // how much we need to scale each channel to get our new white balance - rm = refwb_red / rm; - gm = refwb_green / gm; - bm = refwb_blue / bm; - // normalize so larger multiplier becomes 1.0 - float minval = min(rm, gm, bm); - rm /= minval; - gm /= minval; - bm /= minval; - // multiply with reference gain, ie as-shot WB - rm *= camInitialGain; - gm *= camInitialGain; - bm *= camInitialGain; +// // old scaling: used a fixed reference gain based on camera (as-shot) white balance +// +// // how much we need to scale each channel to get our new white balance +// rm = refwb_red / rm; +// gm = refwb_green / gm; +// bm = refwb_blue / bm; +// // normalize so larger multiplier becomes 1.0 +// float minval = min(rm, gm, bm); +// rm /= minval; +// gm /= minval; +// bm /= minval; +// // multiply with reference gain, ie as-shot WB +// rm *= camInitialGain; +// gm *= camInitialGain; +// bm *= camInitialGain; } defGain = 0.0; @@ -872,13 +869,13 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima for (int i = 1; i < image->getHeight() - 1; i++) { for (int j = 2 - (a + i + 1) % 2; j < image->getWidth() - 1; j += 2) { // edge-adaptive interpolation - double dh = (ABS(image->r(i, j + 1) - image->r(i, j - 1)) + ABS(image->g(i, j + 1) - image->g(i, j - 1)) + ABS(image->b(i, j + 1) - image->b(i, j - 1))) / 1.0; - double dv = (ABS(image->r(i + 1, j) - image->r(i - 1, j)) + ABS(image->g(i + 1, j) - image->g(i - 1, j)) + ABS(image->b(i + 1, j) - image->b(i - 1, j))) / 1.0; - double eh = 1.0 / (1.0 + dh); - double ev = 1.0 / (1.0 + dv); - image->r(i, j) = (eh * (image->r(i, j + 1) + image->r(i, j - 1)) + ev * (image->r(i + 1, j) + image->r(i - 1, j))) / (2.0 * (eh + ev)); - image->g(i, j) = (eh * (image->g(i, j + 1) + image->g(i, j - 1)) + ev * (image->g(i + 1, j) + image->g(i - 1, j))) / (2.0 * (eh + ev)); - image->b(i, j) = (eh * (image->b(i, j + 1) + image->b(i, j - 1)) + ev * (image->b(i + 1, j) + image->b(i - 1, j))) / (2.0 * (eh + ev)); + float dh = (std::fabs(image->r(i, j + 1) - image->r(i, j - 1)) + std::fabs(image->g(i, j + 1) - image->g(i, j - 1)) + std::fabs(image->b(i, j + 1) - image->b(i, j - 1))); + float dv = (std::fabs(image->r(i + 1, j) - image->r(i - 1, j)) + std::fabs(image->g(i + 1, j) - image->g(i - 1, j)) + std::fabs(image->b(i + 1, j) - image->b(i - 1, j))); + float eh = 1.f / (1.f + dh); + float ev = 1.f / (1.f + dv); + image->r(i, j) = (eh * (image->r(i, j + 1) + image->r(i, j - 1)) + ev * (image->r(i + 1, j) + image->r(i - 1, j))) / (2.f * (eh + ev)); + image->g(i, j) = (eh * (image->g(i, j + 1) + image->g(i, j - 1)) + ev * (image->g(i + 1, j) + image->g(i - 1, j))) / (2.f * (eh + ev)); + image->b(i, j) = (eh * (image->b(i, j + 1) + image->b(i, j - 1)) + ev * (image->b(i + 1, j) + image->b(i - 1, j))) / (2.f * (eh + ev)); } // first pixel @@ -1542,7 +1539,7 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le } } - if(prepareDenoise && dirpyrdenoiseExpComp == INFINITY) { + if(prepareDenoise && dirpyrdenoiseExpComp == RT_INFINITY) { LUTu aehist; int aehistcompr; double clip = 0; @@ -3873,7 +3870,7 @@ void RawImageSource::getRowStartEnd (int x, int &start, int &end) { if (fuji) { int fw = ri->get_FujiWidth(); - start = ABS(fw - x) + border; + start = std::abs(fw - x) + border; end = min(H + W - fw - x, fw + x) - border; } else { start = border; @@ -3914,7 +3911,7 @@ void RawImageSource::getAutoWBMultipliers (double &rm, double &gm, double &bm) if (fuji) { for (int i = 32; i < H - 32; i++) { int fw = ri->get_FujiWidth(); - int start = ABS(fw - i) + 32; + int start = std::abs(fw - i) + 32; int end = min(H + W - fw - i, fw + i) - 32; for (int j = start; j < end; j++) { diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index abdcc42a4..306e30bdd 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -27,6 +27,37 @@ #undef THREAD_PRIORITY_NORMAL #include "opthelper.h" +namespace { + +void fillLuminance(rtengine::Imagefloat* img, float** luminance, const float lumi[3], int W, int H) // fill with luminance +{ + +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int i = 0; i < H; i++) + for (int j = 0; j < W; j++) { + luminance[i][j] = lumi[0] * std::max(img->r(i, j), 0.f) + lumi[1] * std::max(img->g(i, j), 0.f) + lumi[2] * std::max(img->b(i, j), 0.f); + } + +} + +void fillLuminanceL(float** L, float** luminance, int W, int H) // fill with luminance +{ + +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int i = 0; i < H; i++) + for (int j = 0; j < W; j++) { + luminance[i][j] = std::max(L[i][j], 0.f) ;//we can put here some enhancements Gamma, compression data,... + } + +} + +} namespace rtengine { @@ -51,39 +82,13 @@ SHMap::~SHMap () delete [] map; } -void SHMap::fillLuminance( Imagefloat * img, float **luminance, double lumi[3] ) // fill with luminance -{ - -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int i = 0; i < H; i++) - for (int j = 0; j < W; j++) { - luminance[i][j] = lumi[0] * std::max(img->r(i, j), 0.f) + lumi[1] * std::max(img->g(i, j), 0.f) + lumi[2] * std::max(img->b(i, j), 0.f); - } - -} - -void SHMap::fillLuminanceL( float ** L, float **luminance) // fill with luminance -{ - -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int i = 0; i < H; i++) - for (int j = 0; j < W; j++) { - luminance[i][j] = std::max(L[i][j], 0.f) ;//we can put here some enhancements Gamma, compression data,... - } - -} - void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int skip) { + const float lumif[3] = { static_cast(lumi[0]), static_cast(lumi[1]), static_cast(lumi[2]) }; + if (!hq) { - fillLuminance( img, map, lumi); + fillLuminance(img, map, lumif, W, H); const bool useBoxBlur = radius > 40.0; // boxblur is less prone to artifacts for large radi @@ -91,7 +96,7 @@ void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int #pragma omp parallel if (!useBoxBlur) #endif { - gaussianBlur (map, map, W, H, radius, useBoxBlur); + gaussianBlur(map, map, W, H, radius, useBoxBlur); } } @@ -99,7 +104,7 @@ void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //experimental dirpyr shmap - float thresh = (100.f * radius); //1000; + float thresh = 100.0 * radius; //1000; // set up range function // calculate size of Lookup table. That's possible because from a value k for all i>=k rangefn[i] will be exp(-10) @@ -142,7 +147,7 @@ void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int dirpyrlo[1] = buffer; } - fillLuminance( img, dirpyrlo[0], lumi); + fillLuminance(img, dirpyrlo[0], lumif, W, H); scale = 1; int level = 0; @@ -181,28 +186,18 @@ void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int for (int j = 0; j < W; j++) { _val = map[i][j]; - if (_val < _min_f) { - _min_f = _val; - } + _min_f = std::min(_min_f, _val); + _max_f = std::max(_max_f, _val); - if (_val > _max_f) { - _max_f = _val; - } - - _avg += _val; + _avg += static_cast(_val); } #ifdef _OPENMP #pragma omp critical #endif { - if(_min_f < min_f ) { - min_f = _min_f; - } - - if(_max_f > max_f ) { - max_f = _max_f; - } + min_f = std::min(min_f, _min_f); + max_f = std::max(max_f, _max_f); } } _avg /= ((H) * (W)); @@ -214,7 +209,7 @@ void SHMap::updateL (float** L, double radius, bool hq, int skip) { if (!hq) { - fillLuminanceL( L, map); + fillLuminanceL(L, map, W, H); #ifdef _OPENMP #pragma omp parallel #endif @@ -228,7 +223,7 @@ void SHMap::updateL (float** L, double radius, bool hq, int skip) { //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //experimental dirpyr shmap - float thresh = (100.f * radius); //1000; + float thresh = 100.0 * radius; //1000; int levrad; // = 16; levrad = 2; //for retinex - otherwise levrad = 16 // set up range function @@ -274,7 +269,7 @@ void SHMap::updateL (float** L, double radius, bool hq, int skip) dirpyrlo[1] = buffer; } - fillLuminanceL( L, dirpyrlo[0]); + fillLuminanceL(L, dirpyrlo[0], W, H); scale = 1; int level = 0; @@ -313,28 +308,18 @@ void SHMap::updateL (float** L, double radius, bool hq, int skip) for (int j = 0; j < W; j++) { _val = map[i][j]; - if (_val < _min_f) { - _min_f = _val; - } + _min_f = std::min(_min_f, _val); + _max_f = std::max(_max_f, _val); - if (_val > _max_f) { - _max_f = _val; - } - - _avg += _val; + _avg += static_cast(_val); } #ifdef _OPENMP #pragma omp critical #endif { - if(_min_f < min_f ) { - min_f = _min_f; - } - - if(_max_f > max_f ) { - max_f = _max_f; - } + min_f = std::min(min_f, _min_f); + max_f = std::max(max_f, _max_f); } } _avg /= ((H) * (W)); diff --git a/rtengine/shmap.h b/rtengine/shmap.h index 68e352b23..b1b1e5eff 100644 --- a/rtengine/shmap.h +++ b/rtengine/shmap.h @@ -48,8 +48,6 @@ public: private: int W, H; - void fillLuminance( Imagefloat * img, float **luminance, double lumi[3] ); - void fillLuminanceL( float ** L, float **luminance ); void dirpyr_shmap(float ** data_fine, float ** data_coarse, int width, int height, const LUTf& rangefn, int level, int scale); }; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 1c1e46a65..c50e23d4b 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -994,7 +994,7 @@ private: ipf.rgbProc (baseImg, labView, nullptr, curve1, curve2, curve, params.toneCurve.saturation, rCurve, gCurve, bCurve, satLimit, satLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, customToneCurvebw1, customToneCurvebw2, rrm, ggm, bbm, autor, autog, autob, expcomp, hlcompr, hlcomprthresh, dcpProf, as, histToneCurve, options.chunkSizeRGB, options.measure); if (settings->verbose) { - printf ("Output image / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", autor, autog, autob); + printf ("Output image / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", static_cast(autor), static_cast(autog), static_cast(autob)); } // if clut was used and size of clut cache == 1 we free the memory used by the clutstore (default clut cache size = 1 for 32 bit OS) @@ -1162,10 +1162,10 @@ private: adap = 2000.; }//if no exif data or wrong else { - float E_V = fcomp + log2 ((fnum * fnum) / fspeed / (fiso / 100.f)); + double E_V = fcomp + log2 ((fnum * fnum) / fspeed / (fiso / 100.f)); E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV - E_V += log2 (params.raw.expos); // exposure raw white point ; log2 ==> linear to EV - adap = powf (2.f, E_V - 3.f); //cd / m2 + E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV + adap = std::pow(2.0, E_V - 3.0); //cd / m2 } LUTf CAMBrightCurveJ; diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index edc378700..8e1dcfaf5 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -124,7 +124,7 @@ void CropWindow::initZoomSteps() zoomSteps.push_back(ZoomStep(" 8%", 1.0/12.0, 120, true)); char lbl[64]; for (int s = 100; s >= 11; --s) { - float z = 10./float(s); + float z = 10.f / s; sprintf(lbl, "% 2d%%", int(z * 100)); bool is_major = (s == s/10 * 10); zoomSteps.push_back(ZoomStep(lbl, z, s, is_major)); diff --git a/rtgui/defringe.cc b/rtgui/defringe.cc index cdec88edc..7aae8377a 100644 --- a/rtgui/defringe.cc +++ b/rtgui/defringe.cc @@ -37,7 +37,7 @@ Defringe::Defringe () : FoldableToolPanel(this, "defringe", M("TP_DEFRINGE_LABEL float R, G, B; for (int i = 0; i < 7; i++) { - float x = float(i) * (1.0f / 6.0); + float x = i / 6.f; Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); bottomMilestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index eed6c63d3..079a083ea 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -477,13 +477,13 @@ void DiagonalCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, i double pos[3]; shcSelector->getPositions(pos[0], pos[1], pos[2]); - if (pipetteVal >= pos[2]) { + if (static_cast(pipetteVal) >= pos[2]) { editedAdjuster = highlights; paramCurve->setActiveParam(4); - } else if(pipetteVal >= pos[1]) { + } else if(static_cast(pipetteVal) >= pos[1]) { editedAdjuster = lights; paramCurve->setActiveParam(5); - } else if(pipetteVal >= pos[0]) { + } else if(static_cast(pipetteVal) >= pos[0]) { editedAdjuster = darks; paramCurve->setActiveParam(6); } else { diff --git a/rtgui/dirpyrequalizer.cc b/rtgui/dirpyrequalizer.cc index fd0268efa..34aecf095 100644 --- a/rtgui/dirpyrequalizer.cc +++ b/rtgui/dirpyrequalizer.cc @@ -428,7 +428,7 @@ void DirPyrEqualizer::lumacontrastPlusPressed () { for (int i = 0; i < 6; i++) { - float inc = 0.05 * (6 - i); + double inc = 0.05 * (6 - i); multiplier[i]->setValue(multiplier[i]->getValue() + inc); adjusterChanged(multiplier[i], multiplier[i]->getValue()); } @@ -439,7 +439,7 @@ void DirPyrEqualizer::lumacontrastMinusPressed () { for (int i = 0; i < 6; i++) { - float inc = -0.05 * (6 - i); + double inc = -0.05 * (6 - i); multiplier[i]->setValue(multiplier[i]->getValue() + inc); adjusterChanged(multiplier[i], multiplier[i]->getValue()); } diff --git a/rtgui/gradient.cc b/rtgui/gradient.cc index 4f389e112..b46f8e1ca 100644 --- a/rtgui/gradient.cc +++ b/rtgui/gradient.cc @@ -164,7 +164,7 @@ void Gradient::updateGeometry(const int centerX, const int centerY, const double const auto decay = feather * rtengine::norm2 (imW, imH) / 200.0; rtengine::Coord origin (imW / 2 + centerX * imW / 200, imH / 2 + centerY * imH / 200); - const auto updateLine = [&](Geometry* geometry, const float radius, const float begin, const float end) + const auto updateLine = [&](Geometry* geometry, const double radius, const double begin, const double end) { const auto line = static_cast(geometry); line->begin = PolarCoord(radius, -degree + begin); @@ -173,7 +173,7 @@ void Gradient::updateGeometry(const int centerX, const int centerY, const double line->end += origin; }; - const auto updateLineWithDecay = [&](Geometry* geometry, const float radius, const float offSetAngle) + const auto updateLineWithDecay = [&](Geometry* geometry, const double radius, const double offSetAngle) { const auto line = static_cast(geometry); line->begin = PolarCoord (radius, -degree + 180.) + PolarCoord (decay, -degree + offSetAngle); diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index dd0cbde46..b8338e4e8 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -518,26 +518,26 @@ void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustrin // Luma cc->set_source_rgb(1.0, 1.0, 1.0); if (options.histogramDrawMode < 2) { - cc->move_to(Lab_L * (winw - 3.*s) / 100.0 + 0.5*s, 0); - cc->line_to(Lab_L * (winw - 3.*s) / 100.0 + 0.5*s, winh - 0); + cc->move_to(static_cast(Lab_L) * (winw - 3. * s) / 100.0 + 0.5 * s, 0); + cc->line_to(static_cast(Lab_L) * (winw - 3. * s) / 100.0 + 0.5 * s, winh - 0); } else { - cc->move_to(HistogramScaling::log (100, Lab_L) * (winw - 1.) / 100.0 + 0.5*s, 0); - cc->line_to(HistogramScaling::log (100, Lab_L) * (winw - 1.) / 100.0 + 0.5*s, winh - 0); + cc->move_to(HistogramScaling::log(100, Lab_L) * (winw - 1.) / 100.0 + 0.5 * s, 0); + cc->line_to(HistogramScaling::log(100, Lab_L) * (winw - 1.) / 100.0 + 0.5 * s, winh - 0); } cc->stroke(); } if (needChroma) { // Chroma - float chromaval = sqrt(Lab_a * Lab_a + Lab_b * Lab_b) / 1.8; + double chromaval = sqrt(Lab_a * Lab_a + Lab_b * Lab_b) / 1.8; // float chromaval = sqrt(Lab_a*Lab_a + Lab_b*Lab_b); cc->set_source_rgb(0.9, 0.9, 0.0); if (options.histogramDrawMode < 2) { - cc->move_to(chromaval * (winw - 1.) / 100.0 + 0.5*s, 0); - cc->line_to(chromaval * (winw - 1.) / 100.0 + 0.5*s, winh - 0); + cc->move_to(chromaval * (winw - 1.) / 100.0 + 0.5 * s, 0); + cc->line_to(chromaval * (winw - 1.) / 100.0 + 0.5 * s, winh - 0); } else { - cc->move_to(HistogramScaling::log (100, chromaval) * (winw - 1.) / 100.0 + 0.5*s, 0); - cc->line_to(HistogramScaling::log (100, chromaval) * (winw - 1.) / 100.0 + 0.5*s, winh - 0); + cc->move_to(HistogramScaling::log(100, chromaval) * (winw - 1.) / 100.0 + 0.5 * s, 0); + cc->line_to(HistogramScaling::log(100, chromaval) * (winw - 1.) / 100.0 + 0.5 * s, winh - 0); } cc->stroke(); } @@ -989,7 +989,7 @@ void HistogramArea::drawCurve(Cairo::RefPtr &cr, cr->set_line_width(s); cr->move_to (0, vsize - 1); - scale = scale <= 0.f ? 0.001f : scale; // avoid division by zero and negative values + scale = scale <= 0.0 ? 0.001 : scale; // avoid division by zero and negative values for (int i = 0; i < 256; i++) { double val = data[i] * (double)vsize / scale; diff --git a/rtgui/hsvequalizer.cc b/rtgui/hsvequalizer.cc index ee3eb90a7..817ba1f4d 100644 --- a/rtgui/hsvequalizer.cc +++ b/rtgui/hsvequalizer.cc @@ -38,7 +38,7 @@ HSVEqualizer::HSVEqualizer () : FoldableToolPanel(this, "hsvequalizer", M("TP_HS // -0.1 rad < Hue < 1.6 rad for (int i = 0; i < 7; i++) { - float x = float(i) * (1.0f / 6.0); + float x = i / 6.0; Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); bottomMilestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index 491b02c4c..5f4febc0a 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -203,7 +203,7 @@ LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL"), for (int i = 0; i < 7; i++) { float R, G, B; - float x = float(i) * (1.0f / 6.0); + float x = i / 6.0; Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); milestones.emplace_back(x, R, G, B); } diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index 516dbb825..d8a22b1d9 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -209,8 +209,8 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr &crf) float x, y, z; int ii = i - cells/2; int jj = j - cells/2; - float a = step * (ii + 0.5); - float b = step * (jj + 0.5); + float a = step * (ii + 0.5f); + float b = step * (jj + 0.5f); Color::Lab2XYZ(25000.f, a, b, x, y, z); Color::xyz2srgb(x, y, z, R, G, B); cr->set_source_rgb(R / 65535.f, G / 65535.f, B / 65535.f); @@ -231,10 +231,10 @@ bool LabGridArea::on_draw(const ::Cairo::RefPtr &crf) // drawing the connection line cr->set_antialias(Cairo::ANTIALIAS_DEFAULT); float loa, hia, lob, hib; - loa = .5f * (width + width * low_a); - hia = .5f * (width + width * high_a); - lob = .5f * (height + height * low_b); - hib = .5f * (height + height * high_b); + loa = .5 * (width + width * low_a); + hia = .5 * (width + width * high_a); + lob = .5 * (height + height * low_b); + hib = .5 * (height + height * high_b); cr->set_line_width(2. * double(s)); cr->set_source_rgb(0.6, 0.6, 0.6); cr->move_to(loa, lob); @@ -319,8 +319,8 @@ bool LabGridArea::on_motion_notify_event(GdkEventMotion *event) int height = get_allocated_height() - 2 * inset * s - padding.get_top() - padding.get_bottom(); const float mouse_x = std::min(double(std::max(event->x - inset * s - padding.get_right(), 0.)), double(width)); const float mouse_y = std::min(double(std::max(get_allocated_height() - 1 - event->y - inset * s - padding.get_bottom(), 0.)), double(height)); - const float ma = (2.0 * mouse_x - width) / (float)width; - const float mb = (2.0 * mouse_y - height) / (float)height; + const float ma = (2.f * mouse_x - width) / width; + const float mb = (2.f * mouse_y - height) / height; if (isDragged) { if (litPoint == LOW) { low_a = ma; diff --git a/rtgui/lockablecolorpicker.cc b/rtgui/lockablecolorpicker.cc index 071847424..0a08bb945 100644 --- a/rtgui/lockablecolorpicker.cc +++ b/rtgui/lockablecolorpicker.cc @@ -37,7 +37,7 @@ void LockableColorPicker::updateBackBuffer () int newW, newH; // -------------------- setting some key constants --------------------- - constexpr float circlePadding = 3.f; // keep this value odd + constexpr double circlePadding = 3.0; // keep this value odd constexpr double opacity = 0.62; // --------------------------------------------------------------------- @@ -121,18 +121,18 @@ void LockableColorPicker::updateBackBuffer () bbcr->set_antialias (Cairo::ANTIALIAS_SUBPIXEL); bbcr->set_line_width (0.); - float center = (float)size / 2.f + circlePadding; + double center = static_cast(size) / 2.0 + circlePadding; // black background of the whole color picker bbcr->set_line_width (0.); bbcr->set_source_rgba (0., 0., 0., opacity); - bbcr->arc_negative (center, center, center, 0., (double)rtengine::RT_PI); + bbcr->arc_negative (center, center, center, 0., rtengine::RT_PI); bbcr->line_to (0, 2. * center + textHeight); - bbcr->arc_negative (2. * textPadding, 2. * center + textHeight, 2. * textPadding, (double)rtengine::RT_PI, (double)rtengine::RT_PI / 2.); + bbcr->arc_negative (2. * textPadding, 2. * center + textHeight, 2. * textPadding, rtengine::RT_PI, rtengine::RT_PI / 2.); bbcr->line_to (textWidth, 2. * center + textHeight + 2. * textPadding); - bbcr->arc_negative (textWidth, 2. * center + textHeight, 2. * textPadding, (double)rtengine::RT_PI / 2., 0.); + bbcr->arc_negative (textWidth, 2. * center + textHeight, 2. * textPadding, rtengine::RT_PI / 2., 0.); bbcr->line_to (textWidth + 2. * textPadding, 2. * center + 2. * textPadding); - bbcr->arc_negative (textWidth, 2. * center + 2. * textPadding, 2. * textPadding, 0., (double)rtengine::RT_PI * 1.5); + bbcr->arc_negative (textWidth, 2. * center + 2. * textPadding, 2. * textPadding, 0., rtengine::RT_PI * 1.5); bbcr->line_to (2. * center, 2. * center); bbcr->close_path(); bbcr->set_line_join (Cairo::LINE_JOIN_BEVEL); @@ -222,7 +222,7 @@ void LockableColorPicker::updateBackBuffer () bbcr->set_antialias(Cairo::ANTIALIAS_SUBPIXEL); - float center = (float)size / 2.f + circlePadding; + double center = static_cast(size) / 2. + circlePadding; // light grey circle around the color mark bbcr->arc (center, center, center - circlePadding / 2., 0., 2. * (double)rtengine::RT_PI); From b4c0bb3acbc6b2acead76b7ea8321d01e60415b6 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 10 Feb 2020 20:06:43 +0100 Subject: [PATCH 26/38] More double promote fixes --- rtengine/lcp.cc | 132 ++++++++++++++------------------------- rtengine/lcp.h | 2 - rtgui/mycurve.cc | 2 +- rtgui/mydiagonalcurve.cc | 16 ++--- rtgui/myflatcurve.cc | 12 ++-- rtgui/retinex.cc | 2 +- rtgui/rtscalable.cc | 2 +- rtgui/rtwindow.cc | 4 +- 8 files changed, 65 insertions(+), 107 deletions(-) diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index c80a126f5..1826101e7 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -42,7 +42,6 @@ class rtengine::LCPProfile::LCPPersModel public: LCPPersModel(); bool hasModeData(LCPCorrectionMode mode) const; - void print() const; float focLen; float focDist; @@ -82,27 +81,18 @@ bool rtengine::LCPModelCommon::empty() const && param[2] == 0.0f; } -void rtengine::LCPModelCommon::print() const -{ - std::printf("focLen %g/%g; imgCenter %g/%g; scale %g; err %g\n", foc_len_x, foc_len_y, img_center_x, img_center_y, scale_factor, mean_error); - std::printf("xy0 %g/%g fxy %g/%g\n", x0, y0, fx, fy); - std::printf("param: %g/%g/%g/%g/%g\n", param[0], param[1], param[2], param[3], param[4]); -} - // weighted merge two parameters void rtengine::LCPModelCommon::merge(const LCPModelCommon& a, const LCPModelCommon& b, float facA) { - const float facB = 1.0f - facA; - - foc_len_x = facA * a.foc_len_x + facB * b.foc_len_x; - foc_len_y = facA * a.foc_len_y + facB * b.foc_len_y; - img_center_x = facA * a.img_center_x + facB * b.img_center_x; - img_center_y = facA * a.img_center_y + facB * b.img_center_y; - scale_factor = facA * a.scale_factor + facB * b.scale_factor; - mean_error = facA * a.mean_error + facB * b.mean_error; + foc_len_x = rtengine::intp(facA, a.foc_len_x, b.foc_len_x); + foc_len_y = rtengine::intp(facA, a.foc_len_y, b.foc_len_y); + img_center_x = rtengine::intp(facA, a.img_center_x, b.img_center_x); + img_center_y = rtengine::intp(facA, a.img_center_y, b.img_center_y); + scale_factor = rtengine::intp(facA, a.scale_factor, b.scale_factor); + mean_error = rtengine::intp(facA, a.mean_error, b.mean_error); for (int i = 0; i < 5; ++i) { - param[i] = facA * a.param[i] + facB * b.param[i]; + param[i] = rtengine::intp(facA, a.param[i], b.param[i]); } const float param0Sqr = param[0] * param[0]; @@ -152,7 +142,6 @@ void rtengine::LCPModelCommon::prepareParams( rfx = 1.0f / fx; rfy = 1.0f / fy; - //std::printf("FW %i /X0 %g FH %i /Y0 %g %g\n",fullWidth,x0,fullHeight,y0, imgYCenter); } rtengine::LCPProfile::LCPPersModel::LCPPersModel() : @@ -188,35 +177,6 @@ bool rtengine::LCPProfile::LCPPersModel::hasModeData(LCPCorrectionMode mode) con return false; } -void rtengine::LCPProfile::LCPPersModel::print() const -{ - std::printf("--- PersModel focLen %g; focDist %g; aperture %g\n", focLen, focDist, aperture); - std::printf("Base:\n"); - base.print(); - - if (!chromRG.empty()) { - std::printf("ChromRG:\n"); - chromRG.print(); - } - - if (!chromG.empty()) { - std::printf("ChromG:\n"); - chromG.print(); - } - - if (!chromBG.empty()) { - std::printf("ChromBG:\n"); - chromBG.print(); - } - - if (!vignette.empty()) { - std::printf("Vignette:\n"); - vignette.print(); - } - - std::printf("\n"); -} - rtengine::LCPProfile::LCPProfile(const Glib::ustring& fname) : isFisheye(false), sensorFormatFactor(1.f), @@ -522,7 +482,7 @@ void rtengine::LCPProfile::calcParams( ) { // Mix in aperture const float facAperLow = (pHigh->aperture - aperture) / (pHigh->aperture - pLow->aperture); - facLow = focLenOnSpot ? facAperLow : (0.5 * facLow + 0.5 * facAperLow); + facLow = focLenOnSpot ? facAperLow : (0.5f * (facLow + facAperLow)); } else if ( mode != LCPCorrectionMode::VIGNETTE @@ -532,7 +492,7 @@ void rtengine::LCPProfile::calcParams( ) { // focus distance for all else (if focus distance is given) const float facDistLow = (std::log(pHigh->focDist) + euler - focusDistLog) / (std::log(pHigh->focDist) - std::log(pLow->focDist)); - facLow = focLenOnSpot ? facDistLow : (0.8 * facLow + 0.2 * facDistLow); + facLow = focLenOnSpot ? facDistLow : (0.8f * facLow + 0.2f * facDistLow); } switch (mode) { @@ -555,7 +515,16 @@ void rtengine::LCPProfile::calcParams( } if (settings->verbose) { - std::printf("LCP mode=%i, dist: %g found frames: Fno %g-%g; FocLen %g-%g; Dist %g-%g with weight %g\n", toUnderlying(mode), focusDist, pLow->aperture, pHigh->aperture, pLow->focLen, pHigh->focLen, pLow->focDist, pHigh->focDist, facLow); + std::printf("LCP mode=%i, dist: %g found frames: Fno %g-%g; FocLen %g-%g; Dist %g-%g with weight %g\n", + toUnderlying(mode), + static_cast(focusDist), + static_cast(pLow->aperture), + static_cast(pHigh->aperture), + static_cast(pLow->focLen), + static_cast(pHigh->focLen), + static_cast(pLow->focDist), + static_cast(pHigh->focDist), + static_cast(facLow)); } } else { if (settings->verbose) { @@ -564,15 +533,6 @@ void rtengine::LCPProfile::calcParams( } } -void rtengine::LCPProfile::print() const -{ - std::printf("=== Profile %s\n", profileName.c_str()); - std::printf("Frames: %i, RAW: %i; Fisheye: %i; Sensorformat: %f\n", persModelCount, isRaw, isFisheye, sensorFormatFactor); - - for (int pm = 0; pm < persModelCount; ++pm) { - aPersModel[pm]->print(); - } -} // from all frames not marked as bad already, take average and filter out frames with higher deviation than this if there are enough values int rtengine::LCPProfile::filterBadFrames(LCPCorrectionMode mode, double maxAvgDevFac, int minFramesLeft) @@ -649,7 +609,7 @@ int rtengine::LCPProfile::filterBadFrames(LCPCorrectionMode mode, double maxAvgD } if (settings->verbose && count) { - std::printf("Filtered %.1f%% frames for maxAvgDevFac %g leaving %i\n", filtered * 100.f / count, maxAvgDevFac, count - filtered); + std::printf("Filtered %.1f%% frames for maxAvgDevFac %g leaving %i\n", filtered * 100.0 / count, maxAvgDevFac, count - filtered); } } @@ -1007,7 +967,7 @@ rtengine::LCPMapper::LCPMapper( const bool mirrorX = (rot == 90 || rot == 180); const bool mirrorY = (rot == 180 || rot == 270); if (settings->verbose) { - std::printf("Vign: %i, fullWidth: %i/%i, focLen %g SwapXY: %i / MirX/Y %i / %i on rot:%i from %i\n",vignette, fullWidth, fullHeight, focalLength, swapXY, mirrorX, mirrorY, rot, rawRotationDeg); + std::printf("Vign: %i, fullWidth: %i/%i, focLen %g SwapXY: %i / MirX/Y %i / %i on rot:%i from %i\n",vignette, fullWidth, fullHeight, static_cast(focalLength), swapXY, mirrorX, mirrorY, rot, rawRotationDeg); } pProf->calcParams(vignette ? LCPCorrectionMode::VIGNETTE : LCPCorrectionMode::DISTORTION, focalLength, focusDist, aperture, &mc, nullptr, nullptr); @@ -1038,8 +998,8 @@ void rtengine::LCPMapper::correctDistortion(double &x, double &y, int cx, int cy if (isFisheye) { const double u = x * scale; const double v = y * scale; - const double u0 = mc.x0 * scale; - const double v0 = mc.y0 * scale; + const double u0 = static_cast(mc.x0) * scale; + const double v0 = static_cast(mc.y0) * scale; const double du = (u - u0); const double dv = (v - v0); const double fx = mc.fx; @@ -1059,22 +1019,22 @@ void rtengine::LCPMapper::correctDistortion(double &x, double &y, int cx, int cy } else { x *= scale; y *= scale; - const double x0 = mc.x0 * scale; - const double y0 = mc.y0 * scale; - const double xd = (x - x0) / mc.fx, yd = (y - y0) / mc.fy; + const double x0 = static_cast(mc.x0) * scale; + const double y0 = static_cast(mc.y0) * scale; + const double xd = (x - x0) / static_cast(mc.fx), yd = (y - y0) / static_cast(mc.fy); - const LCPModelCommon::Param aDist = mc.param; + const auto& aDist = mc.param; const double rsqr = xd * xd + yd * yd; - const double xfac = aDist[swapXY ? 3 : 4], yfac = aDist[swapXY ? 4 : 3]; + const double xfac = static_cast(aDist[swapXY ? 3 : 4]), yfac = static_cast(aDist[swapXY ? 4 : 3]); - const double commonFac = (((aDist[2] * rsqr + aDist[1]) * rsqr + aDist[0]) * rsqr + 1.) + const double commonFac = (((static_cast(aDist[2]) * rsqr + static_cast(aDist[1])) * rsqr + static_cast(aDist[0])) * rsqr + 1.) + 2. * (yfac * yd + xfac * xd); const double xnew = xd * commonFac + xfac * rsqr; const double ynew = yd * commonFac + yfac * rsqr; - x = xnew * mc.fx + x0; - y = ynew * mc.fy + y0; + x = xnew * static_cast(mc.fx) + x0; + y = ynew * static_cast(mc.fy) + y0; } x -= cx * scale; @@ -1094,20 +1054,20 @@ void rtengine::LCPMapper::correctCA(double& x, double& y, int cx, int cy, int ch // First calc the green channel like normal distortion // the other are just deviations from it - double xd = (x - chrom[1].x0) / chrom[1].fx; - double yd = (y - chrom[1].y0) / chrom[1].fy; + double xd = (x - static_cast(chrom[1].x0)) / static_cast(chrom[1].fx); + double yd = (y - static_cast(chrom[1].y0)) / static_cast(chrom[1].fy); // Green contains main distortion, just like base if (useCADist) { - const LCPModelCommon::Param aDist = chrom[1].param; - double rsqr = xd * xd + yd * yd; - double xfac = aDist[swapXY ? 3 : 4], yfac = aDist[swapXY ? 4 : 3]; + const auto& aDist = chrom[1].param; + double rsqr = xd * xd + yd * yd; + double xfac = static_cast(aDist[swapXY ? 3 : 4]), yfac = static_cast(aDist[swapXY ? 4 : 3]); - double commonFac = (((aDist[2] * rsqr + aDist[1]) * rsqr + aDist[0]) * rsqr + 1.) + double commonFac = (((static_cast(aDist[2]) * rsqr + static_cast(aDist[1])) * rsqr + static_cast(aDist[0])) * rsqr + 1.) + 2. * (yfac * yd + xfac * xd); - xgreen = xd * commonFac + aDist[4] * rsqr; - ygreen = yd * commonFac + aDist[3] * rsqr; + xgreen = xd * commonFac + static_cast(aDist[4]) * rsqr; + ygreen = yd * commonFac + static_cast(aDist[3]) * rsqr; } else { xgreen = xd; ygreen = yd; @@ -1115,20 +1075,20 @@ void rtengine::LCPMapper::correctCA(double& x, double& y, int cx, int cy, int ch if (channel == 1) { // green goes directly - x = xgreen * chrom[1].fx + chrom[1].x0; - y = ygreen * chrom[1].fy + chrom[1].y0; + x = xgreen * static_cast(chrom[1].fx) + static_cast(chrom[1].x0); + y = ygreen * static_cast(chrom[1].fy) + static_cast(chrom[1].y0); } else { // others are diffs from green xd = xgreen; yd = ygreen; const double rsqr = xd * xd + yd * yd; - const LCPModelCommon::Param aCA = chrom[channel].param; - const double xfac = aCA[swapXY ? 3 : 4], yfac = aCA[swapXY ? 4 : 3]; - const double commonSum = 1. + rsqr * (aCA[0] + rsqr * (aCA[1] + aCA[2] * rsqr)) + 2. * (yfac * yd + xfac * xd); + const auto& aCA = chrom[channel].param; + const double xfac = static_cast(aCA[swapXY ? 3 : 4]), yfac = static_cast(aCA[swapXY ? 4 : 3]); + const double commonSum = 1. + rsqr * (static_cast(aCA[0]) + rsqr * (static_cast(aCA[1]) + static_cast(aCA[2] )* rsqr)) + 2. * (yfac * yd + xfac * xd); - x = (chrom[channel].scale_factor * ( xd * commonSum + xfac * rsqr )) * chrom[channel].fx + chrom[channel].x0; - y = (chrom[channel].scale_factor * ( yd * commonSum + yfac * rsqr )) * chrom[channel].fy + chrom[channel].y0; + x = (static_cast(chrom[channel].scale_factor) * ( xd * commonSum + xfac * rsqr )) * static_cast(chrom[channel].fx) + static_cast(chrom[channel].x0); + y = (static_cast(chrom[channel].scale_factor) * ( yd * commonSum + yfac * rsqr )) * static_cast(chrom[channel].fy) + static_cast(chrom[channel].y0); } x -= cx; diff --git a/rtengine/lcp.h b/rtengine/lcp.h index 2e36fe113..4c1e09865 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -54,7 +54,6 @@ public: LCPModelCommon(); bool empty() const; // is it empty - void print() const; // printf all values void merge(const LCPModelCommon& a, const LCPModelCommon& b, float facA); void prepareParams( int fullWidth, @@ -106,7 +105,6 @@ public: LCPModelCommon *pCorr3 ) const; // Interpolates between the persModels frames - void print() const; //private: // Common data diff --git a/rtgui/mycurve.cc b/rtgui/mycurve.cc index 7401570c8..d460713fb 100644 --- a/rtgui/mycurve.cc +++ b/rtgui/mycurve.cc @@ -183,7 +183,7 @@ float MyCurve::getVal(LUTf &curve, int x) if (size_t(graphW) == curve.getSize()) { return curve[x]; } else { - return curve.getVal01(float(x) / graphW); + return curve.getVal01(x / graphW); } } diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index abd339ce0..ac7976b7e 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -358,14 +358,14 @@ void MyDiagonalCurve::draw (int handle) // draw upper and lower bounds if (curve.type == DCT_Parametric && activeParam > 0 && lpoint.getUpperBound() > 1 && upoint.getUpperBound() > 1) { cr->set_source_rgba (1.0, 1.0, 1.0, 0.1); - cr->move_to (graphX, getVal(upoint, 0) * -graphH + graphY); + cr->move_to (graphX, static_cast(getVal(upoint, 0)) * -graphH + graphY); for (int i = 1; i < graphW - 2; ++i) { - cr->line_to ((double)i + graphX, getVal(upoint, i) * -graphH + graphY); + cr->line_to ((double)i + graphX, static_cast(getVal(upoint, i)) * -graphH + graphY); } for (int i = graphW - 3; i >= 0; --i) { - cr->line_to ((double)i + graphX, getVal(lpoint, i) * -graphH + graphY); + cr->line_to ((double)i + graphX, static_cast(getVal(lpoint, i)) * -graphH + graphY); } cr->fill (); @@ -390,21 +390,21 @@ void MyDiagonalCurve::draw (int handle) if (n > 1) { if (pipetteR > -1.f) { cr->set_source_rgba (1., 0., 0., 0.5); // WARNING: assuming that red values are stored in pipetteR, which might not be the case! - cr->move_to (graphX + graphW*pipetteR, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteR), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); } if (pipetteG > -1.f) { cr->set_source_rgba (0., 1., 0., 0.5); // WARNING: assuming that green values are stored in pipetteG, which might not be the case! - cr->move_to (graphX + graphW*pipetteG, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteG), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); } if (pipetteB > -1.f) { cr->set_source_rgba (0., 0., 1., 0.5); // WARNING: assuming that blue values are stored in pipetteB, which might not be the case! - cr->move_to (graphX + graphW*pipetteB, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteB), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); } @@ -414,7 +414,7 @@ void MyDiagonalCurve::draw (int handle) cr->set_line_width (2. * s); c = style->get_color (state); cr->set_source_rgb (c.get_red(), c.get_green(), c.get_blue()); - cr->move_to (graphX + graphW*pipetteVal, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteVal), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); cr->set_line_width (1. * s); @@ -460,7 +460,7 @@ void MyDiagonalCurve::draw (int handle) // draw curve cr->set_source_rgb (c.get_red(), c.get_green(), c.get_blue()); - cr->move_to (graphX, getVal(point, 0) * -graphH + graphY); + cr->move_to (graphX, static_cast(getVal(point, 0)) * -graphH + graphY); for (int i = 1; i < graphW; ++i) { cr->line_to ((double)i + graphX, (double)getVal(point, i) * -graphH + graphY); diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index 362d34f35..da993987c 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -233,21 +233,21 @@ void MyFlatCurve::draw () if (n > 1) { if (pipetteR > -1.f) { cr->set_source_rgba (1., 0., 0., 0.5); // WARNING: assuming that red values are stored in pipetteR, which might not be the case! - cr->move_to (graphX + graphW*pipetteR, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteR), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); } if (pipetteG > -1.f) { cr->set_source_rgba (0., 1., 0., 0.5); // WARNING: assuming that green values are stored in pipetteG, which might not be the case! - cr->move_to (graphX + graphW*pipetteG, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteG), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); } if (pipetteB > -1.f) { cr->set_source_rgba (0., 0., 1., 0.5); // WARNING: assuming that blue values are stored in pipetteB, which might not be the case! - cr->move_to (graphX + graphW*pipetteB, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteB), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); } @@ -257,7 +257,7 @@ void MyFlatCurve::draw () cr->set_line_width (2. * s); c = style->get_color (state); cr->set_source_rgb (c.get_red(), c.get_green(), c.get_blue()); - cr->move_to (graphX + graphW*pipetteVal, graphY + 1. * s); + cr->move_to (graphX + graphW * static_cast(pipetteVal), graphY + 1. * s); cr->rel_line_to (0, -graphH - 1. * s); cr->stroke (); cr->set_line_width (1. * s); @@ -437,10 +437,10 @@ void MyFlatCurve::draw () // draw curve c = style->get_color(state); cr->set_source_rgb (c.get_red(), c.get_green(), c.get_blue()); - cr->move_to (graphX, getVal(point, 0) * -graphH + graphY); + cr->move_to (graphX, static_cast(getVal(point, 0)) * -graphH + graphY); for (int i = 1; i < graphW; ++i) { - cr->line_to ((double)i + graphX, (double)getVal(point, i) * -graphH + graphY); + cr->line_to ((double)i + graphX, static_cast(getVal(point, i)) * -graphH + graphY); } cr->stroke (); diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index c78be375f..7fdea0319 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -278,7 +278,7 @@ Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL") for (int i = 0; i < 7; i++) { float R, G, B; - float x = float (i) * (1.0f / 6.0); + float x = i / 6.0; Color::hsv2rgb01 (x, 0.5f, 0.5f, R, G, B); milestones.push_back ( GradientMilestone (double (x), double (R), double (G), double (B)) ); } diff --git a/rtgui/rtscalable.cc b/rtgui/rtscalable.cc index a48a95fd2..78202326a 100644 --- a/rtgui/rtscalable.cc +++ b/rtgui/rtscalable.cc @@ -68,7 +68,7 @@ double RTScalable::getDPI () double RTScalable::getTweakedDPI () { - return dpi * fontScale; + return dpi * static_cast(fontScale); } int RTScalable::getScale () diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 514685a16..8cfeb8ec0 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -179,7 +179,7 @@ RTWindow::RTWindow () fontScale = options.fontSize / (float)RTScalable::baseFontSize; } if (rtengine::settings->verbose) { - printf("\"Non-Default\" font size(%d) * scale(%d) / fontScale(%.3f)\n", options.fontSize, (int)initialGdkScale, fontScale); + printf("\"Non-Default\" font size(%d) * scale(%d) / fontScale(%.3f)\n", options.fontSize, (int)initialGdkScale, static_cast(fontScale)); } } else { Glib::RefPtr style = Gtk::StyleContext::create(); @@ -209,7 +209,7 @@ RTWindow::RTWindow () if ((int)initialGdkScale > 1 || pt != RTScalable::baseFontSize) { css = Glib::ustring::compose ("* { font-size: %1pt}", pt * (int)initialGdkScale); if (rtengine::settings->verbose) { - printf("\"Default\" font size(%d) * scale(%d) / fontScale(%.3f)\n", pt, (int)initialGdkScale, fontScale); + printf("\"Default\" font size(%d) * scale(%d) / fontScale(%.3f)\n", pt, (int)initialGdkScale, static_cast(fontScale)); } } } From 1c0033f798498803a80661305b35b075edac0fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Wed, 12 Feb 2020 09:04:55 +0100 Subject: [PATCH 27/38] Collapse all tools on first start (fixes #4776) I had to remove the `isVisible` check in `MyExpander::set_expanded()` because it would trigger in Wavelet and Retinex for unknown reasons. One inner expander in CIECAM isn't covered by the tool states, and the way they are distributed to Wavelet and Retinex won't allow for further tool states in those tools. We should consider to move the tool states for sub-tools (like Wavelet, Retinex, and CIECAM) to seperate keys in the `options` file. --- rtgui/guiutils.cc | 6 --- rtgui/retinex.cc | 10 +++- rtgui/retinex.h | 41 ++++++++-------- rtgui/toolpanelcoord.cc | 42 ++++++++++------ rtgui/wavelet.cc | 36 +++++++++----- rtgui/wavelet.h | 105 ++++++++++++++++++++-------------------- 6 files changed, 133 insertions(+), 107 deletions(-) diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 9a4e71ab4..d759751c3 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -826,12 +826,6 @@ void MyExpander::set_expanded( bool expanded ) return; } - bool isVisible = expBox->is_visible(); - - if (isVisible == expanded) { - return; - } - if (!useEnabled) { if (expanded ) { statusImage->set(openedImage->get_surface()); diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index 7fdea0319..2fdd8f319 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -659,10 +659,16 @@ void Retinex::writeOptions (std::vector &tpOpen) tpOpen.push_back (expsettings->get_expanded ()); } -void Retinex::updateToolState (std::vector &tpOpen) +void Retinex::updateToolState(const std::vector& tpOpen) { + if (tpOpen.empty()) { + expsettings->set_expanded(false); + + return; + } + if (tpOpen.size() >= 10) { - expsettings->set_expanded (tpOpen.at (9)); + expsettings->set_expanded(tpOpen[9]); } } diff --git a/rtgui/retinex.h b/rtgui/retinex.h index ff524f854..dea65daab 100644 --- a/rtgui/retinex.h +++ b/rtgui/retinex.h @@ -104,32 +104,32 @@ protected: sigc::connection medianmapConn; public: - Retinex (); - ~Retinex () override; + Retinex(); + ~Retinex() override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; - void setBatchMode (bool batchMode) override; - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; - void trimValues (rtengine::procparams::ProcParams* pp) override; - void adjusterChanged (Adjuster* a, double newval) override; - void autoOpenCurve () override; - void medianmapChanged (); - void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override; - void updateLabel (); - void updateTrans (); - void neutral_pressed (); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void trimValues(rtengine::procparams::ProcParams* pp) override; + void adjusterChanged(Adjuster* a, double newval) override; + void autoOpenCurve() override; + void medianmapChanged(); + void minmaxChanged(double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override; + void updateLabel(); + void updateTrans(); + void neutral_pressed(); - void enabledChanged () override; - void curveChanged (CurveEditor* ce) override; + void enabledChanged() override; + void curveChanged(CurveEditor* ce) override; void retinexMethodChanged(); void mapMethodChanged(); void viewMethodChanged(); void retinexColorSpaceChanged(); void gammaretinexChanged(); void ColorSpaceUpdateUI(); - void writeOptions (std::vector &tpOpen); - void updateToolState (std::vector &tpOpen); + void writeOptions(std::vector &tpOpen); + void updateToolState(const std::vector& tpOpen); void setAdjusterBehavior (bool strAdd, bool neighAdd, bool limdAdd, bool offsAdd, bool vartAdd, bool gamAdd, bool slopeAdd); void updateCurveBackgroundHistogram( const LUTu& histToneCurve, @@ -144,9 +144,8 @@ public: const LUTu& histLRETI ); - void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; + void colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; private: - void foldAllButMe (GdkEventButton* event, MyExpander *expander); - + void foldAllButMe(GdkEventButton* event, MyExpander *expander); }; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 57f61a09c..00ad96328 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -632,40 +632,52 @@ void ToolPanelCoordinator::closeImage () void ToolPanelCoordinator::closeAllTools() { - - for (size_t i = 0; i < options.tpOpen.size(); i++) + for (size_t i = 0; i < options.tpOpen.size(); ++i) { if (i < expList.size()) { - expList.at (i)->set_expanded (false); + expList[i]->set_expanded(false); } + } } void ToolPanelCoordinator::openAllTools() { - - for (size_t i = 0; i < options.tpOpen.size(); i++) + for (size_t i = 0; i < options.tpOpen.size(); ++i) { if (i < expList.size()) { - expList.at (i)->set_expanded (true); + expList[i]->set_expanded(true); } + } } void ToolPanelCoordinator::updateToolState() { - - for (size_t i = 0; i < options.tpOpen.size(); i++) - if (i < expList.size()) { - expList.at (i)->set_expanded (options.tpOpen.at (i)); + if (options.tpOpen.empty()) { + for (auto expander : expList) { + expander->set_expanded(false); } + wavelet->updateToolState({}); + retinex->updateToolState({}); + + return; + } + + for (size_t i = 0; i < options.tpOpen.size(); ++i) { + if (i < expList.size()) { + expList[i]->set_expanded(options.tpOpen[i]); + } + } + if (options.tpOpen.size() > expList.size()) { - size_t sizeWavelet = options.tpOpen.size() - expList.size(); + const size_t sizeWavelet = options.tpOpen.size() - expList.size(); + std::vector temp; - for (size_t i = 0; i < sizeWavelet; i++) { - temp.push_back (options.tpOpen.at (i + expList.size())); + for (size_t i = 0; i < sizeWavelet; ++i) { + temp.push_back(options.tpOpen[i + expList.size()]); } - wavelet->updateToolState (temp); - retinex->updateToolState (temp); + wavelet->updateToolState(temp); + retinex->updateToolState(temp); } } diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 3981457e6..a2642dad7 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -3030,18 +3030,32 @@ void Wavelet::writeOptions(std::vector &tpOpen) tpOpen.push_back (expfinal->get_expanded ()); } -void Wavelet::updateToolState(std::vector &tpOpen) +void Wavelet::updateToolState(const std::vector& tpOpen) { - if(tpOpen.size() >= 9) { - expsettings->set_expanded(tpOpen.at(0)); - expcontrast->set_expanded(tpOpen.at(1)); - expchroma->set_expanded(tpOpen.at(2)); - exptoning->set_expanded(tpOpen.at(3)); - expnoise->set_expanded(tpOpen.at(4)); - expedge->set_expanded(tpOpen.at(5)); - expgamut->set_expanded(tpOpen.at(6)); - expresid->set_expanded(tpOpen.at(7)); - expfinal->set_expanded(tpOpen.at(8)); + if (tpOpen.empty()) { + expsettings->set_expanded(false); + expcontrast->set_expanded(false); + expchroma->set_expanded(false); + exptoning->set_expanded(false); + expnoise->set_expanded(false); + expedge->set_expanded(false); + expgamut->set_expanded(false); + expresid->set_expanded(false); + expfinal->set_expanded(false); + + return; + } + + if (tpOpen.size() >= 9) { + expsettings->set_expanded(tpOpen[0]); + expcontrast->set_expanded(tpOpen[1]); + expchroma->set_expanded(tpOpen[2]); + exptoning->set_expanded(tpOpen[3]); + expnoise->set_expanded(tpOpen[4]); + expedge->set_expanded(tpOpen[5]); + expgamut->set_expanded(tpOpen[6]); + expresid->set_expanded(tpOpen[7]); + expfinal->set_expanded(tpOpen[8]); } } diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index 6551b58d4..d01e52749 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -20,12 +20,13 @@ #pragma once #include + #include "adjuster.h" -#include "toolpanel.h" -#include "curvelistener.h" -#include "thresholdadjuster.h" #include "colorprovider.h" +#include "curvelistener.h" #include "guiutils.h" +#include "thresholdadjuster.h" +#include "toolpanel.h" class CurveEditor; class CurveEditorGroup; @@ -43,21 +44,21 @@ class Wavelet final : public FoldableToolPanel { public: - Wavelet (); - ~Wavelet () override; + Wavelet(); + ~Wavelet() override; - bool wavComputed_ (); + bool wavComputed_(); void adjusterChanged(Adjuster* a, double newval) override; - void autoOpenCurve () override; - void curveChanged (CurveEditor* ce) override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; - void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add); - void setBatchMode (bool batchMode) override; - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; - void setEditProvider (EditDataProvider *provider) override; - void updateToolState (std::vector &tpOpen); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; - void writeOptions (std::vector &tpOpen); + void autoOpenCurve() override; + void curveChanged(CurveEditor* ce) override; + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void setAdjusterBehavior(bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add); + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setEditProvider(EditDataProvider *provider) override; + void updateToolState(const std::vector& tpOpen); + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void writeOptions(std::vector &tpOpen); void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; @@ -66,38 +67,38 @@ public: void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; private: - void foldAllButMe (GdkEventButton* event, MyExpander *expander); + void foldAllButMe(GdkEventButton* event, MyExpander *expander); - void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; - void BAmethodChanged (); - void NPmethodChanged (); - void BackmethodChanged (); - void CHSLmethodChanged (); - void CHmethodChanged (); - void CLmethodChanged (); - void DirmethodChanged (); - void EDmethodChanged (); - void HSmethodChanged (); - void LmethodChanged (); - void MedgreinfChanged (); - void TMmethodChanged (); - void TilesmethodChanged (); - void avoidToggled (); - void cbenabToggled (); - void contrastMinusPressed (); - void contrastPlusPressed (); - void daubcoeffmethodChanged (); - void enabledChanged () override; - void linkedgToggled (); - void lipstToggled (); - void medianToggled (); - void medianlevToggled (); - void neutralPressed (); - void neutral_pressed (); - void neutralchPressed (); - void tmrToggled (); + void colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; + void BAmethodChanged(); + void NPmethodChanged(); + void BackmethodChanged(); + void CHSLmethodChanged(); + void CHmethodChanged(); + void CLmethodChanged(); + void DirmethodChanged(); + void EDmethodChanged(); + void HSmethodChanged(); + void LmethodChanged(); + void MedgreinfChanged(); + void TMmethodChanged(); + void TilesmethodChanged(); + void avoidToggled(); + void cbenabToggled(); + void contrastMinusPressed(); + void contrastPlusPressed(); + void daubcoeffmethodChanged(); + void enabledChanged() override; + void linkedgToggled(); + void lipstToggled(); + void medianToggled(); + void medianlevToggled(); + void neutralPressed(); + void neutral_pressed(); + void neutralchPressed(); + void tmrToggled(); void updatewavLabel (); - void wavChanged (double nlevel) override; + void wavChanged(double nlevel) override; void HSmethodUpdateUI(); void CHmethodUpdateUI(); @@ -113,13 +114,13 @@ private: // void MedgreinfUpdateUI(); // void DirmethodUpdateUI(); // void LmethodUpdateUI(); - void adjusterUpdateUI (Adjuster* a); - void enabledUpdateUI (); - void medianlevUpdateUI (); - void cbenabUpdateUI (); - void lipstUpdateUI (); + void adjusterUpdateUI(Adjuster* a); + void enabledUpdateUI(); + void medianlevUpdateUI(); + void cbenabUpdateUI(); + void lipstUpdateUI(); - void enableToggled(MyExpander *expander); + void enableToggled(MyExpander* expander); CurveEditorGroup* const curveEditorG; From 562b19bb5cf1d0d2cc99341bccf8f5fdad38ca3b Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 12 Feb 2020 21:08:03 +0100 Subject: [PATCH 28/38] Silence -Wunused-macros warning in dcraw.cc, #3558 --- rtengine/dcraw.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 537bf1334..0858bdaaa 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1,6 +1,7 @@ #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic ignored "-Wunused-macros" #if (__GNUC__ >= 6) #pragma GCC diagnostic ignored "-Wmisleading-indentation" #endif From 30317f41332ee4a4a4b0924a5838915993bbdc4f Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 12 Feb 2020 23:38:07 +0100 Subject: [PATCH 29/38] use std::fabs, hopefully fixes #5651 --- rtgui/cropwindow.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 8e1dcfaf5..d87876cec 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -295,7 +295,7 @@ void CropWindow::flawnOver (bool isFlawnOver) void CropWindow::scroll (int state, GdkScrollDirection direction, int x, int y, double deltaX, double deltaY) { double delta = 0.0; - if (abs(deltaX) > abs(deltaY)) { + if (std::fabs(deltaX) > std::fabs(deltaY)) { delta = deltaX; } else { delta = deltaY; @@ -304,7 +304,7 @@ void CropWindow::scroll (int state, GdkScrollDirection direction, int x, int y, if (direction == GDK_SCROLL_SMOOTH) { scrollAccum += delta; //Only change zoom level if we've accumulated +/- 1.0 of deltas. This conditional handles the previous delta=0.0 case - if (abs(scrollAccum) < 1.0) { + if (std::fabs(scrollAccum) < 1.0) { return; } } From 06be849a31bd091b80e181254dd33f4608af5263 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 13 Feb 2020 16:07:30 +0100 Subject: [PATCH 30/38] Finally eliminate aehistograms cache folder, #4904 --- rtgui/cachemanager.cc | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index c37964e23..93dafc1ba 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -39,7 +39,7 @@ namespace { constexpr int cacheDirMode = 0777; -constexpr const char* cacheDirs[] = { "profiles", "images", "aehistograms", "embprofiles", "data" }; +constexpr const char* cacheDirs[] = { "profiles", "images", "embprofiles", "data" }; } @@ -59,9 +59,7 @@ void CacheManager::init () auto error = g_mkdir_with_parents (baseDir.c_str(), cacheDirMode); for (const auto& cacheDir : cacheDirs) { - if (strncmp(cacheDir, "aehistograms", 12)) { // don't create aehistograms folder. - error |= g_mkdir_with_parents (Glib::build_filename (baseDir, cacheDir).c_str(), cacheDirMode); - } + error |= g_mkdir_with_parents (Glib::build_filename (baseDir, cacheDir).c_str(), cacheDirMode); } if (error != 0 && rtengine::settings->verbose) { @@ -187,7 +185,6 @@ void CacheManager::renameEntry (const std::string& oldfilename, const std::strin auto error = g_rename (getCacheFileName ("profiles", oldfilename, paramFileExtension, oldmd5).c_str (), getCacheFileName ("profiles", newfilename, paramFileExtension, newmd5).c_str ()); error |= g_rename (getCacheFileName ("images", oldfilename, ".rtti", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".rtti", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("aehistograms", oldfilename, "", oldmd5).c_str (), getCacheFileName ("aehistograms", newfilename, "", newmd5).c_str ()); error |= g_rename (getCacheFileName ("embprofiles", oldfilename, ".icc", oldmd5).c_str (), getCacheFileName ("embprofiles", newfilename, ".icc", newmd5).c_str ()); error |= g_rename (getCacheFileName ("data", oldfilename, ".txt", oldmd5).c_str (), getCacheFileName ("data", newfilename, ".txt", newmd5).c_str ()); @@ -241,7 +238,6 @@ void CacheManager::clearImages () const deleteDir ("data"); deleteDir ("images"); - deleteDir ("aehistograms"); deleteDir ("embprofiles"); } @@ -277,7 +273,6 @@ void CacheManager::deleteFiles (const Glib::ustring& fname, const std::string& m } auto error = g_remove (getCacheFileName ("images", fname, ".rtti", md5).c_str ()); - error |= g_remove (getCacheFileName ("aehistograms", fname, "", md5).c_str ()); error |= g_remove (getCacheFileName ("embprofiles", fname, ".icc", md5).c_str ()); if (purgeData) { From 67ca8e2c19af3896ab065a325fb4f3f66bd09ada Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 13 Feb 2020 16:34:45 +0100 Subject: [PATCH 31/38] further aehistograms cleanup --- rtengine/rtthumbnail.cc | 38 -------------------------------------- rtengine/rtthumbnail.h | 4 ---- rtgui/thumbnail.cc | 9 --------- 3 files changed, 51 deletions(-) diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index c956b9032..4507f2b40 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -2253,44 +2253,6 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname) return false; } -bool Thumbnail::readAEHistogram (const Glib::ustring& fname) -{ - - FILE* f = g_fopen(fname.c_str(), "rb"); - - if (!f) { - aeHistogram.reset(); - } else { - aeHistogram(65536 >> aeHistCompression); - const size_t histoBytes = (65536 >> aeHistCompression) * sizeof(aeHistogram[0]); - const size_t bytesRead = fread(&aeHistogram[0], 1, histoBytes, f); - fclose (f); - if (bytesRead != histoBytes) { - aeHistogram.reset(); - return false; - } - return true; - } - - return false; -} - -bool Thumbnail::writeAEHistogram (const Glib::ustring& fname) -{ - - if (aeHistogram) { - FILE* f = g_fopen (fname.c_str (), "wb"); - - if (f) { - fwrite (&aeHistogram[0], 1, (65536 >> aeHistCompression)*sizeof (aeHistogram[0]), f); - fclose (f); - return true; - } - } - - return false; -} - unsigned char* Thumbnail::getImage8Data() { if (thumbImg && thumbImg->getType() == rtengine::sImage8) { diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index c8d657a62..ccca1c582 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -113,10 +113,6 @@ public: bool readEmbProfile (const Glib::ustring& fname); bool writeEmbProfile (const Glib::ustring& fname); - bool readAEHistogram (const Glib::ustring& fname); - bool writeAEHistogram (const Glib::ustring& fname); - - bool isAeValid() { return aeValid; }; unsigned char* getImage8Data(); // accessor to the 8bit image if it is one, which should be the case for the "Inspector" mode. // Hombre: ... let's hope that proper template can make this cleaner diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 5295b9d61..87bc730eb 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -887,11 +887,6 @@ void Thumbnail::_loadThumbnail(bool firstTrial) } if ( cfs.thumbImgType == CacheImageData::FULL_THUMBNAIL ) { - if(!tpp->isAeValid()) { - // load aehistogram - tpp->readAEHistogram (getCacheFileName ("aehistograms", "")); - } - // load embedded profile tpp->readEmbProfile (getCacheFileName ("embprofiles", ".icc")); @@ -937,10 +932,6 @@ void Thumbnail::_saveThumbnail () // save thumbnail image tpp->writeImage (getCacheFileName ("images", "")); - if(!tpp->isAeValid()) { - // save aehistogram - tpp->writeAEHistogram (getCacheFileName ("aehistograms", "")); - } // save embedded profile tpp->writeEmbProfile (getCacheFileName ("embprofiles", ".icc")); From 1069c890f51cf7b3aa9235918fadc41405851b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Fri, 14 Feb 2020 11:44:57 +0100 Subject: [PATCH 32/38] Incorporate FreeBSD fix from @mandree (#5651) plus a little hardening --- rtengine/imagedata.cc | 6 +++--- rtengine/procparams.cc | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 24cfefde9..a631a6c8d 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -502,11 +502,11 @@ FrameData::FrameData(rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* } else if (!make.compare (0, 6, "PENTAX") || (!make.compare (0, 5, "RICOH") && !model.compare (0, 6, "PENTAX"))) { // ISO at max value supported, check manufacturer specific if (iso_speed == 65535 || iso_speed == 0) { - rtexif::Tag* baseIsoTag = mnote->getTag("ISO"); + const rtexif::Tag* const baseIsoTag = mnote->getTag("ISO"); if (baseIsoTag) { - std::string isoData = baseIsoTag->valueToString(); + const std::string isoData = baseIsoTag->valueToString(); if (isoData.size() > 1) { - iso_speed = stoi(isoData); + iso_speed = std::stoi(isoData); } } } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index f53b4c513..f6b139550 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -4606,8 +4606,9 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) Glib::ustring temp; assignFromKeyfile(keyFile, "Wavelet", "LevMethod", pedited, temp, pedited->wavelet.Lmethod); - if (!temp.empty()) { + try { wavelet.Lmethod = std::stoi(temp); + } catch (...) { } } else { assignFromKeyfile(keyFile, "Wavelet", "LevMethod", pedited, wavelet.Lmethod, pedited->wavelet.Lmethod); From 12b1d8f7671d64dd15cce0115550be8a483f50f5 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 15 Feb 2020 14:47:34 +0100 Subject: [PATCH 33/38] Polish translation updated by bwisn, closes #5653 --- rtdata/languages/Polish | 143 ++++++++++++++++++++-------------------- 1 file changed, 72 insertions(+), 71 deletions(-) diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index b4e1a2281..1bcc98456 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -9,6 +9,7 @@ #09 2014-10-16 DrSlony #10 2020-02-02 Bartłomiej Wiśniowski #11 2020-02-02 Bartłomiej Wiśniowski +#12 2020-02-15 Bartłomiej Wiśniowski ABOUT_TAB_BUILD;Wersja ABOUT_TAB_CREDITS;Zasługi @@ -40,6 +41,7 @@ DIRBROWSER_FOLDERS;Katalogi DYNPROFILEEDITOR_DELETE;Usuń DYNPROFILEEDITOR_EDIT;Edytuj DYNPROFILEEDITOR_IMGTYPE_ANY;Każdy +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR DYNPROFILEEDITOR_IMGTYPE_STD;Standardowy DYNPROFILEEDITOR_MOVE_DOWN;Przesuń w dół DYNPROFILEEDITOR_MOVE_UP;Przesuń w górę @@ -146,6 +148,7 @@ FILEBROWSER_POPUPRANK2;Ocena 2 ** FILEBROWSER_POPUPRANK3;Ocena 3 *** FILEBROWSER_POPUPRANK4;Ocena 4 **** FILEBROWSER_POPUPRANK5;Ocena 5 ***** +FILEBROWSER_POPUPREMOVE;Usuń na zawsze FILEBROWSER_POPUPRENAME;Zmień nazwę FILEBROWSER_POPUPSELECTALL;Zaznacz wszystkie FILEBROWSER_POPUPTRASH;Przenieś do kosza @@ -218,6 +221,7 @@ GENERAL_PORTRAIT;Pionowo GENERAL_RESET;Resetuj GENERAL_SAVE;Zapisz GENERAL_SAVE_AS;Zapisz jako... +GENERAL_SLIDER;Suwak GENERAL_UNCHANGED;(Niezmienione) GENERAL_WARNING;Uwaga HISTOGRAM_TOOLTIP_B;Pokaż/Ukryj histogram błękitów. @@ -590,6 +594,8 @@ HISTORY_MSG_411;Retinex - Siła HISTORY_MSG_413;Retinex - Kontrast HISTORY_MSG_418;Retinex - Próg HISTORY_MSG_419;Retinex - Przestrzeń kolorów +HISTORY_MSG_421;Retinex - Gamma +HISTORY_MSG_422;Retinex - Gamma HISTORY_MSG_426;Retinex - Wyrównywanie odcieni HISTORY_MSG_429;Retinex - Iteracje HISTORY_MSG_432;Retinex - M - Podświetlenia @@ -652,13 +658,20 @@ ICCPROFCREATOR_ILL_INC;StdA 2856K ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) ICCPROFCREATOR_PRIM_BEST;BestRGB ICCPROFCREATOR_PRIM_BETA;BetaRGB +ICCPROFCREATOR_PRIM_BLUX;Niebieski X +ICCPROFCREATOR_PRIM_BLUY;Niebieski Y ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Zielony X +ICCPROFCREATOR_PRIM_GREY;Zielony Y ICCPROFCREATOR_PRIM_PROPH;Prophoto ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Czerwony X +ICCPROFCREATOR_PRIM_REDY;Czerwony Y ICCPROFCREATOR_PRIM_SRGB;sRGB ICCPROFCREATOR_PROF_V2;ICC v2 ICCPROFCREATOR_PROF_V4;ICC v4 ICCPROFCREATOR_SAVEDIALOG_TITLE;Zapisz profil ICC jako... +ICCPROFCREATOR_SLOPE;Nachylenie IPTCPANEL_CATEGORY;Kategoria IPTCPANEL_CITY;Miasto IPTCPANEL_CITYHINT;Wprowadź nazwę miasta uwiecznionego na zdjęciu. @@ -834,12 +847,15 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Cienie/Podświetlenia PARTIALPASTE_SHARPENEDGE;Krawędzie PARTIALPASTE_SHARPENING;Wyostrzanie PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_TM_FATTAL;Kompresja zakresu dynamiki PARTIALPASTE_VIBRANCE;Jaskrawość PARTIALPASTE_VIGNETTING;Korekcja winietowania PARTIALPASTE_WHITEBALANCE;Balans bieli PREFERENCES_ADD;Dodaj PREFERENCES_APPEARANCE;Wygląd +PREFERENCES_APPEARANCE_MAINFONT;Główny font PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora +PREFERENCES_APPEARANCE_PSEUDOHIDPI; Tryb pseudo-HiDPI PREFERENCES_APPEARANCE_THEME;Motyw graficzny PREFERENCES_APPLNEXTSTARTUP;wymaga ponownego uruchomienia PREFERENCES_AUTOMONPROFILE;Automatycznie użyj systemowego profilu monitora @@ -860,6 +876,7 @@ PREFERENCES_CHUNKSIZE_RAW_RCD;Demozaikowanie RCD PREFERENCES_CHUNKSIZE_RAW_XT;Demozaikowanie Xtrans PREFERENCES_CHUNKSIZE_RGB;Przetwarzanie RGB PREFERENCES_CLIPPINGIND;Pokazywanie obciętych prześwietleń/cieni +PREFERENCES_CLUTSCACHE;Cache HaldCLUT PREFERENCES_CLUTSDIR;Folder obrazów HaldCLUT PREFERENCES_CMMBPC;Kompensacja punktu czerni PREFERENCES_CROP_GUIDES_FRAME;Ramka @@ -974,6 +991,7 @@ PROFILEPANEL_MODE_TIP;Tryb wypełnienia parametrów przetwarzania.\n\nWduszone: PROFILEPANEL_MYPROFILES;Moje profile przetwarzania PROFILEPANEL_PASTEPPASTE;Parametry do wklejenia PROFILEPANEL_PCUSTOM;Własny +PROFILEPANEL_PDYNAMIC;Dynamika PROFILEPANEL_PFILE;Z pliku PROFILEPANEL_PINTERNAL;Neutralny PROFILEPANEL_PLASTSAVED;Ostatnio zapisany @@ -1099,6 +1117,9 @@ TP_BWMIX_VAL;L TP_CACORRECTION_BLUE;Niebieski TP_CACORRECTION_LABEL;Korekcja aberracji chromatycznej TP_CACORRECTION_RED;Czerwony +TP_CBDL_AFT;Po zmianie na Cz-B +TP_CBDL_BEF;Przed zmianą na Cz-B +TP_CBDL_METHOD;Gdzie TP_CHMIXER_BLUE;Niebieski TP_CHMIXER_GREEN;Zielony TP_CHMIXER_LABEL;Mieszacz kanałów @@ -1188,11 +1209,17 @@ TP_COLORTONING_LABREGION_CHANNEL_ALL;Wszystkie TP_COLORTONING_LABREGION_CHANNEL_B;Niebieski TP_COLORTONING_LABREGION_CHANNEL_G;Zielony TP_COLORTONING_LABREGION_CHANNEL_R;Czerwony +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L TP_COLORTONING_LABREGION_LIST_TITLE;Korekcja TP_COLORTONING_LABREGION_MASK;Maska +TP_COLORTONING_LABREGION_MASKBLUR;Rozmycie maski TP_COLORTONING_LABREGION_OFFSET;Przesunięcie +TP_COLORTONING_LABREGION_POWER;Moc TP_COLORTONING_LABREGION_SATURATION;Saturacja TP_COLORTONING_LABREGION_SHOWMASK;Pokaż maskę +TP_COLORTONING_LABREGION_SLOPE;Nachylenie TP_COLORTONING_LUMA;Luminancja TP_COLORTONING_LUMAMODE;Zachowaj luminancję TP_COLORTONING_LUMAMODE_TOOLTIP;Luminancja zostanie zachowana przy zmianie kolorów. @@ -1205,7 +1232,7 @@ TP_COLORTONING_OPACITY;Przezroczystość TP_COLORTONING_RGBCURVES;RGB - Krzywe TP_COLORTONING_RGBSLIDERS;RGB - Suwaki TP_COLORTONING_SA;Ochrona przed przesyceniem -TP_COLORTONING_SATURATEDOPACITY;Śiła +TP_COLORTONING_SATURATEDOPACITY;Siła TP_COLORTONING_SATURATIONTHRESHOLD;Próg TP_COLORTONING_SHADOWS;Cienie TP_COLORTONING_SPLITCO;Cienie/półcienie/podświetlenia @@ -1277,6 +1304,12 @@ TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Przy użyciu metod "tylko luminancja" oraz "L*a*b*", filtrowanie mediana zostanie wykonane prosto po funkcji falki w procesie odszumiania.\nW trybie "RGB" filtrowanie to zostanie wykonana pod koniec calego procesu. TP_DIRPYRDENOISE_MEDIAN_PASSES;Liczba powtórzeń mediana TP_DIRPYRDENOISE_MEDIAN_TYPE;Rodzaj mediana +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 miękko +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 miękko +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Zakres odcieni skóry TP_DIRPYREQUALIZER_ALGO_TOOLTIP;- TP_DIRPYREQUALIZER_ARTIF;Usuń artefakty @@ -1327,6 +1360,10 @@ TP_EXPOSURE_TCMODE_STANDARD;Standardowa TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Ważona standardowa TP_EXPOS_BLACKPOINT_LABEL;Punkt czerni raw TP_EXPOS_WHITEPOINT_LABEL;Punkt bieli raw +TP_FILMNEGATIVE_BLUE;Proporcja niebieskiego +TP_FILMNEGATIVE_LABEL;Negatyw - klisza +TP_FILMNEGATIVE_PICK;Wybierz miejsce neutralne +TP_FILMNEGATIVE_RED;Proporcja czerwonego TP_FILMSIMULATION_LABEL;Symulacja Kliszy TP_FILMSIMULATION_STRENGTH;Siła TP_FILMSIMULATION_ZEROCLUTSFOUND;Ustaw folder HaldCLUT w Ustawieniach @@ -1390,7 +1427,9 @@ TP_ICM_TONECURVE;Użyj krzywą tonalną z DCP TP_ICM_TONECURVE_TOOLTIP;Włącz aby użyć krzywą tonalną znajdującą się w profilu DCP. Opcja ta jest tylko aktywna jeśli profil DCP zawiera krzywą tonalną. TP_ICM_WORKINGPROFILE;Profil roboczy TP_ICM_WORKING_TRC_CUSTOM;Własna +TP_ICM_WORKING_TRC_GAMMA;Gamma TP_ICM_WORKING_TRC_NONE;Żadna +TP_ICM_WORKING_TRC_SLOPE;Nachylenie TP_IMPULSEDENOISE_LABEL;Redukcja Szumów Impulsowych TP_IMPULSEDENOISE_THRESH;Próg TP_LABCURVE_AVOIDCOLORSHIFT;Zapobiegaj zmianom koloru @@ -1435,14 +1474,19 @@ TP_LENSGEOM_FILL;Auto-wypełnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSGEOM_LIN;Liniowo TP_LENSGEOM_LOG;Logarytmicznie +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Wybierz automatycznie TP_LENSPROFILE_CORRECTION_LCPFILE;Plik LCP +TP_LENSPROFILE_CORRECTION_MANUAL;Wybierz ręcznie TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP TP_LENSPROFILE_MODE_HEADER;Profil obiektywu TP_LENSPROFILE_USE_CA;Aberracja chromatyczna TP_LENSPROFILE_USE_GEOMETRIC;Zniekształcenia geometryczne +TP_LENSPROFILE_USE_HEADER;Popraw TP_LENSPROFILE_USE_VIGNETTING;Winietowanie TP_LOCALCONTRAST_AMOUNT;Ilość +TP_LOCALCONTRAST_DARKNESS;Ciemne miejsca TP_LOCALCONTRAST_LABEL;Kontrast lokalny +TP_LOCALCONTRAST_LIGHTNESS;Jasne miejsca TP_LOCALCONTRAST_RADIUS;Promień TP_METADATA_EDIT;Zastosuj modyfikacje TP_METADATA_MODE;Tryb kopiowania metadanych @@ -1470,9 +1514,11 @@ TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Łata gorące piksele (pojedyńcze świecące, TP_PREPROCESS_LABEL;Przetwarzanie początkowe TP_PREPROCESS_LINEDENOISE;Filtr zakłóceń liniowych TP_PREPROCESS_LINEDENOISE_DIRECTION;Kierunek +TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Oba TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Poziomo TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Pionowo TP_PREPROCESS_NO_FOUND;Nic nie znaleziono +TP_PRSHARPENING_LABEL;Wyostrzanie po zmianie rozmiaru TP_RAWCACORR_AUTO;Autokorekcja TP_RAWCACORR_AUTOIT;Iteracje TP_RAWCACORR_AVOIDCOLORSHIFT;Unikaj przesunięcia kolorów @@ -1550,6 +1596,8 @@ TP_RETINEX_CONTEDIT_LH;Odcień TP_RETINEX_CONTEDIT_MAP;Wyrównywanie TP_RETINEX_EQUAL;Wyrównywanie TP_RETINEX_GAIN;Wzmocnienie +TP_RETINEX_GAMMA;Gamma +TP_RETINEX_GAMMA_NONE;Żaden TP_RETINEX_HIGH;Wysoki TP_RETINEX_HIGHLIGHT;Próg podświetleń TP_RETINEX_LABEL;Retinex @@ -1595,6 +1643,7 @@ TP_SHARPENEDGE_LABEL;Krawędzie TP_SHARPENEDGE_PASSES;Powtórzenia TP_SHARPENEDGE_THREE;Tylko luminancja TP_SHARPENING_AMOUNT;Siła +TP_SHARPENING_BLUR;Promień rozmycia TP_SHARPENING_CONTRAST;Próg kontrastu TP_SHARPENING_EDRADIUS;Promień TP_SHARPENING_EDTOLERANCE;Tolerancja krawędzi @@ -1617,6 +1666,7 @@ TP_SHARPENMICRO_MATRIX;Matryca 3×3 zamiast 5×5 TP_SHARPENMICRO_UNIFORMITY;Jednolitość TP_SOFTLIGHT_STRENGTH;Siła TP_TM_FATTAL_AMOUNT;Ilość +TP_TM_FATTAL_LABEL;Kompresja zakresu dynamiki TP_TM_FATTAL_THRESHOLD;Detale TP_VIBRANCE_AVOIDCOLORSHIFT;Zapobiegaj przesunięcia kolorów TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH @@ -1659,14 +1709,24 @@ TP_WAVELET_BACKGROUND;Tło TP_WAVELET_BACUR;Krzywa TP_WAVELET_BALCHRO;Balans chrominancji TP_WAVELET_BANONE;Żaden +TP_WAVELET_BASLI;Suwak +TP_WAVELET_BATYPE;Metoda balansu kontrastu +TP_WAVELET_CBENAB;Tonowanie i balans kolorów TP_WAVELET_CCURVE;Kontrast lokalny +TP_WAVELET_CH1;Cały zakres chrominancji +TP_WAVELET_CH2;Nasycone/pastelowe +TP_WAVELET_CH3;Połącz poziomy kontrastu TP_WAVELET_CHCU;Krzywa +TP_WAVELET_CHSL;Suwaki TP_WAVELET_COMPCONT;Kontrast +TP_WAVELET_COMPGAMMA;Kompresja - Gamma TP_WAVELET_CONTR;Gamut TP_WAVELET_CONTRA;Kontrast TP_WAVELET_CONTRAST_MINUS;Kontrast - TP_WAVELET_CONTRAST_PLUS;Kontrast + TP_WAVELET_CTYPE;Kontrola chrominancji +TP_WAVELET_CURVEEDITOR_CL;L +TP_WAVELET_CURVEEDITOR_HH;HH TP_WAVELET_DALL;We wszystkich kierunkach TP_WAVELET_DAUB2;D2 - niski TP_WAVELET_DAUB4;D4 - standard @@ -1681,18 +1741,23 @@ TP_WAVELET_EDGCONT;Kontrast lokalny TP_WAVELET_EDGE;Ostrość krawędzi TP_WAVELET_EDGEDETECTTHR;Niski próg (szum) TP_WAVELET_EDGEDETECTTHR2;Wysoki próg (wykrywanie) +TP_WAVELET_EDGTHRESH;Szczegółowość TP_WAVELET_EDRAD;Promień TP_WAVELET_EDSL;Suwaki progów +TP_WAVELET_EDTYPE;Metoda kontrastu lokalnego: TP_WAVELET_EDVAL;Siła +TP_WAVELET_FINEST;Najdokładniej TP_WAVELET_HS2;Cienie/Podświetlenia TP_WAVELET_HUESKIN;Odcień skóry TP_WAVELET_HUESKY;Odcień nieba +TP_WAVELET_LEVCH;Chrominancja TP_WAVELET_LEVF;Kontrast TP_WAVELET_LEVONE;Poziom 2 TP_WAVELET_LEVTHRE;Poziom 4 TP_WAVELET_LEVTWO;Poziom 3 TP_WAVELET_LEVZERO;Poziom 1 TP_WAVELET_LIPST;Usprawniony algorytm +TP_WAVELET_MEDGREINF;Pierwszy poziom TP_WAVELET_MEDI;Usuwaj artefakty niebieskiego nieba TP_WAVELET_MEDILEV;Wykrywanie krawędzi TP_WAVELET_NEUTRAL;Neutralny @@ -1701,12 +1766,15 @@ TP_WAVELET_NPHIGH;Wysoki TP_WAVELET_NPLOW;Niski TP_WAVELET_NPNONE;Brak TP_WAVELET_NPTYPE;Piksele sąsiadujące +TP_WAVELET_PASTEL;Chrominancja kolorów pastelowych TP_WAVELET_PROC;Proces TP_WAVELET_RE1;Wzmocniony TP_WAVELET_RE2;Niezmieniony TP_WAVELET_RE3;Zmniejszony +TP_WAVELET_RESCHRO;Chrominancja TP_WAVELET_RESCON;Cienie TP_WAVELET_RESCONH;Podświetlenia +TP_WAVELET_SAT;Chrominancja kolorów nasyconych TP_WAVELET_STREN;Siła TP_WAVELET_STRENGTH;Siła TP_WAVELET_SUPE;Ekstra @@ -1714,7 +1782,9 @@ TP_WAVELET_THR;Próg cieni TP_WAVELET_THRESHOLD;Poziom podświetleń TP_WAVELET_THRESHOLD2;Poziom cieni TP_WAVELET_THRH;Próg podświetleń +TP_WAVELET_TMSTRENGTH;Siła kompresji TP_WAVELET_TMTYPE;Metoda kompresji +TP_WAVELET_TON;Tonowanie TP_WBALANCE_AUTO;Auto TP_WBALANCE_CAMERA;Z aparatu TP_WBALANCE_CLOUDY;Pochmurnie @@ -1757,6 +1827,7 @@ TP_WBALANCE_SOLUX41;Solux 4100K TP_WBALANCE_SOLUX47;Solux 4700K (vendor) TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) TP_WBALANCE_SPOTWB;Punktowy +TP_WBALANCE_TEMPBIAS;Kompensacja automatycznego balansu bieli (AWB) TP_WBALANCE_TEMPERATURE;Temperatura TP_WBALANCE_TUNGSTEN;Wolfram TP_WBALANCE_WATER1;Pod wodą 1 @@ -1783,7 +1854,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. -!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR !DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift !DYNPROFILEEDITOR_NEW_RULE;New Dynamic Profile Rule !EXPORT_BYPASS;Processing steps to bypass @@ -1796,11 +1866,9 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !FILEBROWSER_DELETEDIALOG_ALL;Are you sure you want to permanently delete all %1 files in trash? !FILEBROWSER_DELETEDIALOG_SELECTED;Are you sure you want to permanently delete the selected %1 files? !FILEBROWSER_DELETEDIALOG_SELECTEDINCLPROC;Are you sure you want to permanently delete the selected %1 files, including a queue-processed version? -!FILEBROWSER_POPUPREMOVE;Delete permanently !FILEBROWSER_POPUPREMOVEINCLPROC;Delete permanently, including queue-processed version !FILEBROWSER_SHOWNOTTRASHHINT;Show only images not in trash. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. -!GENERAL_SLIDER;Slider !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_235;B&W - CM - Auto @@ -1862,8 +1930,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_416;Retinex !HISTORY_MSG_417;Retinex - Transmission median !HISTORY_MSG_420;Retinex - Histogram - HSL -!HISTORY_MSG_421;Retinex - Gamma -!HISTORY_MSG_422;Retinex - Gamma !HISTORY_MSG_423;Retinex - Gamma slope !HISTORY_MSG_424;Retinex - HL threshold !HISTORY_MSG_425;Retinex - Log base @@ -1946,15 +2012,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !ICCPROFCREATOR_PRIMARIES;Primaries: !ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 !ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 -!ICCPROFCREATOR_PRIM_BLUX;Blue X -!ICCPROFCREATOR_PRIM_BLUY;Blue Y -!ICCPROFCREATOR_PRIM_GREX;Green X -!ICCPROFCREATOR_PRIM_GREY;Green Y -!ICCPROFCREATOR_PRIM_REDX;Red X -!ICCPROFCREATOR_PRIM_REDY;Red Y !ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles. !ICCPROFCREATOR_PRIM_WIDEG;Widegamut -!ICCPROFCREATOR_SLOPE;Slope !ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -1992,17 +2051,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression !PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font !PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color -!PREFERENCES_APPEARANCE_MAINFONT;Main font -!PREFERENCES_APPEARANCE_PSEUDOHIDPI;Pseudo-HiDPI mode !PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CHUNKSIZES;Tiles per thread !PREFERENCES_CHUNKSIZE_RAW_CA;Raw CA correction -!PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CROP;Crop Editing !PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop @@ -2040,7 +2095,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!PROFILEPANEL_PDYNAMIC;Dynamic !PROGRESSBAR_GREENEQUIL;Green equilibration... !PROGRESSBAR_HOTDEADPIXELFILTER;Hot/dead pixel filter... !PROGRESSBAR_LINEDENOISE;Line noise filter... @@ -2060,9 +2114,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. -!TP_CBDL_AFT;After Black-and-White -!TP_CBDL_BEF;Before Black-and-White -!TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] @@ -2072,13 +2123,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 !TP_COLORTONING_LABREGIONS;Color correction regions !TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 -!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C -!TP_COLORTONING_LABREGION_HUEMASK;H !TP_COLORTONING_LABREGION_LIGHTNESS;Lightness -!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L -!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur -!TP_COLORTONING_LABREGION_POWER;Power -!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 @@ -2096,22 +2141,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) !TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. !TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_TYPE_3X3;3×3 -!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft -!TP_DIRPYRDENOISE_TYPE_5X5;5×5 -!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft -!TP_DIRPYRDENOISE_TYPE_7X7;7×7 -!TP_DIRPYRDENOISE_TYPE_9X9;9×9 !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EXPOSURE_HISTMATCHING;Auto-Matched Tone Curve !TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail. !TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual -!TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) !TP_FILMNEGATIVE_GUESS_TOOLTIP;Automatically set the red and blue ratios by picking two patches which had a neutral hue (no color) in the original scene. The patches should differ in brightness. Set the white balance afterwards. -!TP_FILMNEGATIVE_LABEL;Film Negative -!TP_FILMNEGATIVE_PICK;Pick neutral spots -!TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now? !TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Baseline exposure !TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Employ the embedded DCP baseline exposure offset. The setting is only available if the selected DCP has one. @@ -2123,20 +2158,11 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. !TP_ICM_WORKING_TRC;Tone response curve: -!TP_ICM_WORKING_TRC_GAMMA;Gamma -!TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. -!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically selected -!TP_LENSPROFILE_CORRECTION_MANUAL;Manually selected !TP_LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. -!TP_LENSPROFILE_USE_HEADER;Correct -!TP_LOCALCONTRAST_DARKNESS;Darkness level -!TP_LOCALCONTRAST_LIGHTNESS;Lightness level !TP_PDSHARPENING_LABEL;Capture Sharpening -!TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAW_BORDER;Border @@ -2179,12 +2205,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. -!TP_RETINEX_GAMMA;Gamma !TP_RETINEX_GAMMA_FREE;Free !TP_RETINEX_GAMMA_HIGH;High !TP_RETINEX_GAMMA_LOW;Low !TP_RETINEX_GAMMA_MID;Middle -!TP_RETINEX_GAMMA_NONE;None !TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). !TP_RETINEX_GRAD;Transmission gradient !TP_RETINEX_GRADS;Strength gradient @@ -2219,31 +2243,21 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible. !TP_RETINEX_VIEW_TRAN;Transmission - Auto !TP_RETINEX_VIEW_TRAN2;Transmission - Fixed -!TP_SHARPENING_BLUR;Blur radius !TP_SHARPENING_ITERCHECK;Auto limit iterations !TP_SHARPENING_RADIUS_BOOST;Corner radius boost !TP_SOFTLIGHT_LABEL;Soft Light !TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression !TP_WAVELET_B2;Residual !TP_WAVELET_BALANCE;Contrast balance d/v-h !TP_WAVELET_BALANCE_TOOLTIP;Alters the balance between the wavelet directions: vertical-horizontal and diagonal.\nIf contrast, chroma or residual tone mapping are activated, the effect due to balance is amplified. !TP_WAVELET_BALCHRO_TOOLTIP;If enabled, the 'Contrast balance' curve or slider also modifies chroma balance. -!TP_WAVELET_BASLI;Slider -!TP_WAVELET_BATYPE;Contrast balance method -!TP_WAVELET_CBENAB;Toning and Color Balance !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted -!TP_WAVELET_CH1;Whole chroma range -!TP_WAVELET_CH2;Saturated/pastel -!TP_WAVELET_CH3;Link contrast levels !TP_WAVELET_CHR;Chroma-contrast link strength !TP_WAVELET_CHRO;Saturated/pastel threshold !TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. !TP_WAVELET_CHR_TOOLTIP;Adjusts chroma as a function of "contrast levels" and "chroma-contrast link strength" -!TP_WAVELET_CHSL;Sliders !TP_WAVELET_CHTYPE;Chrominance method !TP_WAVELET_COLORT;Opacity Red-Green -!TP_WAVELET_COMPGAMMA;Compression gamma !TP_WAVELET_COMPGAMMA_TOOLTIP;Adjusting the gamma of the residual image allows you to equilibrate the data and histogram. !TP_WAVELET_COMPTM;Tone mapping !TP_WAVELET_CONTEDIT;'After' contrast curve @@ -2251,9 +2265,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifies local contrast as a function of the original local contrast (abscissa).\nLow abscissa values represent small local contrast (real values about 10..20).\n50% abscissa represents average local contrast (real value about 100..300).\n66% abscissa represents standard deviation of local contrast (real value about 300..800).\n100% abscissa represents maximum local contrast (real value about 3000..8000). !TP_WAVELET_CURVEEDITOR_CH;Contrast levels=f(Hue) !TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifies each level's contrast as a function of hue.\nTake care not to overwrite changes made with the Gamut sub-tool's hue controls.\nThe curve will only have an effect when wavelet contrast level sliders are non-zero. -!TP_WAVELET_CURVEEDITOR_CL;L !TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Applies a final contrast luminance curve at the end of the wavelet treatment. -!TP_WAVELET_CURVEEDITOR_HH;HH !TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifies the residual image's hue as a function of hue. !TP_WAVELET_DAUB;Edge performance !TP_WAVELET_DAUB_TOOLTIP;Changes Daubechies coefficients:\nD4 = Standard,\nD14 = Often best performance, 10% more time-intensive.\n\nAffects edge detection as well as the general quality of the firsts levels. However the quality is not strictly related to this coefficient and can vary with images and uses. @@ -2264,12 +2276,9 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_EDGEDETECT_TOOLTIP;Moving the slider to the right increases edge sensitivity. This affects local contrast, edge settings and noise. !TP_WAVELET_EDGESENSI;Edge sensitivity !TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged. -!TP_WAVELET_EDGTHRESH;Detail !TP_WAVELET_EDGTHRESH_TOOLTIP;Change the repartition between the first levels and the others. The higher the threshold the more the action is centered on the first levels. Be careful with negative values, they increase the action of high levels and can introduce artifacts. !TP_WAVELET_EDRAD_TOOLTIP;This radius adjustment is very different from those in other sharpening tools. Its value is compared to each level through a complex function. In this sense, a value of zero still has an effect. -!TP_WAVELET_EDTYPE;Local contrast method !TP_WAVELET_FINAL;Final Touchup -!TP_WAVELET_FINEST;Finest !TP_WAVELET_HIGHLIGHT;Highlight luminance range !TP_WAVELET_HS1;Whole luminance range !TP_WAVELET_HUESKIN_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. @@ -2278,7 +2287,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_ITER_TOOLTIP;Left: increase low levels and reduce high levels,\nRight: reduce low levels and increase high levels. !TP_WAVELET_LABEL;Wavelet Levels !TP_WAVELET_LARGEST;Coarsest -!TP_WAVELET_LEVCH;Chroma !TP_WAVELET_LEVDIR_ALL;All levels in all directions !TP_WAVELET_LEVDIR_INF;Below or equal the level !TP_WAVELET_LEVDIR_ONE;One level @@ -2288,7 +2296,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_LEVLABEL;Preview maximum possible levels = %1 !TP_WAVELET_LINKEDG;Link with Edge Sharpness' Strength !TP_WAVELET_LOWLIGHT;Shadow luminance range -!TP_WAVELET_MEDGREINF;First level !TP_WAVELET_MEDILEV_TOOLTIP;When you enable Edge Detection, it is recommanded:\n- to disabled low contrast levels to avoid artifacts,\n- to use high values of gradient sensitivity.\n\nYou can modulate the strength with 'refine' from Denoise and Refine. !TP_WAVELET_NOISE;Denoise and Refine !TP_WAVELET_NPTYPE_TOOLTIP;This algorithm uses the proximity of a pixel and eight of its neighbors. If less difference, edges are reinforced. @@ -2296,10 +2303,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_OPACITYW;Contrast balance d/v-h curve !TP_WAVELET_OPACITYWL;Final local contrast !TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right. -!TP_WAVELET_PASTEL;Pastel chroma -!TP_WAVELET_RESCHRO;Chroma !TP_WAVELET_RESID;Residual Image -!TP_WAVELET_SAT;Saturated chroma !TP_WAVELET_SETTINGS;Wavelet Settings !TP_WAVELET_SKIN;Skin targetting/protection !TP_WAVELET_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected. @@ -2312,8 +2316,5 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_TILESIZE;Tiling method !TP_WAVELET_TILESLIT;Little tiles !TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements. -!TP_WAVELET_TMSTRENGTH;Compression strength !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. -!TP_WAVELET_TON;Toning -!TP_WBALANCE_TEMPBIAS;AWB temperature bias !TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". From 6e7943752f7983a29e83e8ef2aa99aac4f90684b Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 18 Feb 2020 13:29:42 +0100 Subject: [PATCH 34/38] Added Canon PowerShot S120 dual-illuminant DCP Closes #5637 --- rtdata/dcpprofiles/Canon PowerShot S120.dcp | Bin 0 -> 1102974 bytes rtengine/camconst.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 rtdata/dcpprofiles/Canon PowerShot S120.dcp diff --git a/rtdata/dcpprofiles/Canon PowerShot S120.dcp b/rtdata/dcpprofiles/Canon PowerShot S120.dcp new file mode 100644 index 0000000000000000000000000000000000000000..8bb089c293d86c32b47fdbec2edccbc0522cc371 GIT binary patch literal 1102974 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 z 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

1iPn_JsTAnkz z0U9HbZXJa%_E8IFn~Hj$qG0=gT8!zI!h?JNRqtw`DDoG+O=4j9NP}5h=rpLJa!0=1>sQm@T_?ki)JR__`!Tn`DeZ;F9=1(Kh_A1l|r*17=MYS ztSFf;eQFzmx}1qm7+P2QH#r9W%=4Y@?pIoEUuU7aX<7(LLUMp-RMy~Uq#jy=OXE9p^o2u^=xk5rc`O^*phG3%EvZ`VkF ztmx0QxoVvx)gmX`ZRRS)A0J9D*-y*jtT4KEbZzL;Y!?j|&S;t~NfgHKqNxk{Ur!)g9Me);)|0veSS1!4 z#^NG>m(+Q?Xr-gZJ?HPUG(xOzNsaaI?7g_07p|N&-84#u`o~of#JoMW3o&~eE{S_B zqG3;brfJ|QQCkrSd*VY{eBUqHg@@yPMKZdCEEXq+P#b6^aoyu4iTN{w(Jd?$bDXY9 zYZ`_k_bfGVAErtd>rf-O9kuyRTvHy&A%3S-Wjw#ZkqAX>Gi$~N;;9ZaH|u+FDl*2g z_MFs9cWJ6UuKuPU-fJo?B1g^bHtexvdq_jvLvW4xeBPEENoN*{#qT+TKDI?NsT+nX z7nx%_o|o?34&%F`U##i8Hbk4S7Rr0Ch{f@np5Nf{`EmboQy*c;^7~q{1s=3 zA>S~T7Mln{L=6=qk(_f|G zZ9*}5H}@9WoFoP#7RSj$vcllG(mE*_$~l$yj)Sse6sJ2_!*?rrT$Sn(JvU7yj*t59 zVZ(Ke``9C#w#Aip(l=XwbQqG%{69<@+BXEz1L*?`7faKtgyI3vhQc^eI<*klw`d=u?w#o(<> z{)&YS<)OWZQEZZe7JWO)SDwaV1o24gJDA7|wy{r}MNXljPI5uLc$93UP42XjcLv6x zCwEY{Ry30180U?+hhUlZMZD`331i~%)b~sH_lKhYGF^!hnXSl=QA>(rm zZ@J-ccXU2Mymv1b`T6n??Bjk!-UNI3#%5|O)Z_lD`83&*J;{rFZf9jDCy(VUvJp8O zuQ|%2xjQq4SS-U}H@V&Za5x&Lpx~UZY)~zNT;cq`gG1zZKL1}IB|kPwR?z16xy$_M zLcHuVG7`f>xd#`bmQ!{{qE04pp+l${-9HL{x!W+LR=m9bauiCq^Aca+CnuBNIIskcuJh-mdE|&NY2;dUy<+hY&Usr=Qv#H zNgkrEt>vv&?AvfhW2AKrxxG;&lG~GK;r&^0{$B`!@226{+YGU}R}hvhBe(BoBhg_> z2TCj!w%KKo9ZOGlCo4xc~j|Ov3gWNTJTIjdb2*HV} zvBQc~y-2%e#+zO5R?%V!wGHYJR3x>E6EL z`nq6hHIY}dY85e;{mBUKP+L{JQvO%3w>eXJzx(Q?G{w0-)^Or(h;g4Ia@(r@$l-me z{*|x4v)u(J-jSnVLymskLLcP!CpVXmr@r-*K>Xl7TD{y6`X#f1u&OV2E$?*DzZ@Kl z3ZA>BT^s0=9tY!y5%*pn{*a9`LZEC-9*vQY|l=O1?gw%3+dIENv9OB(vTxhkw9gRp!ib=fv95)FpUfCaJW z9jjZ44z%-?7jM;xN2g8ny>MSK9M__<5l6KCIofOoch^y!Bc#+Fd;>J2ebI zD--Uw)?TN#f8c_r|ERmvJ6B)L-UsE}7p|lA(cdl#M7RZaKsGD%)kZO1jUrdk=T7t42SUj~xwxCvo5zUoOidB0_P1@2It% zUhdX83{QKJXZy`AxijVwzVP^rIHY;0EqlY!BGA1i5Z^~Zx z0`S3<{5*RW>3y4e;KomCY3y{;--!>w2*!uSle_7gjtfV}U)1c#s;<9sAPkqEQroWG zRr$vHFt}f!#^wF3a@t+`!vShBhR>Cs^bdy@<7!Uk4B4tE9IfY2%PD7+oKF3!({a=& zbnh&`V*l;7Ke4rn269YJBsAprX!hufST-&S{cWlJVRla}r0#9(6z($Ho);#MqY=bA zZpE16V*3I1V4b;p?s`mIo6Ec|m^jZzr^P;(I9%rMN-wx7QeMWf7f9`ZU5~}l>hTEU zIWl_mN(}lLi#M6nsU27$l!@%Sa?j#+`dxA8c{ugZX5x+CanXK42uvEMBl6%5q5K{M z$2;lRxrcd3w{Xr6(=mE|q^R;f4k__zD4%)(k z{+svx>)j7arIW^!=|(G zjn8*K?pEX-o&}lqyzs7E_uOX=YB%N{X2%#QIxY)Wn~@K*(H_a~Pdf66!R~V9nPkqL zUtc3~Yu~Fc(z#FBvnw@LR(2M92J#&Dq2IPP6N{K*HW@L9G-enzDibGd5s7L?bw_ua#$hocwf7Zan{lY`Z zeTvm77<}lM==Ym5u7lJ^?r=riE>Pni@5hH{9*WraDs*c??Uhci#FOYGEOuv1E`2A` zO5>rv${mVzZ^ZS((P)`Q&iVLq5!^T&TLWei*KtQw84`>S0qL*{yDARY2cekzSsNpc z2>u`Zio+bQ%KET{F||do#WK|7XAYKIh}iZE(7Yk< z<##QF-`rfxU_QTVp0O~tmG;x% z_VFDrPA1I6-9h9$>1ijl5!7HZPr;8mKH}#(-k;;S1N$OMIMctJc=l`GPZg>p?&!Oc z<5!v^7Su~Y0(aJav{)ooFqe;s;V#>=)gtOJF=c7oU+B9@^yyDb>q6>;e%vkciFF!W zl!DJDk{H0*<21$xpF^ibOdjVm%vB77t`g_3!YA5!w(72E9G?gi+Bvw#BQauB9FEaO(+5VeZA7xI7wlmVwDzmJ|-j7K3=># z%$_>q*!puRVt!Q(HosurzdTcv2B;DKg!NtHxuQS&{ngnQo7R7k_!`Y#{=H;$ueC}% ztFJ=VW6p-wZV=DsCQ%E3+>(ylM917j%wfJN2JI83JGnDBiRa6!RNN=0n`#GjJVTC( zwowttw&7m+rL$tjqhK`cPc4VQ>!Q7C27J1b7t-gRXkSjO@Aa9uKH{8s`7H=#2U({S zOcR~XvtHodd-c=}&(wLoBSSU-9--PSEhWAm#g}Tn#8W-Uo!f94G|?BxjVw2)3#Q; zaM_XsC!WoR+Ej6ALn0bIHis+_Ma8^B_mFR;`D)Q6Is$c=M=e;j zO^kUSj4tiS@77r_z6Z^~sX8+;ug*pBXMX?=?4|zWmgCgrA(k(Pc0T7V=4}bbfMcv9 zqDCXN;3 z{QCofj|;2TvrvooTJo}uA|f#ZGZ}M+x5yKzh2&DL%@|%kO-ve_hH-VN$GtpQ>>z)a znz6t#-$|?s;eA*?1-s8$2;ceK#pInhc7Rf-a*3g!O@5gS7QqKK*uZDE$$iDnIvQN# zv&Y1qVjJgL16gl|e(x$8R%cI|&mkUNL`&{atTjl%h(le3i9&@x%^CAIb{88@B;hCH zTXECAqVCQ_Y-JwxK6SXz?2E?&4?dS$iGA!twBMBi-!)<4+n5OI-BF+DPp+`J6ioa- zxe-ONcsFqdj@}_x;aI(Rp$@>nEf_BKf7bW^KNAAU*Lw0X_5$=0UJ)DUSYq}z@vc=RNH@ALgq%(WyG4&r-1b4WV5 zBoXx|@O?EuM=j=ftY_}Gyv0wcok<&4E*JNaNv(yvPACW%9=E!=sBj!3o@j?9azw`2dd zu)nZOp9q}k0mZ{gkAOS@X?F`w9Q_C|h9 ziIo0ve)W+y9Hs0h?KrB!zTwPae!bF7iDTRzO-{_}D|BARlMrA<9-Gjax`WdaQOA>g zfX&BrVZ=`srt)VRSV$q7X#CJqW3i!LTA9jT=pgE9Yr2Y_qk^&T4*AQ5B#MGf0T{EI zydRSaMEP=m6p`!HY~ps|w`T_2PLOLodZw6jEDT1=s1xy)?`udLLb$W~zy9pMzFe;I zXenwkR@8G5@~DJ)cv((9b2(jpH!laZ7&l@9#>wsWWW$%XHE-Kmb~&Df?zHW}piiRD zzzptHJUH~W)bVf-8oi@N+MCueiV6ljYwM7_Gy%cFmOSYa(z(Kd(sFn08ACk%Yq^JdIkc=(<) zK2eJkwC8op9LbP7Jw9XDSI@65rF7Q7adHY;-#Tk{fb+omcHFzntgY-o%-wA_)=DE& zl)ac64`R)7c=8_Q(y=PU$B@Tn+jZsrH;Gu1%-yt$kCch$;$fZ3xMzGp+4^}5E^TIP z-?&V9=5!?bSFnfE{g}eVI1IL~)U2Q4BaLhr1gT0IYZ+tV5afaqBx9#!2d_v_-vwa_~~S&CxDIKOCNY|4r_TfBgUc#h zr#&~t*T)R*-nz|ZEo0gqGe2-gV}1%cPBBISG4LVu;T9FGV7)z>Jv`P3@?WKg9D(?c z%r(y~QRcA672w4l&gNFS@ZN!FSc7_pfJB2F`ud&F<&Dj%Ixqkw1sSNmtm$4=axn#G)?Z!5SGbMz#Syl3`YBUym$D_{@o;!o_Fg_E5T`Tx5PL6`R59g12>Dy^0II$|6d%e`X9s5>U zr*{YrIx#mhd8TkC7V+SJal@iS@-FZ}Bk}~T-r_5Uz4pYS@-+POEEFSCz0q(aIlx=a z6>p+L(NCLBA$u&1XEBVvUPK67Zd0 z7qPC$oWnhu1w0oQeE5!|5we(lqyTTMtSx_KWHzpVQi&WgKnpdserM`=P&;DElk@uiD?7m!oM>fo8=h5%;WuHdb z@MauNv<#Q449mhu`mjZ6|Gu$GBQgwx~t@mj3LaC0r7J*qiCWcpFf#T&Q`^ zTpG__#6vq_#abb88hNaqRulcrlhM@l(kg^F0OIU(Hk=3-Q56 z@@EYmlq#*gW9qBB}YDM)ywbXjFfC_{6^fhyhV2 z%Z6>qLCZUC-Of?6%er*<(ucEdHkEbc`cpDKoV#*I6z*mpgZb6tfPC@jYzq2VvkpA! zBx0EV=JEde-lK|mIe;8fj0s6Y$4Pbl$oE6P-PL)o!jRZ`Q`+j;!yU@{T{L)Kz^?~4 z!oYhfET&Gf{id+e{8j+e%G zOvg6%_jH+kMfH6y|EDo=uu+Q8xAVZ{f6O7}=_2e@2=Y5=khOlWeC#_pNt#xkciVmr z(_doTsL8&;ik;9W1m%(+H5rXktLXRHW#cnz@SA}LWWTd>V9H!#b%$AUqkoxr#oSCa z)JonmhuUh)$BtZTBVWCjhWqs4s#BhcJobxfGCpY23dKu7KXqh0FL4tmcz@pET^98C zkF=sY>!C!(iYyapvX>UAIlPa?)mCa5pOfjIUFRNGMza^xdmH1w+7Ks}koRCK`^?@$ zv1~o>^JVNqS=*qV#9Bkmy5mF;q7$Rgi8j1&D+T9?0bgUw_;4ZvR_0;IVvaqVyGggc z1Ysq8CZpIMi8}HFGj~nC&>Cd}z0t24ZSKEBX;n;K0^Z9nCaustGIqhwU5tl?FQrzl z&UpTT{{L#2xajAO1_|tqzZ)jj{t8CnNajP&Ae;LoLPL(l|IMG3{wezIf0tq>`}}J^ zTk1Pn=ECD7ZT_>4-mh;qYSPY4%a6!5+vi{=eeqPU`SP%5nHbiCpK+0syel>xT^Wb} z9_}QsJ4danQH&4w-isrgQPi56f(9?Q2!s9XCGcKrf7nMvHeziN#T{z5ztX)<v=!>(Q>(x(V zz3E_yh(%Fo9msk`3`u$oGbH!bAUhGh%p%G zIfA-CUP#Me?iyPkWhQR)bfAGQ}Z64Q=HrG0E9C}_5P@P8Rdwh*{r#y zZI(*S-SCm`DCET_X>XNae6vxZcX+70`9?gy5@NgBf$Vf>tj2YW;HY z`A9PSoSNt}>d~Ls_gFpnf}EW<2PZmkZrEy>eEmWu;u$Lf&iKepz1jaB##!?c6ZtfA z%w`i<@6GxpOlGH|9eud{y4}KjJAI0FP~Hj>o^=_k>3c8RR2BQ%vZm*G?>4)cw4J!2 zkDHhSIJZ!KX+XZCJ?yD&KB!FW#2q#I^Yn}Vl#Smpe^|))9Bd5J!Lj(RVUKjW5@|Px zJ)j+2$2q|wG6MT%Fh>0*H}jPc^7it+Uh6^*`2d`n!rC))4C^5;+@r6?YkCkLM1C{= z--2KDaWd8plVrZ%owt;_Ol!>M{OjboJmrGkR?v21?s2TDGIh-qOxE$dZ0I7b_-Tjo zBjkYUZY}n5=P0iz0Yz^Y%Q+6Q@LyY5=dtCEW%>&CoZHgQ-`%40>+>>E#M$?zvX1%} zKUt5m_t>U-xjgVIwT1b9m1djd>Y>y`rJbF=CCNXYCSU~5qnVSr9L<<%#J|60MFaWI zHqJYo7)yU%5SjDIArs6w{{004?77`YreD1?7oOyVF=P&wlW|(I=%}R@9yQkeU+6{? zi#J-&@9{gQnB=R*^`pEKGgQiV-iZjN{geKdD7!kwA#*)>eT@)7cBP>K?flGPj$X<6V-oGW@LWIr;yGTp%jclX5AtkH3=(MP z{yTTd(P;^2*@ykQw;6H?t8_%6+pWYCc$NS?J=P3?{%;3<<6Dg}w(SB4ke!p{u{cX;{_bvT@R9$62 zRcq4~3lqD$TTHBT_QFoOyQRC~&?(q~h>hKyu=jHiJFi_B*xiAFe#`gQ$NeLEL1Ff@ z=b2fvW-Sa1v&52$6ihy_7xs%xseMRY=1MIlJT^vs)|u17c41tB35@4x;375UUbs0T z$@!Z+C{)bVwMOFxRpY$;>XDK+#II^I&iP?;OV*^gA(XML&>38^ahDrfGl%#b_@a$E zO7CFCdAY@YZ8`TdwlL14-^|k9z8(8NTw?EL8?FB1IP9EGY@w9>3o!>rr(}$%Sw}mF zGrNpX=7jmTgn=%3)7h-;dTkTCJ8|y8nr&OJ4AHnX>uQB(+ibeH&U_Pki!=1n)}kBl zhpsO;Q`l9mgmUL;k%jN24 zdZF;@!dcaT5a}4_^|n^z3-!JwH7K76l|%-CrVL(~9@t zjYHc1s>eba$l0_!M?1D#9JZ=>zdUi#4jxIYYzF6jD~D>GxR=(-g+9b7O|-+wSw0g^ zEbiGG;Z3e$-CX97S6X4RkuwDL8X^8G#C13J>&(MjJT;;lbFkwB_HhZ*MF8*5&#a@u zUw0GFc((6X5Put6Ln!1g-}pj&?yf6S45~z27WwErfwl^Zq(}Q6_L;Uy473%Kv9NJ}%vj)_&^`=)&Nghn}t?`1` zMbMNYEMLRD?|P}&-QyZM|24&me|bs1jG^1iFkltEU?$_+fADOW+qaJ#kHzYE~$UGVxT)c=fqg}J2>DjIY`eFSkJDtMm%-YyU*Q&yKWX} zsZPaM=6TCr##;#67jAZgLW|%ZHT|wRXp4##x-M)V^?w#9+SLw8YW+ab6s(&v>3(tUb3i z4zncQM^}Tim#%V`+Jw2(f4tVGS^|!`6Dv08s_i#`IzTbRi`vxDUU#5AJ@Z@n&}U*T zbGh3N-fI_1#b4&s%nQunnoVNnIOfH-yk{-vi#xh0Xh0s<@QPT`p$~Qb7|%B2ZAI9i z1kC5TRqr+sP4>lNT<;W|^KB|N{)&W_7;;pL%gUL=Q2a`yC(adXCDtMU!57K%xum0B zv1=x}4^PFhl(mxoZCC6jwrTI(742s_p#FzcoY0HHIUO53|C$P)+G}CZ$Py32*hfy3 z@&1K5zO|$%S)gs)EgqqU$;gh6 z*M4!JPAvP}{9sdUNQ~D}dNeWPKAcB?%nW46vIl%w_p5RxqrkT<9qOYMtLgE&1NEJZ7Q~Q zY_9H}?TSln((thQdTCFB19f%i&*$C_mYZ$RCxrf|M$WinW`%a;saUmn7TUkG{GVrH z3+u&59%qa3#0w6&c)%&c19CzXRu@~St)wu-1y!w|Yu`LpGQh_U_Za7vr3*?Hc3@r3 zI8W;^vLqwQ9l4D2pRd(R&VQ!n0OP#2#wl$|Bi6}-iTxI=)Xt)grQcZcj)If5vzBS_ zz=D5%!Ae`VjJhU1#6#W>)0%Xm2YYfdjtpq0{mZZGu!4QWg4)`!8?29t`1}0V;z=a6 z$$9tv)&EaCIF*8f)!94jI3kRAwx@R@_P3n4dJ3Nd=XXIHmWVanF9{t_{^6~3v7|T_ zzui(`-fpIN%=d0PYYC^ulJMLSf}m%7PI4m=INcvj%;|Zm-mk>%_rjLz^g22HPVS{o zEf;zK^!Z#zdLQ9{*4wE2UvW~Jc+&<=H_@kiStoqjZH0&Qa`0oVq1j-CZkJNf&6)V}dfLl8vzEN)mN|VE=kl3fpYjZg zn_~2R@;d9%->pN57@7KS=EXXp;ZCtUlr^9_1s6P-lYJk<;js zNxR%p`xxsGn_4Bw)FGMNmN?|mbK3NoaY!9P+_+DnHk0*L=y>)EXVbO!YbW57HL*KA zXKe%S%Qg;Vt$RSFZM2$rb|$g+h_2f6k?f(@@s6`^s9o2N`!pxm!;Y;Gc?VM9_J%op zNSTmcr%?AG1>3Doh(=N5t?N_6)@HA$WyIQJ5_98k&Yh{Bq03pGW8^|{`YSadv*^XC zlO`G$Mj+~33KH*niD}D%F}FXl+WO-~{lR|BfApbz(_Z9l_JlGz4V#RfD-pIX$UR1X zk=FAS`)~F*Ky7XF-M8g$hini|AIUa*qt&ZESfN-$zo(IAQqOtT&^1X#^SAS*Z=)SC zVJds%k&UFX5`WCR6N{U7mnkRm+c7iy#J$q4+?h9O@_e~9mNAEpw*N6U1N!&%c>I|nhX()ZG zBLdRw5owr?RTE2;5T}3lU^>p0Cn^(8S>fmAG)yU}sm$49jmn%GT^hlPx@xmU-M_uq+uC`rf*xu(4`+5_hp z=j|q|wPB@EFlqci*Bdo{Ae?_S~9 z^qaXlStFj*4uWn#Dm?r6iS_I0gZYj8e0LjiH9g=yCk-2(P7u*QoUpigI?8m1iSZBZ zINu=`vvp6=s?3_cI_a43rKw2uwZiOkV zCJ^5nYS3-u1*LT<`L0c?&IhAv3@Yh$$Q~US=Q}G7X$MSk#4^VD%!C;2_h=84G0qKo zkJi@w7WF^Qz?iMeNaPXDl%nKVJn-A8}#uB_+o z4i)F0(?6NDoqu?55w?%I^0xoHY&whW#c@c9q5tW**5cNF&aw~D=eJffF{5J`Ch4Uj z@t&SI`7!|4Qd3c>G;XE%s`KtUb(U%Sbv8oKBGz?HJ87R>ut0bA5)r4ai|Jb&QOAtC$`#8+ z6nz9&5dV+Q2@|)X$cL}S9Q$UR7#SOjJEm##FKe%PI>MU!@%oIvecvm} z{yb^}&*b^vu}M)kCWgebjVCFJ_8e=F!_-^e10|mK*!S1uk45V$-M6J+4bO9{cptvhkXletd;7P+%^4d!3>@}dj^@SQr z3HR%d$CDdye2~&u<)!qjVqafzzv5OL#9)mRUHXdY^PO-+Dwb)YxMq{p-gb zELTqLwLzH&XL6pk#rw(D<-Q zv2QTy6s6*^%Qv-+jvu-p4XP4X)y+arjJT5qtBT9=yT-22_oK(heLwCFJL2G(bTk-q zMEOhoqT|Qu)nxKVQ4=qnLL9XBpN^tSbvtAnV~-OuKpZ&gjMf|IWx4m4Qg2xhn(4-4 z?W%nFZg3(-{;isyv$mHPKiKYoRdNz}8}2IQ1LwI})SZs=Rws_2CwK~T;;x3$)52)9 zV2_bM9@0M!+n1i~H5~jUJuNkvRsZ5YTiVHa??u)d>zp@8oo0}az`i2tg(3}{%w3k1 z|1kF3QcgL4PGDabsii=Q9q1<9IiXpbb1pcb;2u&-b$zF zZK`y~=MdI=mBfdKcH^u!2{ye`@in|PzO?0gG>u>5t_z0>YF?%BYtkM{d$<#4Os+-4 zVe6zz^xB^5K~J(LgCzG`Ua0pY4OiZeROJtI!}vw%*xsj$VtdF5{c2<&WBgX-jEw`d z_tp}t)d!QQ4Pu?dUO+94y%!CyU*y%VOqK$+aAwz@ z^Xtv4rAOb$^Bqc_%wer`g4)mhiErd?do1maWgcRj_v+WgakFH6U&GqZx)u7|Wo^d0 zZ`|O1SizdDS~K<((SZF4_JI6-1@DKX*7P>no&xW_-bh!aVmW(_sq}r#d(6F6?vAyH zh)2#PV&SZZlelNR`9lK2AEn~P4Odt`i$P&SdQWFc`1+R`ca!NY`=TlCaSx&`cUOmg zIx5ZH?~T5!+5XPgk@lZ=N4K--ShwSyTw&*eVzUg`jy|ZI%6G!Ir5V&@X)UZKI^ofv z3=|Hx7F*jocWklupgfUr@Q9#wu?qTa(91Kn=d7tibpnU*?IB% zq`$4mf753_?0sA6K>dL8%+K@BRl_mPN9@^??D*LNDOQ{nuV$v84OqqTi)->r=_8(buM1^jKkXOG|aUO!}iG$*sUIOxXS&5yz&$@T9AkI8^o8GJ05$jL!$%q+hng%X0{#kYYa>#bmP?ascByaz(caO)A+38q&=OA8_?=8Ph$LM}5aG)|6AyNh$iQ)C#=8IQ5Gtj(SXXy9y zM6GF=$S}y4qPx4Iye2uCb2O@DT4xyF$b#O+5y~v#iZ?mj@%wO4DR}RRvxeC)mYa)D z7yYP@o`Ekmoy2UXaCD(AifKec^)2=e=lfU98>Q#J6o3BhfQnqs1oNA#^>Uq{bmu$; z&9~@4OJ0z04s0ya1U^{orPj37ZA3SjIeH{x}oClXP+I zx(g01&%&`nd#USbCyWWt#<}bVs?en_$O)f?^txB&jFFyjDw%~D=k_R3WBlM~mj#dP8h+@3+wVq-FJo; zj`L^el$kAcDU89jldP+o%hF;GY8kS}oAUFWWV6p^2Y2o! zl_q?}A#$Ea>185$)I;2h2*H!YOdQ@(1fL_m=s>PdImLtbcos^(8lY!WX9Vua z!cp^e(l_$x+=pc&rR9*~57G9RpO;NO>2YNd9O*-ng%Qil#F)#jxOyiYwNoUqWKR+c;uvJh{m4+o<1ZoseIHJ)riTdT62-dfZRM!Gc_A z)72Q=(>g()8c^p85lFC zj^Pq&ymXwGiEACI89t%T!{bI-_%`l79*y_K3+pUAi`$7o_U`aZ%|iH_0IVP9h|fE- z(7X2|shl|f6n@-H<1WvPvqI#UEZm-=BL+RQ###D8ettAV6z_4u!iDKrnL1i@@CiV5 zC+?lq7%yA;M&mj4gZ}?{ewW-rHt6jLi*V|fc59*5ma(qm8GaV}PVKeF3tngVao5>W zah+J)+nt0cw^C_>(BR@P@(mIyq#ZS=Y1f+kx7KYC+=du7dlnu0k+7&p!fSt?+XnV9 zwkAK6ec<}> zw*?~V*&t_HHip`7mlo}@M76t&^Rl{1%W^A}zR5&2siyFr;E2vGS$lLCAnKEcQ;#+6 z>(SHXtOh|CzNad_@nd5*T3S1z8vBuexO(aV-^tA@XC6;|p+5Y?3$ykoVt{s*)Xp## zx5)7eIHZ-f6EDf-JCgV8t8{!I=hw~1@qW_^&ZDV`J|Y?KgGL~zHnEGDoR1K5eZuqH zmpEO#aUve&kf*^JYsH&|c+FbxE_?5`O*V6G!G4|fM6G2CJVJTqN2X$r#SKKY;or^K zN3rgExD4g}OrPVKJ!=}K9j8YdbMn+DjSQPEC&z%f!hBY1Lop+U+O3)BlF{BU=4LoL zm}J4TeOtr!6N3=*GYhNA8yT)U;f?o>%n1*F(|64ky|c5iuk13qoVLg9ec8~Pznb~S z3JVTrBWQ#%`lVW+p;0!R?e^1N-4g5Fve0SfM>&3xJ$8)BU|!Y}{*k_DSxN5NwHQ}sN{<-=s-!Q}V4Ct+afCzZaQGg@3`-#ENXy{pAcY~Z=+T|Zsg85PU?!C7ti z5$Pp&pw6+zL(p5vo*J$W4TYDWKfa!v58wh+@l`&7hSL0L2S&%#p8Dn_{b8A8S`_A zyO25D9Dhu+vFs}`$R-x(@1BLxJzhzRWLumjFL_&NC(+{(YvBITxchf?ao?W~@S!%% z|IZtZBB#m&yE-Dzo*H7yN>mGmIm1<(2ye|9b@IuXI6s^IR<$Fgd(>4}PW;!P@pdUh zPQ>23^q-Z>B!?m7=JQUx@~IA9u#PC{%RBE?4;aqle1!L3BaexA&pWNjB6>-ud7~-& zj85zcJB-RijT&iKH-z_Jp91``PDAHaoSSUl1!W=e%Z}upo;ZoE`?$+ayw^MB0cIRc z!~IlhVqEwE=T&L=%JZz}RM&8j9&xz13^*&z49^jFTHwd~?oeC9xF1QF)jJELdbBr8 zbdEzPbr#O`ZEd*TKO7+rS$O%fso|xd0Ccy{f_p^+!^#KTl?ckhsR6YO9ZX$OoqIUL zHvJ^_{Cis!s~q+rjOu` z(Fz0N4j%zOd>{l}J z*6=m<*YHK#S*)3pU*K*RKlGo(S^56$ST{NhtJYA*-f@L$!U12@oLiN@(S2;3yokIq zjWhec(~XNq*g7GC`j%53>!@`vd7&m_dV2ji^}IK+DA6S0d15nZCF}96#l%3YA@$qO z{`x6*wJrroLBxvIF<;#5xrXLrETo(Zu@cW(DIzrg}kb!Te*L|#o;}-QKt>u2*%J;A8Hlu!G<2WA-Mxtu;Qu)d%Ri>#=UE5X zc1%Ygd+INJB5`|MI%0~`q2DzN=ZRaayGb1q*M*QTa31w86Hj_B$M`yFc<_w%!~Rvs z-I9Vs%+JH~SD-F+C_4_!MvPMdj`?zz_F@(;=B>cn=k$LWm4z_xEvPktJb~~`R30lu z4bvd(;BM-g;0Mrm48%opY`R@Kg8KA2d9*nW=jWHJ-dodaj$FzApEsKInkT<*V}lHH z`dRG$uejp49c#=)40gyr(ka;uJM0pXdAO0wHtsZ%JR`Ql9g&W>Us5?y~bDeW~+qt+I&qlxdNOYv#&-kVOYxDMhhh;tNWpd`H>mfTK7)c#C(q&CLI z|M)zuvf%Nu1!KV(rc)ODgS(=8Fn0&)unyTX7XQ&JZ7=bSTAdP5c`yX3l^OWuz6E|w z1CaPD4HqLXpvz=`Vgj6R&e(vnf4LVkJ_4&By;N;~OuYqXw<>WSG<205-p-u9F~phY zwwF(?u|#ne^YgEh#m&jWfjhWKMm{PIZ(KqhfgPFehH=pzKVEMMZcbHbe|pnvL{&%2UdZpTuJeshPI-vNDzL=;mJ35Ayp@X}XpAuf(XA?kG~K zZK5yma^4eirgC>c6oSX6qM~PkoKlS53SW?^md@89|No^L2^Awr44 zxU>Iq?9f9D-^pBcnYk!zuyBncKZvzre&k5;cm{V9h(lGMXdogRYhb1&H|cl}F==fK z{<8NptyV)kpswAL9P%FX^OR@*1*1GV1p}kXRZ>@fI0dKRtkpe9XRJ4ThovAelYTxw zz3`oPed3;l`2ENS7fWK$e?=C$7t$A~=}g>f^ISEZyn0;++bVH(*t$X%QtWPbBj}MdN)uy(1%6@NX!EHdj|aHSTa7yY}V zLX@ETk<0^$xOsA(GI9=e##GebPS~Oxs}_TpHOV*Wj38Z|H7S*mAiA|aE&^; zySr5v{(IxmoOoZoEzLxqeHt8NuheKtPtj);bN)DLhkhL;bojY{$&V_CH5PR{CZU8F zht+O3@y3iglXJQ6lN2m67ScE13i*)tBg8wII>8^fEA-x9G|i8NQpP+IZ!VI;BC&>b zX44bBgjqfA(MNG!Y5boO8p_@~mU{|A7s$1Ld&57Qydd8Vk_G#YOb_A-3kKmqnkV`$ zNkrjMYNmJe!JB2|=+lF1*=~CC&Gp3on|D5D0$NtW%h(v>=?~+UZbJ#rEbGK3*H4S zyNC(f;-OBWXI83#I85&JGoI}qV~j)tp63+ih^$^-BA5Tp^lWMihb4&EZ}fv=4qtpB zTPTI(K9PGic<)?sgBsh5*nf^KoGXrSUblJ-_f|?W#0>I$YM-MHLxrD6s2c`5o~y%; zRl-&Ygb{O8M$9)Qdx|d>@qO^S(OFT3d(mr=&opgweM$Er%4Oa3mFLnoWk*Xy5VRFpj1+#HYj zylyCk@{@kH_}V-Xy+XSxNh7Jpt6}cl=%MU(r#?3C$~%>Fln%YaalnbY5bde0eTClB z5_OFAFDc{b*Jjr@5j~_Yiuo0K+jUFCf&qHMVsI=D^`Xa2X*Y2(gkHKl=fm%g7T*fu zvDbsoD8WLUCP&`8fO@%!fnpzV*V-?6w+5z*Jyy)|%(<^RFA!(RcS_zzZ?#?pVp~cA zb~7gLvQ~-&6?<^@t@kG{6Af2H18>QT!fdgxA`ElevcF1?5fdK<;nA@KaN|{YZ=%iy zbK~eb4aKSSnV6oK2-|B}%H!%DXwo7HBQNNxNA`0=g2FSLxk4K4?5{ z@#%ILbe@feYqNho-fpn*KB$^w5D%Rd#6n`@1FUQU>MZ`36;N%4P&UAB> ztw=}MZ;Y&c;KCgsHEj$ai0j3`B0yn{!M${;fQslyMjPp9) zYuY371|9Bs_2kc6bG%ZQ`<_dZnYXvkQo=YZxXqsG>f>$7o_ApwPK+Zg@v`!hTJEoy zD|)5;RIIv0;XdQ}G^&}1SRIXK%s&G?`w4xWSVYxhPG~ey?3fsbg)QhU73L~}$yG>a zZaF_MK@3XKpgEu2-?no_R2V(qma)#Ow?ZT=PJo6nf3tOiSYfZh0AeqiK3hb!ee{B8 zP2Kp@>qHChNCfww|LOJu@v9;CfJSPNlQ&N+{Sts_cR4>cNEQ2f`rW%5?`e1^-cpKQIAY8>4LT*ZRCG4k<5IhL^nN=;x^decDL(Z1%WR0b zublDsL;$YN?+7I^5Z@Y*6S*r=rLvBL*^H`j4x61We>5`10^TL3kSd=vFvr`ij8)$f zx$LzKI_dL13NltMKlZ~()&?ExEL0jc2_?@q5!y)ym8{G3jU~>m)Vi-6rcSjkKY!cC znqqaWD0FMe`@UX#VV52aa~7_ErRJaae{;bY({x(3=^NL42V>MC9 z5cyH`#o!(4&~1rW%KeB`p3gc~YeiHc>up=+fv%gy_7!oM`-$EPs!hWBX%v=ppr6Q- z)neK7Fx23_V%&y&QQbHQtvvXiIL#LxbNt{kJRZ8LO!3dlX10djOf7@OQ{j$!?6p4q z9WT~8QJ27-I|&|oqQ??@Y7%R3+pxO>xy37w}oCO`r{5gD7`6lLdbvq z$a?lxN}Cpl#T%T_+iajpejbZA-^{C==L1{fX*0*~>gx`=os1 znhjJVdB>f%R-T{o!}yFu9PX2^xPJ}7GsfKgs;rFMABM)PlRM}=S2j`OdLwhP@%y@B z_DlMR)la0pc2{xMkDP?>>_fV#L?-721@98z^3z5nc8tSiasv7kMvBJdt3Tnh7&$vf z>>80R!tuB(y)~yU z7w>a}5yQ_LQko|wSNLPb74E-vTqstD_~2+6HMrKy7P+rI>G>6pPnF4{XR0eSCGnVc z&P9Cx?tt8{@p$uPs5scs7E#{uxNl#f1a!8>)^@Sz+QLO?Gt34DhD2a}BONL1t|N{b z_@mC=CDNvDfmj;nOkVPTV{XQCU*>AnI8SdLC^wv7iq&>Wi1kXA_tICZ_EGW$qfW~s zg$=fkrRU=mN2TjFKlEU|r>DO{IdD4!OBm;!dygslOT#ePlwJvE-zX2q(z}Xz##_}; z?7kR@7d7b<^q`0MWF8G8#@5H$P|OkZRxM|oH#&-M+zU`W6~;9-oN`#c|}BFB1Nb-LbGM-=D3yVnKUn9LS<) z)8QmhEzJ({LVCI_au!XlvtB5Q!xX*2!m@)U4p_#Z=d-s;WtkPSvcgf+y`EBA-x0&h z{qTPCZS_5Bo@d57Q`fZTn5m6oG5S{3IQR2*lCvdKyd_?zSjEd8&CGGLgzxyO)AF<} zHW|(sN=#K!|%Pasz(Gyv97S*t|vzB zk3>uMx7+-Ci5K+V-Tjo_ZNJBgIy+);`#NV`Go3|XjW{g*kG>uoG(sW=^75?&3^1H6 z^f!=4d?o=u&n*$nc~>ft^hWuSFZ%HBc~(jvy_hA!XiFGuImh4RyGZC11tIBq9L|+2 z5~ITW(I|l08z1sS`&8~ly2fGAiUP5{GiO5^sgtX_T+AtU#h%~P&sFD(6(<}JHYpwl z^%n|V&QMAQvF`E75~Ex!$R3G9`GX)~z*_g}f6<6uDv9TcB@#P^EZ#LQeyo>Q54ORr ziL6ttM=GDwe38N$;FedKk~TLO73@ux(wqJp@0weT?Vk~+l;-ha81Rg~^LO4V`sc%O zbz1@=?$j6STSsD7G`0UiyNWcEC`_6{&+cQRg-&oZ>aiBhyAozh2h#U~37RdD;@OqK6B{Y>VYgqCkvuwZ{PF-kcXJ zgy|J4Xj;VK+mPiV-o_j~rp3ab)gsY4-3;sXqH+IXvTz$>39GHFzgrCxQ#20f#(bK! zV7_9sK7jL4XUuuxrkb}c2It09jdQJS_2td=O!0p}0lscA~Voe=Em%stgjs}(afJ&~Ccbk`_KX<9hk zS$ka?`%p2b7i9b31njh|E~b2pM1OK?p8RYf5^6=GQR4*eLG=@b^{J`wihD%vhN5yI zd)XrTJgzns57$Q{j{agb{@99x^&+useLO0hZNx_UCS&M~jh(giz zj1>->$00Lni%6J8Y;9F6HaKq)EyBz&Jv15yt}DgZj+W5v63%_da5350fqkSu+Kqjt z?Bm|t8Fv@>*-cg7IS_*v##Q6&+wDwoi#n$0O8hy^?o09Ji)Pr&IIkEqO^$D2gLuZd z)2gTP7ReV4qN%e~r<*cNO}?vpBC-;vDQ&idU_NW?8a1Mn9@WEG7qQ;GvQU8(PVY7L z568AEy(1%VoptHQx2Kiyd67tLgcBK##FC#g2k#d?Y8**rA2kI6MYm zecQ25H?fCj{^Sh$@OtzUqIx7|G0v0w^%p1OD1E*irv4vPGD7C4X-j&rT@#N8GSn0L}2m)Erw zxo!RNa<>cK&flqSOw41ZLDe|-&WbPIRm&76jPsP8n~T?-F{9oOc}0~?uS>4NKO0T#OtYe=w$!@69^lT_DFvm80K#k2`VHmfJ zXLwb-@~C$NDxKM@dM#9%BNAhKCt&)e&B|mc3LC#_&~8$RQaT_S-ykQOT>P-m7>|pNQR9jS=A3%Nq`=8RrqER(p zbnY9Am*cyO4;Q_Vq05ioj}y1&xYPe678jEJ#Evv_5pPhZxY`_H{=p8beBw~-x>1bK zSfS2=IQWOiqWG5?3J1qw@TYTPO;a;mZx@3)C(enywH7$|oZKV&G#%S$kB0-PDgVY$ z+$-|M!EzS_R9;n2x)6gdZ>rvd^X^_R3gTW|4CDMEVN!AVaWhU443r0z-GCTE@~p$WmMz>Wn4#8S{ut5xm(Bh6!;9*}p+l zjN-lz{q>#&mWp0S&9FF-c%tJiVRqaU)jVTxMBEd*cuqGMM4-X$6T+&wJ(B6AG0e_e z#DDk3mrpJ**|kqC4Ufhv->Px;?p!h2M8_0s80VeA3yZw8W_ZCk+buUP4)|b=+Y{L9 zt*a+LB?fpfoIG+D$lopnL2*pPo;+`PQ`Zp8U{7b6mLr?GhT=Ethg(}WOMeZjr&udFo5b>-$i9kpU2aTbBs}oG5W=3sAQZIF8LPuJ+;OT#yPPt zzIY{P1*Kt(?S>7-OLhf8P27H0rczw-BNz{wk{>CR6=&__f>i-B-@p+qirLjZk>M_Tk12U4BTg#yuo z{INFMT+sa75qU!AU|1@A2mT+9)I4&oDyq^1?-}RKe`~0u!)9pC`q}4o(3lo?t&z<* zxB9l`=jV21#D<5uE1Q;jq7S`F2j&Z9&qy~sobgXzsg;QC=7hH|W8po-RSe3qMFh|7 zju8c-0sE0_ov6>koRG4RzIE&$Q(a#QKNtF}edmsAaiz$gW`<@(5%7BTMZ9Faz49r& zY3FSdQJFoe4BoqE+86MD`cM|MzG z)F@Q`b=e#0hOzKH-c=bl))O^e#NhRZRZ7AgSICojhG*)E)mlgNdKHUr#q@@2XNx6; zacGdRNZ4+)z@=XCusov`S#3)#;}R#xc%W3o=#udzhCP=e&Uv zRY9k%Va_-^IU1|pCHWvQgjk1It_rscf`%B~pZix-ZP>H?M=b7rFJ1M~?ID;)K9(i0iZ^+fu{iVRyPW;R1NZO8;H_o0vN6ULx?^Lp{@Q0{kG&(BGjDV>9xI0K zu)zz)Ik#)B$m?%`I(_0{8+uq|Qv0ac2WpGxKNLAe#?Z8i#iJ>|M4vMHr=N*Hubsce z>`Ru=(%;BEQW3_V9B}U#@r{Yqh3yMhT)ApgCC(0KTB_Gpm>`I84qsoOYP!=5{*1HV zQwvomtu-bv&IW(gDl>l{@;^DBGRsjp8Zyq-oUQCVs@f0~41MB7H%GizZJ;-MAL8d0 zZJVp>a^_MP%lUfl5OrZ-7!rq3kM)4LddK*1eEGn$Iw(SYy?O)!chT?oK#n?nJN?$f zG$_w4P@fzciDsjSRR*tDXX!;^;)i&YWvo`qoRJOm;~wn9RP_%X^5vH?J~KY67SmU2 zML{gq7Hf;mdwSESF$OnYJ(68gJP>h>c*^`(Wk6$cXh+7P^_mAtI(hYOkI8pzJ47@a zX@fNOJ6UDPqJZA?ABcOrs-zcZ3lkW=h{K`FS47|AM(DwQ=jg|GLU)7-{`r(wfB0Es zJ>_#L2!P$pBf`Pn9_lD(^l4F{tW0vkj4oB<{9sjo_1N$HTE+y*fxpFN=ZS}z<6Uu%G4S5$3}g(GJ(@rnj-RlnWoLGP!* zh7mgI)8!G!9;m^Wz17uqk3`_%6Jo#h9;(dflWyP~kH#Uvs^9B_F@|-*js%Nh^DBOk z=ETB!qrY569m~26)=lSkasQ-L5!BxgtM6Ofq*ldO(#(7!x z=P|RmGyd;9Un;6zTr|lCuY=eR#yJ*eH4DOfV$Ki#W)ycG5sVew8;l;grZ{F?2!<;O zxNj&Ix8p3JZbSkaJ-JtWn0Mms{t2ibp(D4r5r*<-%oST&%11K7kyXe(<*>dS)RDQG z*ze6^BiVIv1nhgzCp|k<{@@mY)_3AjfBS6NU{e@oP+QVGe!ZMKEEu;n)B*W3aVuHt+56{R%O)>&?W_ z{?=&49&kj*sbcReGYlrabdr73cGE*W${ z=;oSZ0eva9golVvtUabVIU#QH2x;w5JIu+MUM0?x5=_vbHDF!JID3uPm+M!fUl`;3$I3~5(=ix@y6gw_vgL~I^oTDe zKHOlv99}0B7eg8Ix5wlWPeXC8PXgR)Je5yw2*cw?8vL=SrL;5V40k2>JO{Q_=HCy8 zp(A~0YzHez(|Mjd5IZ_PMQK@&8m*T&*K~AH>W>biA9_6A51py>-$7kgzc}bQ1Sn0; z`XbLS7G0htDEAM0VFddzyKD0mwv$E1xIYW9#Wy3}0MB zq()ewMJzGFSDnR1VT#au)Gy076uxbZxDOMDx{{Ny`aT^sC&ge>X^?Q9V}vma!?A3x zi`dWeKkTm`+O=Mw?0sm18_CSzYdb&L`KA}*Unju1T7f)N*Bd&lllN~qCT|+< zgG=nG57hr4XZdq>d_jZLX-yPmw;w$OG|)^Ps7xdF9>TM_^`5bE&Lj|fc~iFQr^}W62EmBd(#JfzQ29aZQO&%%FMqu=tEe zYaa}2LX6COpOU$lzRc0l=BYk}f2Jf%4#G6n11~SUQ=U(xk0HJJ|k_d0$sUPK&eNrjRV?Sot8G5CE`M?8q|#ufJ%L^Z7;Hh=KKxrfo{RPt469pQn) zQ`p;YzMv>QT=BFp3Tq4&D@_kL;%&1iXd5?H`p&mQL~tb1oJXr4W!Rwos0j4glPe{2 zpJIAD`q$2Cf78EL_3;nTZ zqXx1pD=W9t+c%DTFT=`|vE&ZhSQFD2_D30gJqTaNXb_&zNZd0ChItbWemb=m738xu z5b>C0(N&ms3B*&z-}z&Av59-!f8&WuhxZj%`}!e`_1iShVPePwUwkB2e#f6NV(?sF zaus4QT^S{Y9``|~y40fWIN<-d`s%2vw(f1QyIa9lY%#CO*$*bDC`c&M-Q9gSv?yU< zg5BLp?X?dkc8h`C-5uX^@9&@2?~d_~cMpfcIdiWy*IaWxA^Ol?KKKT?aBbR%81B=W zF%f8V>5(kCd9n`~hFa!!@=W59R1HJnoZ4O*Nl)|Jtg-A9PD$$H%wyF9q0_UK)Tc^~ zpsj!77*C}fRQYT-#+Ybwd^$ByHCi?0X` zds3#5S7`5(2&dhx!n$uqh-@9Z0`L`@%m zY}ar;)yGb}j3c&FHx5pAo?_c1KdiVKi%t9sKXT`$JW+Y8i}iCshqc>-wtsvnJt2Z8hxgnT&q?+!WDE$SIjQr|gkCIWK&k zy}qVwEZnIrM$AlfAGuqZ2TZxrYIlCf7vs+d zpkO&Y045{|OKOwOcjx@_Y8x?I<%>tW`=4&sfwhni?xk^0Ib=#M^MkR)F&gT1`=#7M za(7z%jWd7Uw@g(z$r#^=TaH~=SM_PyBwW;`mxpD}s9tAGsXxf)X1=1% z{-wimmYol4O!h$9K9CKk`Qjwwzhql=@elP2$Fh(5B%+l_p?~GC6!Ls@`-mW}ZQH~I zEUz*WCk6#VBva$#(=1`qI|wKE_kE)yL{yhxMC>FUv{k0q&3V=n-u=IFZuoWwXAl<> zFzfCzajZcw4zRXwb*WI;6LY(ey~IXIYs9I7KzIbwzp(ix@%cm`wt6IBXRnRoJn^5y z*ChbjT(Q$U053Sle|vd|`0~sbhq&L9cRVh;Q0W6R;=D(v&5OZ7bW~)gB$Ih`X}y zA`jDWE`OcagGE#2{;uS5ZsM%)e!Seu%oE>Z6QT2Du{@txR)yHnc|LpPuFbvit3T(A zBQD4@tNS3V34P}mzLT##^MM8N28AB=#gq&5OMOgC_hMa9Ozo_;%s*Y{4i?pS`cs#P znAPY>LRl4nk@pkexx`g$&!eu$rv!W+mMF$&1|g0;!;C&TVh240rxN>7yNKGb^+Es- z;yt!*5l4H6ARsdl{?!hNJtu=#UCETZhgKtO5EH*uEY}R6#1D_pUoEoiBr8Y#YdVP5saCcoGE{QB$))O z@uk<_yyMH0wW_>D##l>?_nglx%v;3+22^ zR&@R;OUxl_*i$_=zr7g5^XQ5hzvI}^q8js_&D2B~8##;rFq5p$`#(w*!`SnT@Z@*z zTp$8l1;8SWbxyMbVm3XgrM;{@hIdx!LR#P6hhv4KPHT@%Bi;JIw(Poz#t%lza3AcjK{e&7lYb#>3XCUVH zq{hg}MdEdP&P;Za_n1FY)H&e;LuU<+{t1?cKO~oJJ+;Wj4wue51S6n}8kPs2OH0UI z+cTYgod5p&KYZPv)rVEBcN$|8f0vPKh!Q7e(8rRvwM-|aWqWHltfA(~wHeAQa|&{z^2J_x(;@)J$nEr3Pg0&Y2_&C~nvab~DEVz! zhqw^)@7+T=(>fSm?TC@~X|2327|(-xm`L+>B-J$YVVyEfMy`EQxWmVQ=h&F~=C ziJHbutCT@~sl&bA(_0bUyHq!ig16_SwpYVK~~Ba{{Zw_N}cl!e;|Di#fnLfsO5`tpJd>%V&}pnv z)SjMzd@pT$`YNHEC1q@;?nj$8%4yCfg0@i;@?K3PDlG_l$EjN}m`YB>J=SVK?Ufs) zVitX866TSc_nv;N);=h3BiAc@mKayz1>Lda-F4|LbPxMr#_SaIwaAp4Ef0qOGHP!g z8Db=Ti9l|zzxmy9;pbF?D~+ic%(KI4lVbJE4x$6|%<2VNop0of-(ybLFhi^7@UMS|d?7Kcwnb+AH z&(+j4uIs4OQ#jA{qMlN{;Y#CRA55^IMs!(gr6;v4UVz#qCw__*9sF>ZIrHh|!;tQmzO(kldc z!j7z2-POnmN#VHiY{QP_GmWgi9*wHD8HW3#zQqST*jzApWy-Lm9k)YvS1PaWM`{}^@d z!2Z}=`W5}pIY<}}Hc*Rc8_%X(p2Z~xT~SURv7P%$VKkF-@}Jb9+H5VBC;zJ(&Cfin zrMOibgd5+;BN$RCzhoV|ojL;9$9BsPsV%mcdJuN^HpvOZEcGUTb9Xmtu+Ve)5C7b< z+7)?*2j}B&$)W4~TmD%m1gn1WOx)j63_KJ9d;Z?t%lnGM#O%qDOEm^#${} zJ$35RPl^y~Ik&J$!Jg;EVk_}54l43+XX!RuEo=I5(x#|DZ=iaQ}PY$k; ziYMgGAALMqo-jNa)0$J0>VA>j{R=slZFnBNcp_im|JyJ=WsBhIVyT(vNW4tq1ZqbYd5OO4mG0#_H?mCTebU>c?Xj&&`TC`^Ay`I2_$XzlOf$BA`_q{xFBgWoLwg zDLtl{a|ZXgCOX%ru3%jaJR4Stn#7)2TWDady(8{}e1r=c^xA)0=rhhi8@g8zxmMX zPhYLw9%B5EY*-AXr;MwgxUhXTnj2E*{B5Wh)FK1^gcIZcghI(JPNU z_!)dhMVaC>J-*vBhE>;cL^m7yLi+t%59EvOY4kUaB45w9KsfEB<~QRRb91dYwUBdQ zo@1}VwAfE_nX`mQ&*5X_JUeMRrf{zgF&F74(iOmC){KG z5Kg_RlP#`_CT+a2bs06;O1FxW?-8rEY>k*28w+#R=Z;f03KwGOr(IE_+-jQ$8_fAOpQAi>i-seJjeMxa zrMLsa>1gDCUfAaLrQ+R=a0HH{zf{~2aq)Es9QIOwVdEJwv^V>)zT_JkT@^zbGCwef zBqv@K31>Z#W=M|hv?9@QoCm71Q!v=5pBU@JUM02l25vk8GY>!Ho&G-z#=p7t-~Z`e z(pOB5<>3pzW67pS#oKZR-mrd-yJe(&s<#Fj#$--~p7Q7UV*FwJEh6eD1B3H0moaR8 z@s((jPM=Ladxl*R`t>u>k8u_a4vPU%j5D7-p6?S&(^D{%&riQ>7A3d{qUA0%R`TcHew8oI=#odv_p)v5eBpI9o^w@lfA;5!@GJB{=jUA3gPgUx zad^r+e9t$nX8<-%r-#C)a`E;@Mg8 zDbf=G^;582tq7^o9knN=;76sK=r+X*_@My`9r5mtA7-*=^1ti()tmsO-ibVndZWhj zvzry`+B=ZJ^>cEyMtN4Y8j1XD@uBAQ)?AEjjCr-}{z|QX@=(q=B)hg$R#{M+kMVJj z)KSh;ccB(zSS$aL*h9_8?p*UDOwWofjw%1WQhR}E3nx7|Ou)7%ciZd&I&ULSx#U1KN9^t<|($iJEqdwI|)~^0{{KUKI z;Yc3EI&h#ye9jEP%lXtzUA|DXJHWX^KWcB5?GPDJK3MsO9syNHh4XJ>BM&EI#`t66 z%vg79eM_&3>2pM&z86NP(l^A_UwY)~kG3D<{)%&_ZcCN+T+ag-+r6zSmDi=)v73AI z=+ZTcVc2S%<=TF7Hc5FDw)nrb?bq8<$*-1&&;0yWJ_d??r#aZgHQDb>8^wQX2Ieug zHxJcNvO7~Nj&WGn{fT%yoIcF_js`1Fiv~p+yyw}vE9QVu<}kZ@Ftq!uU#@gdyahk{^rekPb{+zC1B7ppcKYTVVaS)00K%ZKV&o?KFT0LX&jDPM~ zFiNcA-1`%sErR-s@rS6n$LGOayNmh@qEN}4+0(jP`(nJkQE+OP7hVmz>cY)4(#PRCJl_ffEtjlkum-ShX8IlQaG& zZH=h@+Y@d&)Sm5CE>9r0%gg2ObMR48iBfVj4;z^ud$+2g-4ebXM$BU?XB<{q_gRg( zjC1>*OO=aGJ;`_)J5`AR`5KI?P4AVpiU{Vpm&!QA*WDySs;g1G0pqY`zKBUBcd8NV zaIIQwGml3ru00)VN3q?7+H|aK%BC8Lg7w5?F;<%1Jw#!BYOwI^J{jCdoU)I>c-A_Z zIUnTN{?V}Fb6m+)S-(dV8nvSqmP>`KAqIO*7y65IxFR;G}PZ;MO z(+oww1O7Pwoj>0rLwxV$ji3!0^sU+}PMN#op^CZ{C(jFqxx5#%zmXSpP&i%jgiQw5 zi4q~)GXn7T^xr<|33sX#UB>x4bDCMr_S)Ef+gY=-Hop8o@w&STgBa&KqjxL6e=R~w z#?~z|N2xnM7tZ=9SbMq6<9#Tb^a3>RVS!P~T@ zMnvRfam+9d5goZNdUqG+)9H`Xndeuqj;MP#2BqDoksfeNKHe;b>w>j$@IraPwIHXd3YpB_F6w`AMPfHOWQ0f#1Qr4J#?ocdo7K@5`M?y3&Q^M6#G7yKGu%aWQVCyXv62z9xcl@ zzMz&J`+o6Oiwr*y6EbQvJ>yQ*9KDV@^BXPs9xwkcn|M1AOXgDFX5U$PM-2I8>Hdi|~D4tC z^SFj>Bk~j*i!6G|ur6&8pzL^+4io0s0e{9RheJ~l#hl=n(N)P?%-&%`YIGOYR&sl5 z@PO;KWoeao#C-X)6=S=6pJ+h5-X+Gi!Y5CpzNYtXSLTpG&Z7HyVmErT4qx9xcz%q< zRmO8&t^4wU?y)EsLH*1VX>zSzF-TaO;2)DET=?aa&627TN`yYbITc<>zsJo}=wnX(A`m@BMrA65=M%Rzsx z;ghEel_0$=?Bp7Lyd_D=D@#WS*Kk%pOGU?+_ff`iWnO;;LCNUMI?BqRv0_Xe%YU_Y zBYr#<4OrVQXwO`_{}6Q^sD09fKELmBg>6|pTp8Q*-)D$M)Iv6;0& z#r}h`$DtT}G@^gp`rh(_$Y?ZR4SeWCamn3}k?>)kMkxqQhVdNivs3j><%gK*)X{2?E@xVKqTvc^4IMEO55rt= zvLiLVXKfNce>mXRLJi*d+!qybj%XaI!87$E@sYVDqCUOOJ3{eV7zFdafA{OYZyTbu zDbB;;JFIE9glp^6*@nmG)WA9et+IC|y0PAy5?x2TqwylXANGoSUQy2N%E4jAxyR!z z%1wHnu4f)L&CgQwvePk;Yk2i97v)>~R4m~du50m+QqP#a;>-_&7qn7t-KG92^KDVB zw<35Ue<$yo%}((gC%10T6pn` zWZgzF&@oOzucwF0UWP^?Ydmwi*&5Zp&k?+8_Rfj4BXlXp`za{bqC_%VjM)kdR*b+i)}7bjs} z=2}r>r9C<0)Ve=;U0C*X#IZi~4>)p1)F&UmX=)06wpzGtcKlkQg zWEIy|Mw<3q$yPX=;!J1E80{R-mC(N84C{Jx_CNFgi}Sv|kCpyWIsct^gR}>g4*O?g z6>~*_$wFnJeL8kA59@~oE4`>iw52h%0#A=s)=-P?B)^x%k&a4CDf1um!-3mhS;umQ z)1C3Tr-%#W8XoS?y+1Ekq}%fB<9;tGHW9|eefME(w>$ijbBd@5$=Di=)yS&G(U`~Q z!);OaV@f0nxwfZeH<#+u=Ru$OWI+4HQdFNXH1ENm`Q*5i$DWlA*TDAd6O!(q09X~N zQD<$oG^?#I3>$$%6d<>S5{CXC+LPgRfizkq$?cd+OQPz%_94NTIT> zZ#sstHXD_lsI;RV+7;&Edex>XuQ=y9!TQSdST|+EVrp=54L?3wO-XIe8l3rIUNv%R zLK850C}Z0%Pqc3u4>Rul_#8(Y#nD0em40}o^Ig9TxBtvQbh#JV-|JK>=G0IEpx+@Q7uTdvZUamc?zZGA! zygRpa)_y;;0&7@T|1{{W&6}BzmCPH*_temenmNei=Px;MUdf-ryitd`i*+_Coqwd^ z5Oal5w{&Ip!W1-U!5s2zhH~@_y%w2=ix&4$L@2dgyD^5fYAN$CBqDbJXI0}W*pH&# z74ySG{rO^Mb{tkR-!3vR5#Kixcg#3vJozR!ByKL3>vq;^FL`NB1X8(f5BJR+d9x%8 z9eeWqRU0K;-5-K&++SB-&X?*Fn|F8t@7jEGa?NM$50Wnq2uByL+dnfndoiE}n#U*bz= zVPD+=U!6H0Z#-U1f5twZ8GW7o3zd3%Ly+9;Z~TV+&@}CS_C*ajw_3A&xAykVEpR%h z{#Oq|JJomv%ve_!-j%do&ldg{=gGTTXvY*}LsgS`VD3{T<{5PjnUifQ4k_iU(%{az z!esOUr2%I<{g^AJ9Pv@SQs~#(nP*w{2qlx}+jG{t3#g zSL`ptfk(*$9-)TQ06mp%TQ3B}C8FKS0iy$TU7;MH?m@}8vVCq2a5N+@DdTFH^FbS^ zkbs1B`m)DBE6C*Kb#34(Cpem8%0+UkFU^m+%(HoRb^m(l0JpO;{=S?RTXs?gTLL0_eXVnqy@QgL|K_b_C zeztaU{d}aemd@^Et^H?MHnd#N_WgTk(;ucGfpH$#ue#P*pB_Gpb8@Y7%7mS9c*i)O zX}(^0dp8pI80YgtQj{fA!;ssBy+K_wrQ?e*eCo#>e!q*7@G=}nSkrbg`7V+}BJhpp z-SHMe{4+WN9mjKK`ZQO(pvK`+)@F`RrV4{F>I5+6i>>R4cauW#jrk{J&pLU^JmNH1 zLq3cfCYLM=!0r;BYYT6ceH_gB-6%BUrkC&nm@3>tTWWt^2|}?|Cx$et9VDd+DWQ*Vlv9OA3dGSr47F(;WYRDkoD_T zyXH)R9x()!pE`+#?q-HI$=8<+Qrf3RU^8R*z_+3DX>cSp zIjJG(ep|HY9f>=W_#U_H6ickA-NKkxZO#zdlyJ0BQQ!akWYK{5h?|W0f{6qRyZls&SpI@S+L(t2@#q--pu>#5g=^`&_Eia|-J6?yzo}F7^`VIejMUvFRN# zE_O1$tc{1Hg`tspD*C*R;B5Gg_}SDPGade3&-bcr)z;n^jrxr9#}-et2OBIv*Db6u zj;zyuYd|mMz0@Mx9ja}5B^n1ZKwxobgo|}R~)1!ay+#HJ|xOD7P#O~U(N^yl$O1m zW(TisoIzMWR{4#vrVl;!nR}N=A+i}1*0kDvU5PiD0u9fjy1yJ?D^J2&J?{4v^gU=l z8O>Dj$jf>m&HiEvTZafBalU9?Vg~!vzj2HUzwgmrIOvO-jB}lCpS8Vq&cXVPYFsSe zrnUIadGQ+Vk*3kwoDMz+xlOFmm4CGBHwGb+aXxC*M7!y9F!Y!w@7#T${COXOcFkEI z4>+V;Z4`#%tTB3~EK-(`&oPZ>*5dV1N;`g*#Rj}{xtc1fd6BrxoZPo>ZzWkBg$h&7 z*4H#tLd&C2#-4*t+ZSRqqHxfHc{uBcxZ_F3HP z$IkHJoo$X&tX7{m&$_%bYTQR_8$BUska0Gx-CR4TWe9dL&JPlwDLUgq@rH3;RYO(| zc!uEx*Oh&CffAh?PW>_7M_ME+(@#bqo;61D%vs8!dQmWBd0)wSwkUIBd-nfE4M$&xiq9N^E-KlQm{ z*m>^^jNtuodYeO%doSuX*mC`xABHuxr=pbW;r-ea%)T=jwT9EbBeMW|TTj8xcJa{F z#-jJjX_(b60yEDV%bG|lVl4mmN#A8%r1dYKPHlG1K^*IpKOY~5IqTUM_1~-QY(5jk z+04ni;hkP}b6BIi=6PqQ&)!ADOyweLvxWRFo+~_*7O_!y%G|rP`8cI2Cz?JSNkF|`%Ff@> z=-`lqS_7LZv$jR^Ju{v*--SZ$9IZX;^9z;2taTJFIMO>ItVApq5!|ype~ng)6qhh; zVEh}mnJv0U2H`YgZml?rWyCE<^7n2w(HFyX-C@kydq;4E9Gyq5H}}P%J8R2+51WaS z5Moq%%#j@A>4?aqr;gMOwUw!8?8|<^^%&S6nS$*B)HWTq96L-+srkcM``Xz!J!Lvh znML4LbeZZ`%UPIAOy2+28=(nB+7+j!;~nFC@?wMX4!HsFVw}A__h~mr%tRUET&ucT z8+q9WquG~!8DgY;GN;JY--~D@MbM;dr6!d$}`l5cj2-_;(c)#D*1Q% zN30Yr6zYU9{(5#u6G)J8T{?!U~*65w^IW@ zyonTMW`W=e_Nn4@a4(;n!6o!^_{SE9o|&Rl=K1v|2k+{VW4N3in)5Ocw9E=UkI_HM z#zt}Mom!a>hAtbCUK-V_#fj zoKs$n)gE3Fj1P=+$1Cl$=Wm4kH~R=q|EA=2q@GPH=2iEz%1!FfmUrTQm$oadmPFt? z_iwkB3zQkpsgJ~aU);AiW#zbNT$xP#)xKHE2%i|Vw&UFJhD!PRECxZI#CO&2rM%q0 zn$(Yd;GZp&0M00K_#8Q|hLT(-8ht~#-`_qJx~V)vBk1>3?X1xK6o!8yiP_NKC-6N8 z{rJ32wNyBk`l2*33A3L>h%jmkS1slJ^yffv+0YSF1$(@6g?z7p4Xj>r2C=bPndY?x zp4ZU8&~&|2H_Hq$XV{-{>Vxtr(=dwParjZrULi($s-nI))bL%s5YVKcG#QXQF~}_Pn6cHZ%4`80+&NP7|~i z=Ylbd_pc8Y9ks7ohoTSffU$FbD^nb~XW6Uw3%I1zUJ;JLU5I-z-lHTxiogr@h~~Ci zq7tt?q}0$}`hw7{qZd*7v7)R2qp=4f8|$dtwdypBFROf7WN8rztV~-1`Fq zw+T!7cMo05JO0xg@ut`vPfsw;#kQjNEJv7qV=t(C6Vct=1}%6W*tacQZWm*TImCd4 zPcK)s_Atjo#=MVtrKGpm40+R;Gm{K(&Y#+7MF}u&J_LSy?9q)neF1Izm)-y7k0x)4 z75?wP|HBnb{$8YYe>@$x8E4&XP0PdETj19^))?LgwUh79#D#zJ#@A%+oCIGqz0c

_9brUvm0+A>nv`cEvLa;=tI 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∓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�uX}Y9U>$ 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

?{Zp9iitv(C&6f<$`+9^k!W6( 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%0Dt&Y_k>@tp4y#U1cn>9FF&D% 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Ð*&$J!j> z&8x+@(dMcjzx%Jqv(C3L{#H*f-y%Ojjwg)2hzH%8GmTu z#~)ZE@_bZS%#SqrU!I@6`N6h(t0H~W$^~D(q_KWRe<-g*y+%nXY{ilvn77*S=sa`0)_MVM6{1#`ZKFuVn1^4sjOE?z#!RTOT?z;I?RL-S5 z&Z_?0)7g)qYY+mTb@RDN>i3k-)?dYw+cc|OiLckkaZ|=$P~sOe3%Je3MM^x=w}iXj zIai724!_RbayzTU(#7{U16pG@zhj{98*ciq(@N}Suf}WN7vpo7n+|XIO^nZp9Y^su z_J}-tOrFjgFBZph&&bXE-<9Hc9`nkM|4UjV&7Zk%wiCaqpUCsqzm|NFmB{nH1>5=0 zRCm^V&!{&`c!`$CbBFHcyuk>O=gIr~@uyq;FVBh38ri%W73r7H&iEF3mfia24<>T1 zIQl(})qMC9`J_Xn8qKo1+`r)to&&GX;N^!z zo*(8;;D_aiJZGx)=e0YEJimQu$Uo{M^4zPkmXj7+D!=RBxS_q^E2~kfB6WG;jN5$o4k1GO^XxN+kRq!5REcHZP-@t9ouU3BVryhaaT>aZhoKhOc9nZX?#GN(r zxDO?q5`PZkxy~&MlsNH68J9gLONrOszt7F5{9ZFxn>)ScmW~p6o;=|jcWBlBjpt}} z$_a=(ckJDPZ@)t1IjFcN|Fyfge$E^|ls8=-r2HJm3*-3CoBfrz_P}`l_G^)6XT#xq z=UF1p^Nf4(FG%OA`Fr=6wd42FI=30OsA}NK`-wb%J*mkHLqwhps!nio9RHW+f+3&S zC4W_gxL-xO?i=Y@^h{$HE&hWMGsvf-FUMXFZNhvyTaUD^Vn^Nljwi7` z=zgq`y>0ppKkxe^`D;7wOTrgiEub39!YN!P_g?uti#JIQKnGso)lj64w}eJ)Ur5+*6eI$mhK0d>!MJ_)Mpt z9RDyziJSJe;1?Vbc^<9Zo?k2#dDj2XjW?Mh@~ppx>Y0l~o@ce`$9tBEJRiHL!++>2 z#_D?~+wk8ui9AifSu zui9A0W^_}P7T%$_QJu&}d{L3A^rU=mP!c<+zl!unlm}KD7qL3q|G;^-7o5l3VSfhv z!g$(KB(?d>I?ZdsvT1?Xcd8Bd(6@=SNyv*zGL@UG`d0aDV>VfFXDS~k@t&jp9G7=p ziDhk1aT^Q7xv#=KgDYMpS6nhHP zAzJEu*({M~n=7xmJ+y{u{@(t1W!&NOBF}+eGPr)E``COv(k+0CqFS0}-1sGd8@op2 zSxdhim!NW3dHvtGQP}b=tKV0Z^aM%srP~?S!cJBC%7pZq^J3ZEJyoSoeo)PWK`y%^ zO-1^yJ?-PZm9y>UsYrDL{9s>D%i7TR_oABi1H1ZgeS&@}Ki_fM0xqcgYbCz^Y!BB; z@4gayER%71lggF2$BA&R*O6i+u344H>90Po!~^#iaJ*HH607K4_t$WZaiXk>@jk zL0q_*$n(1VK3t~70p&CN%k!%7FIhhoRcR+0&(|(Tu_xcEO2_PV!^nM+?9?`D(ulP( z^s7l`2X|MK>g7<6dIrxfSgIx+AK{Oi#~-o{2i2wBLPO9vychRyQls+o*BH#^UNt;d zV)Wk1`HsJ%#6vQjx%D1bmH63;Ag-|$uf%6MpXTn3FHquz`q`Xya+VS|o-gLMbQI^l zXLE0H*A2uqM(@uxT+-86#lGadNSqpnqp8Sq{uzBve@UhCd(XIm%inWFi4Q(A<)npTOrF(w4|gzLjLCa8x^naHWhn3Y z;vB%OX(z_yje{e(X}`r-!Of26IJ+3-J+E{#xzQWNSkYxz0XI2Hj1|t=MO@SHqsn`{ zz87#-9mRcj2ZKzmKq{^`Y#I}|&avWpqrF)aXP_g_gWp;Ob8_0_Hglfi;lXKi6~}YJ z=sjFLtr4294>}{|JZnUrSJIl+yUam(-PB6Kj@tUa@i}&F0UKcQi!?2raam(E>zDr* zR-`>Ks+xX#)l&yNoc=9UJEJiFI- z<#u%!dCp=~x!G?-o@0-ev7e|9sQG8Ngu1dF_c$rBj>!b$SDQ&EfUf^Lo|jIKXT2ni z2q*2W{zFEy3o3tNT$L-vZED5F^=d+ylLu5Ue^K0Kf1p-2 zYjjTJxiKn%9d}&hdGN<9Hh7=Nb2Kk!TWN_rw+*<&Zk;LeTs5_V{qsnS75nS%v*!22 zSW&U{9y@S{$n)odD{KYzH#EPy-u*N-Nk!y&D-*^_Lq(o%v~^~8_7HhqU%H-MeM02f z!jxev2Z%hMukFRUeGz%C+WA_sZlK6>Xz5+~6w;Ax{`~M=8j|(D#IgM^&*~8&Y_H0X z7{Ae(v_;ymhtGV$sbj8~yE#oUVbvE5ZcDn5gAXcn_kG4ysxK)&Hcr7>d_pVIx$u72 zTCw2LNAh+Jz$lH|@)eUl;mTF&YwCJS@hDH^xnEkYVk-H1H$OvF?Qun`1*J+HRO_Pn zxr|q0oAs*|6%8WK_pgsvSY(Sl!@0BK+GdgGEnY9=_p8LXQDS;hZut6?@@E~rhRH{) z6?txD5pn*ZvB>lM^^=SjUlR8wlQ%s!Zfp?Oa;%x5WD)5|G(XP?Rcp!W!y?Za_d_Hr z`ing4G@O)F$B8_L?Mjj)>x(=WS;kA6>tvdLcAAR6WTw8z^POD_7*{Qk=ae62k`>Ya z%kzWnN7yaB8fbs)jHv;M#sGm{PVv66N&)lPQm}YyL4w&!Hcn=|x&3zFLynd9ReuGe+tu*-U-S&Cj;%Za-$)xB}%p>A};PsB0q6r?kwOhbu*%FX?(PRf!_cZ=^?=XkU@% zX>H<}!8MV}pVbS_W%Sa+l{hj{&NxmGdG@?`jv3=3^1N|l9P?$J$g{SpALGA7nHe&VRK$5uC8iTIjQZ`GuUDF6Gixu3vEr(u zmt-2%3N>Hty=_BFaJy?s`G2*cNLtU%X~a5 z@|4d5%k>|a=^l)gp$n&tcff&n*bKm6+-4QWBJaKD=;l4X6EnCtJ+m-gKQD(5jX_1@v+V?Vg1*)Sccwm-!q2!{2+%vo0CS@Gi} zqp{?^@_X$<&M`;S%au6h-Zf@GjmR^{zF^drh&c_jNlnab-C0^7M)_niA zk{ire>QQLMO@p>ejQ+0%>|dU{{(PgDd9MK%iRXJ=T#W;kf5hGOuCSLBNb=L0LfI%|K)kjjg|^6>ldh*;tYJxkUY+O0q-9!=;A(#scL!# zIn@oaogJ9et2OBM$OGNB$1xMlpTJC=`Vg|NGC}Ph;nrp!xGCzG-*>C9oofFqueE_? z)je$Q5QI5;y-_svE}bEU!e_}SG*P{JGw0vmOELA67&qnyErkTk>|}%jiI|k9M2)wH#4i}i<~b`JEm}0CGx!SW;b>zy?66>^|0g> zOLmFl+5PeWMLuaKG++PxJ%JIri#%VS)fbqI1R+E2W4D6~eDTlzvP4PaM+l1PRwB>mO!XA{n?;^41_m)99Yvl?cej#s3;ti8XWR;tc&)gKnhGa4 z_8Z3-{<(^Js?qXk@L_(uxPrN)m)E(jh^duaCcPc1!~XD|FD=y%T zi6Q5hfdlhcg%8@MhgU;>)i2ZgR3A9hxPW4l_t`(4l zD6Io;hob$Ob4t#0_MJgxN798L-c-44^v_CAa(Ky$hY{(3HS@XrLK%Mc5$8Swm%BI< zEyjwG1=UoeEXL%u=UyQ>MT`|uac^NlzrW_6b!)0XT~Co`O)bhDc#7Pv?|g}g`@eax zr$$dj)&J$|W<2i7HgpiG9tw2MV<8>-RryUT=hQJ`X}8}t%d;tT2R zsGgzP`1yLsPAbIrzaDr#$OvX-`53p4bPu&wVDR-k6utF=;p6?dbSnp1$n%9i4Y1rR@@$;jh)J_Vp520*Fp#_jo8Mik`GRU;MQ)qC zqi}Vjh@S;NWoj4^*WY*~-$?pB&G#QWr_Bzf-pyuwL7uO;NjhN7_m^se*Fk3}h9$B@_ ztgYwplQf8YTXn?3x?F6@BOjmweGFQXgQe8#G`MgU9FJ$AkAV!H6WNhh4-h^Au;@xypGNxW9LRHIrrYsfCW9nmDuI$cii<5dA{ZJ2ku)%o-ZC# zkuLndJjUhVcNlv2|9JL~#ZMm*?>h8`>HB}UMO=;Cg8Dj}c}tXZU{{g`X)_M_nXBL) ziaZ#JOu?(K8&i+Xl+{)RI833=E#k@WW) zIHtdI9^PLh&3BJa%(1Jv82QZwn=f_7hm0Id803b}FGiuy!EAimn$mRGq1Bs~LB;sK&LckxI<_zkyW}c`(v-hx~fd z6{Gr1!rq@hWB9v3B_2KKD;m2}9+$2=&V7cLW&t z&28F>>V+cDTmEXYe1^!gZ9=}{YfEvx(QVTZMMA#F^V)%1quiW^Yg~E>n%doOR_){ihu02U5*a^;hP> z`)u4Uaz&@`j<|Ip3nv@NBT7CPdz>@TKs}Fk+7etImI0$U8TJ?~L*==%nB2h&LmPME zgQ3&p3or^ ziw=`-GT~V*3L$Jdp~S&yJb9!XQ{thCmtg1{s>JWQmg4S?AUve|Lu*U1gM2od@%)fN z+>rY!aby_jI<5Cr-ajxfg&8r?7x(EN8_g*SLmO}0CEW7JZ-rmE40i~-kBn9Pq}t5p z>(Sl1D6VlXO8i-IL$PIyqw<~|v+X8_Q%_IxJ^%8YwBZ;tcXAfa9BtO2vSsde%fX6k z4ru?>kNMO;2dbn$K1w5zc^jUM(5Wu?I;(_<49h}3?HNzMdCBaw&%~gUwD#-T0@VvL zup85Q7(${$(qs0ELiMvZQ57PBB`y!!5+KkT# zpR+%O(yCBAC;ZYT7MIEE`vu|g8_!_ZU4OhJ{LL#2VeLo{lW^gNIcO72ni+(PYdshX zQ>yPHd|0QC!h}2uo3F>cC{tM8kSTFvhkc5{-KbBQuBTo|muII@A6WDKBgeDb>K&B0 z$|=R@WIH>&qwD|joM#ZrT$q;uoe8A3J9`^rG9(KrqzQAm&YS`9zc`)r1kzm@=X05u zuIhrEilfZBD;ZeOm$Vw5q%xU>=@?FHza{f7GW(Lwg7qRzvp0{Kw)SasZtj6cFB+Mq z{;A~SLG_|@+Q6LR!;0fHwo`TRi`HrfOnp$beh97JU9 zrisI^Z4P*&k?>oa z2*rvb>Tw}l)lyFp_k+$(36Gs)Cf9d%!7swcX1KGKHdL2OxYc7dh2LP(=q3Cw&yQD} zWvp`2;QP!LUwbZP3Zv5zO0n9cVG5(4m5yVRo$yps%IHhdu}V(02c?Ud(JRg(_Zn#- zt}$m8tw}>7Y3GIZb7R^aPQ}jN?r3u|lv!n-g2_}T_WpAmqcSEL3!`OVI^{EQO^HbU zOZ9lSOPQ822?&n%M(X_uUx(sSO-!DX@JH|medmB$%5)q>u24uZT*5;ML(`Lj23I5dx0c_&KA z;SD2!Ax&ibr0ct@$`~O&48I9~nOVt<*iAL{^uE(ZJYcR{1t>Z6>srh-Yuz_ zY=m%up*m;t%1()ck6dBzY_-Esy8bWEGcR6b=3I=2)ok)`d@-J31E@D-tUb0bdni$l zON7H{M|6w{k+1_2@vaN`ymnY18N4(B8~&0%#4jC5jzc^K*1O=^`<9Z#FL7XglD~^- zONn%G9Qi*|FYtVANt(qObfzBmuk}MDyQ+mB4TwQ+TDP5ErNV695Uu>%G_2~#47eEq zHF__1Quq8jy_u`MZ;mS#(7JyFVUG;CqQ?Nz?I$ehGl12lx`Oe9e>RTg zyhxX>89zNF;k^6U!HDp`Jg>K?U}i5ojk&*%pv(CYOq<47TrDPFp4oAdriNHZs88@! zoA<^;_QWEKG=zJ^{wP{_>@@B=lBY;c2Zi>%7%)pIPU)^z6bF-6(+tu9KI^4u*EiXwG(6k1R%_<&i_iXihSidBIyZ{x4%l@yJylfz)J{jlQo^5bYn@AYN> zEJf78qtGHeC|*YquN$J|^M%(#dALC!deHT5OTWlBZ1RU5;nF%IMenwLNapU^4O;memLU`^{KlW!P`L_}_UA~JOvE_&o zPxLs-1xb!zK3)HpXN6uhb8O%VB%USj0NDs8J}nBXr;_*R8+S>(XB65$wnx*Ri&J`h zJAql$k6E~Iio#?F=}am}^Z8n`qP<%r0{or9c6g~cPx$m2>YoZ|$6lC6{_VQ1n2@5! z9=&rMYShCLU^bRbTXq~LNlU8kyOjO$E&`_yxWl<%J{wv$AsRV@Gdw#0tX4DuTH6m#vlfRAnhwRb_>B zbp2nR$6Zs$&W{1`nMwXQj&m97&>+P7kuOYbq-2**5H!fYAiAn*O5l(n*ptVeWadgm z9OW4MSCclK#YIJtZXi4_lRk{B75kU=xu(1mPPq?d&zS~7PG@1qQ)aOHrck|7fip&W zn6dKSf!Lwvf(@2d>@+%e-k(MD=>iW{mwtA%mn+8J^Jljv1;RGhjr_pE*s>8pxI*)3 zpkE~0;1z_08$97;cak0SBnUqhv?iDp!#akN&T|FLZN{hAdHX_WtrkSRU?9IK-Td$PHz0hmlYqz&HBKIu*UR)j}dtzy&EeUy9-`LTjsx6>1*bUm-w zlD$tk_-5X;f5);7p|n>c{9&^i7d6}g+XU3wtVd7}vcH-li~L^O53|Rm z3&$0elv@f3wMWmU*NXY8>3P~Zpyvo3Hp1B*tF}A9v9BTPa>5-4k2_$%N>g^#d3VaW zJ75H3!T$c}4qMXSXlm!q?p{XyLproaHwt7+KX_m<W%x^V^T&6bX77-f z!HXja#W2d7}SLVe4A@L)yh3eXpHn zM>qt*xS1b1XZKwlpd70X_uSb`>SbF@*W2n_vzCS4SVQ=esvY}`dOEidesDIB&8B%~ zH{tvlMQmMn(n2BpYnC>bonVJm)2LQ6D~szcKa9$tP?(+m#-(lBiwG0f|BUBfN5-M$ zRvVNi*`QTcAk(+E0}i-QU)HXc%y#N^^H@UOVn=34_LPxc)L&aX89ct|aA)#SGPlFJ z6TKB`hU7UJLY{@OL5h~!sE3;)4{lkx;vD%R>D1W4D@m0-ndFRo(h7UmrWYH2opf+1 z{yPX`**HxXoP9vLG#Yc*>9l_7G|e8J9oDmNNi%y5^@+_Nu%C5!;)+r)M|9oh%x-<` zMt(BRsC4sWm({vsdpz|ZEcR!u8>vTjIqC1j1+bG3d0{DeDP?*1ur8!0DXu2}fj2~`q1G$tHY^z2H0=A_RyI5kS)KHeGj zZ)}kjBv+_yr+(Qo@-AHWKyi`c%B**!U4w55vnka7Xh~kl>aE$EO)kidCcVw3&TPl0 zuCO}jh?L>X6kITC!*KSZju+O^-^{k;!R!qK(#9qam4-3> z*sLf&$QSuxaI2o|>+ybQs~rgEPhHs9Z9dSF1>u%Y7q*wVCltp6QMR=YtKUSPyo>!Y zd*DPicN}^A9i;wxCv$eSiw%}VxZ`t|LbjxQKOU>onq#dmx2s_%Zs#~+P;5B2*lr8h zREz)cyzzq(TxHhSYG;F-n-R7sxNp@B`0)^ydvv`qY z+Bf=JueQafeJYZ}8sw8eT%}(KF#cfV1Xc10ide)M_1x)%YSLEfnBY_7?%{;Fr12=d zvr;b4al&qiEqte@%b&EN8ddV{QH*>i->}yi#h=NSr&3#Sn{ppv=C<(A9--Jk+LHQd z56=v%#rJiOk0(_E=4GB6?0{B1xxwpBDKVAAKab zlSsM;$+j4I*;8UFcSJDh9e29jQ?l}=3$*KPAv1q#yj0T_hU#{(ZJA;Gf!236UF@*A z`w`>wPOjM6U<;Q#U1O7SSAevD_~>IsOUIC>uoLy~(|<=4Zb;9!#ewA~ie6J}pB`j~ zRH3JQ6KVdn?dE_#pZCg#=g2UXd=^^D66B=~o{+sIpU8%Kxy~7HWIT370W(U$%6u_< ztp^_D=qSF@IxTv#3=3MD$j4IM`18&(Oq_GV*msc(g-<*%INMpWVu(9@==ZWq?XP6q zX*%B^{jYfyE1B8~(hT@cJ!l(}nWcZNQ4mQ!1u-gkopbwVUmL$np*i#w`4U>i8*4u& zeM)URl+0gkypeKT1p}#n+~Ap!v$;F)aX$rrCz96MD z=!Ci{hClE_!yVFFY%^9-eaa8ppLwBL+g8G7l0H%(>F;N3VKC2=_O+yE?pw{Yv!^`n zYcHIaNwD+?X~KW-BF)24ET#EwM>@scw-51ru>Eb*mjOS_xw;Cm`nbcq)obV_-u?F>V~bPai?-^H4%n7uR7kIbY8khPf#vOWr-txRri%@Q#^3Dq_`hFLVAUAYrV$P z`uy8u>7Y>Rubt=)uWPfU5&L{;&qDmPTPdAEx;>p@z0mZ1r!>3F3mvV!kayKl>OED4 zdKK!`eeEqx3L_6|iW_qWAC+31cZIeA)e}n2NDC{dC!6+A4ev6g4@n#2*eKG!TcVH_ zyg7m;8)+?KcvI@U(wa1gTrsP!x{0@sEi&8wS17absZjHGVJEYxA@a+<<3v_L; zeDXR(PavK0EE_aZuB+mP1JWlRAy39^=zO3(QD@TS_PT?!hHjV@ZVT1;Mr9JWo`ZFsqCmy`;#GGlh()FuImvp8lHbj1vp3QK>(50T>V^mC*_j5(m5>HegQa3TC-)&K( z48x<;P58$S(4<~0#~$CM_ESmMlj>U@zZ`4QU|@^#8;AcBH%5Yfm*$5d+h>ip8+Oos zj`B%;Z7`7Zro$;#n`GLcVPYYkO>)4-2}iJ;|Ad~T-9G8l5tQ!K{(oeBcRZE<|9%Kr z(a@s3)7~jv_i0O8du#7SIQHHY%FHg=p`xO5ziyO-oMP$8oy6&hz!0*Tr?9THP=^x(DwJ;_Q04;_3~;%7)|4Q!jBooylpME4fMsSE>uy zqW1BAZX*prSCS8JDs<&^ib%hkbn#}MKf)a(KeLnk_QI4%PQRJvf)|iR;p`;tR8QjF zr+c&W^z+z(2P<4rb@W}0xRwY1+!cV&aw4(@DkSG1-3(MICJ^)+!t z{%;%D&N#}=CqFZr`V9)xqdCn0R~)BU(PMcU=aWkMJMlI!*m#LEyF&W)OGwkX)phO! z;jcEv2G)%axW$UZmDrs$saw}@Dc#+0>x&dd9e!|Xi`*y)D) zDHA0XGu;qFdkr(%K+;-?xMLsFjMfn&Nqm17DCHA}!_`R=wPYta_Hl;)CnJg70DH7@ zx53<>E|PF7OWbPO^3Qqx;7R|pN!J>$-(+L^TdMCRTI1S?k8tlm z{GfxSIOW@otBkY9!VtPUpG@a+wJBE~Z3DBCE!?VV$}c=@aB-{)H&ciB$0(P){wt7M zXh=G(gt@|wIIjI_S1fvAgLaoQxsAltk$K4mhSM2WK>G;2!bo#7xs;1fqWu`cxo}Yx zmngVmTVLYPn^VUrQV(<%Y2Tjs@rN5(PkA|UXC*99m2B45vuEf{71o zA#w4T&6KpET$m#r9L<#rB)eC+pl>hIW3E~#Q5sIXINcm5-diZ~pgdxrz70l9UM_K5 zN?O^i%(1?~M{@p^1-vZ()$cx~7XhU(b6h=W1;wL5XjZm?Zd+?K*W@FIIG)c(S)*LB z5&onRWZqLsT#dargU|NxBn{e`-o~7Rkt3+FfkD$OxSbDOptXUtp5ORzIV$8UVr)pK zB$7Kx_vR#uv7gLHgyN%&1v6R0O`-?@Dx%gU(F6Jv*o`NJfd#3Ohug<{i>6C~!u=c-3K&D{(n6765a zo#{yPZ#l-2UUa9}Qax_gI#bEvE6(toXNMex6_P-jtDQWXzSp@cC4FPv zdJ}AXiJz^b6pwxNxK?8wknAqS0m~`e-9!hJy`Zy{xQ?r&dhC<|Hdu1efy<(tf`~uK zzxZ-in<+kNAidq$q1=p6S6rw0hR}@(+<4|nH3Q1Q%`&+v@()|4+v0|^jC)Kv5=RG8 z{CxKoS3qZV+90z1tGHm&K>yj*7KXFFaAF z_dR0RS(4g^I2!5u6;#(-;z92-)Qai`c|#?y9q9a1jeYZ$@sc>&_l*gnI!x_U$y;kT zNT}YvFlCmc-(pvUr`f@->mo_jSZ9o$PujA>mr8yGI-+=vB|a6ekf=^1&W+lG2<>7f z*}BXcRgQb`c!QT@Umhpyo0bGB6-AbH(L_wR1Hqf>@Ux{V+{4I5ir8Zut8 zhyIRbG=umqYl>v6hAS4P)BTb;L-Le(;MU)=g7Lt)l6Ea~&hsshKWTyF7Uf||1_uzC zy+YEvj}-#Fcf-cdQZm%;AOa%(_0MU35m>Hz7>QCVOtL+S&nL)_Hd~?a#X0DQ*x{$W zHKIPg!O9eSjBO@9noxgIZ7R7jvc5++1oT1)|v|`)%aBGMw6x18`ZH(eN+7S;B#oJm3&Tx|w zsdiCASgA2?Gx?C5A{$`K9WErp75en~eyn`X>8I1*VlMgNr=Ph>dLA%{VxEhwB<^Xh z2&%jS@1UW6H%ad*y7#tA5j}>^`C{Vg-b^~q6$2!~ zX5u;iZG-d}1IglXbpIwuk@sk{B!=o;=N?t$rBuC>9;MI?Rb$EmIkK=uh!#M9~h08IdDH3FZ)=gHVcYGSUj&?YA z$QtMFmBHb-J*LzW=1+goee8gWRZ>Lit8>W@NNY4-ih;kixS(~87^!Z9h{x?X$s z-AS?ZuYOz|?e#~~+34XglY2@vB@_CNXFBcVp3Wd{_$bm?-|xX~A-*eZs)6YK4dpbq zI>VLxbN;quj{iU{Bva45u9pw81mGmqWbDa`W>C#&*NTJ6G!Gu8w9N0&t+&i!K;%E9$9;F zcBF?ewM>eV+v2gZ<|`w@Zbw$K%whR|nN zdzHTvst59yQ%v~qJy%Gv^TKyh zw9)>=Z4V&Lgg!P1&HT=NpgW~}p*2FLC`#U&I>FiCFm#PnCAtQr|InWFyE`gN7QVB_ z(TN8z{jjRUH;a79>3w+etgEE*&ps%<`L~YLkM?<1f3rYMkQIFPnNeIraRJpy&VQtQ zBGnF;H(Enj7>7rm#JhIg8diFjFj%d7mybD;CRkb(*qR;q*!(2G&kgu2X>{BE_qZccaXF^wm*y%(oV2Y4mVMZdHvPYGF9+^JzRkaR%8wEm%RJA&U6h?hIM3Y>NT)q|z*QThnGTt9R@Eyd8x zUnry<-u>lLtUsg7ncee2Py>B8FKKZ#x;}VJv16}~y4-!@q3K9}3uDC|+?vN;=s-2n z{tx?e->FtI{|3c2NyE5dcSu_!O^SHGaa`Ui(kZ4|R@c5pT*F%r`0kNnY|RWVg!T+Z zu9M=M!91>VsRu@rZPIHoH`9%{7Paard>VtKtk0uVu@z$t4 zuopRbr;!w6jW)B1^P2efuhDmKsHH8`^3tJgCB^DEOT^oqBCSu-xQVpH8><*}dqRCi z^0S|6Bd|}A{H=~NR5pd8pf{c81b4(a(0)I~BszsYnA;%;t$R`|Avp>it)rwFVuSaU z$1!ga)l+_vKGESw)ZFwV9t9~{bf-U9`QqL+`o8Z;#LwA2Fs6H|>*7>YP4Y&O55<|+ z&p?;-?D|@gHu|G%gwc#}Je~i?K3Q;4Bt1b1)wf+z@THu1G0ATnrkSQ@;+Qg>C&h*S ze$*2p&ce0iL%1LenBj^|I@U)eo>E#R?(kDX#0M z!fAL>jjq)J1UhcwmYD8ApI!grTw$dFtDOO8-e!&5o@??}r=37RiZ#M=j>xRHB%`a6 z6b)Vf%KE3CL#vkW@9)w4yAv|%vq_;oVkvK`DWG^3^|n%H@lopMaoUV>XNAdp7k!$) zwWk{Ci;?`8iKk#pxnBK`f&8lrF-V|%WOdtKyuy@7*m+URFs>_~;~I*6hv<&m-+{Lx z9{!6I14KBr<-c7DM2(RR-i4|2(!EDeL2;TjQ{}(!^d~M=Defw%@Iw=P!R1iQld8;T zYWrX%eZO=bsqkl$y)boz6tQaRe7ilK*ic~&!#28nwXFvpP`o-NX(Zp_sXMAhT0>^F zj2B4jW|OuxipDSDyWDrdXVR01lnv#dC^%v6h{L!yM1^;qWQ+D=&5<-QMrIjhiSDgP z3-)Bgl>0jlqM~R&W}iBW*;Dsm8=dX{_PbyD=}zs|d<4_3O3}&4m=Am%g=9KQ4lJ85 zNJz#7%Bh3&zwy>T&f*Yh=gkQ2#K!;4$M{%^Y1WTo5vfI_(P2ZpozqzAysI#LNayzS zL{@5ck+hI(aAVs@Hrx3OYAKd8&K}Iv=sV)9V2knF`w?GU930-+V4Zm{Hf9ZJHB#O& zBfdM+?Hh)RS1C?T(qj+9j?uZb!N@b+*tF0<;v%&{hl|}<8`UFF*kXgtZhCAe^}4rG z4dlw8?#%n850w8(u_>51iYJh6%w@{cF7{!eq{}g${K@1m1KACl|4jXEjUin}u+DGY zkv7R1rJu*M4C;5i-E4(h-s9NV-Na9CXo+3@hOxFg9BF>d0(P7Gu|D)~n!D2+jZ?a? z`Xozid4CYk8dTY@+XwNOe04))2!AGO4@$fa{)4lk)BVe<+td7TA3IdeImhcQPC)n= zJFJ=6kv(0Wfv7ol_@O?N6@JadQ8VhbxE)~5v@iV9p5hxlKc=yv7?%R+ZZHdDo~N#1 z4D|_0Hb=1qzC~D`WCtguPwVu(hQZ26BFG1(1F>(w4*C?p`8d%(!V$}(}QW<@xmj@2e#CEv%xeQQbt-NA?g8a zlA#AWl19m};vn{$_T`P%5_fZAFmt6k;e1A(%ewTkD?)j-5-0{#-3(# zx15GL#fx6|W0}`d;>9&^Kw3j2BV{Srta8AoiZE96JrtqA4rp&4%6yj6EFtydyF3bI znh3;5s!J}f3TGFN1>iby`Kr1{u>-X08bQ7J*~#(j#7rM_nnoH!my(#)4lhijI>kku z4EFw@2R2S|!YloAEOe>$GO$IAUN$?n)*L2u*IyhQ!G_-5i~2~be{eoNI*V_0DxYSV?GYBgoNbv| zf=?gp(PLpG8{YOI22jnYY<3|F*L{KP@1&g+_L{ZlYhX(|`9ABK*g>_oq$TBmUIYKI zFS6&@piEj9PCwWP4bt{icffp;x6I?}b%YXkw5nnS)1E7XBWXUec2}7t<(wA>Ibg$* z3(UP;I{Hf-FfJ*LU2#iT4YANGalq$&k*spc31lvEgzLxStZYmecB(lc zIXZ|X@-%}?Gf|Nz1KF%|q;IM3O!{QO%!u}lo~Js)WI-r<5$T5;hAuE^jAH34eQ-FQ z=87UtF%ODoz+7<0Hl3ZO9@d)*7nn~t$1di$!v8bP(znlJ8kd}5eUCJMdkM^UxFZVJ zy5OvHA-lDL{9F)mvwyt8a-UnEsn`iSZE{)0!+qG8OLbEDf1)1!%Mx|=W%4cfSK1-E zIgoV-e1=88>F+h;7Hi+-1J3odhkxfk%xHK$-crxtQe%6eckNG9(hN+7Q#awR$9Jso zqBC6AMK~&Zk2AEZpVq0JP&fZ6CZDs1a#(BO@cdE~mXHqhi7!m?av|Qmp!4khgxO8G z1ic@WXWqZg78_^d0pYK*@*=wtl!~-H4*2;dg{4-U!tVDDSg<#mNj}9Q=)5D`S{-A< z(of(uae5b=^kuv2!f2n!85Wz|nT6kR+97g*&Rk~}VG)E1eOI`ga$p~6#_5FpD_Z@w(ZApuEmvCAmox3MB;P(T`*KI4S~ z-DV7HCeCyH(ZW;WMPF=S52?ifq50W!99w1&+2qcG(W-k0cCm+5hMF)a;VS+l(>#*? zFLr_MQ&rM&YchS!mNlNk+I9|z&%Vp*#$=$Aodc@g^DN#f37ZB{-MIb?)AC4wZdWJV zJsZb#jbbo?_|j(+5!;@fkx+k2eN#tocKU57R5YpHx7~s5x=kExO9{`udsw@_ff$@f zIn2$qEOr8&^HSoR|GR`u@8}1IQ=Yi3u#j;Vs0V989G=DtS%sB5`sI2dIB7l$K8PFqzdF3Ll(sUb zc~4MG_o&9*O7^z@XEe}!%OK@W!pwwbn9;0Jr!V7$4!cQLn(F?I7v>AgZ?)zQ8`(jx zVX;uLxD}@mV27EUiBRSK72`?Ys&L8_!P>GKk2LLZtYV08;Z+$r&Lu7N&3ZynpKGXf zut!w5mSBHKhW6*}F?za!@YE~^6>Z56FRNwV;b*WfmVD0Uhs>Zn8GW5-F7xbFR#`^+ zusg|rYUMILyI4%7I*8-AWY)^#1d2!}Xv>Nd?6zV!im6VtKKlp@XgH4ORqj|Z(3Nc_ zKIV-SH*3w?#}>{$3a?>acvrESMbK!`&|VXr`DtGuobFSOW9s$@KRjHB-E|FD zjP0Rc)k7FZ_v}^bA3N0Q2%E0tp!%;pRQ9wMYIHJjo#xwBa=$X`r71Z7%n{?JRIz27 zPLbBJ6Fzsn&4QHU;70l-o@ZpNTsI0UslIma!5Jpa4aemRZs3QhH>`i6KAD)0q<{&-;VF0XFzDd#7OiTZwB@w8gv?E`r81WzNOI7AC9Q zgzA`9+~60s@bBp;9Dn~67bn@F_t@P+VMaB0e>+(8UMAQYmP5IUV#1>m;l}Z6C>?GO z({3XLV_YnqewJ0ZYNgsZN-t+{jWMo=w4pNPM?fI$M3FapIg9oZi|2J?q}q53&ira4_W6g1v+=O)Y~ujxGt={RK{*W7|BG{0`&3q`LbD(o)mZN7 z3%P&mh?883=`WWG<_rH|k|E{$9h`+4t=8O7s%J(u9ufMkQ08I*NLRhn;9bJ2mE~x6&5rhPmI}OZ4Q_qOpA3`;os4;e z(Y?8(X@s!va4zndIbd)@FQHR;Ce*2KA-wJ&R1Zr<+!>nb^=u=Y9Gi&La%V)2`^_G` ziG$v7>Mad;%kIyN#_2*gd~0F}9Y%Pg!%5BauiqFNcbT0$S&54G*7&$>s4%vq4r>mP zPd~O(Xd=JiNV#FvVSnLHpVr(}%8@q(L)SOrjUb#gmk6fEd9=(|&7+dw>Z`f< zT1@ftni0afp;@r%L-DOyZ{d$)Dozb{M*g>sLc4%O?A_vm@BwPV(u1UfK>d=eEx(xk z_h_08rrqbD*G!0ygu!^K$GP5Rrc=YvpYF27>v=Zg&M_Pw>4U^e8Ek5JAo^DM;?&0| zrt&@j+rRo#uQ8CVcq8IGa-bVaS0WC1!q9NiIu=JWp)L0F+Nn$>M#Q=3?QAw{n}~D5 zQ)l)iQ^a}C2+wti|QYEN6k_`_tOFuM*P45e6T;2?x8`GfYQ zQcS!aE+~#_&CS|Qwdqc&LYRXxckeIFd9+U#p4@K5*?CcaWPG9!J@y+m)!V`;GEDHU zuEvNZc6eFmE$lyDjysg2t$HsNx(~gMC{uf6H*ON@AM&_Kz2oBU3x#`X7qHL75uHC7 z2^aQcVX2D~LX}1c?{iWS9_x&!I=zK8O^LYl#|0_r9Rv&Y1cZiAt+`M|=;joIc+ye{ zeEprpy^RDP?TIH|&soXpF#OS{{fou7*x7<(IOE_0-Ak9)7M}DXmXju9)@inK#SuA% zXHSPS-Oi*JO?awgyR+xEBF>g-i&?)DBF?*ON3%~&BF+Ym)0s}Rh%+DI&U70@oV^U1 zS?4r!JUjpIoVoU?YNj`%68aX_=(5j5xK6vf)7nXC$H7~uIq(NwnN%O>m?-GZY|RZa zrJDS)3&Q+BWlsAC#V1EE2^*ib;<~unqEPXy5M}%gJ?d;>JMyH^R9{Ve8+M49cT7mj zE62VHJ3!(glyAQdcW-+*YFh{%S`0~22cT}f&~@|$%q(@py@&GzOK&>Q)lTqRIYn6c zClwdEQ6K%(P~nfoX)HQQ{U@vLLO@^w{t|!RE(dMFBrgWj4tc<)T2U}#F+ zo%%48Zzi}1#|JQ!l{z4z=YC=FoC~-#p61xX*9czeS=ce%8T=q)VcM!RR3CAH)NF#_ z|KT+Be~^An)c|3BX#x_BNeA|0XCaODzK8pJpm~S7PU{9IwdRJ?%!q^70_LK=ekrZzb&g-o23-Oh$IGG#m z4tC+aV86wvJVkQ$-)F$Jz|32CX9zZ2^7ns9;k5{G?w zE_BuTh;t>RvpKy~$l39fbhqqiuQ*S*dY}|r-`ZhbZL$zEq6kwM?W$ah5S-pzLP3=S z&42p~Ni)u(d9f4P2006PJ=0-m>5Ml&b_?HoCy~aA3qmxP3md*Az_Gs@I@C*qJ5@0h zpSa`M{t?2j8_Lq;rnL9PktfA$?q||?{7rF)Q4TAlxz@*B{IPQ32{xgVcy5cEU0J~o z2RXJA%B|RS>P5HUykz`gHuB3sxxKz7f|a$}E4Tl94=%CjB3y1PL`N-aTnP3RjDst& z`5gJ`fPA6C_yZKEzc9AbOF{ME5BkhD_*nf*xZU$NHf7NK!R^io`F`QoN%?RpU~Dg344~27U2X3VVn)=Zzi~4z4KO~fcS@td%M9udV!#SHxd)< zX`bAClCbh`D9TQFkWSeEVKMF4TZVbk+*c=|s71eHwin`JRfWRIeyI57g~XlpY&vlf zY;Pu=;=WJVN<-Ss{pN$;d@*yo?S@YeeDU((dG_1H1xGymFnUQ83#0tL1<&{0-C2yM zz1;3N?f^TunEFoi{K@eZtnTjtxjn(fmc5(0TWdPW`YKx^|6s7NHntQQ z6nog~+z_(kUf`)Q#nr*}LU!jmIM>na-6Pcko%i(^PQ58VE46~DA3tJNUt1KIv@Q^a zzQC|(TWmk^O}O#lE|zH9A-(XiU^cM``SCQ{bmXegX4XXv+hmXUinD^#qD+h;owJ*J z5`;93WX#l|8qNG;Ldv8B7?CEZQGvUV7Z#0bcj~Rh?iU=X7uJn-p9<`j2`ijJ(VF%r zzbrNqB6W`8V3r5oxeO9I5ubz-ar_n6b`n(21z=f74oi63g5^PygQF|#0jd(#cRINISnyL7`DVK;oSj*Dhq$3&dV-nlW=XQF@j zZn~XmR9VUKJXvhSeqIrA9(Ps3{Hy;LXTG?ruwf#PiGQu|YDSn~W?zJ7k=7V`{Jt>p z-UH}PqQ3B2#e&6AZ=mpq;t;M~!6LtpXh%J!>b4yU9?c~_KqcxKT51(+Z>mJOwJkDO ztAe%KH{sf7iv!zhg!XZl(bL6_dSG{iQFYlU9BYqhk~|@9TnbdE&OGXCk}zyg00_JCT#FRzZ0s0d!aAsKYC%~?s}Hg)*FSyN1$Q&g#8Gl zo_Jdye4SOyei8>j&b67$n8i zWIDHhpCY%QWtOyCfrsWB>|IK8q22WhwmUt?$!F9PEbmzGGqsHBV}yAJ<$}^j1xPQo z#R8X)!jD(ykwd+h@6lyKPpWwyX=6`$M82RlI04sM?nH$o;Sg~+mu+!GhQo2;vr0Hl zR#43|&rMi*GZY<0y5Q@)-9mA52&UbkxpC)3f_0A&)Y08Snay1y{- zRUnL$h;MdUN5SJ&0DjE!!mt_2LKWqDt$n>Qk_I&og*Uuz^ERzk&zH9^oA2<3GlBE_gfqI=&3Eg=x8RK}GkAcpGO6 zm2V$}y*JZfO}#MVk)=Xvb38Uvt=ll*ypYg43JEl~cf~GNSb2@K>6IMu>Q;cTpdk#> zXeZ36vKL%(Lup=}e8?s<;p@i`tfM`Fv>|hZ9Q_b{-|7yn-lK)jvyWksCvi7S>M4Ao z*mx!B*oC}kE0}x>Kin`R|mTtVt%;jz(uB@y~Z! z$e-&)DDpKm;@SSMe?HP)Pk1?$$F5ISH2W7WRPN2AooQ=)+3;4FW_b}FDpFJ)&@K2o zt^|p}G((j)xZr$D1?F_69`wW^1zjHAfkr6Jh`#Gspq`SC@6=;Wb5kf#iBCs@Iqjsl zR|#jw#N*OWTbM5v1c%HRw4?dR8)K4%M}4DUv6XsZDaQrl%MrBCTsD@xP@df)%9w;p0j=^??2gW7q3UPFv z4=wV9`7#xuZ5!&3)9y*~(l2Zq-EZ?plLlYEN9;y7Z>*tw{B++!7ESXrT~~X9>pq@4u=KlE&8!DbqX@kYtkK8)pvzPi8Z8=l<|eMow&E`K1zQjYT@ zr5RJ-W{Q~q7v~{=^@L&hJhI+f;qZ_Mp-)X7R`0h){l0gCcAs4IXrj5?k6jD)-zr3$ zEA@-5M;2tD6tdPfn7XxZ!4i9hS2RChV4_jLwaUOzst@`f{2=_Ab_$agQ62BmHDUR4 z(n)_tdoK~`!bjU!JfnHvPoG1DgFm8RxR`ce96bbEzer?9JHRbvzpyPi9K0Frfh=1l z1aA*R#~f#PfhLvv?E}Hyx_N>k{z=r4w>~{P@Y@FavpfY^DpgKjmu<}QKZ33|NlcVnpu*5@(>eW zeC2%E1nRe(Iun2+;p5ph+Qn`;!_qHz`1kbPYO%j%yYR*I{cEvTnHx?`dn5X4wt5D3 z?HBLI|KegylbYm^oQv;N4F`{^Lu?>p(T7(4GYuT^aE&N@=EW zctM}xSD;LN{8_Qu1q-%j;0oX(e>dTU_ zzn264HkkGdzw_7}-w<@4P5V^Y$*iPRFy7zyM#I=} zcAIof>&W+R-{Zp~wEVGZk}ukRmNKI{AGqiE!R`8bwt%#xTF&R<5KVTWi-57Fd@ z&|ZJb^RUlrr>-s)&-O}{uE--k^OomT(<@NBi01tZ18}?H5gMXxaFgu+;=DO;q~LE* ziHS6mbA9F+VL8?0kCU(H?a{j6hW#zlJe6YGaK(b%uZm$t^D3Jc-w<9k7NGVJ)#z>{ z2>dV^x{tTRK4UMT)6t8#`;_*U_iq<4;XKr+KRfBq3}J3VHY_t8@E~f4;Lt4-51-S1 z^8QZ3=sjt8M6+wJLREzK=1G_{fp)YfePzarPT?cXsc4;j#3H&UV1}w2-0ce4?2tJ8 zBK?bBHD}nwhcP(0k7n|!qS>2UCvfU6X}i=MVVl&$@#DA;y85~>?a9Z{W4JHQ|JcJU z?vf7gSzk3xFc+(3Vk*-G=O+*VAYRgZAfm;+Qz3%USKCUMO(|S5MU7d{)`w2-*L|S#Q}C z!Eow3Y+h@P*ll^jkIvO-Tq;Gk;O|12XC<%JA;hJxpj?B^^NkrIN!T3>kNj$=dT z1Va|*2g5l7*vZ>R0ha)bNNdgJWcj0va3j47UMJTF)5$JSRlVG$!3)NO;VQ*sIPNCS z6~ax)^d$^l(a!1R0G#Qm$d&aY{${ct^qj(t8AW|IvLgo@a8J{15%K@k`Cm575JHC5 zV=npRzdMSAJDqAVDU9~2z9$Hp!LM*Dk9PO`4+;*uNl);#Ei!K!2^#_`h+mU-acAiX z8{6C=9!3W|j8POeyu6P6?P&(u_&L)VTtu&N!V0?rW|qSfUyT#4`K2;R#U+}1a)#CG za3uVec7q5RDUMkF2{MD*nN{weELf|o=eqPuKF>& z`{)OQYmNMJnq`s_o`ct(<=0ORfCAZyoFSh&-50KeZ3h(~)WaLE3ESas6}YqaJ+YeX z{?BMPXEgQ92~XGhA>3^x=tkS+0Ez`Z5D+=l-T=g6gVg&z$~m_t7K zrB1Xk=hjz@Bc2nV8;b;?^gW(w+Tx>@o^YqOnlwnsCj@?H3#5;+#?l_zE;raE>vD8E z=735*l?m@|A&KV8_nke)?%XQ|BR-k&t}e{bqX3QHoG`D~PPVc-pZfpKh&g4-Cce(W zohD~Q+?~cuRI+gRIMwhQ#xUlZ2IqWNII0a`tGXrQ>MYV0(eBE&&qzew7*DD>YcUlr zfwU{VaZO8!85qYPjkufFIe+7KeT;z5H6NsVSMw{ThGKM-FP3}W<9qib9>+94G~N^V z2+~sdMc9t&c7Pvf8-Q4{4J*xML4LlNMfQSC8Bo6C4NbBW(g$+}>J)1e{?n``au;bo zOG=kKYU_9*Hvk^Nu4vA}qqpgrsl)^w#h#`+1u zg0T(wFwKT$2fs7sLV5?pgJGI~fuvVo<3qX~0)`x8b=#gorGjQ);;fjgcLm};J0Se? zQkJl~6zabm;j28E1$4fSxo)&C(S9HsH?k1TwBymUzB4ICd)6$!2;S5 zo*Avge%{N3m9q;TFZ;p!FH3_(0@a!8Yj|Daz+6wW<5Nr@@r!g45v}5hPX|i)gWuz^ zv)+q1P8q+YCK`Uk?a+8Shi?@gfw4R2Y(GomBh^B&%#`M^uf_A;YQ%4M&<~2^L;0UK z1F@KV?}=gC`0?aF8ifFa)UV{X1^B{&>~Sw<^GoUeEFqlRmrUYs6Q}rW!gJ^@1HRt` z;({ivrdf6ReE1v}7@7pYz+8u4I>G_>)B;HVvR+o=Oz{F~aQqkNz2652@85jJhR?L~ z5}U>8YM|jEkBrJO4PCHlL{B)B<%$nduTmbHT z0M$sBfAK+pi8FN=VzG^QTKkN*Pp9ZvcCKM5F+!%vzn=F<`vQpcOV_QMl+_gleiH^(!IHB4YQ?L^epPz zF2A*$eO~K^y?VYFG-(O@O?@l%* zzyHJ&bdb7G->N%*l)sNRGig7wTQ~lqX(=Qf-LSE)3x8zZbr`;MgUq%oueYEOuTQ&U z_!xa&z3pW*n|h#dP;dU;?HrW1_C)4}f&7T6S@5K~aZsZH-{3;rkIFu1N*~VmbV@}( zTe`O%CGwR?iSn3gS;uC6heDj(_Au+pbl*hE?XsTzSjE~;(UPH5dVKnp<%jzM;5vp7L7v~PkRr#ztZ8+C{ zPSA3VlN}t^nj6^38Mk}-%9dFC!9v4Gr?^LbjW*TUvWlDvY@FeVoJd}_Yw;aut@Fa7q!O9`;2Y4O`tLJ? zCo)~CpNzKk!PzIIK|k#>zFPTW$!10VV9#9mCA4T*bmKe5WXrMo_Bn&!D@~Q#H8I*0 zZ=90b`K=|)Eg(j2$Ea^-wXP9zd!`^|9Th|5w#zjqc0@NwZlB-c&0f)Wy<}_vBGQA| zL^`LDMgA~v7sqx}za{*bKZ;rvvH`^56W-q+c7ab>5&fIm7WtuG_X$(G>xvKO{BW|@ zU3RlC^&&`rT=VLEHfp9FzNY%2X5SgM+20!DoBjU5`B!}#zD*wu?!sdyEP9+I>ldNI z1^y_7$6mH@gbFlSEy z9)(LtpH7hDkR9aAx6-~Sw73PAkN&#XMt9S`pKW8{%KmP_-xr+I$_t*B<39y(!9i9f!te#s6~ zes);qkJJM>%xd+~{8N@r!rhC8Wp3RE{4Ya1gQqoTwui=@4y zEvIDKG;8;W`0`#Fo|T!De#i5p9(Z`MNcPa{6U=FLr}fVVGNa-eEPLq<)h{1po1I>u z(`8@e{`xD+O@EBCLVw)+IE|0*Q6~R4s`d2ekM_SVx2sLlc@GH_?LEc3e!mNHJ6`)G z|0Ok3ZYR7}W9Qx`%WdV9QEXjSg4_;vGGhulBF?MKJz4$FF!}R?fe|ckhlq2Hbt0=; zDdKFkJe3`NDE3<$*JQEZSH*toin4rmp7=Ie^1IQ6ci6>C#Pv&eVwc2P_Rkz{2BpTe0 z>(m2v$d*|@P~~n|gRTWtAGFOXxrxp-qCUw4o8bW_zOIWrb|^ z+ON1h)*BDPKFa*3)}m;kFZy{a@}Xzmpdrnlcvn{P3U{B#KmVf3G5oJ}cjfj;^%7o| zS1h+}r+wyUt>xwR^>b>h>SM0letbrsg^d=^^9j-^zT7CD=khB{SWH*ZZ#1UZu*p)< zZ>$asWPMCTzcKt!0`mzwE`Oha=~=9YS)km`(!R*L<%;L|ePuqoN%>6+wgwjk*1b@~ zIdxD8D~%Cz?QQwh>`9GS-*`0aE$ebb%)7e|f5P0~iS-TbUeDNRZ*hKOI?gd0;$v)i z&;R;oW79Ug@e6g%D#8hapPZK^YPaFKgZQL6X2=$Xx8|A@NbflCl5F=B1Z^>={?+R?GU6I`G9od$Zgyzfb^|G$aA*n?dAONzy{n%fNGjeYKb^!OWfEQ+JkC&&ygkmY~U5q zZ!`pjGW&<3-?*!LlF25Eb)-#~GngICCbYahtTLVH5cf=row+oT^fb4GogYxo!nj(ty;y+@4y69tk-xIv?OJi~uKHnx=|bLb$anesznU4x zcj)y>Ztu`7;oBxu$nEW~Kk>UR-IUuFOO)Bib5xI_<6huu@kliR(|cV?c$&dKfF zpY+(*#&o%zGN=cu9hM}wJGJk_rk2Lb?PF($upu>3ayy^$qp7n+oL|~5W*?r5{&}6# zc2@I1#Ceey^`i%h=Q(4RH`CZ7o@c8!LF^mNhPQm4k$sQTeuQ|oCzKyyPXC9q|4R?{ z+*rifN!ywYu@G@Kx#P+fUJ-F#+scF;4*Fl5*Yr~6ANN(~z7BN4@gA3CQ+ud!I~KV> z<=918S7TMqf|i60=qsM* zz_`UMaEjRWOUc`B`=6u$jW^7xY_t@Hw^<4eGID2|4@xyzmbIXZGpmD}USzfjp z*Pm*VQSUFxR+zWp4yw6h#I)P8(Ti2N!tzr9u--cqj{c+fL{*I^UlP{lCUv$1o2X#HBbzQ{SYkL7dgZLj>Uh`kSu{>3QSDdKMWokG< zO(j=Wv0a_ZKI%eTG#6x9GBwU%5A`f+OJw=0)VRULUhqkJCwp~Xjccy+gVwdN{8G|B zZh24B>F)gHk+t&omu-#Z`TWOn`(59Q{H40va@%rKDX(&&NN(>QRm~5aBl_f#jbHec zy65H3+Zq1lFW=9Q+baE3*h6Wu+?I~kVn>Tk%I)zv9oa+ASh+o^gFZ`$JR!GjEc&r~ zrD9xHx@tJH>muSDq&ATaj}dV`$8&7xaS`XG`qP*%@e;Ru{iO(u!d;JSr+Bkt2H*+LU7?)<(0 z+>?yvD>wa-zvn@78-C4sF~<0^G>C6-6z{$_=Mwp~A4Q)GolAU5y_k=D?pnehyLD0g z%x#|X2kXVW&(ZxOKU-b&$+ttA`M6f1Pu@_W!lnd^G4ryjw(L30Cbj&#hQ@bd3RPmR z{au50V2wqbi+>Gd*B^-fxhi`EdzCHXEO|7V+0}_SPpKKo8l)o5aZ|dpP@3^dYZa#JPj?3xB(}i1W!4cldrMM4b8T6#h5uCbqo(`TAV`IPDI$*bg60;QM6%?>v8| zX_M@onL0O?_ybdVX2>dEXmC^OsNQ}nT^66N$(>y60mEBN_Mt;tZn+KZm(FOCDcNeu z&+w9>fqa2kll=XC8@KVV|GtvjZ-%<@$*u0o?d);K`Hd;p5|4s z3s(8#|L}7jh&XT6eZjw)E8;9kFXBt@ia48E$MgLuc4&G1POSt!;k}4+w_XeQ)@=^T zpa1tfw`;DK{hF@M8Eey?qrqv}_@kQKmI1CX$~h_9FrY2xSW3IluIFVjsXE-yeZFW| z@=dmaUf=Tm^XK*8$MkEEzvp<%)x3d{c=sjMTk^jr-jzS!2XDFCoPHKtFpzo zqKj54Z#4Ow{CU~%%lvL#(O2w$Udq4wES}*GbuajZ(W0;LnE#Cry)XKTHpYr<`X13I zCk#?&zDvZIx#*P+!&VXJjMuuXe~gIpg=t+_hJsk%P*?22a{h1TImxI4d!Z)YiK_}V zSWj;e=f7_iSY&H2`Dg2SqmJK3`B}@qH!t@A|D~&#r|3y9@Y7d`I6D8*)O;Mi}U(^Pi5XlZMdD~j?hc?ll^I{!IgfdJf)SZ%q&)ubEJN~b9-Oe+-GgM zRX=GT$?k%TxvO&@==V;F{v^BAQ^dKgmL~tw^SS)}*RGwyuQRYOHjK7xhu(p2#bm(Ne+k86l$xOmA~zUcq*>m7|e z&)JCBTK>GjmkblJot1TuuN^01+pk>(zr#U1!>1C<`0=g9GyFqR!uP)=p5gKRiulW! zBDSlYFY(=o=d}gTui+W|?VV!$tdNF@JEM<=lNvwZoU`spR~MQVOC#$ zzLCA$zJ2G5EcLyG-2N}l`?Rmf_T;N@{$Y+-l(Z$Z^)+bxQW`_z(Ge2ASu}y5AJf^MkcYe6)*ro~Kl4@o^gB zc^*EgE5C4(c%FNu_vd#Ir$@`@{9-nSUm=J%M;A`xw+%Qgf4=|365gM*R9aq>z-{8~ z^+jJ{$Q|S-uM=^0)O6xiszc6cl?eh`smTfXtd$5wQ2(3wEU@p@%LAQWTUfO+W_wgjAKlCiHWPW~k4w1f*&@$#-Ztkr>bqlfN^o5LEh5u@BN;6|uB=Zwg+p|_rDfxF1_g{p$Wx)0)<+-c&1!aK#`n$N66--5v3 zV*FNlTHho+TAYXVZ|9rbeJ9QpAxrv64wj1ZaNn-GC8k|Pp6B4GNNbMw4R$?PzZ z=S=tWl9SZ0*T7-ikZTglB_hw#Uza5o%S4`A9LbPq<%>M~`VD0E<%>N3W9KKSrSrZG z|MqX5k1lfOu1mDo6D^&g_<31%eu56$rX|I7^E;?w({f$7Ty@$ zURN?`ZDV$a6V)25ewn-p|DoY|Ly?PQE!D>xKEKl*UQ$2smIfQg{*m0^OO>x|2Mk>}W!0`pQ3_a-F<$;`&tBG0Q% z1u@g8pS0ooPuEg1dI2KOr~Iv%59>vq?_XQPl&uwccKtJ+saJ_SPf3Yla;!z3^=G9> zmQW4r|MMI_eJO`yT5MHo(!lLvsnQ*(!~W8yJkl{!lOMZu*iYr|X!lqy>71s+YIUVP zz%Dl=1AQB@DZTxmux!C}&iRSg^xf{1O=NzDztG@&XEre14JtJJw}|s(=FctG{9Rr0 zd^hOBY4E|47{>Iy$aAYHIn1@+BG2{DN|{AZlQs7YeqX~JUn9oMdJ7xD-Y80Q{bG|2 z7_>p;`Ec`os2Cyg{A$k_+#?^(hG(>Nn}B-yZv(#fZ76m;6~}OFQhV50i#)scc)~oJ zEb=^S#R=wIh{$u3au4Qdw8-lg#|Lzwz(!tbcSM$2`|!4^iJmjZbi4i~c%n`Zrg^_uDGT8mz-UKTG=KJ6}m! zjnQF8)_9>{>|myf_S!>B4#4Qra;A>^g;(^q(AJa5411~J*|m8z6ICzrtbUrqcn`R& z;aqa4oH_A9Ld+3)W2Lq{n{eWA;#lS_is+)^0eoS z*1vm`LbV(7CtBp${!>S0VUEbNcJ~^|B3F^;g+W!4y`&4*@R`#(ot3P;AoBdcBbza6 zBJwP;4wMAb8TW>J{^mL0(P!0xOImF6w$8ZX5NgusqBh&~l`EthE=r~y)@EmflGkEr ze`fDCZMG+!7dv);1LKmR&E{=7fPd~DWY(qq*6^I;oyzQRtk&>+Zb&gR?ZIsgeqa8a zDS9vRyz7h>XiKj74$f~{;oX274Q?{c0Fh5bo?H13LbZp;b3oVxoGll5{%6%R==+L1 zC#26u`)eZ4uSTvxM5@U1N=Hk4Bn`2KXSC$^!=$}9Z`kNiUDRFVd3kT@6&@gt;jHO% zVVfm#`~6A|^Ln6&J)_%kyt9|)bNp=gbDnF&__=S3VwKZ9k>|PRn-<=DCi2{MULsTR zQJgDUZ`>*g9{9gJ-)16J6K?#%XwqY?zqv|M>h=dm3aA$=s|7Qu^fv~vq*tr6luzf}H}n~RgTF3oc(#EN zY!0e5_?pig7~VOn;XJneW}F`;^1SJl6UqlCYrf~%*M2A_@4SZRx^nC&7~KdB&J9Y$ z=?UWAB*{M=hEg$>`w*Llx$ng>ti4gdv3}y(H{YcQn*?zTPhXgU8H>bx(If|ZJg*RW zJ~Z+?v(!(-eWThIE~UC$!`~fzzd7eQNF2{+O0!iKkHqoZd}RyO;eYiC`W*;lp3ph< zhWp!SPn4L4|1ZxE?u43bIQJZ$Tgi*fr8%>4)Jt4wLi+00b}^ggy`bJA^4m*JU|f1W zCyfr$`@VRSQPw_%8|7KPJkY|J7EiHW>5IaW&bS=@1W%|geCW&wY*trjc%GLq9XSt* zHTYx5D$<$eG&~>?#5y2eI{Q>`p!zHL@XK;qxt^Jdu3ru zoES4-J;;-`kT{0*6H0JlusBzAj;cVRuE=w%9}h5Ko;Zd>%b%h9dy(57jyG_Nyb>BX z`JEj`o+~1r(L@VzEB?j$XHEM4Ta%6J)PgI8$n)-%xvK5&M4nw9w^ptCBhDM$2FaOy z#UjsU=qdR@{h|$@|Mz%4TNE$(rhN;qN$<;~l3|!56=)aef@T)M%$EsVl1`!XE%^~aTk zTd)rk!7=hvVDH9jc)nc5!NxvHgKZ99 z!^1w|8ti$x3N22AXr5){fS0(gCC(KO%RgW{d1Ev@IhtrB@2Y>=bUZY0hdZ_l?< zeQYMq8_mN^nWmRTo^OwAEU6;x>W0t!o976(uFT#^moS4g1U6RgWrlw(MoB9d%-)&C zSi}`$qMs|0-alm$vM#}|pAx$^w8T8`i+D=?-W%cuBY9*I_MV`#VO?jy{`7gwIP8t; zf(`g(aSm?^eX+yA8L#LaHdyEnf6}vTMCURZIKPx0iAJ?&G+1ZxDLB`pXs|(rn)(ip zYdF_o%5h*pqz0e){Sfj2bZ&+IZKvaJvAQ%^gYSH-!;7`zzR$c$n;lB}Fb&Umps60a ziu^GfaK@FUY_nvM!*iD#u@nC7Afd?e>Wp(HA4&W0|MUF)_d4dRfnehi0xmz6MzACE!vRamyp1D4Yk zBDJglpIU6f>_83Y>cM*K z?QQ-VykT53w%uKkXXX4B?2UMl!>nyhS)*U#x>ow?I_{1a`D{B-isvTcJuP>hk$4N@ z_0_4`oa&6obCzG0N?$7SygI6*>eEPZJVzY%mE5Tk$Mf~h7A6sA|CeW3t3aluTLG4u zDG+opis7HBaN{Ov8ReHSW$if>PIbYhd0Kc{sKP&V9%qcHA$g>!;3y&e`froS8>bLV zl{?3*6|XpGc2<>4}o?a%>7;M6t`=Y0GzvnCNw24vzj z_0L<{=irZDiUxPHyo7Ikh-bQ9alHZuNc*S(-}?R(-fhD)_|dfY`13wkgR>ueM`e7V z2FGvFW=G_b?kL@VHM23>f_l0d@N8qMC%>ofL3r@`Mr@b9UZ^JAJNz1Ss1Epo@ZnKY z&~KYJo)9k9J0rRGlQcXCKN_ILm5>H$!}v6No})TO=e-*6!ixT?8KmXbfIr{1D11rh zY#Ols?$Z40?*Gg4=*!2La*KR0;p7)n6vW7j3el&pBVvlunHJ4eFu3cC;HbOIq8o)6 zz0MWmXXxOBv=9$!=xmNjSL~D*AkdRMlafcF+%X@MCz8+67E>hB843``g84d3{hEu9 zD@mL93u*m(NYl2-M(=m3Q!*dSgG(_1W+4ql@hU4PNK-2&CYz!EL%$ zp{<-el<1zqp(o&yBx1wOhDeI>*8E+US^Fh>JJ8ssdlt!Fs$Rb)KUKmuy0NPMTdBW} zaOp^GRS5CifCnWcsJuxZt^s3CJL7G1&aVOgJwHqTBr)?{bFpx^9Nv~*O#h|@IC`42 zLl+)q?r$r=)K#QuHaUZFnN)!J-Cbe1^*U31B_DZow!Np(7iNKBKAKC&I|nUbKPC^~ ztH~$kWe+G8l|BCRS zM)M`pT8j8ulWf)LhaULVaF5p(RqP@qeiKeuIJFb()At{ z%{)Ari)pLfu&PH66E`3isqd9opnaV=vN8uf4|&iT|F?`J@GR*gdBIoO7!m(uWAZ*9 z>f3LJDn&LNst@4awm#Swm!;w4+Rm}qGA>PnXMLXrNou@?pIaLj!)RTUhM(+3o3Np4 zxQ3qrWB21SPu`*QEF(!zaQnhTnrF|9p!aGu#Ts<|)h%x*8+v2uU7k0S&UU-|K!aOqmz@XGurX3G-{sn0Pv)oqB|{bn;g-1I}fmM^p02li4$Ec4Q;KpFG?zNhaR5Jb(#Bm5gE88R(I& z*;(NuGdnI#!`tSYx{!BH(C{{BYCCMrkJ5~dZ`s|^bxXL0w=wGn;r@>h4R0}DMkAE! zCJnsJRTyCe^%XYoc0EK23H3HNC459W19#~RcLQ%*%%#})i8Rs)f3@rg`4=y=BWyn? zfH_27ZJh`&eAz`(L;h?AgfA;tRW#MDx)Zj#`=#(kHND4#>#H0JEU8zn58<@|LEN(8 z4(LmGy}UCgJd|S~;lFt{wk%^t^f(QjjpQ$oyNF`B46KPE&(VO{W}q7h^8DFZ7bT~WKS8S^tQ14T`gxRTY0i5Q!K3-;u7w`?G@Iw~DnZOAWm zmN64!n2rn@H``O^GfS@0d7s}@H-EF8`6uEurUv;TY@j<+*!(24>AQ{A4P{FF63~cn zn&Wpb~CYdAdHyNGdJ7pmbfz4uL~zU+{O!=}R?GZwc=^Njv&#r-$T zwGn=rF}C&U7smY_Y1Gs8M_d14jt=!k7s5>{&oW=gU#x+{g1tkSt)`@fPS`$Zs)_Mx z(myAx9yCL>ZLkN16Yg%osu~}3!zjWNElpHaL&&p~aJ%yrTu(ZmI-YR1trs|3(&#cG z{5Q`wnua?Q73lByT9VuQBnn8c)ulW{lJGJOzM0Ml+c{s7 zOJ~r0y11g?NpH!sUMJCF8~NnTX(1^qN<&-PryH(sCaG9M`wlvPz36ji$*rHM*hux< zu*%Vr9$Be$F3lS$9!n%6l2S29`vA^|x=R{2PJ?L|I_qSgAh|X=QNv+%VTt60IvUOB zJHHJ4Br%zTKRe_K^J0>3Z499!&X!AkCNz_%VvH936m;bbZJCsZ2jQYuuIa zq6-U|Kka-qe4=_bvz*3l!#Hervja1Uaz}#*Cl^kWJa6l*;V><&nX2bk(oLc3JueW9Sewc{BLMQmOlNK&DOTq+4>c>0N zQ}s@nggYs&STf5>bzpN6WEE~O`xBXn%Yt8PBfw!W$w);0;#a}JQl!DZF6$BCLT8Qo8(p3RJk80+< znbpxMI=HTR$A9(rQ}sF$%6TsFvE2_ATM>QGZnGq3$pzT-m2T_m0jm z%_BU@)rPZr?1;sLTOXRO&KP2kC4_%ugs2k_*<%&qzj;2r^*6J1dL+&V+2eW}DI<&_ z9a_?SU_%c|tVTz}>ahZgTg)w}S4Y9xhcu1ftx%2L7L6X%!>8WNscyX>4X6S-(;B12 zxp$1gHqsV|;0?Kf{bI0*ykNsZ$8lvHVz8ZbDML?~a^~7GsF#vAqS10Ls96kZi#rWZSb$RB21%xG+W^x5i6ax`%+RceGDRaSE!fV|MxJ*;hM5pz$|eP29q9~oIcLDRh6f?-lQVYZvs~80 zAS_BFZQElTxbAI&F~`ys%NM$E>rH}THqH${9Q`?!buc`rA7VwLaL)I4FvhJRef+98 z?*97_^dIGkC*xANrzVHdyp(i7e`aule2zdtwY}K7vmCE=1pVk)8sE?3HVg{Zy!&07 z=5vqh12l7~Ff5l#AWg)vbkE%W8QiG_RF@!}*C&BnN*cpc39qUR;o6_~*1Y2-86I4R zd0v_^IrE@1S2)K*!{_N9KHRx7I`>NV^RG^D;a$i#hp^%APu!&(Ijjf=;)wd>c54mR ziFv1HzU+sbuK&&RwN;a_?79oKUbchVt^nrROwtj_CO^pEpCn6Ok+%i;WsGU^*rbX) zM!U|FL!HuE)jf&4M8}bT=*|pPm;uF>q$#%ct{zuHy0Uzc18luUaayFYP$zf9-qa=B zA8k)W^>>28R>rlP;fV`sC+s=t#|0#K;+MBGvR57B45oSE+zuCP@})B}bau^nn=2d_ zWpN|?$s?ZnqZ;LLTsy4;I7&T*vc;D;5)MYf7SbqaTFO=bqJ8{9ntumh=j^`)U;;g3 z&ahH$@*RK8JkY_Qh}%8bPcsh~c;|4I{=S$?_jn+Y%W3PQ8LPEV!nwM(lp~<)w*)%r zcEKGx3D1j&<2DX*gEe7;%|+bZ3VII0x~H3}r!g|P5;k;=RbMRF4>!Whf?D;Eg?r&c z_-~%$y3a)TO7UCcst0=d6(`?ml@yH*k1vl$N>~X_f>M{_S*By=DA993s5&Nu|2guU!Zu{5Q`> z_Rhd?BU|((uk`!#BAHT7fkV^nQL?BD^MXFJ!xQq}`WY;#TRZb7|(jA>Plx~4Azi-;}m_)n)a|SE-Ii@7;xji)4ns9&NF@(!nM;OU1#b$kq$TF zCJ%5&qL~XE!JPs00;&*xn9 zT@gU|{Z>1!`~aO3Bz$gOJol&67SRpYhwfLOA#w)?b$t<%SMhA*Vx0jGF3A2wIkk{%FyTaddVLjC%8VA!OFFT zxRVm@_80+VPeLJI7ZEC#`Z9<-ryR%h7tsnY-_QJtWyy{mq>6QQNPGPWxYRInuSOT<@?bmi}o`Lj{E(2JGSY0qHVk9Di_&$I91sEhv$C9=6KS| z7W4Ppp^1Jxb7Tc+p$)P}#+?DoVA6dVm2Z#s+mB0H@1`-iMuxMmcS`CSyJE4H9QRs| zlgyv(iW$V)$xlrsW$vyx5lK2Tb4pD*(EHty@`EvvhfNmK_>8$iex`xuCVlCwz^%)a zXEAwc{IHnxEUU<~xW19Gt{vsUSo)32O$y4%OMP2=@?vQ5t6+Wtd9LL;VtJd{g>9O8 z!MwK%9;^rFlXT|J)kEUmn!K54KQp9Cms#uUj-})Uvbg;QW`d(D2J^lc zb~=OU9^`o{@^l>6))osD6#xAf5uL7c1V^ZR- z|M2{I=X{J=Mmi9tVNP57dPHaeKP;|XC&=t}&U?1p~`57ke@Z&T7zBizhJi~V`W z0s0CbH2Pq~_M>;Y3*oeR9_-Cp8w?~o{Anh8On*PdH{h4Or9pkIapTu<7goIcEa`H1;7O)vp$kVf*18I$3C!aLR zuO)w!WADymxJ7vmX19Vg*V18eNr_=E73l0!ghdoPcW&l@=07X3q@O#|dN`os?t41F ze#Ign76kj`-^-7cP(&)QFa%$! z3nd0xD4>e!#rE}3Vo3q%=$4OV<(W$CA)WJzD>K+z_mp@?dYI3KtYA0ky2G7%9j0&H z#ZI9;SCc*t@bhtDedoH9o`eGmoP62sygN40_+RlYgf*ox|C!GC?|mH2I$L-liZp*h zx1_QI61FoGsclbD6VB1t4z+|dFIqs=oWuz-pK^$I|zh;Xj`r=sw zw*Soz9OR9Ugg1_BB5irm1AhpAuWv2goJP4Z;%)lou2KbQS9B+A+PIJO)_NC=B3a{-Hsr=rwxo}*kdNes)en|&zyKp z71GHM#syDK_dg{T81T=xtiSz94NRv*)B2^s<=kH_#nnV+p?mC9DN>=`#NOuOm|gJK=274fNBEQ{S1=_2dNDTu>YwjHF zm3Fp~MkRSrKY}x9{&$tyB$L1VdRM%APQI>ty|8Vf5;jf9SDN(Bn^OMP!DpOwWFK!F zr*|V@1fFin4!SR!}09EW=d3&J{TL9%`T>Kelu1<`gj-F7mJnfs#G9bc84w5OEKFc z@^n94%{HSkZ&0W}@Sr-jJVJ@*#}w$Yq_I?yMKSUL1xA{+kQ(1m;r z#3@j;x|_7`T6a{F-lLsWAL&inpXQMUOWl|uQmb{I$ciQH?vx4A{)L`29!Q75X^J!} z)f20Rx#R4D+0q}IJ+YH|2n?f^N`1F^U^nTjB&KbY&Zn5MCG|4Cf3{t^Kg1P#D89TN zyIZOxf7_%7u9&*pUiyx-`hHOzYWVb{Quk-p2w(PJpT~&iDWs!KW1O|e%j`2KxcsbAgjYMKIGu4?vZ4<+*K6ma$^V;xLsuAuR0x8xx^ zf_UzITY=xx-?FyhO1QqI_0;G)JBG${s~^PqB^~KwTBp=KNq2XKzH}eu0@qlO?(xPp z((zN>vCM_`m7NWwrWWoP5$}M+U;U)dY~As4f+I#okCL7l;sGwt87&W+NcAE-FtrE8 zpdV&R{Zl+JtQDQ(Te3jvzMJO%i*9KDexPEdS zt7s4K$-+k3@x3F)*Eo>QjI;Fp6Y^gjY==1aaOn&3qhBleuMcm6%SjZsvB4P=@_seW zMthnMejcZoxos_6+BhIkm%Nk5^kYqDI--894Bd~;W$XL9;mkuB+>h>L3mx3hmeyUb z-EOQUoka>Sqd26=A=aB>5~Ilq>^l_2E}5c4nS%mu3)5J^UWvuDAHP1nfK|pT(Y2cc zBxzUJ-V~o$k^Z?sQ5C!6DUDUCoeewphSmP2#Iqd^aNqKWHPLcM1Ys|arc#NHJECWk z2JhFl(m8}PM>!z$RyV1SwmWW(c0kra@?Ue znsmtwW=QQw=VpP7{9l9SN;gw)?9O+jQD(eMI`J*dU0-RPRc(+SC~-yp9A{j}*)AQS z=R#Us^qDL7Nqbq-dozT*P!kl=bsqL8U1p7#h+ydf@}r+O;lDh)Y)r>BxedA-k*-=v z7P`shco<=i8m;$8G;zSwpY}NQs0X{g4fQLLu3fIa8Ed=71#Q!1_!zOB{kqqUen&al z9d%}Vog+Q$1Uaq;c(P9@M`1*3;>y?nHh2~FAOz97zbuN~<4bjbd*r8iErV@L+8)I% zX@1^*fz={!^pFk?Sn70}Rh*)Ept%DE9jam5XH(orG5t8pAMDTqB^J_req38m`m<08 z;Ujt0SGJP2r#;HuI|_`e>@3|u_q3w@`#r7RQUmg~%Sxo$kkt@r5Pjw+`VMW@j+5SR zO?r6b7Z4dQkq(~Yj$V#V(5{#+eYDse>=I{;E3%M2idG_ihcjv|7fb7plOMgEBmC-C zO9d_J`185<7U+?Z=+uKGHX9_d)Oae|f(1it2KwZP0a+ zJ#HnWBbaL9-$U(TTlx%r%^k4!qdlsfIA0^hY$*eBb_ zE2&h0<`h@>?N*|W#<_OCt88x@C2pTr;9KmA%E7lzt~oU z<7j@qXr(93lv502N!+@%lFpZrH~nnV;jHTtB`Q5aqGAy|l;lF?y^Oo!c^{7%#l#K=w+3BU0VSNBHtob~oia zcV3a9;=~Hpn0l9r$H)RcvBL@9RML7drI0;Dze_2_DjOGGWw#Df!f&1eX3OuhhNK53>!+al^;>rG z3MH<-kz?QYpDa)7=2^-GC(hB81{Wz|PkF74_06T%Te#zbGhv!r2CsI<)<8KN`gfLQ zU8H=}Km{%j?VzX{SlG>_JK*>ury|H*+z?$f4o)K~eh}Y#r)|?ZagVo7swW$aKW#edJL-zaRU& zw-fAhWY~RYJloWld@mczvH7=@6&^Zc>pIGH^jX9XTi{B5P;#`ca%8RYsCTSXPMXVy z*j+T9W8TZLbXP2EnW2P74dD-`*`0rs=tX;x7eTp{S1;MgR^*KkOIqt?|FDtNua!(%z9%o$vPb^$fIt1M z9l}pGmSQ$@dj)ETYDtI9pr6HLfP*MFt2y84hqd}b?6Xsj0iR&Q6S4~dk!{(9bl zH3)Xc5f_^447}NnD?Fe>@nOE!A@+PLPuL!kBWZOwo52$%KKq-+vNzXxVKwcEI%g%b z_o#k8iTKx(onkBQQSa6h;xIpxomN6#>UDA?ughgUPI=)>7X^MUDrEC~z0i;5t|>d! zY&O*g-WMxy)3ZQb#VW6#oMX!=Uzc;2{6`Fm*?YH@nA_I@(~NJiaipz&wN{42 z=8st`ioss{*g>Kw4bmycHXP_8R|-(ffD8vWN-x+sOm=>_EL zBC$t!dL@>x3_&dEf*o%B6@@Ru@%|}!)_8n@gL5c8k0B3n<6k&+D2V)9$tNhWG3#X? z2sTTG@o6nsy&B3revx5#bVv5fDSs3b&&{s%VDFJe+FNru9&H}Pt|#AzPEgv{iEWtP6&vBpk&Q$K>A#LytCx(IJ}pNPa}&t4%OE zT$CfLJ|2&a58?bJ8j}N3F=R;qPSV`6F(dme?$7W+pFeVhbi9aBCA9DEL*6cz&*K(xTeVVwR?9gAeDlJ` zQwr3y&Vge~$_;)}p!Cg2CN6DL&; zL)3Td!ceG98k@oW)xo1e(O-w+wDjKU@0LMmq^rQevpv)Wx`C+rDMxvZq58o`f9SuH zW6AAqq$}tLj^>SmMuzHGXJ1&-IA0ptU2Q=A9gnDXAj#~j9zwN%!~i)KRgF|<=y_p~ zQjQ4$)6@&vds0o3-meZD)YF=J;L8~~-Z$T)9!cx+TSqy9ZD*-(jdek<<+OjR=%yY? zzwMwJJES*z%zc0@+Pm2zZSY8L`@((LDYe0r5&dxC?hcIB|8Jf@dVC!7+~y#HddYC6 zV2HZN|0uT3m*Mopc(rMHJdV&FaOcz)>Z#vO;#nSPZl7(<=l3{^_B4i_PY>afW~va@ zN)8vv6uz0^Ie1T&!_;Lu-!8QP25ZSP=&^*i9h8B4R5z)wn#gzhoQ#&9G=@FK^5q-i zu$KB%&&?mj8#a$bX{a3A=Z)ZJ#D_sib9L_W;r#D!A^7Mfr#;Sa-s|BZ^rJba{pboAI4Y=?rV0 zEtYkc@*@Vy(dMBIW(7>*=YO$5yS6suQ!lf2^_e*Kf7$q@9ou=YQwxHZ6W5 zX+}MPAv6yE+&`*5ZxMrDv<4mP*@X9eb^@DDlV8}IiTpS6eSUL8jtd?e`J;JxI7Rbe zqaPmp#>qTPJ17uad6<8>`~r?nQXu(hG(R}|94=68=I7NIURqm#3ew#jLz>S8IT`Tw zqg<1B2!F=w1dM1OanwGL@AM!J%}!I@Fx#Jhy)F{A`3gKX^y8ywu3>54A*3AOSJjgr zO*!qsSNZWRE*!%8C*;T1?jUce9RL%WZ;ze`rtsyI2kS|5@{Eni z`~}j?Xwp#zc6kDCPV>_dEsDpw#qpaHY;otUEmp3N6yLsa<1d?@N8)`2`tFP3jb~j( zBIPF?cjfRsdzHeyme!Xk#k_N2DVkGm(YJ4%wO6S zhAdE@v41k}mL3A{Xh+nxPT@zpAA%2gQhO{s$)7!U5dZ9ULX5>3{@W_jXH_}jgqx+`?}EiC)yhX zJKyHru2LPJJV3t}+~zAcIl!3mUBNpl_zlnOa8^NU#GM;_yS7#oAILD-THv3C?82*E z_W$9zTJNy>3&k7{c?C{Sn!zt0R*HbD3cP%Ch(GoG4u(@c?faxW{=>jWm`L0jPr1hr z+VUJuU&$vWxt3qP<|S-sFB~KM;k({@jO~V$TfX>~QlDMw*(gSSgRiyd+Y?5w=Nca)t%ZHxo*()0K>VM%a!;eeT{biUiwSTvy; z#-FAsyy3G5wE0BOdpdy+E(pVsyG{taf1JNQG?Z#K&PY5S&#%-E!V0R-e)yThmzf6O zM{ieH2q*dZcl_X&O1_)}&+_x!d@+>r>06-YqwBpeqn#VLe#N{E)p0sBqde03a^B#& z61RH0p>XeAJ|f2z3*VDA__s&=rSnvSUPKz~>KD9MoeYbeT_Ag1!{5!Z#sh^jY_~t= zSDoLDEE*es&l}@r{!o`@-$cK!RD0^}!>0s4#Tx?!Hg`VHpU->?H>!>HT=SWKTlX0Q zX>a@3td(H;rVjA|)F)uwRale!75(yP|GV2ju#mjNWBRQvKXeer6g@^;Z3iTO(H9b$ z-NXUnU-tYb?^baUiM0ROoAi?JQCf)YTO1JZ=qCSmXBH|W9Y}NVJa4k{B#Qpf^>NvJ z`N|~ZM>>)Z$_c)9N*wM-IDt7F&3C;TiDONuzo&N?zv*c>T2n9boC`sG()z;~`;RMj zrv~sjlY()W`Vv0hJIFs>5C~_g-@KIv@_ym|aJxxo$DBg=U8Hl;b&m&PrXJ-paITc zl)jr^aD!@nl-vI?(S~=IcxrG~fD_+%H07%4dS5RO-pE3%p_rWX=ilCO(pZ%#YqFovA*psWM3?SQ^R?I+wBFr5CKC{X>UKYiBQ!k59ZXx*kP~LzF6W!PO@x#*|J^R~e7Jz0v&S2eQ{DI(w+?AI`DNw6Km6ja!9x|+d`W*_ z4PM-04__ZG@;t462k+-4@@!_cjo*4yX;)2!Ju!`0^G$Sy#b&e6 zqNg6aAfMt=!`;G~sXAuYIpNm1KYZnlG*n%3 zMoQXi-s)x&T(n)Ws{Sr-y74&5saAKk&1L@Du4trFu6Yg3?b}*MkdKN7Y!0OGrv1ZV z*WDY^x+q?!BvkY4Uv7l)UC2AHVeExJ4&v9*d4dLI9%j;l&v@as7U0wQ8Rbm zm3o~T?s+;{#@jR}&m6*S687@XssF735Abp4OKHE`fako<<?v$Ph@zN^M9$~`uoxJD>FeHV^(3giwoqx-L7>{7}x&YmQ^ zUwaP6Us63nI!G|+nUBbHM_g@WKz=Tn_(J^;!OE6`^RAN!+313~;W~n)O){pQAz#8@ zANlh-@mOU{`Ma`5{3pafLiN7Uy-N92Z6h(y+zTfTsd#<;qnc-Lp`Xp4Oc!|`9+k## zNELbJxOjf(C6VXxMUi~xp(4*ct{mY%y%c$FcPo%@Px?p=9DZKl!G}AFJg3fb;pZ(8 zc}|-i$om`=d48KpI_I+g<+<7>hWxW$;4wH* z{93ZsSPP9F-9-wmiG@Sg2-Qhf5u>0!#?5BJ`E%#cmh#%YvnL7bBJ$xzS|MG>4Hk?p zWWq4V8G3o$gyLqWu%7y#S~O`RywN!UH)}U6VRePih4Gj*&K)P!wfxXgvB)ExJ-roA z_(P;s<#*B>AIxv^duzir{8%Iw^Z)pXJog{Z@h_}Jo_!W(@%Hf|&+DbB{Kau1&ygFB z^GyxBH2=2o`7rW>5P2Sz>CN|~ntlW4IaA#Ek#t_C0oT6?!^;k!W z8?T$k2+^TB?3rpgdL>2()70M(NV(!R#X&;A1xXwXHDDHv!7=9(X-MSMci{2Se&*JaXX+A9p%R^Xz<^YCie8$g_=p6(6x& zKUqm&9 z2FyAu`D;}o&vnu$eqd*c1?YOsZY|+%%K!2l;dh=_t$u+uIrbPmdW+VAo)E@7`-bdg zRO{D?7Jjd(f!-zZ^&TB4T$x!(+6@k9`_xTPPPv9)iY*tI>=v4Po<}X!ClaqL7oJ!Z zAj97o)}u{@tn*no@|k+oZch@n)}MmGMmHqR9wNj`Q=mgVWL=jUlJ`?08V&Hoz+bI| z?2mDHKzok`KID-dDDvECZ5`hzN#waEyM|BcF7oW4uH=>4BG0)^O88+8BG0MI3i+UY zBF`7XPVw_XM4l(dgz_76MV@a-1>fBL1zIGKx8qY*=-KNVK6jSEe5q3KU!cvV9F*bh$7tbacU|@s@!V3KEu@^# zV>2ml?BrJSsDJGF7PYtikZd)YH=an4qhy#0c8=rJwc_ zrUhKXf~iy|9_k|et~igy-cA_EZ5O&!6j1()`kcou6N=hq!`#&sW{qbGpKVXWtP%C? z9iJeK{wD?Ibbf!{rvZXTw`#(H}fx6i984WjO0%p5qW-<+(8Ju_`f`#9b3(N&Uy*?5qks`%oRQ#{)SF% zWbhv4FPOP%vj_cT=v164+?uJ&7E;f%W3%(Z=gWHR5Dz&Pce^aO-_T(_zROY3`GVj( zq7K>C)IV*WBXr2BL6dswZ+V*_l&dRomG*k;eGdzn<<}4%?ua?deS{3d3)tSz899ay zf~P?tX&6v_xpJ#;eoZ!d|8~XoxJAN&Kc~^`81XEbBAkgx#Z@}X_tRjspbklb4V?o$ z6V+Q-TYOx@k4Jb%p>T@Gb3f~5!sT%y&yn4=1d~*e=a^RS_~5f5&tbc&cqem_=Q&4; z`9Z@(o}JHU@kjTFJS+Bk^5>}j(!l@84kLN95|QVkant#-!y?b8zK8MGD0k9uPx8+0 zLh6@BHHS)kr^Rk1*FY!mMB4(7OeV;m?PK4@b1wCjK(`D{_RrX1eUvwsc-= zV!2RF`ige_Swpvz>4$BpY#?-7x>jdg1QQ zbnI+T9yh0E3)gO?V$xX;oS1Da%t=W?W6IGls2L(yMu5hBlAR6n6n$^Y`4X4zEubh-+hn?2Pjtpzvo zpy~9>9xc2QgrF~VNV6wDCeLC)o~%VRY#Qg%XF>~_li%%;W60^(g01ZzEO{!2t>T4n z>%m7%r(8N4eMfja{28qNp`6L}^MZx{EhHWzZKlR&goQc9&`u&>>6ADjYMdGdtDTWC zB~hDPLdbbbSINZxJb9&o=sTi81^9$c;$ z_VqLtQhUZ|I5DUjLLSy)EVoH86iSrhoNV%^wcz+hcWCh6`;-{(R>Hs~rI?|x$I%+45D@wV#vkml?Omq8&Zj;2HW`NOsuEn=euvQu z8QL8FChVN^2bWjM@jR_wC}!)halb{^#ehu4?K_KHsn`$C0(c(mQQs^XJnSe3K=11Fp}zycU}eyU;Wb1v6ma^+IR}F zRY_?7T8VK^R>ICd$8qcl#TY3og_pZypi4EvLdK~ zU0m-@HE%C$+bGTtU;FC{W^+Yu>py+q1DlECHv38yzhkTzOQ^OL^KVJ}rh!l8_gud5 zLUF8iSRcoCm~5xHelX0R4}~~xQ!d)^|E%4mxjuY=3%~#NHVyup=h=f=3-y~yFv->) z?@D}yanjq^L%jq>R=n^+_5$Cjju4^!Mi?6V0iUi@FSK0u+y}#NxI9CSZ8iGm3SNAK zigLCd)q3a3X1~N5>X(SH`z^fhbr)^osgLW@3t^A?GL*Cj>}^smBu?hAdIt3+KqXk$ zW?`b5JdSPBgpckg@!Z}8XR0HFK{O}4drLKP?Sn$gNym|2tVD;7&cd9Nq*Fjz7y)lK z3PY?S;QG}IuSb~+ZJfpVVZ_aGLeQgN%`-Y5=`9#F7sqgYT^nHs-BkUyVE)E)>(T! z&$EW24Mp!jYdD^bdTACpZfF6+cs#S4(z9s5KaH@mvnyDwMdoK~@!xUY;fxQ0`Ql=T z=z}@@F?WTI8kb;ISIh;9DHYVZWrCHn2dsXUBV^T`fq7HCU|;MBVKAOECSLT0$hL#R z{f-I1MqvKIO)r6Kh=qLK5Aq(b6UsZrLQPu$Z0|Wk$h=E!nAlhfeLhjnSHcYh-hgr* z7~Ne+-b6WbhJVQ9UzBr&RTJ5EmvYu^s~}%KP+!sI%0(g>NI9#`JwlbrgUB}6;v|3S%76U^+qI`qx3L25;=c6Rdj|x|b)|6S=6;xe zyiVw5Qw!+~p7Rze6*)>DfgPT`CYb3I1zEpqT62^}A1K~aSpG&WxmGE7t8%U};U)A_ux zg*^d-a27-H#Y7>rEe>tXxK{u7`WGLrd)=^}Y5%n9ti|vX22I@DoeGSPa=RM+U78@VtAGA^be8)drVz-pX^$+X$XNG&_g zYA=jSpqw}RJ|mrmQ_ii=uMscosi5G0y&Ik>jG=zx_}yqy^lvQD?x6=M$2t$iJ(G50 z7w{p@qJF(3gSYxaZQG}8s-*ZB^&###NziDqOT6cA&f)s%g8z;RxU>QD6<-|?4*pXL zhl??Ptn{|fuZ)AO199E`r(03UxGKo=cZM20j z?l66MqA)rj9zM+Qgg-)j(PR?R&sp5L`7?wCCQ5%p12V80F zabS@a&bXs?{x|1AgEWLplS=5k9_PdE4;NNFErq>2)*UC`5sppgAywZQY!0dyb-z#o zZ{4s4*~h%d?O-k3xa$n-SDO`)UKP+f2lLiSG>Xp6&x5aM&qv+A2{G$aVdFwq*lK%2 zNIH22%rM5QaJVRZe02(Ew_#prdZI8N{jewY_ZYe~On7lR5j=`K!9CYiP5d-LYM0wv<(&R|v#lMA8@Emqf2kKk?<~*~9wh-f43oiH^ zG#C*nBwsAYyt4g}GyajFn_CPL8)WOIU8J^E0OcIaVc2C^lvY;_zj5!b>s+0pmA?7# z{;CT&#(ovdU**6I4_C5=7W2{$uWL{ z{o*t5*cszGziq-pn^RaX;02%hEfCUrpM=3?Sl2VlO33{sSYhMI?n zdd|-&WYiG)Onfy)gY=eBU%g>h0Y68B+V+dgr&hLD52g6oL(CJ9J5fC?)`)$1m@>CC z*~s?aOl^ClnHQV=i!%S4bF_6|;jZ$1n0RnML;rsU)LdK@o|XjcepIjo;LktlQ;nh);P z?(j1=K$vQD5!Qb9fW7zZg+0YN(8b&fYGdXIZ9OxA>);JFHsgesqj6@viVT$d8wt%W zDexl?W4SAuLQmy0kUz{Hj=WY99@(81Kkv0+cgVnTCqzBMAcL&iN8{&hPeaJ19@K{% zT)Bo=*VEV|B4Y$eZwVLg?|(#@6z-uu#PnJgzrmjRkoI#1@>?%aAL8*?pZS9|Ulz!A z_tuB7X`K&TLSNHTI*V0L$2y?>Scj;!lbwuqadaQnP92J52Y1B%8>b+M8yC$sNH8}U z_1~O3HVhWbd%T8i0_HLuNEVFBpTI}-53%V#1pUZ6&~<_$$F)n*f_t@a^(UU8^lT6c zd@H~epKCw1dI)Y#0MexVkt*hpph4^1M6V}ZKhGu^zPu$M|H{TD+mpmYezUh$D z2m6xT$|Jl(ipXkyXdnssbW+q4aCdy(w|G%EyK0iMhkz2c>*|4u90OZK+RYo=V?DPX|)NwX**oIiFdBL6?n;Jt| z7t8^Ey9aAF*T%5@(YI|!9XTeOO&g9myu0yy@XR?@`4>K;Q2)(Y{>@Tw>+>5%|JV;O zEk}4c?jv+T-dUu5iH+hF9_#I!6W}RO#Fzsf9vdpqe1mx z;(|5yqoqRkzO^u?y%(&tA1FN3sf1m{Uf_1UtMIz54C2GQLD}*vx$i5$JKX0SdGtQ{ z-cSHp^Ds9$@(Nin@*=2Wy>Y*hxn$|!92kfBvIZEtE-B9hLn*E=Had~y!m}dJg>ikz z8`V>y-Z=9TzpjbyX+-MI;>`wAAEG=yj9Yzy`f9!NtC@>Ml=Gv(ETqn&KBR118r+={ z0w63L+zV4itRDWAD$yyO}lV*jGrG2ME%C+9Ghg|3!%ui-;X@@KJN{N zsAXR(*(=}O;U%)Y^reg)G9Pod{~zahDiUGmMP=63$Qj-i76_#OA4tQsUc%EfVbO|D z5V;fUy&t*>)02UAor|-7(QchjSh6EN1i~leJYuyYd-k3` zM5ETo$YR$RVGkeFyG<%tbuV9NMdnfSYuMo(WDtZpFZnv#6MJY(MD3kZ%l;Vc3gyWE zZ+kwNIZ4R6*oD0@70;^dl7*ZlN~{&0Np+Ph7xo9WK{B4D&VSfnI6Sr$bTr(-Nu`~z zyrCHimwAB8nOZW_tq~?wVE)<6Y@&zfCQUJ3FwriCtZc4@!PC8gZT2UNtSVqK?sMLd z?IK+wN?^ey8H`J@C1-!gVPz23QQFQRLVg~!`1)dRfeB>wKj-1;Vt>dCHYZ08Wx>Xk6nv}HO7>)Z9^>#m`*tl(Nbd% zzB&M}&{qtbX~M2~69Pw2pZsRVe#Y9(fvEHU3}d}5u%;0C54<&s?X=GyE+gl7rEzTW zDXeEf?YU?I>#B+8z{qx2oE7_FCHB!n-S(Mb+a6+GA?m+5uf8=|crH<6Rrfl>+&B<^ z_EKiI=eoenQSAiD^xv@TC+^jsA>?VqN4PiJ9c@ZGd9S?4PqoLe5Oep1 zxRqp}{vCL81lP_7CXtco&%Idey;f>LR;yQlPK!6ZGww&0NlPFj7VF5?Ymh0yau~D< zYc;2IA@6MRVBB0^SoXagS^oiZ`Skt4r^g4ri!=)Yo&-YZ;w}81D9ZWGkUWm$QO=Xw zUUSPGDd%B%7X12Sl(Ui7T7L8d%DMKZCm*zya(+12iyw%yfd=ApZJ5?B{(wp-Tt>F< z+pXhOCk4TD)UB!u`0%MX6B{{ysA6~*y-Nd@6o-+gghcka-sL*$g659pO0as^TAm28&K@{e!w!}D+jRvi- z9pkj}PUA@J!&i`teIk6{YZ2F{PeB8pcL|sN@IPMNhm|T`;HmeR?>4ppvM?8|@oG6g zt-c1=Cf<R& zUE_HDupFrL#hS^r$9VmpnWC?_t*u68Z>Rown+{9V6O+X2e>~Qc?;ELqHnwyp_wOCW z9*tPLn&?6_8X}<$&kc=7?;}=O;gEI4A96EylLc!+Apq;=pMTpyI^-+*9QecNS=)%t zi~v~B*B_v6Bk`^DgG)X9LEdf^X}=2NJ?uTSCv*upfPT*CE9NXMpHDVV#J;wzeh|(6 zLvn9n9o}m{u>UcIbe@BC4=vbBLHv*IBR#88CW|ksvZnr+Q|Ft&cWLg#1}}7nu;UJV zZcTf3;doEbNSw~^tNRW|(IUamT@$8{rS%2QGqz*P=uKMuG0sKarO6Z^!0Q#eh`GgCl&=LRcA9{`EpQ-R7 zx2n=;-pt{ms1wzG@w54JqTUrTo{S$%eU_}g+wQr}RBFbaUZ4RTU~d!(yw_``ftffP6UgD1vz zI7yLgJc7OZu~yc)C683$te(l3H`8?YJeiC2U%#XL(RQ;4gE48BgXqUAGKuF}tiucR zhiAP~i3-+jUk&pAAI_4M>inh>O_nV7fQPyn+@dGl*xhq*AMev)?oyKq+wAELw{0W2 zhkhMcd#n!(*$~Td>)XIm8*84oBy&Q_2RP=6Gt=#IxXXpFV9s~U+qNQ{iT_imjS7Ur zr%d^KmUl%~%ibR3W0%y3`sZ?ez300!d6IoW)b2}$kUE^lq*x;u zTCXH;@@V|Lg9|3sYBYY1JDEhrev1?D`P1nFdGAU0lync|lK?LoKOd;LOwQh*@w5L3 z$S=o>b@N3bTY6vL4yot+a+;pJUg*d?Xh3UwsV}>^Y-j?LyQNU z&`sX`Nn!G`-4m+Z!7i`YI%snpDU}a~$!R$gRXL+O>D_`#e zvo*6hcyRBlkWGjMICu+Dfz5TIa}=B zMSfs!XvOb(S{OzW$5YPA70EAL&Sxx3_gDP4D47qpPUSZ`RrJqVVnbP!^(-gf0oj4?)Z6%tH+Agd4N zdTs3_7~b}R=Y50VOi4!}71zZ6y@SAQV;r#{`TzFMo1ba$b0j)!OF8zC`pI$e z7MkqKEbMFiCWkvMbZ2YM`he2ULaw?&m0i{72b&JpaG}8}tp0Yat5Nad=c@e{KYQ%b zdwlsnEux;dK%Lmv+!uA%Rp!Lmq*m0H$AC=ox+3ah0dq*Nnbaqn@3$r1eJ_dE9d);m z2WKef!JS-4dJg40z%Y;`=~2J2_GmQucKNt?e;7$8jfvE6JikGRYX|B#?5*lZ*llXh zAqO6iA;#2i%pLTIEXTgcioe$bctrMgrt5CEl16fO7hQMHJkmt!Eq%p%G}6BjyCZb3 zLz2>77==9n6hHe+`5P%bLHCzjHh&>sF_%+u{cchX(K+HI>c2U^*U{h~H)^wv9-dIW zy@-2tL6Z%adt<%jWzJZ&C#(O(2O`#8;pR4WWh1@)VQum!&VRfrE5+B;d2^aSISP5Z`hFF?bIhv{yLw8?vsnxS8ZEK3J=j| z-{q)H38X~Z~XnW zxPGBA##Wg<8IVY0x!@st$b-|=Z_E`u$?03vZ}e6VB*VK=&Oc8cBE1$+&R5Ehk*QCq z-zZBxO(uS)dm2yno+Aavg2mrk8J$hoX1Xt`SDjDZ?x3982A7g@%wJHjs+6L}JU)dU z^SF?tV$7`2C!c4LBP|}H4)wY~f&(dMwSmzj$nC$J$M)>W>s-=i{@HE`mAEU+Q z;oht6*J3Vhye6B+V-JPA2CnLtI{R4{p9|CX@_QOPiJY??O8Kc-pTys_b9Xy3%!xkx z3bpjehS;0p^^{3N$%0JkljRv!q>`gP`BdL&MBj$`mfI zOv>@xQ1Q7wmM$h$#V195?b+!(!?0?dhP}%^4gjDXRCUD(i%fK-@Fw; zZuO-8Il3v9I6R@8Q#za^N!UAH@%p{Srx1A?<*Yp+jrer@*N0dolc(b-=TXJ6WXuD~ znOGknOY11-hj|es!=7^9fqBtMlm5%uKCe4(@LZcU#JZU223I%_8*SEaD6T2CmT@O0 zYO!ssAN=Tik6SrGiyr~mz613Y-+D-}_J{h4Ei)&P zFFk22_iXMAa;q1OnZpVflC@(g=Y|D#BykVr-0jhBvb~gY-rz1H(W@xu?>~dcUTf+% z416O<@H@(R@tebBjSsc$Qn!PIv7(%#I9~#tG+-8Q7^*Jf@XAh4g6O^d0;P;Lrx8GA=VSFFRc9!lr z|B9MMMrP8r$xodH#A6KQ?C80Mj3}d=C**7=XCo-*OZm>^VhZJ~)KNz62hr!Cexnz; z`7COT}y6i?7>E9N9`b=g~axS!U)l*`rCV^_KRLwt@Q?-H*evK`^!$oJmT zPSj~vj`2eez7RPp*%k817St#E=iTOOjLXH}wTk)4KfwKG#d~;vr!xubMdONLCF*3v z`fTy~%@SQQJwHv&~yLOJ)Gxq|FGMLFNzyMfqf(S82xubW7aHuWKs)K-vZm~*Ol zpV6ajh^jy3tlMZ#obWtHaXlK>aw-lJRwP!aN`~H*qdGO9RDrh9(~hi4~)Uyzc&4NkKa8+wnf&9_$hbVM7H7o z`11KpPeq+xc#OBIsuSPOZlw!+YOgX;AKy~XpSP!Lz2@Q<{1=Ye@b7+YyzWM7!#lM) zkr8_Ic~`%uJ4uvL8}5U#_q!+>R}_XBkXQ@qEACA)AcZ}cy&;X6;IoQ)bQ`K(=(^F;S;{MhLI;hrDI7@E9Km2uPHHarJTQ?=uL)HQqCth6_V;hInRrI!>5j> zoL6+a!hbnIIoCE8@OpTTs`z`one4~E-@B9k?L^RYA8FGhC4QDlZ#KTt6Fl0T=fZvZ zvcGWsqdhH)o9H-@^~d*cQe>WMUFzPWucf9vCWk?rlG$$aC1JEGoZx1QJNLgR|Z z_ho$iPin(aW+(Y`{izMd6zA|=3~4Ok^{Ip>zBHE5SaO>WF`@f!-)Fz(dmf^Gct+A6 z{+loL!xvgQ6QyS{;`={RrB1qgQybpAN{@7$NPY6Qmi}a$A>}L#Fd@zAl(W$sb5fv1 z<7exu7G%M28sp8VHY49BP+zTDYecr1P+xs)sXmFteHsNf-&Z|J`gzKEp{EiV=1MuM zJ3Qrc9#GDUqD%Q%*PX=sGxCn`lBEv+;e4pq8*a`8ZMOEHC*03G!WCrnVS5GR%$qTx z+(K!8wg>jXJ21A9yJ}B4uW)J4w|_!8&r{OkPn%HA4KAj9=EAGu>tFMc@<}i0^KMkd zUjCF1joA`Z{CUeM)P~3JImF-GNMngp`p0?i6VyML#hv5LJMexQc=u5GNJ3iwY6FN<)zd=>)trTOQR^~vJG?i zftaVM_`UH@40&DnuYYzoy}`M@>c!eE^MtVHPTUbgJ+^w057_iy$jx7Bz^?8c2&Ls` zxfP4mM86Tg^)go!@Ika;-$m72;rY9w{>SJU7k}-Vs2@)J%{5P_YrUtkuDrqZ^Wu9r zGH)cWWScJPgVTUlUrl{Q`j6SX%B~aQ^+$25_!|?bA70|KgEu-)IX{`~#pfTPoFm)= z`QT#8`Idb+Z##i<_8xbbABB7Piq9(@afC1FK{>C~Im}nCrJTLiAK*P+QoCKZDuAEy z@3U{!K2JWa_+QS^4!jh5M2N3rv4WTUn@1|xPU1&9QqHsI>+=y&DChQ@ zJMu}wLGgFle(A)!?V^5o@+@V3St#|xEqEPdrnHo z=K4RNoO@1==PnMSoOiws;l9tL_WZVfD|aM-a%N_Y;yMkYoU`6Pls9dsYz-~GS+(%) z;_v#Kvy$IwPT##dn_2CFHN|?|%TNtAH(3Vtb)5X4YAtp`raxGfsc;Vj%GtyFfqX6d zS>%~=>Abvk_ybXYC=Hk2Hmwx((#>n+!NI)vyHd^#mdC%!6?O0DFAE3RoD+5P#3*@d z3+1dfWUE}rqMXgXkCLZqB#8IyouVW+#k^1jpWrLWh3B?V&I^<~6}k?foRgn9PE;FA zIrlsnYUQ0yZFuJC&XU<>l&y_?zC^%zaf;WuJ@KIAk~QVroR%wDU`{z_$Ja@w)>Fe{07r}4(Or<#&& z_B7sz`F2>MGowo6+}i1ZL=XECDAq55d(|1;=NHA#Xr5xpw3uazS}EIt*_@Ih>Z+K< z%$K3`Ir#pO7vr#ma(?G}gsJ~GekBpGMTa0DCheh;uuvaiGf=R3)R(t5JDF~361W~G(d0}Zy?z#lqxv6qY-)177TXFbdAN@A40fkJOI>&KAt zM*yhVYqOd6e$`?>DH6IG*1SWdiy0a7HY65U;Lo7;-lo~3(8q#lqJ(~<#&;g6Xwy|P8-p%2@bBw4EXp0!SO0?jv+v%&IS zFstKn@w()5e`xagcirbV4Dx5uST4FZ1ChI_-*~Za4!r$BIlt9k3y&XD&dzh4VBt8* z`TZ&E<>X1(=3So;>31pHk1;*KCW`7a^HQ0h>(ri~+-I4a+bQSYEuEOF*vnDDw(xYD zL<4(qD73$Eoy2Y;<^1vNK_&xxR4T6TDh!r9hW~Q@y{H|x=z2GtJMRHXmrhxc#vZK8 zcp3B=c2i<+r_TN<@&onh!bMZTzsTNhxODCf1mbRl$Tn#eq8rwROUN*3Q|_V-a>xqxzZ3!e<* zj#AE}KQ4eBmX!1JHaqA(mva8OVHXsj{#j7-gG`(ctN84e;rM?89I^8$xKm;JDJ zg5vsFLocQ*f^uH&x=2#`##Oxjx8I0(oFunxRb_u}^Z@z&?UD^=y0SxmU{0)_HWQWG zjg6V=2fH*jFfk=PSP8yn;?QX3Qja!~bAw+2lXBsSsEcksVq|k`Mb1rH9iZQe5>bDd z+6y)>zASRy;A;$p!*WF3P&N+2mQv1(KgNhs`420kY>NjTE9fWcZ%6Ua=H1sc{_FTI=0g`Kh?3qY!h<|6p*chp>ae=-t)-;^S+}fGd z7#aw3-1C_&uGF5d`aETNSyIk9H#$Mki|Zoub>I7d*6(7GbDYTtX#AQl>YB|{U`1KB z$oaX~3NS576?LaCd%)N4lxW+FFsC^^IYHDP?nOhI9*yf9?UI3ALH90h80WyieKf}S zyiyLSGpG%pymSQ;Dk$5s&)4DcX==lrc4JKv_H|Tnt2V0vFYN!U(A~G4goZ;@-?tbD zBhBbNU*F!7T)}-x#XUo`TI9!ZCWS&D`*K0P(URKp%Bx-E_D+=ZIGwdj=zhw1hLW+Q z{o?;}=8Df-EkFGY3X|PoV+So}xTFp8x_U$ZWH+Yk!!{U&XJfIInT*EApK$L8<~H~? zGDD7i1BGq3bLtGegBwM*+I5CF|EWgQZ|9DOZ81fnHh(w|#-6w&a^4c;iP%`1ef8>SqaH@~g$&= z=j0}cz}(uapJy^kI?WK|>;+4=9Ah5tZicrpGSGfg#|+||K~KdG%AR$EXVEVJFwf!l zPD3c{|4?MEKHLf#jH^VpSp$}WgC`Mn@`ycPd+eg9!)FJ=3deIIXY=jRU^eZHsBb<$ zgEOX%i=2h0`Ec)Wtf=ef;kw5h`RM z)4w*%bz;YPQ2RXgQk8vQL|LtQqsj`q>32WdsTnfMs2-CkgIAW6ZO}#srm2MLfOXaK z`aSe#N4L8q-@b@)cATp&|K(3P8=uu<&g`I^WsXZT=U!TwiRc@?95}_LQvOXuYdV_rY-6=G(Gi!vMXBPpMD!EFmLM58B18l-hn=! z0-?5H9(*mY5SiOd-wE#r@gm#S?E$zp$QAXy?$OZoSGuUHGS9&D^kk89=!tx=_?jT< zqmwFOc+F8!FM9a^hNnl0oU<`!Atf}N{w+TIggPcv)USP%*^o?JXQRD6yspNQFlxg= z6V=&WXDF)_EiG0L`ujX_WH{tV`T|j}w{q`5q4Gl@~;|dCtcnYZ2vqphoK2*!{Pr)AS@um1%X&xw@t#)C5?4_zr|^#C0!*@FLaw(&i|c=oskkJq>YEKX+* zsZ>H9uGKG}zsvlrtOTVeUa+C9Gn^P!1-1n;Xk2RyBQ{pSw-R6YmN^-W?^VH}z5$Ty zvJPyvRl-c1Me=)sH*l+Xn1Omz*+DSrohxdscgLY}VY;YCtK`6n9j8PcaHSY$-^GhM zqxvT12Stl|pkEWbb~q&Jp?yArNz4J5j<0zG&vVjFgoxUVbYf3nPYA_z*RfsMFC7C! zosiv=Eiu7a;&{C}Uz2qR_kn4sO<(q6qfBK~`zo{E5*bXz>%*#2z+(#L9ic9PT*l~@ zA26uT?K&pcyGl7vaLAKCh^CxZ+#Dp=Pp6z$ZMH1D?Mpegdr*D38EY#Qf3Ls&#y!I< z=DN;Ri0kDFexHsro>)J%xvvMT`o=MBzbc^S626w>3uf!SO0bWR!78a5?5?VW&zK7( z^%w{T7gmA)M}KhGX$7wLD`7Uiw^CsdtSaP1-DUg^kh|rI`c@Op_95w_ex(`-0hnK; zxIgRt39v_do`bsG-YhtNAzIXnTjXGzcSzK&lgeRW^#M`ay{(74MIoY&y4nc91i?S} zvs?PT!Wn1*q8`)K3L`LoN^yM^_Q#6O_JO&m7dd{1_H$&Sj+y@mv~caKxW1|>6h5xT z*;}a3&OXA}-S>l8sJBN2%Sjo|hebU*>zKSWQYPx57g`E~le|PdX7fgQ#1?na9-!jR z#4E-w;`P5d3)(zWH?<7HvEQstZWL2A@*1pu;12$4l9-Rf%VA%H7dTk*jIq2N66~-S zc}*kZYhD4y8+~CK=>WS6Dxf~cA7*ve2E$jCu*4Z-p)W&V(iL8O|2>QtXo|=c^};3zsLx-vmtTk8USL8yiO^~QBjgiB)p#iW6uWL3JW4)grEJl4seifeQ`@j;^ZE6*u zzE}oJQLD7O2&U+7m!tkxu?dFZye)-36yeS6!TM%}HjJMjZ%L)sm6aCBzwVXcY(aee zX)y(bI7@K_>eExQ2tHL#kQxxN@SVs5$C!(b*2%0TC+ zI}}X`WCq(_fwgvC&^hb~Q>A$7UrLyzBe1?0=N_F4Y-D~d zD2HO4V`N+Oi?%wgcoQF3jn_TTVPEPcGMs0Q_9+X4NIctLhg!SGSO~#fuZ^fJYi*e~ z{(i6-^~u4P3jbidVUN0=`&_sIWUvjj*4VjLyT+jnqP|+%j?3GEeGpOmh0iVQIt%9p zp#GclZs8&G$&LpVf2?Wk?NXUI{J+ltNxpt>wlw4Ze+)Dgc{LhA#Z6@q%L+zy^@lff3$ zaU*9!f|m@oqgETK3=*98q2SZ^C6VkMLk1g*f7+axp+BQWO&Otg6UwCC^Bq!H;GB? z7$Y*&biT;^tcesEPBFO3)SnC&86N+3o5`3LDl%LW^pY8jYZC>-TRPvF$?=$*jJmQx z35@dmuum+;5A|K(S{Iz(fm-^z8?+sii99`veln5AWg^e!r>B_VFMULYWn{Fkb`vbVqMsZn<5A?HjO1<&KVwO+p?x;#|_!;55nA@=G{d%nL@_@085S z%7=^IGU)VmoTP8yWmq!X7yjHbl;}7Wz~(iW8$a1V(&20&MAZjE2s2DF-yv80E?2qF zmVCx@ScM<680##VqI6pPE}Q7YNS0ns6u-;AAIl|63u46Ya^FAAl1aM`!v?(n#fUBp z8FUafp>F@YFSD&ARJ2J`TT8}C3+H6w^{F+}m^U8+#P4s8$tou3j~_VV^&$E@nYojE zMV`wBx-s^(GH}7`C+;p|`rMU?b{JvsTe9aG<=N}N_lX(ks}&5xwzs}sEv9z;f?SO1JJKqZ)Tpd)%;9gK?oYxsHA1trdJr8NK zaVEzKnS8v;1?b$@4`w8ulFw+D3xh0iF4_*ce7H}p$TPjMO74!ma239Bgw8E_=!(-K zPuGS!@^t37$Wz0uUe35b+GF-*} z!1p#pPl$hf8rBTL9*M9;uG>EaR&ZY6JF!;Yeau-n(jDiBukX%jnWjPvo|X5ivEaOZ zq=K!5A51Zy#;rM*2Huz>xM18Wu7`34{8))S(B|*tHangczwb`<9$YEbZYzA|(XYPT z)K9S@&#NtgTv2_L_wH4Z~<7mch6eIN?;^PJ5ba6XWL`jxXC z$Bx2zPm1ejwsY}Ey+wu#HAA_ue5^CW>rq*R%YNVtg{YmKHt`d}_W+05P2(D08oLKd zQUA@k>)4TyUJ(H$%Fgg{S^%T8EfUl)E;;F6BWay-7#_J|ztGauiEtw!uyPBSwGUMc)} zT?9AYGZr*4@5JW)ac+1`9CWtzhyFU}IPYii;DI#@Hx}e`J3GX}PJEv=^+nv2x!8pW z_0OVmF2*!MwAGcZ*SVULVWO>`>{QQ{)dY*S+F?@z*Y!l8Xsi83HgI1;aeguW?E8B+ zIVN{#@IG58hxPZF1ek%7C z>v|PDW0@lE4faDVMm?wI52ycTAI|4Q|9?G*-)rkA&YvCj{xvU|wM(3l`Zs4w^JTCX zYkgee_QQsSDa_1t>?^q%=igOmGL}btVTFkcG}ldjy1s*f3SDx ztZQ-|%qQva181wN>2twBSO@dj9eU@@=Kkpr2pc|lfK8DL7q%l1RyN^GE~7(S&yKhc zanK89VGYsKd)Rk&mp9C9yvXJE41tw#GLXs2xHT_BVaPIH@JqPKt&)Y~+z)?{Xg=nC zVLuI5{9L7JEu6n3Onla_g-=}HeZk`MJ+9+-E_5&MP2)Xmzi*rb{g&d{BrpHSt#$N= z7}N`mUvW1vK01lof51J?t-l|nqrNe^id+2#=Qp8NjV$9dFoq=xy}pt&!2O=9s4s^+ z=j6IrPlb@&w8*swGYm2#hyrE zSq$Uv2Fu$yL$?4E<}seJI3IC_LDLUP_Pob__N)smeXlifc%T;ydFcY-o0iFS@wqS{ z0OuVW)yPNB@rLn+*uzAp7x(SBH_kM0gUsJnoceoj7%|En3>L5BEY`?iU$Z+jXZdgr z9eu##u?HL-dzh=i&-ff`WERCIadQ{p+~z^vFy?nQw-@vK22{#m&{&>xw8b8uO4zqY zxq@3&8-l&z1EB5rO>Q*K<5t7~%3tcaop*!bFlslwI<70ufsIG~xT%V}W{m3z)XUkc zT(4^Zq92HvS;T$7XJtNKzdDxVq|H81ggV!r<_Rj;k8yg2Zb7QL7aYg>{8U#R zc^p0`U7TFu__z?cHTJ!^fwf*i%S+{vf){*X+~8Djo7_U%8-8SAJkwi;E5tMU_tx$J z#Y4HTxOOly^MG6JY`9ooADB{&zoX}J&Ku94Wai#ro3ovBDDcNQlvq=}&6BgmxBHQY)P2y5`p3a+ z&RpgQ?@-5XS-{`jxD7s_RtX8`ZBA_#XHx$U=Sg$XmpB1GXFtx$J<2?rhkem-?%TBk z{g}NiZqOjbp4&Fn66Y4|FJ6KEq{vS)IvV>2qiwr57)qAwc>;d|X8_elS&iQB2@%TJ z)8M?u1PAPmox2+Q1S;<=L= z)_&f+?*eRo{ns%6VJ|L}*C>e%aGZG~KKb0|bM;EdN_ z&*d&Z!bP@c-?!&(Cms;l%1TtY&zYej+tr?h-9B*}T^1y*>LF!c0K zt2%veSc850?QUGQnuYakr%WafNaz@ysKP}J-#lZKCatczWqRu`22d^qGnZ;AUy;_>Ixy)xrKBPY8~5g@0!3Wa7KX@Vn&-PN#Y?op3*V zsi_lPgSB-h z$pR%`?9+@rhkIYMTDrv-uAaoTQ|EB2KA0akc$O!GHjTDwd+P`D%&}Lw&e@51_5mHnZU@)Wg(D&I^vz1{6iJ`ThvQ;#L62c2jc7! zU(j8UCtvazXRe`MyE;JLW2+wss1H<(l>Bz~fpXN7VttvgP2O-5^=@A+7VkZnl?N$7Y zwTX0qQK;=YTT8E7?t$s3|MnaD%jU!740q^u&=o>;O~H783|g6prI(x7@OVol+SLDX8Vvd)aNv@R^S~FTkHw*9nBn zitD!zv8AukpQC==^Emqi&!MiPUZ0b}J~H=(`>0DM7P6JoWzdZJO;ZK?g!O`tsBa8= z#J>EB^G}dfTHY7-Chke}K&_#wDxKd8d!eCzvO{0mJkbd(QU82DTxvaiFHA+9*St__ z+a8}?sQ>1CIR*Qn^l=6IFjr`(!@1?v-p~_!ZoDZv4F@*LAYI!HmQ~dPn=6Ac4sLK_ z)lXRXQ3hqDICr>Elhq#X11bjYaN2bUdw(;|u64$FlxG?CVjRxhu5*We+ZVDwYJ9+8 zxCiV`-@*p}!S97P=H&eFU=QNwt*FE^1=C>c6M`|dswb#EI?PT${!`HAU)3eDttWA> ze!Ca28L4bsY9NGTAKkWX`7Ap(1bguNLSt?X8~qNSU8px|J!5}g4unF~2cCXsKPLvj z71Ui2sa`a-RAo9t@A| zhcyRq4%C%Y*lvY=q0oPtHa0@!XK#3py@jvacVmY`z%ZX{>>o{Ei0tkO7P+_BAC_qUQtTf%{5iY$m@nLY zGKeI8|Z)Ot4jxV}*kU9qD^10@^iNT1&$E$E#lC|I8!j=KFOArSJ`K59zF8@C(Zl(wsQcg9EH(1?24mEQ zOLt4nG4`LJ&>2qB#Qyl)Ks`y-MY(zrI9t3KEh0%od9 z9dUkZ;5tw6{@Gia=8SWA)V(3eZ-6wje;{b#Szz%E{4P%j1XcX(m9`+gW*q=M6@0jv z(pT6UPzUw1*~_Hw6a2sc_3y!(rSG2lf(h!YxqGEYKjI!Y>fwjIq*o8gL>um~-cR}l zXT^fz{yPEEFpLcpY{wS`O9vqXg`VG%EWMZL1iP30?|iHFp9s9o*awfoU7tc%7e0A)BbOGm;>(;Y>(ATEDc88F4&Flc|8|pUD0~!x} zXaDT+fk(*vXNj_O&> z%Qj=_&HlddILQ-gu3AWS#-X3r@P@*BqolqI1F(O94|tBUmM+6y4hqh{A1{!O#oidY zs7GJ7lQ!YnP~mSE58EaEZRiI>P@fC)klvn-c8&V+MPI2!y-c+2my?2|_c4}N_=@k^ zq0*iQu;voA%lL34vlC#s6r1%AS#Ba1ncp&O^U3)$%Ru>ER8z zd9K(myFZ(G&Ks6v|J9>QXS16yZXJws!P@)nXYb9GL4>0ll)sK( zusR_=uwknQ&h}K1P7`oudWi>Ab?z?p{OSV*{m^f3){^QQqwRQkf}5nT^eFDd{(9jF z62VAnz10`i;2w+JqhZn~7~8Z?!9LPC6QpHExTaq14aN6tq|Ufs`)0Kdbo{tLnu^a^ z1?Tfu?W7u?v3CgS>_t1Jel~t!ihAogH|ah+Ls7&JImSLx(|a-)j=J-l0IA7uFR(#< zac;1*48L>7(7#W%J}9lge%Kng9)2xVOFN*h@o_s?NB&af-^ zz}~-!wq57}nFl&Z3tN2P1p125w`$TC-|-y8#1nKkYDo`w!1>x(yZ)uRpLDPa_VM%c zgxaYlQZ+SvhFsw`x+Q;^l*dQk3HCPQ)JK?XMxp|NS5CsgF7-e=%t>_ z-aucy=ZYItWuIqf+`##AeXuuESDpm}oOSNw4!X*f?DCZu7dPQEWAlAh*<#C=d7( z^^Oh0{IZ-~xYwcAUaEN#?fE$N#M4!k?m6oNX9N!z`%Ocdf<7el3DzA5eWXjXeBen3 zPnhO4NV+Wt`<)NKnRJsZq^;;DB#b9SS&We$$33yb>ph|GOptE6?gLUK?Eimnnlua< znk@E)^?T<_k7G}!hPCM9SX=4TSE&199}Kyj^vw>eYj413bDX{OPagV1SB#lX?~!`+ z#r>QTZz!MSE^Wef#&9Y2-SY8~9?9GXYQ=64bvRO5>aq*&9R6R<0h_Kt+IF0+6zmFm zMQ`8?u7kH=zN2;T{_F>g@s>1TKN^!6Y!2=*|H5bD$k5%a%>)^29f`f{dWNwXOR+~9 zo-6lcL3C`rB1cBZfOfX*}3q_5Zbz<~W85VK2D z`hR4dc|29$*T>C7NlGe8g+{3~i@T1L=6N18m*%8G<~b=sNP~F_MMxR%*_%j(N}>S` zic~5ZR2rUj&;I_=@5x`E*Lj_L-SfWduD$l!Yp;DBzpqpeJfl5B%d8iUt+_|>9$7uJ z{ z$7&IrPLK!0qHX&dC2_w>J)lb;XSkf3$sKF+fQ=ilrsN6b0;F+2DEjS~7ggLs)RXai zt3d}Exg{8@yeoEwo_9ZS3(>x$%ADcxM`^RnIi65o?hLL4UCin+*CdTK^zJ{@%zk5h zXzzY)!G!^~E!^ai!TXxsA* z%zPWXA`WFS^q*jXJ#7K3tw1hb|vC4jtSW7Z|Zildk6MI?4JKO4n`8F+I9p?Ft@2VqzrE3 z{O|jDM;Llviu;PSrfLMw_leQt658G2Q=21%wNK{)F*m!Y51!f4V+%K7ya$Xmae^Q7 zoVaDn(4Sa2fr{EOt_kZ&T4J1_a$+#2+#B;?n3I}6HIA#a^AzH3lfo>{s=*UX24Nf$ zUc{B-`rT2$m{9pHH!2qGZ7p(JP{$ddy=^<-4A;*#bG2CaVuCdfzE9h@@=$N6E5b8O zr+0Fem`^hOjLe&*&2FgsKpp-Ttf{INd4zK07EHE@b0uA1d zFzi7J=;B!S{H!B%bAJl4VXhE@xwZE_)wnCo_&qn_{KaAnHwNv&x0e&Fub9i#V2`V# zm4E@6kl{?(BslIT!uPdC?ywBPE#QK>8 z978wPaKmb`wsI@x70-)T$2E`3{p&fU2rulr<_@yYUU7

uI*#WiOm=`rmVS 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 Date: Tue, 18 Feb 2020 16:20:16 +0100 Subject: [PATCH 35/38] Polish translation updated by bwisn, closes #5655 --- rtdata/languages/Polish | 207 ++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 103 deletions(-) diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 1bcc98456..06a5136d6 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -10,13 +10,19 @@ #10 2020-02-02 Bartłomiej Wiśniowski #11 2020-02-02 Bartłomiej Wiśniowski #12 2020-02-15 Bartłomiej Wiśniowski +#13 2020-02-17 Bartłomiej Wiśniowski ABOUT_TAB_BUILD;Wersja ABOUT_TAB_CREDITS;Zasługi ABOUT_TAB_LICENSE;Licencja ABOUT_TAB_RELEASENOTES;Notatki eksploatacyjne ABOUT_TAB_SPLASH;Ekran powitalny +ADJUSTER_RESET_TO_DEFAULT;Klik - przywróć wartość domyślną.\nCtrl+klik - przywróć wartość początkową. BATCH_PROCESSING;Przetwarzanie wsadowe +CURVEEDITOR_AXIS_IN;We: +CURVEEDITOR_AXIS_LEFT_TAN;Lw: +CURVEEDITOR_AXIS_OUT;Wy: +CURVEEDITOR_AXIS_RIGHT_TAN;Pw: CURVEEDITOR_CATMULLROM;Elastyczny CURVEEDITOR_CURVE;Krzywa CURVEEDITOR_CURVES;Krzywe @@ -38,6 +44,7 @@ CURVEEDITOR_TOOLTIPPASTE;Wstaw krzywą ze schowka CURVEEDITOR_TOOLTIPSAVE;Zapisz krzywą CURVEEDITOR_TYPE;Typ: DIRBROWSER_FOLDERS;Katalogi +DONT_SHOW_AGAIN;Nie pokazuj tej wiadomości ponownie. DYNPROFILEEDITOR_DELETE;Usuń DYNPROFILEEDITOR_EDIT;Edytuj DYNPROFILEEDITOR_IMGTYPE_ANY;Każdy @@ -175,6 +182,7 @@ FILEBROWSER_SHOWDIRHINT;Wyłącza wyszstkie filtry.\nSkrót: d FILEBROWSER_SHOWEDITEDHINT;Pokazuje edytowane zdjęcia.\nSkrót: 7 FILEBROWSER_SHOWEDITEDNOTHINT;Pokazuje nieedytowane zdjęcia.\nSkrót: 6 FILEBROWSER_SHOWEXIFINFO;Pokaż dane Exif.\n\nSkróty:\ni - Tryb wielu zakładek,\nAlt-i - Tryb jednej zakładki. +FILEBROWSER_SHOWNOTTRASHHINT;Pokazuj tylko obrazy które nie znajdują się w koszu. FILEBROWSER_SHOWRANK1HINT;Pokazuje zdjęcia ocenione na 1 gwiazdkę.\nSkrót: 1 FILEBROWSER_SHOWRANK2HINT;Pokazuje zdjęcia ocenione na 2 gwiazdki.\nSkrót: 2 FILEBROWSER_SHOWRANK3HINT;Pokazuje zdjęcia ocenione na 3 gwiazdki.\nSkrót: 3 @@ -608,7 +616,11 @@ HISTORY_MSG_440;CbDL - Metoda HISTORY_MSG_442;Retinex - Skala HISTORY_MSG_449;PS - Adaptacja ISO HISTORY_MSG_452;PS - Pokaż ruch +HISTORY_MSG_453;PS - Pokaż tylko maskę +HISTORY_MSG_465;PS - Promień rozmycia +HISTORY_MSG_468;PS - Wypełnij dziury HISTORY_MSG_471;PS - Korekcja ruchu +HISTORY_MSG_472;PS - Miękkie przejścia HISTORY_MSG_474;PS - Wyrównaj HISTORY_MSG_475;PS - Wyrównaj kanał HISTORY_MSG_485;Korekcja obiektywu @@ -619,6 +631,10 @@ HISTORY_MSG_490;DRC - Ilość HISTORY_MSG_491;Balans bieli HISTORY_MSG_492;Krzywe RGB HISTORY_MSG_CLAMPOOG;Ucinaj kolory spoza zakresu +HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Korekcja koloru +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Korekcja koloru +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Kanał +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturacja HISTORY_MSG_DEHAZE_DEPTH;Usuwanie mgły - Głębia HISTORY_MSG_DEHAZE_ENABLED;Usuwanie mgły HISTORY_MSG_DEHAZE_LUMINANCE;Usuwanie mgły - Tylko luminancja @@ -637,6 +653,14 @@ HISTORY_MSG_PDSHARPEN_CONTRAST;CS - Próg kontrastu HISTORY_MSG_PDSHARPEN_ITERATIONS;CS - Iteracje HISTORY_MSG_PDSHARPEN_RADIUS;CS - Promień HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Próg kontrastu +HISTORY_MSG_RAWCACORR_AUTOIT;Korekcja aberracji chromatycznej - Iteracje +HISTORY_MSG_RAWCACORR_COLORSHIFT;Korekcja aberracji chromatycznej - Unikaj przesunięcia kolorów +HISTORY_MSG_SHARPENING_BLUR;Wyostrzanie - Promień rozmycia +HISTORY_MSG_SHARPENING_CONTRAST;Wyostrzanie - Próg kontrastu +HISTORY_MSG_SH_COLORSPACE;S/H - Przestrzeń kolorów +HISTORY_MSG_SOFTLIGHT_ENABLED;Miękkie światło +HISTORY_MSG_SOFTLIGHT_STRENGTH;Miękkie światło - Siła +HISTORY_MSG_TRANS_Method;Geometria - Metoda HISTORY_NEWSNAPSHOT;Nowa migawka HISTORY_NEWSNAPSHOT_TOOLTIP;Skrót: Alt-s HISTORY_SNAPSHOT;Migawka @@ -655,6 +679,8 @@ ICCPROFCREATOR_ILL_65;D65 ICCPROFCREATOR_ILL_80;D80 ICCPROFCREATOR_ILL_DEF;Domyślne ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) ICCPROFCREATOR_PRIM_BEST;BestRGB ICCPROFCREATOR_PRIM_BETA;BetaRGB @@ -668,21 +694,28 @@ ICCPROFCREATOR_PRIM_REC2020;Rec2020 ICCPROFCREATOR_PRIM_REDX;Czerwony X ICCPROFCREATOR_PRIM_REDY;Czerwony Y ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_WIDEG;Szeroka gama ICCPROFCREATOR_PROF_V2;ICC v2 ICCPROFCREATOR_PROF_V4;ICC v4 ICCPROFCREATOR_SAVEDIALOG_TITLE;Zapisz profil ICC jako... ICCPROFCREATOR_SLOPE;Nachylenie +ICCPROFCREATOR_TRC_PRESET;Krzywa odpowiedzi tonalnej: IPTCPANEL_CATEGORY;Kategoria IPTCPANEL_CITY;Miasto IPTCPANEL_CITYHINT;Wprowadź nazwę miasta uwiecznionego na zdjęciu. IPTCPANEL_COPYHINT;Kopiuje ustawienia IPTC do schowka +IPTCPANEL_COPYRIGHT;Informacja o prawach autorskich +IPTCPANEL_COPYRIGHTHINT;Wprowadź informację o aktualnym posiadaczu praw autorskich np. ©2008 Jane Doe. IPTCPANEL_COUNTRY;Kraj +IPTCPANEL_COUNTRYHINT;Wprowadź nazwę kraju uwiecznionego na tym obrazie. IPTCPANEL_CREATOR;Twórca +IPTCPANEL_CREATORHINT;Wprowadź nazwę twórcy obrazu. IPTCPANEL_CREDIT;Zasługa IPTCPANEL_CREDITHINT;Identyfikuje dostawcę zdjęcia, niekoniecznie właściciela lub autora (Credit). IPTCPANEL_DATECREATED;Data utworzenia IPTCPANEL_DATECREATEDHINT;Wprowadź datę zrobienia zdjęcia. IPTCPANEL_DESCRIPTION;Opis +IPTCPANEL_DESCRIPTIONWRITER;Twórca opisu IPTCPANEL_EMBEDDED;Osadzony IPTCPANEL_EMBEDDEDHINT;Resetuje dane IPTC do domyślnych ustawień osadzonych w orginalnym zdjęciu IPTCPANEL_HEADLINE;Nagłówek @@ -695,6 +728,8 @@ IPTCPANEL_RESETHINT;Resetuje do domyślnych ustawień profilu IPTCPANEL_SOURCE;Źródło IPTCPANEL_SUPPCATEGORIES;Dodatkowe kategorie IPTCPANEL_TITLE;Tytuł +IPTCPANEL_TRANSREFERENCE;Numer pracy +IPTCPANEL_TRANSREFERENCEHINT;!IPTCPANEL_TRANSREFERENCEHINT;Wprowadź numer pracy, który umożliwi śledzenie obrazu. MAIN_BUTTON_FULLSCREEN;Pełen ekran MAIN_BUTTON_ICCPROFCREATOR;Kreator profili ICC MAIN_BUTTON_NAVNEXT_TOOLTIP;Przejdź do następnego zdjęcia względem zdjęcia otwartego w Edytorze.\nSkrót: Shift-F4\n\nAby przejść do następnego zdjęcia względem miniaturki wybranej w Nawigatorze Zdjęć:\nSkrót: F4 @@ -729,6 +764,7 @@ MAIN_MSG_OPERATIONCANCELLED;Operację anulowano MAIN_MSG_PATHDOESNTEXIST;Ścieżka\n\n%1\n\nnie istnieje. Wybierz przawidłową ścieżkę w Ustawieniach. MAIN_MSG_QOVERWRITE;Zastąpić? MAIN_MSG_SETPATHFIRST;Aby użyć tej funkcji należy wpierw wybrać odpowiednią ścieżkę docelową w Ustawieniach! +MAIN_MSG_TOOMANYOPENEDITORS;Za duża liczba otwartych edytorów.\nZamknij edytor aby kontynuować. MAIN_MSG_WRITEFAILED;Zapis nie powiódł się:\n\n"%1"\n\nUpewnij się, że folder istnieje oraz że można do niego zapisywać. MAIN_TAB_ADVANCED;Zaawansowane MAIN_TAB_ADVANCED_TOOLTIP;Skrót: Alt-a @@ -847,12 +883,15 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Cienie/Podświetlenia PARTIALPASTE_SHARPENEDGE;Krawędzie PARTIALPASTE_SHARPENING;Wyostrzanie PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_SOFTLIGHT;Miękkie światło PARTIALPASTE_TM_FATTAL;Kompresja zakresu dynamiki PARTIALPASTE_VIBRANCE;Jaskrawość PARTIALPASTE_VIGNETTING;Korekcja winietowania PARTIALPASTE_WHITEBALANCE;Balans bieli PREFERENCES_ADD;Dodaj PREFERENCES_APPEARANCE;Wygląd +PREFERENCES_APPEARANCE_COLORPICKERFONT;Czcionka narzędzia do wybierania kolorów +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Kolor maski kadrowania PREFERENCES_APPEARANCE_MAINFONT;Główny font PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_APPEARANCE_PSEUDOHIDPI; Tryb pseudo-HiDPI @@ -871,7 +910,9 @@ PREFERENCES_CACHECLEAR_ONLYPROFILES;Usuń wszystkie profile przetwarzania z pami PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisów w pamięci podręcznej PREFERENCES_CACHEOPTS;Opcje pamięci podręcznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokość miniatury +PREFERENCES_CHUNKSIZES;Liczba kafelków na wątek PREFERENCES_CHUNKSIZE_RAW_AMAZE;Demozaikowanie AMaZE +PREFERENCES_CHUNKSIZE_RAW_CA;Korekcja aberracji chromatycznej PREFERENCES_CHUNKSIZE_RAW_RCD;Demozaikowanie RCD PREFERENCES_CHUNKSIZE_RAW_XT;Demozaikowanie Xtrans PREFERENCES_CHUNKSIZE_RGB;Przetwarzanie RGB @@ -879,9 +920,13 @@ PREFERENCES_CLIPPINGIND;Pokazywanie obciętych prześwietleń/cieni PREFERENCES_CLUTSCACHE;Cache HaldCLUT PREFERENCES_CLUTSDIR;Folder obrazów HaldCLUT PREFERENCES_CMMBPC;Kompensacja punktu czerni +PREFERENCES_CROP;Kadrowanie +PREFERENCES_CROP_AUTO_FIT;Automatycznie przybliż aby dopasować do skadrowanego obrazu +PREFERENCES_CROP_GUIDES;Zawsze pokazuj ramkę kadrowania PREFERENCES_CROP_GUIDES_FRAME;Ramka PREFERENCES_CROP_GUIDES_FULL;Oryginał PREFERENCES_CROP_GUIDES_NONE;Brak +PREFERENCES_CURVEBBOXPOS;Położenie przycisków kopiuj oraz wklej krzywą PREFERENCES_CURVEBBOXPOS_ABOVE;Powyżej PREFERENCES_CURVEBBOXPOS_BELOW;Poniżej PREFERENCES_CURVEBBOXPOS_LEFT;Z lewej @@ -904,9 +949,11 @@ PREFERENCES_DIRLAST;Ostatnio odwiedzony katalog PREFERENCES_DIROTHER;Inny PREFERENCES_DIRSELECTDLG;Wybierz katalog z obrazami po uruchomieniu... PREFERENCES_DIRSOFTWARE;Katalog instalacyjny +PREFERENCES_EDITORCMDLINE;Własny wiersz poleceń PREFERENCES_EDITORLAYOUT;Układ edytora PREFERENCES_EXTERNALEDITOR;Zewnętrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przeglądarki plików +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Zwiń paski w przeglądarce plików PREFERENCES_FLATFIELDFOUND;Znaleziono PREFERENCES_FLATFIELDSDIR;Katalog z pustymi polami PREFERENCES_FLATFIELDSHOTS;kadry @@ -928,6 +975,7 @@ PREFERENCES_INTENT_SATURATION;Nasyceniowy PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Pokaż osadzoną miniaturę JPEG jeśli plik raw jest nieedytowany PREFERENCES_LANG;Język PREFERENCES_LANGAUTODETECT;Użyj języka systemowego +PREFERENCES_MAXRECENTFOLDERS;Maksymalna liczba ostatnio otwieranych folderów PREFERENCES_MENUGROUPEXTPROGS;Grupuj "Otwórz za pomocą" PREFERENCES_MENUGROUPFILEOPERATIONS;Grupuj operacje plików PREFERENCES_MENUGROUPLABEL;Grupuj operacje etykiet @@ -936,30 +984,39 @@ PREFERENCES_MENUGROUPRANK;Grupuj operacje oceny PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_MONITOR;Monitor PREFERENCES_MONPROFILE;Domyślny profil kolorów +PREFERENCES_MONPROFILE_WARNOSX;Z powodu ograniczeń MacOS, dostępna jest tylko paleta sRGB. PREFERENCES_MULTITAB;Tryb wielu zakładek PREFERENCES_MULTITABDUALMON;Tryb wielu zakładek (na drugim monitorze jeśli dostępny) PREFERENCES_NAVIGATIONFRAME;Nawigacja PREFERENCES_OVERLAY_FILENAMES;Nakładaj nazwy pliku na miniatury +PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Nakładaj nazwy plików na miniaturki w przeglądarce PREFERENCES_OVERWRITEOUTPUTFILE;Nadpisuj istniejące pliki PREFERENCES_PANFACTORLABEL;Współczynnik PREFERENCES_PARSEDEXT;Przetwarzane rozszerzenia PREFERENCES_PARSEDEXTADD;Dodaj rozszerzenie PREFERENCES_PARSEDEXTADDHINT;Proszę wprowadzić rozszerzenie i zatwierdzić przyciskiem, by dodać do listy PREFERENCES_PARSEDEXTDELHINT;Skasuje wybrane rozszerzenie z listy +PREFERENCES_PARSEDEXTDOWNHINT;Przenieś wybrane rozszerzenie w dół. +PREFERENCES_PARSEDEXTUPHINT;Przenieś wybrane rozszerzenie w górę. +PREFERENCES_PERFORMANCE_MEASURE;Zmierz PREFERENCES_PERFORMANCE_THREADS;Wątki PREFERENCES_PREVDEMO;Metoda demozaikowania podglądu PREFERENCES_PREVDEMO_FAST;Szybka +PREFERENCES_PREVDEMO_LABEL;Metoda demozaikowania podczas podglądu przy powiększeniu mniejszym niż 100%: +PREFERENCES_PREVDEMO_SIDECAR;Tak jak w PP3 PREFERENCES_PROFILEHANDLING;Obsługa profili PREFERENCES_PROFILELOADPR;Priorytet wczytywania profilu PREFERENCES_PROFILEPRCACHE;Profil w pamięci podręcznej PREFERENCES_PROFILEPRFILE;Profil przy pliku wejściowym PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamięci podręcznej PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejściowego +PREFERENCES_PROFILESAVELOCATION;Miejsce zapisywania profilu przetwarzania PREFERENCES_PROFILE_NONE;Żaden PREFERENCES_PROPERTY;Własność PREFERENCES_PRTPROFILE;Profil kolorów PREFERENCES_PSPATH;Katalog w którym zainstalowany jest Adobe Photoshop PREFERENCES_SELECTLANG;Wybierz język +PREFERENCES_SERIALIZE_TIFF_READ;Ustawienia odczytu TIFF PREFERENCES_SET;Ustaw PREFERENCES_SHOWBASICEXIF;Pokaż podstawowe dane Exif PREFERENCES_SHOWDATETIME;Pokaż datę i czas @@ -978,6 +1035,7 @@ PREFERENCES_TAB_GENERAL;Ogólne PREFERENCES_TAB_IMPROC;Przetwarzanie obrazu PREFERENCES_TAB_PERFORMANCE;Wydajność PREFERENCES_TAB_SOUND;Dźwięki +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show PREFERENCES_TP_LABEL;Panel narzędzi: PREFERENCES_TP_VSCROLLBAR;Ukry pionowy pasek przesuwania PREFERENCES_USEBUNDLEDPROFILES;Użyj załączone profile przetwarzania @@ -1002,7 +1060,10 @@ PROFILEPANEL_TOOLTIPLOAD;Ładuj profil z pliku.\nCtrl+klik aby wybrać pa PROFILEPANEL_TOOLTIPPASTE;Wklej profil ze schowka.\nCtrl+klik aby wybrać parametry do wklejenia. PROFILEPANEL_TOOLTIPSAVE;Zapisz aktualny profil.\nCtrl+klik aby wybrać parametry do zapisania. PROGRESSBAR_DECODING;Dekodowanie... +PROGRESSBAR_GREENEQUIL;Równoważenie koloru zielonego... PROGRESSBAR_HLREC;Rekonstrukcja podświetleń... +PROGRESSBAR_HOTDEADPIXELFILTER;Filtr gorących/martwych pikseli.. +PROGRESSBAR_LINEDENOISE;Liniowy filtr szumu... PROGRESSBAR_LOADING;Wczytywanie obrazu... PROGRESSBAR_LOADINGTHUMBS;Wczytywanie miniatur... PROGRESSBAR_LOADJPEG;Ładowanie pliku JPEG... @@ -1011,6 +1072,7 @@ PROGRESSBAR_LOADTIFF;Ładowanie pliku TIFF... PROGRESSBAR_NOIMAGES;Nie znaleziono żadnych obrazów PROGRESSBAR_PROCESSING;Przetwarzanie obrazu... PROGRESSBAR_PROCESSING_PROFILESAVED;Zapisano profil przetwarzania +PROGRESSBAR_RAWCACORR;Korekcja aberracji chromatycznej... PROGRESSBAR_READY;Gotowe PROGRESSBAR_SAVEJPEG;Zapisywanie pliku JPEG... PROGRESSBAR_SAVEPNG;Zapisywanie pliku PNG... @@ -1029,8 +1091,18 @@ QUEUE_FORMAT_TITLE;Format pliku QUEUE_LOCATION_FOLDER;Zapisz do katalogu QUEUE_LOCATION_TEMPLATE;Użyj schemat QUEUE_LOCATION_TEMPLATE_TOOLTIP;Dozwolone są następujące kody formatujące:\n%f, %d1, %d2, ..., %p1, %p2, ..., %r, %s1, %s2, ...\n\nKody formatujące odnoszą się do różnych elementów ścieżki zdjęcia, atrybutów zdjęcia oraz do arbitralnego ciągu numerycznego operacji wsadowej.\n\nPrzykładowo, jeśli zdjęcie obrabiane ma następującą ścieżkę:\n/home/andrzej/zdjecia/2010-10-31/dsc0042.nef\nznaczenie kodów formatujących jest następujące:\n%d4 = home\n%d3 = andrzej\n%d2 = zdjecia\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/andrzej/zdjecia/\n%p3 = /home/andrzej/\n%p4 = /home/\n\n%r zostanie zastąpione oceną zdjęcia. Jeśli zdjęcie nie posiada oceny, %r zostanie zastąpione liczbą '0'. Jeśli zdjęcie leży w śmietniku, %r zostanie zastąpione znakiem 'x'.\n\n%s1, %s2, etc. zostanie zastąpione ciągniem numerycznym dopełnionym od jednej do dziewięciu cyfr. Ciąg ten zostanie rozpocznięty od "1" za każdym razem gdy kolejka przetwarzania zostanie uruchomiona, i liczba jest zwiększona o "1" dla każdego zapisanego obrazu.\n\nJeśli chcesz zapisać obraz wyjściowy obok obrazu wejściowego, napisz:\n%p1/%f\n\nJeśli chcesz zapisać obraz wyjściowy w folderze o nazwie "wywolane" znajdującego się w katalogu zawierającym otwarty obraz, napisz:\n%p1/wywolane/%f\n\nJeśli chcesz zapisać obraz wyjściowy w folderze o nazwie "/home/andrzej/zdjecia/wywolane/2010-10-31", napisz:\n%p2/wywolane/%d1/%f +QUEUE_LOCATION_TITLE;Lokalizacja wyjściowa +SAMPLEFORMAT_0;Nieznany typ pliku +SAMPLEFORMAT_1;8-bit bez znaku +SAMPLEFORMAT_2;16-bit bez znaku +SAMPLEFORMAT_4;24-bit LogLuv +SAMPLEFORMAT_8;32-bit LogLuv +SAMPLEFORMAT_16;16-bit zmiennoprzecinkowy +SAMPLEFORMAT_32;24-bit zmiennoprzecinkowy +SAMPLEFORMAT_64;32-bit zmiennoprzecinkowy SAVEDLG_AUTOSUFFIX;Automatycznie dodaj przyrostek, jeżeli plik już istnieje SAVEDLG_FILEFORMAT;Format pliku +SAVEDLG_FILEFORMAT_FLOAT; zmiennoprzecinkowy SAVEDLG_FORCEFORMATOPTS;Wymuś opcje zapisu SAVEDLG_JPEGQUAL;Jakość JPEG SAVEDLG_PUTTOQUEUE;Umieść w kolejce przetwarzania @@ -1271,6 +1343,7 @@ TP_DEHAZE_LABEL;Usuwanie mgły TP_DEHAZE_LUMINANCE;Tylko luminancja TP_DEHAZE_SHOW_DEPTH_MAP;Pokaż mapę głębokości TP_DEHAZE_STRENGTH;Siła +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatycznie TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominancja - Błękit-żółć TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Krzywa chrominancji TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominancja @@ -1355,6 +1428,7 @@ TP_EXPOSURE_TCMODE_FILMLIKE;Klisza TP_EXPOSURE_TCMODE_LABEL1;Tryb krzywej 1 TP_EXPOSURE_TCMODE_LABEL2;Tryb krzywej 2 TP_EXPOSURE_TCMODE_LUMINANCE;Luminancja +TP_EXPOSURE_TCMODE_PERCEPTUAL;Percepcyjny TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Mieszanie nasycenia i mocy światła białego TP_EXPOSURE_TCMODE_STANDARD;Standardowa TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Ważona standardowa @@ -1426,10 +1500,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Zapisz liniowy obraz TIFF zanim profil wejściowy z TP_ICM_TONECURVE;Użyj krzywą tonalną z DCP TP_ICM_TONECURVE_TOOLTIP;Włącz aby użyć krzywą tonalną znajdującą się w profilu DCP. Opcja ta jest tylko aktywna jeśli profil DCP zawiera krzywą tonalną. TP_ICM_WORKINGPROFILE;Profil roboczy +TP_ICM_WORKING_TRC;Krzywa odpowiedzi tonalnej: TP_ICM_WORKING_TRC_CUSTOM;Własna TP_ICM_WORKING_TRC_GAMMA;Gamma TP_ICM_WORKING_TRC_NONE;Żadna TP_ICM_WORKING_TRC_SLOPE;Nachylenie +TP_ICM_WORKING_TRC_TOOLTIP;Tylko dla wbudowanych profili. TP_IMPULSEDENOISE_LABEL;Redukcja Szumów Impulsowych TP_IMPULSEDENOISE_THRESH;Próg TP_LABCURVE_AVOIDCOLORSHIFT;Zapobiegaj zmianom koloru @@ -1563,11 +1639,23 @@ TP_RAW_LMMSE;LMMSE TP_RAW_LMMSEITERATIONS;Ilość kroków udoskonalenia LMMSE TP_RAW_LMMSE_TOOLTIP;Aby zmniejszyć ilość artefaktów i poprawić stosunek sygnału do szumów, można wykorzystać następujące ustawienia:\n1: Gamma\n2-4: Średnia mediana\n5-6: Rafinowanie TP_RAW_MONO;Mono +TP_RAW_PIXELSHIFTBLUR;Maska rozmycia ruchu +TP_RAW_PIXELSHIFTDMETHOD;Metoda demozaikowania ruchu TP_RAW_PIXELSHIFTEPERISO;Czułość +TP_RAW_PIXELSHIFTEQUALBRIGHT;Wyrównaj jasność klatek +TP_RAW_PIXELSHIFTHOLEFILL;Wypełnij dziury w masce ruchu +TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Wypełnia dziury w masce ruchu +TP_RAW_PIXELSHIFTMEDIAN;Użyj mediany dla poruszonych fragmentów TP_RAW_PIXELSHIFTMM_AUTO;Automatyczny TP_RAW_PIXELSHIFTMM_CUSTOM;Własny TP_RAW_PIXELSHIFTMM_OFF;Wyłączony +TP_RAW_PIXELSHIFTMOTIONMETHOD;Korekcja ruchu +TP_RAW_PIXELSHIFTNONGREENCROSS;Szukaj ruchu w kanale niebieskim/czerwonym +TP_RAW_PIXELSHIFTSHOWMOTION;Pokaż maskę ruchu +TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Pokaż tylko maskę ruchu +TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Pokaż samą maskę ruchu (bez obrazu). TP_RAW_PIXELSHIFTSIGMA;Promień rozmycia +TP_RAW_PIXELSHIFTSMOOTH;Miękkie przejścia TP_RAW_RCD;RCD TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Matryca z filtrem Bayera @@ -1576,6 +1664,7 @@ TP_RAW_SENSOR_XTRANS_LABEL;Matryca z filtrem X-Trans TP_RAW_VNG4;VNG4 TP_RAW_XTRANS;X-Trans TP_RAW_XTRANSFAST;Szybki X-Trans +TP_RESIZE_ALLOW_UPSCALING;Zezwól na zwiększenie rozdzielczości TP_RESIZE_APPLIESTO;Dotyczy: TP_RESIZE_CROPPEDAREA;Obszaru kadrowanego TP_RESIZE_FITBOX;Wymiary obwodu @@ -1594,12 +1683,21 @@ TP_RETINEX_CONTEDIT_HSL;Histogram HSL TP_RETINEX_CONTEDIT_LAB;Histogram L*a*b* TP_RETINEX_CONTEDIT_LH;Odcień TP_RETINEX_CONTEDIT_MAP;Wyrównywanie +TP_RETINEX_CURVEEDITOR_CD;L=f(L) +TP_RETINEX_CURVEEDITOR_LH;Siła=f(H) +TP_RETINEX_CURVEEDITOR_MAP;L=f(L) TP_RETINEX_EQUAL;Wyrównywanie TP_RETINEX_GAIN;Wzmocnienie TP_RETINEX_GAMMA;Gamma +TP_RETINEX_GAMMA_FREE;Wolna +TP_RETINEX_GAMMA_HIGH;Wysoka +TP_RETINEX_GAMMA_LOW;Niska +TP_RETINEX_GAMMA_MID;Średnia TP_RETINEX_GAMMA_NONE;Żaden TP_RETINEX_HIGH;Wysoki TP_RETINEX_HIGHLIGHT;Próg podświetleń +TP_RETINEX_HSLSPACE_LIN;HSL-Liniowa +TP_RETINEX_HSLSPACE_LOG;HSL-Logarytmiczna TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Maska TP_RETINEX_LABSPACE;L*a*b* @@ -1746,7 +1844,10 @@ TP_WAVELET_EDRAD;Promień TP_WAVELET_EDSL;Suwaki progów TP_WAVELET_EDTYPE;Metoda kontrastu lokalnego: TP_WAVELET_EDVAL;Siła +TP_WAVELET_FINAL;Ostateczny retusz TP_WAVELET_FINEST;Najdokładniej +TP_WAVELET_HIGHLIGHT;Zakres luminancji podświetleń +TP_WAVELET_HS1;Zakres luminancji TP_WAVELET_HS2;Cienie/Podświetlenia TP_WAVELET_HUESKIN;Odcień skóry TP_WAVELET_HUESKY;Odcień nieba @@ -1756,7 +1857,9 @@ TP_WAVELET_LEVONE;Poziom 2 TP_WAVELET_LEVTHRE;Poziom 4 TP_WAVELET_LEVTWO;Poziom 3 TP_WAVELET_LEVZERO;Poziom 1 +TP_WAVELET_LINKEDG;Połącz z siłą 'Ostrość krawędzi' TP_WAVELET_LIPST;Usprawniony algorytm +TP_WAVELET_LOWLIGHT;Zakres luminancji cieni TP_WAVELET_MEDGREINF;Pierwszy poziom TP_WAVELET_MEDI;Usuwaj artefakty niebieskiego nieba TP_WAVELET_MEDILEV;Wykrywanie krawędzi @@ -1775,6 +1878,7 @@ TP_WAVELET_RESCHRO;Chrominancja TP_WAVELET_RESCON;Cienie TP_WAVELET_RESCONH;Podświetlenia TP_WAVELET_SAT;Chrominancja kolorów nasyconych +TP_WAVELET_SKY;Odcień nieba - wybór/ochrona TP_WAVELET_STREN;Siła TP_WAVELET_STRENGTH;Siła TP_WAVELET_SUPE;Ekstra @@ -1845,13 +1949,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!CURVEEDITOR_AXIS_IN;I: -!CURVEEDITOR_AXIS_LEFT_TAN;LT: -!CURVEEDITOR_AXIS_OUT;O: -!CURVEEDITOR_AXIS_RIGHT_TAN;RT: !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. -!DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. !DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift @@ -1867,7 +1965,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !FILEBROWSER_DELETEDIALOG_SELECTED;Are you sure you want to permanently delete the selected %1 files? !FILEBROWSER_DELETEDIALOG_SELECTEDINCLPROC;Are you sure you want to permanently delete the selected %1 files, including a queue-processed version? !FILEBROWSER_POPUPREMOVEINCLPROC;Delete permanently, including queue-processed version -!FILEBROWSER_SHOWNOTTRASHHINT;Show only images not in trash. !FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions. !GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP. !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. @@ -1943,14 +2040,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_443;Output black point compensation !HISTORY_MSG_444;WB - Temp bias !HISTORY_MSG_445;Raw sub-image -!HISTORY_MSG_453;PS - Show mask only !HISTORY_MSG_457;PS - Check red/blue !HISTORY_MSG_462;PS - Check green !HISTORY_MSG_464;PS - Blur motion mask -!HISTORY_MSG_465;PS - Blur radius -!HISTORY_MSG_468;PS - Fill holes !HISTORY_MSG_469;PS - Median -!HISTORY_MSG_472;PS - Smooth transitions !HISTORY_MSG_473;PS - Use LMMSE !HISTORY_MSG_476;CAM02 - Temp out !HISTORY_MSG_477;CAM02 - Green out @@ -1964,9 +2057,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_488;Dynamic Range Compression !HISTORY_MSG_493;L*a*b* Adjustments !HISTORY_MSG_494;Capture Sharpening -!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction -!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel !HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask !HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask !HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness @@ -1975,7 +2065,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur !HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset !HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power -!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation !HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask !HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope !HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold @@ -1994,36 +2083,19 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace -!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light -!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor -!HISTORY_MSG_TRANS_Method;Geometry - Method !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description !ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description. !ICCPROFCREATOR_ILL;Illuminant: !ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles. !ICCPROFCREATOR_PRIMARIES;Primaries: -!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 -!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 !ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles. -!ICCPROFCREATOR_PRIM_WIDEG;Widegamut -!ICCPROFCREATOR_TRC_PRESET;Tone response curve: !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. -!IPTCPANEL_COPYRIGHT;Copyright notice -!IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. -!IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. -!IPTCPANEL_CREATORHINT;Enter the name of the person that created this image. !IPTCPANEL_CREATORJOBTITLE;Creator's job title !IPTCPANEL_CREATORJOBTITLEHINT;Enter the Job Title of the person listed in the Creator field. !IPTCPANEL_DESCRIPTIONHINT;Enter a "caption" describing the who, what, and why of what is happening in this image, this might include names of people, and/or their role in the action that is taking place within the image. -!IPTCPANEL_DESCRIPTIONWRITER;Description writer !IPTCPANEL_DESCRIPTIONWRITERHINT;Enter the name of the person involved in writing, editing or correcting the description of the image. !IPTCPANEL_HEADLINEHINT;Enter a brief publishable synopsis or summary of the contents of the image. !IPTCPANEL_INSTRUCTIONSHINT;Enter information about embargoes, or other restrictions not covered by the Copyright field. @@ -2032,9 +2104,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !IPTCPANEL_SOURCEHINT;Enter or edit the name of a person or party who has a role in the content supply chain, such as a person or entity from whom you received this image from. !IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image. !IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name. -!IPTCPANEL_TRANSREFERENCE;Job ID -!IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking. -!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. @@ -2050,66 +2119,30 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift -!PARTIALPASTE_SOFTLIGHT;Soft light -!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font -!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color !PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: !PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. -!PREFERENCES_CHUNKSIZES;Tiles per thread -!PREFERENCES_CHUNKSIZE_RAW_CA;Raw CA correction !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs -!PREFERENCES_CROP;Crop Editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop -!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop -!PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons -!PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2. -!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders !PREFERENCES_MONINTENT;Default rendering intent -!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel -!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. -!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list. -!PREFERENCES_PERFORMANCE_MEASURE;Measure !PREFERENCES_PERFORMANCE_MEASURE_HINT;Logs processing times in console !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom: -!PREFERENCES_PREVDEMO_SIDECAR;As in PP3 !PREFERENCES_PRINTER;Printer (Soft-Proofing) !PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file -!PREFERENCES_PROFILESAVELOCATION;Processing profile saving location !PREFERENCES_PRTINTENT;Rendering intent !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now -!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files !PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!PROGRESSBAR_GREENEQUIL;Green equilibration... -!PROGRESSBAR_HOTDEADPIXELFILTER;Hot/dead pixel filter... -!PROGRESSBAR_LINEDENOISE;Line noise filter... -!PROGRESSBAR_RAWCACORR;Raw CA correction... -!QUEUE_LOCATION_TITLE;Output Location !QUEUE_STARTSTOP_TOOLTIP;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s -!SAMPLEFORMAT_0;Unknown data format -!SAMPLEFORMAT_1;8-bit unsigned -!SAMPLEFORMAT_2;16-bit unsigned -!SAMPLEFORMAT_4;24-bit LogLuv -!SAMPLEFORMAT_8;32-bit LogLuv -!SAMPLEFORMAT_16;16-bit floating-point -!SAMPLEFORMAT_32;24-bit floating-point -!SAMPLEFORMAT_64;32-bit floating-point -!SAVEDLG_FILEFORMAT_FLOAT; floating-point !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. @@ -2128,7 +2161,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones -!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. !TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. !TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. @@ -2144,7 +2176,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EXPOSURE_HISTMATCHING;Auto-Matched Tone Curve !TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail. -!TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) !TP_FILMNEGATIVE_GUESS_TOOLTIP;Automatically set the red and blue ratios by picking two patches which had a neutral hue (no color) in the original scene. The patches should differ in brightness. Set the white balance afterwards. !TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now? @@ -2157,8 +2188,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_ICM_PROFILEINTENT;Rendering Intent !TP_ICM_SAVEREFERENCE;Save Reference Image !TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. -!TP_ICM_WORKING_TRC;Tone response curve: -!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. !TP_LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong. !TP_PDSHARPENING_LABEL;Capture Sharpening !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows @@ -2173,42 +2202,22 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel, Fuji EXR).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_NONE;None (Shows sensor pattern) !TP_RAW_PIXELSHIFT;Pixel Shift -!TP_RAW_PIXELSHIFTBLUR;Blur motion mask -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion !TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. -!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames !TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Equalize per channel !TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Enabled: Equalize the RGB channels individually.\nDisabled: Use same equalization factor for all channels. !TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Equalize the brightness of the frames to the brightness of the selected frame.\nIf there are overexposed areas in the frames select the brightest frame to avoid magenta color cast in overexposed areas or enable motion correction. !TP_RAW_PIXELSHIFTGREEN;Check green channel for motion -!TP_RAW_PIXELSHIFTHOLEFILL;Fill holes in motion mask -!TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Fill holes in motion mask -!TP_RAW_PIXELSHIFTMEDIAN;Use median for moving parts !TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use median of all frames instead of selected frame for regions with motion.\nRemoves objects which are at different places in all frames.\nGives motion effect on slow moving (overlapping) objects. -!TP_RAW_PIXELSHIFTMOTIONMETHOD;Motion Correction -!TP_RAW_PIXELSHIFTNONGREENCROSS;Check red/blue channels for motion -!TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask -!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Show only motion mask -!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Shows the motion mask without the image. !TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. !TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value. -!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. -!TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) !TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method. -!TP_RETINEX_CURVEEDITOR_MAP;L=f(L) !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_FREEGAMMA;Free gamma !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. -!TP_RETINEX_GAMMA_FREE;Free -!TP_RETINEX_GAMMA_HIGH;High -!TP_RETINEX_GAMMA_LOW;Low -!TP_RETINEX_GAMMA_MID;Middle !TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). !TP_RETINEX_GRAD;Transmission gradient !TP_RETINEX_GRADS;Strength gradient @@ -2216,8 +2225,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RETINEX_GRAD_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Variance and Threshold are reduced when iterations increase, and conversely. !TP_RETINEX_HIGHLIG;Highlight !TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool. -!TP_RETINEX_HSLSPACE_LIN;HSL-Linear -!TP_RETINEX_HSLSPACE_LOG;HSL-Logarithmic !TP_RETINEX_ITER;Iterations (Tone-mapping) !TP_RETINEX_ITERF;Tone mapping !TP_RETINEX_ITER_TOOLTIP;Simulate a tone-mapping operator.\nHigh values increase the processing time. @@ -2278,9 +2285,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged. !TP_WAVELET_EDGTHRESH_TOOLTIP;Change the repartition between the first levels and the others. The higher the threshold the more the action is centered on the first levels. Be careful with negative values, they increase the action of high levels and can introduce artifacts. !TP_WAVELET_EDRAD_TOOLTIP;This radius adjustment is very different from those in other sharpening tools. Its value is compared to each level through a complex function. In this sense, a value of zero still has an effect. -!TP_WAVELET_FINAL;Final Touchup -!TP_WAVELET_HIGHLIGHT;Highlight luminance range -!TP_WAVELET_HS1;Whole luminance range !TP_WAVELET_HUESKIN_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. !TP_WAVELET_HUESKY_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. !TP_WAVELET_ITER;Delta balance levels @@ -2294,8 +2298,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_LEVELS;Wavelet levels !TP_WAVELET_LEVELS_TOOLTIP;Choose the number of detail levels the image is to be decomposed into. More levels require more RAM and require a longer processing time. !TP_WAVELET_LEVLABEL;Preview maximum possible levels = %1 -!TP_WAVELET_LINKEDG;Link with Edge Sharpness' Strength -!TP_WAVELET_LOWLIGHT;Shadow luminance range !TP_WAVELET_MEDILEV_TOOLTIP;When you enable Edge Detection, it is recommanded:\n- to disabled low contrast levels to avoid artifacts,\n- to use high values of gradient sensitivity.\n\nYou can modulate the strength with 'refine' from Denoise and Refine. !TP_WAVELET_NOISE;Denoise and Refine !TP_WAVELET_NPTYPE_TOOLTIP;This algorithm uses the proximity of a pixel and eight of its neighbors. If less difference, edges are reinforced. @@ -2307,7 +2309,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_SETTINGS;Wavelet Settings !TP_WAVELET_SKIN;Skin targetting/protection !TP_WAVELET_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected. -!TP_WAVELET_SKY;Sky targetting/protection !TP_WAVELET_SKY_TOOLTIP;At -100 sky-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 sky-tones are protected while all other tones are affected. !TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels between 9 and 9 minus the value will be affected by the shadow luminance range. Other levels will be fully treated. The highest level possible is limited by the highlight level value (9 minus highlight level value). !TP_WAVELET_THRESHOLD_TOOLTIP;Only levels beyond the chosen value will be affected by the highlight luminance range. Other levels will be fully treated. The chosen value here limits the highest possible value of the shadow levels. From 4ea92d3e93712125f7ffc5bd23d132e3646a142a Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 18 Feb 2020 18:06:21 +0100 Subject: [PATCH 36/38] Fix broken camonst.json --- rtengine/camconst.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 3deab9c38..f58167478 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1221,7 +1221,7 @@ Camera constants: { // Quality A, changes for raw crop which is wrong (larger) in dcraw "make_model": "Canon PowerShot S120", - "dcraw_matrix": [ 6961, -1685, -695, -4625, 12945, 1836, -1114, 2152, 5518 ] // ColorMatrix2 using illuminant D65 from Adobe DNG Converter 12.2 + "dcraw_matrix": [ 6961, -1685, -695, -4625, 12945, 1836, -1114, 2152, 5518 ], // ColorMatrix2 using illuminant D65 from Adobe DNG Converter 12.2 "raw_crop": [ 120, 30, 4024, 3030 ], "masked_areas": [ 32, 2, 3028, 80 ], "ranges": { "white": 4050 } From e7a4ae3c9fa987d625b537573fd811a9cb5d2fb8 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 18 Feb 2020 18:07:45 +0100 Subject: [PATCH 37/38] Fix segfault on close of RT when RT was started with a filename as argument --- rtgui/rtwindow.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 8cfeb8ec0..fc315e1b7 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -99,6 +99,8 @@ RTWindow::RTWindow () , bpanel (nullptr) , splash (nullptr) , btn_fullscreen (nullptr) + , iFullscreen (nullptr) + , iFullscreen_exit (nullptr) , epanel (nullptr) , fpanel (nullptr) { From 020051fd4bcb582c5edcd03ce1851374b876ab13 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 18 Feb 2020 20:02:51 +0100 Subject: [PATCH 38/38] Better formatting of generateRtexifUpdates No functional changes. --- tools/generateRtexifUpdates | 87 ++++++++++++++++++++++++++++++++----- 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/tools/generateRtexifUpdates b/tools/generateRtexifUpdates index 72a97862e..b4ace209d 100755 --- a/tools/generateRtexifUpdates +++ b/tools/generateRtexifUpdates @@ -32,7 +32,10 @@ echo #------------------------------------------------------------------------------ # Canon printf '%s\n' "Saving ${tmpdir}/canon_lenses" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='LensType']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -canon:all) | sort -fuV > "${tmpdir}/canon_lenses" +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='LensType']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -canon:all) | sort -fuV > "${tmpdir}/canon_lenses" #In :10.1 Sigma 50mm f/2.8 EX #Out: {10, "Sigma 50mm f/2.8 EX"}, @@ -55,7 +58,11 @@ sed -r -i \ # replace with '] = "' # append '";' printf '%s\n' "Saving ${tmpdir}/canon_cameras" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='CanonModelID']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -canon:all) | sort -fuV > "${tmpdir}/canon_cameras" +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='CanonModelID']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -canon:all) | sort -fuV > "${tmpdir}/canon_cameras" + sed -r -i \ -e 's/^/ choices[/' \ -e 's/\t/] = "/' \ @@ -65,28 +72,84 @@ sed -r -i \ #------------------------------------------------------------------------------ # Nikon LensIDs are composite tags printf '%s\n' "Saving ${tmpdir}/nikon" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='LensID']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -composite:all) > "${tmpdir}/nikon" -sed -r -i -e '/^... /d' -e 's/^/ {"/' -e 's/([A-F0-9]+)[A-F0-9.]*\t/\1", "/' -e 's/$/"},/' -e 's|(.* ")(.*) F([0-9]+)|\1\2 f/\3|' -e 's| F/([0-9]+)| f/\1|' "${tmpdir}/nikon" + +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='LensID']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -composite:all) > "${tmpdir}/nikon" + +sed -r -i \ + -e '/^... /d' \ + -e 's/^/ {"/' \ + -e 's/([A-F0-9]+)[A-F0-9.]*\t/\1", "/' \ + -e 's/$/"},/' \ + -e 's|(.* ")(.*) F([0-9]+)|\1\2 f/\3|' \ + -e 's| F/([0-9]+)| f/\1|' \ + "${tmpdir}/nikon" #------------------------------------------------------------------------------ # Olympus printf '%s\n' "Saving ${tmpdir}/olympus" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='LensType']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -olympus:all) | sort -fuV > "${tmpdir}/olympus" -sed -r -i -e '/0 00 00\tNone/d' -e 's/^/ lenses["0/' -e 's/\t/"] = "/' -e 's/$/";/' -e 's| F([0-9]+)| f/\1|g' "${tmpdir}/olympus" + +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='LensType']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -olympus:all) | sort -fuV > "${tmpdir}/olympus" + +sed -r -i \ + -e '/0 00 00\tNone/d' \ + -e 's/^/ lenses["0/' \ + -e 's/\t/"] = "/' \ + -e 's/$/";/' \ + -e 's| F([0-9]+)| f/\1|g' \ + "${tmpdir}/olympus" #------------------------------------------------------------------------------ # Pentax printf '%s\n' "Saving ${tmpdir}/pentax" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='LensType']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -pentax:all) | sort -fuV > "${tmpdir}/pentax" -sed -r -i -e 's/^/ choices.insert (p_t (256 * /' -e 's/([0-9]+) ([0-9]+)([0-9.]*)/\1 + \2/' -e 's/\t/, "/' -e 's/$/"));/' -e 's| F([0-9]+)| f/\1|' "${tmpdir}/pentax" + +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='LensType']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -pentax:all) | sort -fuV > "${tmpdir}/pentax" + +sed -r -i \ + -e 's/^/ choices.insert (p_t (256 * /' \ + -e 's/([0-9]+) ([0-9]+)([0-9.]*)/\1 + \2/' \ + -e 's/\t/, "/' \ + -e 's/$/"));/' \ + -e 's| F([0-9]+)| f/\1|' \ + "${tmpdir}/pentax" #------------------------------------------------------------------------------ # Sony printf '%s\n' "Saving ${tmpdir}/sony" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='LensType']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -sony:all) | sort -fuV > "${tmpdir}/sony" + +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='LensType']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -sony:all) | sort -fuV > "${tmpdir}/sony" + # Sony has more lenses under the LensType2 tag printf '%s\n' "Saving ${tmpdir}/sony-lenstype2" -xmlstarlet sel -T -t -m "taginfo/table/tag[@name='LensType2']/values/key" -v "concat(@id,' ',val)" -n < <("$et" -listx -sony:all) | sort -fuV > "${tmpdir}/sony-lenstype2" -sed -r -i -e 's/^/ {/' -e 's/([0-9]+)[0-9.]*\t/\1, "/' -e 's/$/"},/' -e 's| F([0-9]+)| f/\1|g' "${tmpdir}/sony" -sed -r -i -e '/255\tTamron Lens (255)/d' -e 's/([0-9]+)[0-9.]*\t/\1, "/' -e 's/^/ choices.insert (p_t (/' -e 's/$/"));/' -e 's| F([0-9]+)| f/\1|g' "${tmpdir}/sony-lenstype2" + +xmlstarlet sel -T -t \ + -m "taginfo/table/tag[@name='LensType2']/values/key" \ + -v "concat(@id,' ',val)" \ + -n < <("$et" -listx -sony:all) | sort -fuV > "${tmpdir}/sony-lenstype2" + +sed -r -i \ + -e 's/^/ {/' \ + -e 's/([0-9]+)[0-9.]*\t/\1, "/' \ + -e 's/$/"},/' \ + -e 's| F([0-9]+)| f/\1|g' \ + "${tmpdir}/sony" + +sed -r -i \ + -e '/255\tTamron Lens (255)/d' \ + -e 's/([0-9]+)[0-9.]*\t/\1, "/' \ + -e 's/^/ choices.insert (p_t (/' \ + -e 's/$/"));/' \ + -e 's| F([0-9]+)| f/\1|g' \ + "${tmpdir}/sony-lenstype2"