From 6bebc19f02f23c5c6af98e44d807ae4c7f9dfee0 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 26 Sep 2019 15:03:09 +0200 Subject: [PATCH 01/66] reviewed boxblur code and usage --- rtengine/CMakeLists.txt | 1 + rtengine/FTblockDN.cc | 212 +++----- rtengine/boxblur.cc | 420 +++++++++++++++ rtengine/boxblur.h | 872 +----------------------------- rtengine/gauss.cc | 12 +- rtengine/gauss.h | 2 +- rtengine/guidedfilter.cc | 2 +- rtengine/improcfun.h | 20 +- rtengine/ipretinex.cc | 1044 +++++++++++++++++------------------- rtengine/ipsharpen.cc | 4 +- rtengine/ipwavelet.cc | 1 - rtengine/rawimagesource.cc | 4 +- rtengine/rawimagesource.h | 2 +- rtengine/rescale.h | 1 + rtengine/shmap.cc | 13 +- 15 files changed, 1015 insertions(+), 1595 deletions(-) create mode 100644 rtengine/boxblur.cc diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index f52cfa256..add2e51c0 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -31,6 +31,7 @@ set(CAMCONSTSFILE "camconst.json") set(RTENGINESOURCEFILES badpixels.cc + boxblur.cc CA_correct_RT.cc capturesharpening.cc EdgePreservingDecomposition.cc diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index d1e659114..8fd0ba29e 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -479,6 +479,7 @@ enum nrquality {QUALITY_STANDARD, QUALITY_HIGH}; void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi) { BENCHFUN + //#ifdef _DEBUG MyTime t1e, t2e; t1e.set(); @@ -687,8 +688,8 @@ BENCHFUN } } - int tilesize; - int overlap; + int tilesize = 0; + int overlap = 0; if (settings->leveldnti == 0) { tilesize = 1024; @@ -1341,8 +1342,6 @@ BENCHFUN #ifdef _OPENMP int masterThread = omp_get_thread_num(); -#endif -#ifdef _OPENMP #pragma omp parallel num_threads(denoiseNestedLevels) if (denoiseNestedLevels>1) #endif { @@ -1351,11 +1350,9 @@ BENCHFUN #else int subThread = 0; #endif - float blurbuffer[TS * TS] ALIGNED64; float *Lblox = LbloxArray[subThread]; float *fLblox = fLbloxArray[subThread]; float pBuf[width + TS + 2 * blkrad * offset] ALIGNED16; - float nbrwt[TS * TS] ALIGNED64; #ifdef _OPENMP #pragma omp for #endif @@ -1430,7 +1427,7 @@ BENCHFUN for (int hblk = 0; hblk < numblox_W; ++hblk) { - RGBtile_denoise(fLblox, hblk, noisevar_Ldetail, nbrwt, blurbuffer); + RGBtile_denoise(fLblox, hblk, noisevar_Ldetail); }//end of horizontal block loop //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1447,14 +1444,8 @@ BENCHFUN //add row of blocks to output image tile RGBoutput_tile_row(Lblox, Ldetail, tilemask_out, height, width, topproc); - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - }//end of vertical block loop - - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - } - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #ifdef _OPENMP #pragma omp parallel for num_threads(denoiseNestedLevels) if (denoiseNestedLevels>1) @@ -2041,26 +2032,20 @@ BENCHFUN }//end of main RGB_denoise - -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -void ImProcFunctions::RGBtile_denoise(float * fLblox, int hblproc, float noisevar_Ldetail, float * nbrwt, float * blurbuffer) //for DCT +void ImProcFunctions::RGBtile_denoise(float* fLblox, int hblproc, float noisevar_Ldetail) //for DCT { - int blkstart = hblproc * TS * TS; + float nbrwt[TS * TS] ALIGNED64; + const int blkstart = hblproc * TS * TS; - boxabsblur(fLblox + blkstart, nbrwt, 3, 3, TS, TS, blurbuffer); //blur neighbor weights for more robust estimation //for DCT + boxabsblur(fLblox + blkstart, nbrwt, 3, TS, TS, false); //blur neighbor weights for more robust estimation //for DCT #ifdef __SSE2__ - __m128 tempv; - __m128 noisevar_Ldetailv = _mm_set1_ps(noisevar_Ldetail); - __m128 onev = _mm_set1_ps(1.0f); + const vfloat noisevar_Ldetailv = F2V(-1.f / noisevar_Ldetail); + const vfloat onev = F2V(1.f); for (int n = 0; n < TS * TS; n += 4) { //for DCT - tempv = onev - xexpf(-SQRV(LVF(nbrwt[n])) / noisevar_Ldetailv); - _mm_storeu_ps(&fLblox[blkstart + n], LVFU(fLblox[blkstart + n]) * tempv); + const vfloat tempv = onev - xexpf(SQRV(LVF(nbrwt[n])) * noisevar_Ldetailv); + STVF(fLblox[blkstart + n], LVF(fLblox[blkstart + n]) * tempv); }//output neighbor averaged result #else @@ -2071,14 +2056,7 @@ void ImProcFunctions::RGBtile_denoise(float * fLblox, int hblproc, float noiseva #endif - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - //printf("vblk=%d hlk=%d wsqave=%f || ",vblproc,hblproc,wsqave); - -}//end of function tile_denoise - - -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +} void ImProcFunctions::RGBoutput_tile_row(float *bloxrow_L, float ** Ldetail, float ** tilemask_out, int height, int width, int top) { @@ -2207,7 +2185,7 @@ void ImProcFunctions::Noise_residualAB(const wavelet_decomposition &WaveletCoeff chmaxresid = maxresid; } -bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]) +bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(const wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]) { int maxlvl = min(WaveletCoeffs_L.maxlevel(), 5); const float eps = 0.01f; @@ -2258,23 +2236,22 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &Wavelet //simple wavelet shrinkage float * sfave = buffer[0] + 32; float * sfaved = buffer[2] + 96; - float * blurBuffer = buffer[1] + 64; float mad_Lr = madL[lvl][dir - 1]; float levelFactor = mad_Lr * 5.f / (lvl + 1); #ifdef __SSE2__ - __m128 mad_Lv; - __m128 ninev = _mm_set1_ps(9.0f); - __m128 epsv = _mm_set1_ps(eps); - __m128 mag_Lv; - __m128 levelFactorv = _mm_set1_ps(levelFactor); + vfloat mad_Lv; + vfloat ninev = F2V(9.0f); + vfloat epsv = F2V(eps); + vfloat mag_Lv; + vfloat levelFactorv = F2V(levelFactor); int coeffloc_L; for (coeffloc_L = 0; coeffloc_L < Hlvl_L * Wlvl_L - 3; coeffloc_L += 4) { mad_Lv = LVFU(noisevarlum[coeffloc_L]) * levelFactorv; mag_Lv = SQRV(LVFU(WavCoeffs_L[dir][coeffloc_L])); - _mm_storeu_ps(&sfave[coeffloc_L], mag_Lv / (mag_Lv + mad_Lv * xexpf(-mag_Lv / (mad_Lv * ninev)) + epsv)); + STVFU(sfave[coeffloc_L], mag_Lv / (mag_Lv + mad_Lv * xexpf(-mag_Lv / (mad_Lv * ninev)) + epsv)); } for (; coeffloc_L < Hlvl_L * Wlvl_L; ++coeffloc_L) { @@ -2294,15 +2271,15 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &Wavelet } #endif - boxblur(sfave, sfaved, blurBuffer, lvl + 2, lvl + 2, Wlvl_L, Hlvl_L); //increase smoothness by locally averaging shrinkage + boxblur(sfave, sfaved, lvl + 2, Wlvl_L, Hlvl_L, false); //increase smoothness by locally averaging shrinkage #ifdef __SSE2__ - __m128 sfavev; - __m128 sf_Lv; + vfloat sfavev; + vfloat sf_Lv; for (coeffloc_L = 0; coeffloc_L < Hlvl_L * Wlvl_L - 3; coeffloc_L += 4) { sfavev = LVFU(sfaved[coeffloc_L]); sf_Lv = LVFU(sfave[coeffloc_L]); - _mm_storeu_ps(&WavCoeffs_L[dir][coeffloc_L], LVFU(WavCoeffs_L[dir][coeffloc_L]) * (SQRV(sfavev) + SQRV(sf_Lv)) / (sfavev + sf_Lv + epsv)); + STVFU(WavCoeffs_L[dir][coeffloc_L], LVFU(WavCoeffs_L[dir][coeffloc_L]) * (SQRV(sfavev) + SQRV(sf_Lv)) / (sfavev + sf_Lv + epsv)); //use smoothed shrinkage unless local shrinkage is much less } @@ -2340,7 +2317,7 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &Wavelet return (!memoryAllocationFailed); } -bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, +bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(const wavelet_decomposition &WaveletCoeffs_L, const wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb) { int maxlvl = WaveletCoeffs_L.maxlevel(); @@ -2422,12 +2399,12 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &Wavele if (noisevar_ab > 0.001f) { #ifdef __SSE2__ - __m128 onev = _mm_set1_ps(1.f); - __m128 mad_abrv = _mm_set1_ps(mad_abr); - __m128 rmad_Lm9v = onev / _mm_set1_ps(mad_Lr * 9.f); - __m128 mad_abv; - __m128 mag_Lv, mag_abv; - __m128 tempabv; + vfloat onev = F2V(1.f); + vfloat mad_abrv = F2V(mad_abr); + vfloat rmad_Lm9v = onev / F2V(mad_Lr * 9.f); + vfloat mad_abv; + vfloat mag_Lv, mag_abv; + vfloat tempabv; int coeffloc_ab; for (coeffloc_ab = 0; coeffloc_ab < Hlvl_ab * Wlvl_ab - 3; coeffloc_ab += 4) { @@ -2437,7 +2414,7 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &Wavele mag_Lv = LVFU(WavCoeffs_L[dir][coeffloc_ab]); mag_abv = SQRV(tempabv); mag_Lv = SQRV(mag_Lv) * rmad_Lm9v; - _mm_storeu_ps(&WavCoeffs_ab[dir][coeffloc_ab], tempabv * SQRV((onev - xexpf(-(mag_abv / mad_abv) - (mag_Lv))))); + STVFU(WavCoeffs_ab[dir][coeffloc_ab], tempabv * SQRV((onev - xexpf(-(mag_abv / mad_abv) - (mag_Lv))))); } // few remaining pixels @@ -2470,9 +2447,7 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &Wavele } for (int i = 2; i >= 0; i--) { - if (buffer[i] != nullptr) { - delete[] buffer[i]; - } + delete[] buffer[i]; } } @@ -2480,7 +2455,7 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &Wavele } -bool ImProcFunctions::WaveletDenoiseAllL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge)//mod JD +bool ImProcFunctions::WaveletDenoiseAllL(const wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge)//mod JD { @@ -2530,16 +2505,14 @@ bool ImProcFunctions::WaveletDenoiseAllL(wavelet_decomposition &WaveletCoeffs_L, } for (int i = 3; i >= 0; i--) { - if (buffer[i] != nullptr) { - delete[] buffer[i]; - } + delete[] buffer[i]; } } return (!memoryAllocationFailed); } -bool ImProcFunctions::WaveletDenoiseAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, +bool ImProcFunctions::WaveletDenoiseAllAB(const wavelet_decomposition &WaveletCoeffs_L, const wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb)//mod JD { @@ -2596,7 +2569,7 @@ bool ImProcFunctions::WaveletDenoiseAllAB(wavelet_decomposition &WaveletCoeffs_L //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void ImProcFunctions::ShrinkAllL(wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, +void ImProcFunctions::ShrinkAllL(const wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge) { @@ -2607,12 +2580,12 @@ void ImProcFunctions::ShrinkAllL(wavelet_decomposition &WaveletCoeffs_L, float * float * sfaved = buffer[1] + 64; float * blurBuffer = buffer[2] + 96; - int W_L = WaveletCoeffs_L.level_W(level); - int H_L = WaveletCoeffs_L.level_H(level); + const int W_L = WaveletCoeffs_L.level_W(level); + const int H_L = WaveletCoeffs_L.level_H(level); float ** WavCoeffs_L = WaveletCoeffs_L.level_coeffs(level); -// printf("OK lev=%d\n",level); - float mad_L = madL[dir - 1] ; + const float mad_L = madL[dir - 1] ; + const float levelFactor = mad_L * 5.f / static_cast(level + 1); if (edge == 1 && vari) { noisevarlum = blurBuffer; // we need one buffer, but fortunately we don't have to allocate a new one because we can use blurBuffer @@ -2622,71 +2595,45 @@ void ImProcFunctions::ShrinkAllL(wavelet_decomposition &WaveletCoeffs_L, float * } } - float levelFactor = mad_L * 5.f / static_cast(level + 1); + int i = 0; #ifdef __SSE2__ - __m128 magv; - __m128 levelFactorv = _mm_set1_ps(levelFactor); - __m128 mad_Lv; - __m128 ninev = _mm_set1_ps(9.0f); - __m128 epsv = _mm_set1_ps(eps); - int i; + const vfloat levelFactorv = F2V(levelFactor); + const vfloat ninev = F2V(9.f); + const vfloat epsv = F2V(eps); - for (i = 0; i < W_L * H_L - 3; i += 4) { - mad_Lv = LVFU(noisevarlum[i]) * levelFactorv; - magv = SQRV(LVFU(WavCoeffs_L[dir][i])); - _mm_storeu_ps(&sfave[i], magv / (magv + mad_Lv * xexpf(-magv / (ninev * mad_Lv)) + epsv)); + for (; i < W_L * H_L - 3; i += 4) { + const vfloat mad_Lv = LVFU(noisevarlum[i]) * levelFactorv; + const vfloat magv = SQRV(LVFU(WavCoeffs_L[dir][i])); + STVFU(sfave[i], magv / (magv + mad_Lv * xexpf(-magv / (ninev * mad_Lv)) + epsv)); } - +#endif // few remaining pixels for (; i < W_L * H_L; ++i) { - float mag = SQR(WavCoeffs_L[dir][i]); + const float mag = SQR(WavCoeffs_L[dir][i]); sfave[i] = mag / (mag + levelFactor * noisevarlum[i] * xexpf(-mag / (9 * levelFactor * noisevarlum[i])) + eps); } -#else - - for (int i = 0; i < W_L * H_L; ++i) { - - float mag = SQR(WavCoeffs_L[dir][i]); - float shrinkfactor = mag / (mag + levelFactor * noisevarlum[i] * xexpf(-mag / (9 * levelFactor * noisevarlum[i])) + eps); - sfave[i] = shrinkfactor; - } - -#endif - boxblur(sfave, sfaved, blurBuffer, level + 2, level + 2, W_L, H_L); //increase smoothness by locally averaging shrinkage + boxblur(sfave, sfaved, level + 2, W_L, H_L, false); //increase smoothness by locally averaging shrinkage + i = 0; #ifdef __SSE2__ - __m128 sfv; - for (i = 0; i < W_L * H_L - 3; i += 4) { - sfv = LVFU(sfave[i]); + for (; i < W_L * H_L - 3; i += 4) { + const vfloat sfv = LVFU(sfave[i]); //use smoothed shrinkage unless local shrinkage is much less - _mm_storeu_ps(&WavCoeffs_L[dir][i], _mm_loadu_ps(&WavCoeffs_L[dir][i]) * (SQRV(LVFU(sfaved[i])) + SQRV(sfv)) / (LVFU(sfaved[i]) + sfv + epsv)); + STVFU(WavCoeffs_L[dir][i], LVFU(WavCoeffs_L[dir][i]) * (SQRV(LVFU(sfaved[i])) + SQRV(sfv)) / (LVFU(sfaved[i]) + sfv + epsv)); } - +#endif // few remaining pixels for (; i < W_L * H_L; ++i) { - float sf = sfave[i]; - + const float sf = sfave[i]; //use smoothed shrinkage unless local shrinkage is much less WavCoeffs_L[dir][i] *= (SQR(sfaved[i]) + SQR(sf)) / (sfaved[i] + sf + eps); }//now luminance coefficients are denoised - -#else - - for (int i = 0; i < W_L * H_L; ++i) { - float sf = sfave[i]; - - //use smoothed shrinkage unless local shrinkage is much less - WavCoeffs_L[dir][i] *= (SQR(sfaved[i]) + SQR(sf)) / (sfaved[i] + sf + eps); - - }//now luminance coefficients are denoised - -#endif } -void ImProcFunctions::ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir, +void ImProcFunctions::ShrinkAllAB(const wavelet_decomposition &WaveletCoeffs_L, const wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir, float *noisevarchrom, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, float * madL, float * madaab, bool madCalculated) @@ -2700,7 +2647,6 @@ void ImProcFunctions::ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavele float * sfaveab = buffer[0] + 32; float * sfaveabd = buffer[1] + 64; - float * blurBuffer = buffer[2] + 96; int W_ab = WaveletCoeffs_ab.level_W(level); int H_ab = WaveletCoeffs_ab.level_H(level); @@ -2724,12 +2670,12 @@ void ImProcFunctions::ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavele if (noisevar_ab > 0.001f) { madab = useNoiseCCurve ? madab : madab * noisevar_ab; #ifdef __SSE2__ - __m128 onev = _mm_set1_ps(1.f); - __m128 mad_abrv = _mm_set1_ps(madab); + vfloat onev = F2V(1.f); + vfloat mad_abrv = F2V(madab); - __m128 rmadLm9v = onev / _mm_set1_ps(mad_L * 9.f); - __m128 mad_abv ; - __m128 mag_Lv, mag_abv; + vfloat rmadLm9v = onev / F2V(mad_L * 9.f); + vfloat mad_abv ; + vfloat mag_Lv, mag_abv; int coeffloc_ab; for (coeffloc_ab = 0; coeffloc_ab < H_ab * W_ab - 3; coeffloc_ab += 4) { @@ -2738,7 +2684,7 @@ void ImProcFunctions::ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavele mag_Lv = LVFU(WavCoeffs_L[dir][coeffloc_ab]); mag_abv = SQRV(LVFU(WavCoeffs_ab[dir][coeffloc_ab])); mag_Lv = (SQRV(mag_Lv)) * rmadLm9v; - _mm_storeu_ps(&sfaveab[coeffloc_ab], (onev - xexpf(-(mag_abv / mad_abv) - (mag_Lv)))); + STVFU(sfaveab[coeffloc_ab], (onev - xexpf(-(mag_abv / mad_abv) - (mag_Lv)))); } // few remaining pixels @@ -2761,18 +2707,18 @@ void ImProcFunctions::ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavele #endif - boxblur(sfaveab, sfaveabd, blurBuffer, level + 2, level + 2, W_ab, H_ab); //increase smoothness by locally averaging shrinkage + boxblur(sfaveab, sfaveabd, level + 2, W_ab, H_ab, false); //increase smoothness by locally averaging shrinkage #ifdef __SSE2__ - __m128 epsv = _mm_set1_ps(eps); - __m128 sfabv; - __m128 sfaveabv; + vfloat epsv = F2V(eps); + vfloat sfabv; + vfloat sfaveabv; for (coeffloc_ab = 0; coeffloc_ab < H_ab * W_ab - 3; coeffloc_ab += 4) { sfabv = LVFU(sfaveab[coeffloc_ab]); sfaveabv = LVFU(sfaveabd[coeffloc_ab]); //use smoothed shrinkage unless local shrinkage is much less - _mm_storeu_ps(&WavCoeffs_ab[dir][coeffloc_ab], LVFU(WavCoeffs_ab[dir][coeffloc_ab]) * (SQRV(sfaveabv) + SQRV(sfabv)) / (sfaveabv + sfabv + epsv)); + STVFU(WavCoeffs_ab[dir][coeffloc_ab], LVFU(WavCoeffs_ab[dir][coeffloc_ab]) * (SQRV(sfaveabv) + SQRV(sfabv)) / (sfaveabv + sfabv + epsv)); } // few remaining pixels @@ -2919,8 +2865,8 @@ void ImProcFunctions::ShrinkAll_info(float ** WavCoeffs_a, float ** WavCoeffs_b, } -void ImProcFunctions::WaveletDenoiseAll_info(int levwav, wavelet_decomposition &WaveletCoeffs_a, - wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, +void ImProcFunctions::WaveletDenoiseAll_info(int levwav, const wavelet_decomposition &WaveletCoeffs_a, + const wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb) { @@ -3106,7 +3052,7 @@ void ImProcFunctions::calcautodn_info(float &chaut, float &delta, int Nb, int le } -void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, const bool isRAW, LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread) +void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, const bool isRAW, const LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread) { if ((settings->leveldnautsimpl == 1 && dnparams.Cmethod == "MAN") || (settings->leveldnautsimpl == 0 && dnparams.C2method == "MANU")) { //nothing to do @@ -3173,8 +3119,8 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, const float gain = pow(2.0f, float(expcomp)); - int tilesize; - int overlap; + int tilesize = 0; + int overlap = 0; if (settings->leveldnti == 0) { tilesize = 1024; @@ -3275,16 +3221,16 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, for (int i = tiletop; i < tilebottom; i += 2) { int i1 = i - tiletop; #ifdef __SSE2__ - __m128 aNv, bNv; - __m128 c100v = _mm_set1_ps(100.f); + vfloat aNv, bNv; + vfloat c100v = F2V(100.f); int j; for (j = tileleft; j < tileright - 7; j += 8) { int j1 = j - tileleft; aNv = LVFU(acalc[i >> 1][j >> 1]); bNv = LVFU(bcalc[i >> 1][j >> 1]); - _mm_storeu_ps(&noisevarhue[i1 >> 1][j1 >> 1], xatan2f(bNv, aNv)); - _mm_storeu_ps(&noisevarchrom[i1 >> 1][j1 >> 1], vmaxf(vsqrtf(SQRV(aNv) + SQRV(bNv)),c100v)); + STVFU(noisevarhue[i1 >> 1][j1 >> 1], xatan2f(bNv, aNv)); + STVFU(noisevarchrom[i1 >> 1][j1 >> 1], vmaxf(vsqrtf(SQRV(aNv) + SQRV(bNv)),c100v)); } for (; j < tileright; j += 2) { diff --git a/rtengine/boxblur.cc b/rtengine/boxblur.cc new file mode 100644 index 000000000..491ffae14 --- /dev/null +++ b/rtengine/boxblur.cc @@ -0,0 +1,420 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (C) 2010 Emil Martinec + * Copyright (C) 2019 Ingo Weyrich + * + * 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 + +#include "boxblur.h" + +#include "rt_math.h" +#include "opthelper.h" + +namespace rtengine +{ + +void boxblur(float** src, float** dst, int radius, int W, int H, bool multiThread) +{ + //box blur using rowbuffers and linebuffers instead of a full size buffer + + if (radius == 0) { + if (src != dst) { +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + + for (int row = 0; row < H; ++row) { + for (int col = 0; col < W; ++col) { + dst[row][col] = src[row][col]; + } + } + } + return; + } + + constexpr int numCols = 8; // process numCols columns at once for better usage of L1 cpu cache +#ifdef _OPENMP + #pragma omp parallel if (multiThread) +#endif + { + std::unique_ptr buffer(new float[numCols * (radius + 1)]); + + //horizontal blur + float* const lineBuffer = buffer.get(); +#ifdef _OPENMP + #pragma omp for +#endif + for (int row = 0; row < H; ++row) { + float len = radius + 1; + float tempval = src[row][0]; + lineBuffer[0] = tempval; + for (int j = 1; j <= radius; j++) { + tempval += src[row][j]; + } + + tempval /= len; + dst[row][0] = tempval; + + for (int col = 1; col <= radius; ++col) { + lineBuffer[col] = src[row][col]; + tempval = (tempval * len + src[row][col + radius]) / (len + 1); + dst[row][col] = tempval; + ++len; + } + int pos = 0; + for (int col = radius + 1; col < W - radius; ++col) { + const float oldVal = lineBuffer[pos]; + lineBuffer[pos] = src[row][col]; + tempval = tempval + (src[row][col + radius] - oldVal) / len; + dst[row][col] = tempval; + ++pos; + pos = pos <= radius ? pos : 0; + } + + for (int col = W - radius; col < W; ++col) { + tempval = (tempval * len - lineBuffer[pos]) / (len - 1); + dst[row][col] = tempval; + --len; + ++pos; + pos = pos <= radius ? pos : 0; + } + } + + //vertical blur +#ifdef __SSE2__ + vfloat (* const rowBuffer)[2] = (vfloat(*)[2]) buffer.get(); + const vfloat leninitv = F2V(radius + 1); + const vfloat onev = F2V(1.f); + vfloat tempv, temp1v, lenv, lenp1v, lenm1v, rlenv; + +#ifdef _OPENMP + #pragma omp for nowait +#endif + + for (int col = 0; col < W - 7; col += 8) { + lenv = leninitv; + tempv = LVFU(dst[0][col]); + temp1v = LVFU(dst[0][col + 4]); + rowBuffer[0][0] = tempv; + rowBuffer[0][1] = temp1v; + + for (int i = 1; i <= radius; ++i) { + tempv = tempv + LVFU(dst[i][col]); + temp1v = temp1v + LVFU(dst[i][col + 4]); + } + + tempv = tempv / lenv; + temp1v = temp1v / lenv; + STVFU(dst[0][col], tempv); + STVFU(dst[0][col + 4], temp1v); + + for (int row = 1; row <= radius; ++row) { + rowBuffer[row][0] = LVFU(dst[row][col]); + rowBuffer[row][1] = LVFU(dst[row][col + 4]); + lenp1v = lenv + onev; + tempv = (tempv * lenv + LVFU(dst[row + radius][col])) / lenp1v; + temp1v = (temp1v * lenv + LVFU(dst[row + radius][col + 4])) / lenp1v; + STVFU(dst[row][col], tempv); + STVFU(dst[row][col + 4], temp1v); + lenv = lenp1v; + } + + rlenv = onev / lenv; + int pos = 0; + for (int row = radius + 1; row < H - radius; ++row) { + vfloat oldVal0 = rowBuffer[pos][0]; + vfloat oldVal1 = rowBuffer[pos][1]; + rowBuffer[pos][0] = LVFU(dst[row][col]); + rowBuffer[pos][1] = LVFU(dst[row][col + 4]); + tempv = tempv + (LVFU(dst[row + radius][col]) - oldVal0) * rlenv ; + temp1v = temp1v + (LVFU(dst[row + radius][col + 4]) - oldVal1) * rlenv ; + STVFU(dst[row][col], tempv); + STVFU(dst[row][col + 4], temp1v); + ++pos; + pos = pos <= radius ? pos : 0; + } + + for (int row = H - radius; row < H; ++row) { + lenm1v = lenv - onev; + tempv = (tempv * lenv - rowBuffer[pos][0]) / lenm1v; + temp1v = (temp1v * lenv - rowBuffer[pos][1]) / lenm1v; + STVFU(dst[row][col], tempv); + STVFU(dst[row][col + 4], temp1v); + lenv = lenm1v; + ++pos; + pos = pos <= radius ? pos : 0; + } + } + +#else + float (* const rowBuffer)[8] = (float(*)[8]) buffer.get(); +#ifdef _OPENMP + #pragma omp for nowait +#endif + + for (int col = 0; col < W - numCols + 1; col += 8) { + float len = radius + 1; + + for (int k = 0; k < numCols; ++k) { + rowBuffer[0][k] = dst[0][col + k]; + } + + for (int i = 1; i <= radius; ++i) { + for (int k = 0; k < numCols; ++k) { + dst[0][col + k] += dst[i][col + k]; + } + } + + for(int k = 0; k < numCols; ++k) { + dst[0][col + k] /= len; + } + + for (int row = 1; row <= radius; ++row) { + for(int k = 0; k < numCols; ++k) { + rowBuffer[row][k] = dst[row][col + k]; + dst[row][col + k] = (dst[row - 1][col + k] * len + dst[row + radius][col + k]) / (len + 1); + } + + len ++; + } + + int pos = 0; + for (int row = radius + 1; row < H - radius; ++row) { + for(int k = 0; k < numCols; ++k) { + float oldVal = rowBuffer[pos][k]; + rowBuffer[pos][k] = dst[row][col + k]; + dst[row][col + k] = dst[row - 1][col + k] + (dst[row + radius][col + k] - oldVal) / len; + } + ++pos; + pos = pos <= radius ? pos : 0; + } + + for (int row = H - radius; row < H; ++row) { + for(int k = 0; k < numCols; ++k) { + dst[row][col + k] = (dst[row - 1][col + k] * len - rowBuffer[pos][k]) / (len - 1); + } + len --; + ++pos; + pos = pos <= radius ? pos : 0; + } + } + +#endif + //vertical blur, remaining columns +#ifdef _OPENMP + #pragma omp single +#endif + { + const int remaining = W % numCols; + + if (remaining > 0) { + float (* const rowBuffer)[8] = (float(*)[8]) buffer.get(); + const int col = W - remaining; + + float len = radius + 1; + for(int k = 0; k < remaining; ++k) { + rowBuffer[0][k] = dst[0][col + k]; + } + for (int row = 1; row <= radius; ++row) { + for(int k = 0; k < remaining; ++k) { + dst[0][col + k] += dst[row][col + k]; + } + } + for(int k = 0; k < remaining; ++k) { + dst[0][col + k] /= len; + } + for (int row = 1; row <= radius; ++row) { + for(int k = 0; k < remaining; ++k) { + rowBuffer[row][k] = dst[row][col + k]; + dst[row][col + k] = (dst[row - 1][col + k] * len + dst[row + radius][col + k]) / (len + 1); + } + len ++; + } + const float rlen = 1.f / len; + int pos = 0; + for (int row = radius + 1; row < H - radius; ++row) { + for(int k = 0; k < remaining; ++k) { + float oldVal = rowBuffer[pos][k]; + rowBuffer[pos][k] = dst[row][col + k]; + dst[row][col + k] = dst[row - 1][col + k] + (dst[row + radius][col + k] - oldVal) * rlen; + } + ++pos; + pos = pos <= radius ? pos : 0; + } + for (int row = H - radius; row < H; ++row) { + for(int k = 0; k < remaining; ++k) { + dst[row][col + k] = (dst[(row - 1)][col + k] * len - rowBuffer[pos][k]) / (len - 1); + } + len --; + ++pos; + pos = pos <= radius ? pos : 0; + } + } + } + } +} + +void boxabsblur(float** src, float** dst, int radius, int W, int H, bool multiThread) +{ + //abs box blur using rowbuffers and linebuffers instead of a full size buffer, W should be a multiple of 16 + + if (radius == 0) { + if (src != dst) { +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + + for (int row = 0; row < H; ++row) { + for (int col = 0; col < W; ++col) { + dst[row][col] = std::fabs(src[row][col]); + } + } + } + return; + } + + constexpr int numCols = 16; // process numCols columns at once for better usage of L1 cpu cache +#ifdef _OPENMP + #pragma omp parallel if (multiThread) +#endif + { + float buffer[numCols * (radius + 1)] ALIGNED64; + + //horizontal blur + float* const lineBuffer = buffer; +#ifdef _OPENMP + #pragma omp for +#endif + for (int row = 0; row < H; ++row) { + float len = radius + 1; + float tempval = std::fabs(src[row][0]); + lineBuffer[0] = tempval; + for (int j = 1; j <= radius; j++) { + tempval += std::fabs(src[row][j]); + } + + tempval /= len; + dst[row][0] = tempval; + + for (int col = 1; col <= radius; ++col) { + lineBuffer[col] = std::fabs(src[row][col]); + tempval = (tempval * len + std::fabs(src[row][col + radius])) / (len + 1); + dst[row][col] = tempval; + ++len; + } + + const float rlen = 1.f / len; + int pos = 0; + for (int col = radius + 1; col < W - radius; ++col) { + const float oldVal = lineBuffer[pos]; + lineBuffer[pos] = std::fabs(src[row][col]); + tempval = tempval + (std::fabs(src[row][col + radius]) - oldVal) * rlen; + dst[row][col] = tempval; + ++pos; + pos = pos <= radius ? pos : 0; + } + + for (int col = W - radius; col < W; ++col) { + tempval = (tempval * len - lineBuffer[pos]) / (len - 1); + dst[row][col] = tempval; + --len; + ++pos; + pos = pos <= radius ? pos : 0; + } + } + + //vertical blur + float (* const rowBuffer)[numCols] = (float(*)[numCols]) buffer; +#ifdef _OPENMP + #pragma omp for +#endif + + for (int col = 0; col < W; col += numCols) { + float len = radius + 1; + + for (int k = 0; k < numCols; ++k) { + rowBuffer[0][k] = dst[0][col + k]; + } + + for (int i = 1; i <= radius; ++i) { + for (int k = 0; k < numCols; ++k) { + dst[0][col + k] += dst[i][col + k]; + } + } + + for(int k = 0; k < numCols; ++k) { + dst[0][col + k] /= len; + } + + for (int row = 1; row <= radius; ++row) { + for(int k = 0; k < numCols; ++k) { + rowBuffer[row][k] = dst[row][col + k]; + dst[row][col + k] = (dst[row - 1][col + k] * len + dst[row + radius][col + k]) / (len + 1); + } + + ++len; + } + + const float rlen = 1.f / len; + int pos = 0; + for (int row = radius + 1; row < H - radius; ++row) { + for(int k = 0; k < numCols; ++k) { + float oldVal = rowBuffer[pos][k]; + rowBuffer[pos][k] = dst[row][col + k]; + dst[row][col + k] = dst[row - 1][col + k] + (dst[row + radius][col + k] - oldVal) * rlen; + } + ++pos; + pos = pos <= radius ? pos : 0; + } + + for (int row = H - radius; row < H; ++row) { + for(int k = 0; k < numCols; ++k) { + dst[row][col + k] = (dst[row - 1][col + k] * len - rowBuffer[pos][k]) / (len - 1); + } + --len; + ++pos; + pos = pos <= radius ? pos : 0; + } + } + } +} + +void boxblur(float* src, float* dst, int radius, int W, int H, bool multiThread) +{ + float* srcp[H]; + float* dstp[H]; + for (int i = 0; i < H; ++i) { + srcp[i] = src + i * W; + dstp[i] = dst + i * W; + } + boxblur(srcp, dstp, radius, W, H, multiThread); +} + +void boxabsblur(float* src, float* dst, int radius, int W, int H, bool multiThread) +{ + float* srcp[H]; + float* dstp[H]; + for (int i = 0; i < H; ++i) { + srcp[i] = src + i * W; + dstp[i] = dst + i * W; + } + boxabsblur(srcp, dstp, radius, W, H, multiThread); +} + +} diff --git a/rtengine/boxblur.h b/rtengine/boxblur.h index 1689c5ed1..57fba9119 100644 --- a/rtengine/boxblur.h +++ b/rtengine/boxblur.h @@ -1,7 +1,7 @@ /* * This file is part of RawTherapee. * - * Copyright (C) 2010 Emil Martinec + * Copyright (C) 2019 Ingo Weyrich * * RawTherapee is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,873 +15,15 @@ * * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . - */ -#ifndef _BOXBLUR_H_ -#define _BOXBLUR_H_ - -#include -#include -#include -#include -#include -#include "alignedbuffer.h" -#include "rt_math.h" -#include "opthelper.h" +*/ +#pragma once namespace rtengine { -// classical filtering if the support window is small: - -template void boxblur (T** src, A** dst, int radx, int rady, int W, int H) -{ - //box blur image; box range = (radx,rady) - assert(2*radx+1 < W); - assert(2*rady+1 < H); - - AlignedBuffer* buffer = new AlignedBuffer (W * H); - float* temp = buffer->data; - - if (radx == 0) { -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - temp[row * W + col] = (float)src[row][col]; - } - } else { - //horizontal blur -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int row = 0; row < H; row++) { - int len = radx + 1; - temp[row * W + 0] = (float)src[row][0] / len; - - for (int j = 1; j <= radx; j++) { - temp[row * W + 0] += (float)src[row][j] / len; - } - - for (int col = 1; col <= radx; col++) { - temp[row * W + col] = (temp[row * W + col - 1] * len + (float)src[row][col + radx]) / (len + 1); - len ++; - } - - for (int col = radx + 1; col < W - radx; col++) { - temp[row * W + col] = temp[row * W + col - 1] + ((float)(src[row][col + radx] - src[row][col - radx - 1])) / len; - } - - for (int col = W - radx; col < W; col++) { - temp[row * W + col] = (temp[row * W + col - 1] * len - src[row][col - radx - 1]) / (len - 1); - len --; - } - } - } - - if (rady == 0) { -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - dst[row][col] = temp[row * W + col]; - } - } else { - //vertical blur -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int col = 0; col < W; col++) { - int len = rady + 1; - dst[0][col] = temp[0 * W + col] / len; - - for (int i = 1; i <= rady; i++) { - dst[0][col] += temp[i * W + col] / len; - } - - for (int row = 1; row <= rady; row++) { - dst[row][col] = (dst[(row - 1)][col] * len + temp[(row + rady) * W + col]) / (len + 1); - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - dst[row][col] = dst[(row - 1)][col] + (temp[(row + rady) * W + col] - temp[(row - rady - 1) * W + col]) / len; - } - - for (int row = H - rady; row < H; row++) { - dst[row][col] = (dst[(row - 1)][col] * len - temp[(row - rady - 1) * W + col]) / (len - 1); - len --; - } - } - } - - delete buffer; +void boxblur(float** src, float** dst, int radius, int W, int H, bool multiThread); +void boxblur(float* src, float* dst, int radius, int W, int H, bool multiThread); +void boxabsblur(float** src, float** dst, int radius, int W, int H, bool multiThread); +void boxabsblur(float* src, float* dst, int radius, int W, int H, bool multiThread); } - -template void boxblur (T** src, A** dst, T* buffer, int radx, int rady, int W, int H) -{ - //box blur image; box range = (radx,rady) - - float* temp = buffer; - - if (radx == 0) { -#ifdef _OPENMP - #pragma omp for -#endif - - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - temp[row * W + col] = (float)src[row][col]; - } - } else { - //horizontal blur -#ifdef _OPENMP - #pragma omp for -#endif - - for (int row = 0; row < H; row++) { - float len = radx + 1; - float tempval = (float)src[row][0]; - - for (int j = 1; j <= radx; j++) { - tempval += (float)src[row][j]; - } - - tempval /= len; - temp[row * W + 0] = tempval; - - for (int col = 1; col <= radx; col++) { - temp[row * W + col] = tempval = (tempval * len + (float)src[row][col + radx]) / (len + 1); - len ++; - } - - for (int col = radx + 1; col < W - radx; col++) { - temp[row * W + col] = tempval = tempval + ((float)(src[row][col + radx] - src[row][col - radx - 1])) / len; - } - - for (int col = W - radx; col < W; col++) { - temp[row * W + col] = tempval = (tempval * len - src[row][col - radx - 1]) / (len - 1); - len --; - } - } - } - - if (rady == 0) { -#ifdef _OPENMP - #pragma omp for -#endif - - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - dst[row][col] = temp[row * W + col]; - } - } else { - const int numCols = 8; // process numCols columns at once for better usage of L1 cpu cache -#ifdef __SSE2__ - vfloat leninitv = F2V( (float)(rady + 1)); - vfloat onev = F2V( 1.f ); - vfloat tempv, temp1v, lenv, lenp1v, lenm1v, rlenv; - -#ifdef _OPENMP - #pragma omp for -#endif - - for (int col = 0; col < W - 7; col += 8) { - lenv = leninitv; - tempv = LVFU(temp[0 * W + col]); - temp1v = LVFU(temp[0 * W + col + 4]); - - for (int i = 1; i <= rady; i++) { - tempv = tempv + LVFU(temp[i * W + col]); - temp1v = temp1v + LVFU(temp[i * W + col + 4]); - } - - tempv = tempv / lenv; - temp1v = temp1v / lenv; - STVFU(dst[0][col], tempv); - STVFU(dst[0][col + 4], temp1v); - - for (int row = 1; row <= rady; row++) { - lenp1v = lenv + onev; - tempv = (tempv * lenv + LVFU(temp[(row + rady) * W + col])) / lenp1v; - temp1v = (temp1v * lenv + LVFU(temp[(row + rady) * W + col + 4])) / lenp1v; - STVFU(dst[row][col], tempv); - STVFU(dst[row][col + 4], temp1v); - lenv = lenp1v; - } - - rlenv = onev / lenv; - - for (int row = rady + 1; row < H - rady; row++) { - tempv = tempv + (LVFU(temp[(row + rady) * W + col]) - LVFU(temp[(row - rady - 1) * W + col])) * rlenv ; - temp1v = temp1v + (LVFU(temp[(row + rady) * W + col + 4]) - LVFU(temp[(row - rady - 1) * W + col + 4])) * rlenv ; - STVFU(dst[row][col], tempv); - STVFU(dst[row][col + 4], temp1v); - } - - for (int row = H - rady; row < H; row++) { - lenm1v = lenv - onev; - tempv = (tempv * lenv - LVFU(temp[(row - rady - 1) * W + col])) / lenm1v; - temp1v = (temp1v * lenv - LVFU(temp[(row - rady - 1) * W + col + 4])) / lenm1v; - STVFU(dst[row][col], tempv); - STVFU(dst[row][col + 4], temp1v); - lenv = lenm1v; - } - } - -#else - //vertical blur -#ifdef _OPENMP - #pragma omp for -#endif - - for (int col = 0; col < W - numCols + 1; col += 8) { - float len = rady + 1; - - for(int k = 0; k < numCols; k++) { - dst[0][col + k] = temp[0 * W + col + k]; - } - - for (int i = 1; i <= rady; i++) { - for(int k = 0; k < numCols; k++) { - dst[0][col + k] += temp[i * W + col + k]; - } - } - - for(int k = 0; k < numCols; k++) { - dst[0][col + k] /= len; - } - - for (int row = 1; row <= rady; row++) { - for(int k = 0; k < numCols; k++) { - dst[row][col + k] = (dst[(row - 1)][col + k] * len + temp[(row + rady) * W + col + k]) / (len + 1); - } - - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - for(int k = 0; k < numCols; k++) { - dst[row][col + k] = dst[(row - 1)][col + k] + (temp[(row + rady) * W + col + k] - temp[(row - rady - 1) * W + col + k]) / len; - } - } - - for (int row = H - rady; row < H; row++) { - for(int k = 0; k < numCols; k++) { - dst[row][col + k] = (dst[(row - 1)][col + k] * len - temp[(row - rady - 1) * W + col + k]) / (len - 1); - } - - len --; - } - } - -#endif -#ifdef _OPENMP - #pragma omp single -#endif - - for (int col = W - (W % numCols); col < W; col++) { - float len = rady + 1; - dst[0][col] = temp[0 * W + col] / len; - - for (int i = 1; i <= rady; i++) { - dst[0][col] += temp[i * W + col] / len; - } - - for (int row = 1; row <= rady; row++) { - dst[row][col] = (dst[(row - 1)][col] * len + temp[(row + rady) * W + col]) / (len + 1); - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - dst[row][col] = dst[(row - 1)][col] + (temp[(row + rady) * W + col] - temp[(row - rady - 1) * W + col]) / len; - } - - for (int row = H - rady; row < H; row++) { - dst[row][col] = (dst[(row - 1)][col] * len - temp[(row - rady - 1) * W + col]) / (len - 1); - len --; - } - } - } - -} - -inline void boxblur (float** src, float** dst, int radius, int W, int H, bool multiThread) -{ - //box blur using rowbuffers and linebuffers instead of a full size buffer - - if (radius == 0) { - if (src != dst) { -#ifdef _OPENMP - #pragma omp parallel for if (multiThread) -#endif - - for (int row = 0; row < H; row++) { - for (int col = 0; col < W; col++) { - dst[row][col] = src[row][col]; - } - } - } - return; - } - - constexpr int numCols = 8; // process numCols columns at once for better usage of L1 cpu cache -#ifdef _OPENMP - #pragma omp parallel if (multiThread) -#endif - { - std::unique_ptr buffer(new float[numCols * (radius + 1)]); - - //horizontal blur - float* const lineBuffer = buffer.get(); -#ifdef _OPENMP - #pragma omp for -#endif - for (int row = 0; row < H; row++) { - float len = radius + 1; - float tempval = src[row][0]; - lineBuffer[0] = tempval; - for (int j = 1; j <= radius; j++) { - tempval += src[row][j]; - } - - tempval /= len; - dst[row][0] = tempval; - - for (int col = 1; col <= radius; col++) { - lineBuffer[col] = src[row][col]; - tempval = (tempval * len + src[row][col + radius]) / (len + 1); - dst[row][col] = tempval; - ++len; - } - int pos = 0; - for (int col = radius + 1; col < W - radius; col++) { - const float oldVal = lineBuffer[pos]; - lineBuffer[pos] = src[row][col]; - tempval = tempval + (src[row][col + radius] - oldVal) / len; - dst[row][col] = tempval; - ++pos; - pos = pos <= radius ? pos : 0; - } - - for (int col = W - radius; col < W; col++) { - tempval = (tempval * len - lineBuffer[pos]) / (len - 1); - dst[row][col] = tempval; - --len; - ++pos; - pos = pos <= radius ? pos : 0; - } - } - - //vertical blur -#ifdef __SSE2__ - vfloat (* const rowBuffer)[2] = (vfloat(*)[2]) buffer.get(); - const vfloat leninitv = F2V(radius + 1); - const vfloat onev = F2V(1.f); - vfloat tempv, temp1v, lenv, lenp1v, lenm1v, rlenv; - -#ifdef _OPENMP - #pragma omp for nowait -#endif - - for (int col = 0; col < W - 7; col += 8) { - lenv = leninitv; - tempv = LVFU(dst[0][col]); - temp1v = LVFU(dst[0][col + 4]); - rowBuffer[0][0] = tempv; - rowBuffer[0][1] = temp1v; - - for (int i = 1; i <= radius; i++) { - tempv = tempv + LVFU(dst[i][col]); - temp1v = temp1v + LVFU(dst[i][col + 4]); - } - - tempv = tempv / lenv; - temp1v = temp1v / lenv; - STVFU(dst[0][col], tempv); - STVFU(dst[0][col + 4], temp1v); - - for (int row = 1; row <= radius; row++) { - rowBuffer[row][0] = LVFU(dst[row][col]); - rowBuffer[row][1] = LVFU(dst[row][col + 4]); - lenp1v = lenv + onev; - tempv = (tempv * lenv + LVFU(dst[row + radius][col])) / lenp1v; - temp1v = (temp1v * lenv + LVFU(dst[row + radius][col + 4])) / lenp1v; - STVFU(dst[row][col], tempv); - STVFU(dst[row][col + 4], temp1v); - lenv = lenp1v; - } - - rlenv = onev / lenv; - int pos = 0; - for (int row = radius + 1; row < H - radius; row++) { - vfloat oldVal0 = rowBuffer[pos][0]; - vfloat oldVal1 = rowBuffer[pos][1]; - rowBuffer[pos][0] = LVFU(dst[row][col]); - rowBuffer[pos][1] = LVFU(dst[row][col + 4]); - tempv = tempv + (LVFU(dst[row + radius][col]) - oldVal0) * rlenv ; - temp1v = temp1v + (LVFU(dst[row + radius][col + 4]) - oldVal1) * rlenv ; - STVFU(dst[row][col], tempv); - STVFU(dst[row][col + 4], temp1v); - ++pos; - pos = pos <= radius ? pos : 0; - } - - for (int row = H - radius; row < H; row++) { - lenm1v = lenv - onev; - tempv = (tempv * lenv - rowBuffer[pos][0]) / lenm1v; - temp1v = (temp1v * lenv - rowBuffer[pos][1]) / lenm1v; - STVFU(dst[row][col], tempv); - STVFU(dst[row][col + 4], temp1v); - lenv = lenm1v; - ++pos; - pos = pos <= radius ? pos : 0; - } - } - -#else - float (* const rowBuffer)[8] = (float(*)[8]) buffer.get(); -#ifdef _OPENMP - #pragma omp for nowait -#endif - - for (int col = 0; col < W - numCols + 1; col += 8) { - float len = radius + 1; - - for (int k = 0; k < numCols; k++) { - rowBuffer[0][k] = dst[0][col + k]; - } - - for (int i = 1; i <= radius; i++) { - for (int k = 0; k < numCols; k++) { - dst[0][col + k] += dst[i][col + k]; - } - } - - for(int k = 0; k < numCols; k++) { - dst[0][col + k] /= len; - } - - for (int row = 1; row <= radius; row++) { - for(int k = 0; k < numCols; k++) { - rowBuffer[row][k] = dst[row][col + k]; - dst[row][col + k] = (dst[row - 1][col + k] * len + dst[row + radius][col + k]) / (len + 1); - } - - len ++; - } - - int pos = 0; - for (int row = radius + 1; row < H - radius; row++) { - for(int k = 0; k < numCols; k++) { - float oldVal = rowBuffer[pos][k]; - rowBuffer[pos][k] = dst[row][col + k]; - dst[row][col + k] = dst[row - 1][col + k] + (dst[row + radius][col + k] - oldVal) / len; - } - ++pos; - pos = pos <= radius ? pos : 0; - } - - for (int row = H - radius; row < H; row++) { - for(int k = 0; k < numCols; k++) { - dst[row][col + k] = (dst[row - 1][col + k] * len - rowBuffer[pos][k]) / (len - 1); - } - len --; - ++pos; - pos = pos <= radius ? pos : 0; - } - } - -#endif - //vertical blur, remaining columns -#ifdef _OPENMP - #pragma omp single -#endif - { - const int remaining = W % numCols; - - if (remaining > 0) { - float (* const rowBuffer)[8] = (float(*)[8]) buffer.get(); - const int col = W - remaining; - - float len = radius + 1; - for(int k = 0; k < remaining; ++k) { - rowBuffer[0][k] = dst[0][col + k]; - } - for (int row = 1; row <= radius; ++row) { - for(int k = 0; k < remaining; ++k) { - dst[0][col + k] += dst[row][col + k]; - } - } - for(int k = 0; k < remaining; ++k) { - dst[0][col + k] /= len; - } - for (int row = 1; row <= radius; ++row) { - for(int k = 0; k < remaining; ++k) { - rowBuffer[row][k] = dst[row][col + k]; - dst[row][col + k] = (dst[row - 1][col + k] * len + dst[row + radius][col + k]) / (len + 1); - } - len ++; - } - const float rlen = 1.f / len; - int pos = 0; - for (int row = radius + 1; row < H - radius; ++row) { - for(int k = 0; k < remaining; ++k) { - float oldVal = rowBuffer[pos][k]; - rowBuffer[pos][k] = dst[row][col + k]; - dst[row][col + k] = dst[row - 1][col + k] + (dst[row + radius][col + k] - oldVal) * rlen; - } - ++pos; - pos = pos <= radius ? pos : 0; - } - for (int row = H - radius; row < H; ++row) { - for(int k = 0; k < remaining; ++k) { - dst[row][col + k] = (dst[(row - 1)][col + k] * len - rowBuffer[pos][k]) / (len - 1); - } - len --; - ++pos; - pos = pos <= radius ? pos : 0; - } - } - } - } -} - -template void boxblur (T* src, A* dst, A* buffer, int radx, int rady, int W, int H) -{ - //box blur image; box range = (radx,rady) i.e. box size is (2*radx+1)x(2*rady+1) - - float* temp = buffer; - - if (radx == 0) { - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - temp[row * W + col] = src[row * W + col]; - } - } else { - //horizontal blur - for (int row = H - 1; row >= 0; row--) { - int len = radx + 1; - float tempval = (float)src[row * W]; - - for (int j = 1; j <= radx; j++) { - tempval += (float)src[row * W + j]; - } - - tempval = tempval / len; - temp[row * W] = tempval; - - for (int col = 1; col <= radx; col++) { - tempval = (tempval * len + src[row * W + col + radx]) / (len + 1); - temp[row * W + col] = tempval; - len ++; - } - - float reclen = 1.f / len; - - for (int col = radx + 1; col < W - radx; col++) { - tempval = tempval + ((float)(src[row * W + col + radx] - src[row * W + col - radx - 1])) * reclen; - temp[row * W + col] = tempval; - } - - for (int col = W - radx; col < W; col++) { - tempval = (tempval * len - src[row * W + col - radx - 1]) / (len - 1); - temp[row * W + col] = tempval; - len --; - } - } - } - - if (rady == 0) { - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - dst[row * W + col] = temp[row * W + col]; - } - } else { - //vertical blur -#ifdef __SSE2__ - vfloat leninitv = F2V( (float)(rady + 1)); - vfloat onev = F2V( 1.f ); - vfloat tempv, temp1v, lenv, lenp1v, lenm1v, rlenv; - int col; - - for (col = 0; col < W - 7; col += 8) { - lenv = leninitv; - tempv = LVFU(temp[0 * W + col]); - temp1v = LVFU(temp[0 * W + col + 4]); - - for (int i = 1; i <= rady; i++) { - tempv = tempv + LVFU(temp[i * W + col]); - temp1v = temp1v + LVFU(temp[i * W + col + 4]); - } - - tempv = tempv / lenv; - temp1v = temp1v / lenv; - STVFU(dst[0 * W + col], tempv); - STVFU(dst[0 * W + col + 4], temp1v); - - for (int row = 1; row <= rady; row++) { - lenp1v = lenv + onev; - tempv = (tempv * lenv + LVFU(temp[(row + rady) * W + col])) / lenp1v; - temp1v = (temp1v * lenv + LVFU(temp[(row + rady) * W + col + 4])) / lenp1v; - STVFU(dst[row * W + col], tempv); - STVFU(dst[row * W + col + 4], temp1v); - lenv = lenp1v; - } - - rlenv = onev / lenv; - - for (int row = rady + 1; row < H - rady; row++) { - tempv = tempv + (LVFU(temp[(row + rady) * W + col]) - LVFU(temp[(row - rady - 1) * W + col])) * rlenv ; - temp1v = temp1v + (LVFU(temp[(row + rady) * W + col + 4]) - LVFU(temp[(row - rady - 1) * W + col + 4])) * rlenv ; - STVFU(dst[row * W + col], tempv); - STVFU(dst[row * W + col + 4], temp1v); - } - - for (int row = H - rady; row < H; row++) { - lenm1v = lenv - onev; - tempv = (tempv * lenv - LVFU(temp[(row - rady - 1) * W + col])) / lenm1v; - temp1v = (temp1v * lenv - LVFU(temp[(row - rady - 1) * W + col + 4])) / lenm1v; - STVFU(dst[row * W + col], tempv); - STVFU(dst[row * W + col + 4], temp1v); - lenv = lenm1v; - } - } - - for (; col < W - 3; col += 4) { - lenv = leninitv; - tempv = LVFU(temp[0 * W + col]); - - for (int i = 1; i <= rady; i++) { - tempv = tempv + LVFU(temp[i * W + col]); - } - - tempv = tempv / lenv; - STVFU(dst[0 * W + col], tempv); - - for (int row = 1; row <= rady; row++) { - lenp1v = lenv + onev; - tempv = (tempv * lenv + LVFU(temp[(row + rady) * W + col])) / lenp1v; - STVFU(dst[row * W + col], tempv); - lenv = lenp1v; - } - - rlenv = onev / lenv; - - for (int row = rady + 1; row < H - rady; row++) { - tempv = tempv + (LVFU(temp[(row + rady) * W + col]) - LVFU(temp[(row - rady - 1) * W + col])) * rlenv ; - STVFU(dst[row * W + col], tempv); - } - - for (int row = H - rady; row < H; row++) { - lenm1v = lenv - onev; - tempv = (tempv * lenv - LVFU(temp[(row - rady - 1) * W + col])) / lenm1v; - STVFU(dst[row * W + col], tempv); - lenv = lenm1v; - } - } - - for (; col < W; col++) { - int len = rady + 1; - dst[0 * W + col] = temp[0 * W + col] / len; - - for (int i = 1; i <= rady; i++) { - dst[0 * W + col] += temp[i * W + col] / len; - } - - for (int row = 1; row <= rady; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len + temp[(row + rady) * W + col]) / (len + 1); - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - dst[row * W + col] = dst[(row - 1) * W + col] + (temp[(row + rady) * W + col] - temp[(row - rady - 1) * W + col]) / len; - } - - for (int row = H - rady; row < H; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len - temp[(row - rady - 1) * W + col]) / (len - 1); - len --; - } - } - -#else - - for (int col = 0; col < W; col++) { - int len = rady + 1; - dst[0 * W + col] = temp[0 * W + col] / len; - - for (int i = 1; i <= rady; i++) { - dst[0 * W + col] += temp[i * W + col] / len; - } - - for (int row = 1; row <= rady; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len + temp[(row + rady) * W + col]) / (len + 1); - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - dst[row * W + col] = dst[(row - 1) * W + col] + (temp[(row + rady) * W + col] - temp[(row - rady - 1) * W + col]) / len; - } - - for (int row = H - rady; row < H; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len - temp[(row - rady - 1) * W + col]) / (len - 1); - len --; - } - } - -#endif - } - -} - -template void boxabsblur (T* src, A* dst, int radx, int rady, int W, int H, float * temp) -{ - - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - //box blur image; box range = (radx,rady) i.e. box size is (2*radx+1)x(2*rady+1) - - if (radx == 0) { - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - temp[row * W + col] = fabs(src[row * W + col]); - } - } else { - //horizontal blur - for (int row = 0; row < H; row++) { - int len = radx + 1; - float tempval = fabsf((float)src[row * W + 0]); - - for (int j = 1; j <= radx; j++) { - tempval += fabsf((float)src[row * W + j]); - } - - tempval /= len; - temp[row * W + 0] = tempval; - - for (int col = 1; col <= radx; col++) { - tempval = (tempval * len + fabsf(src[row * W + col + radx])) / (len + 1); - temp[row * W + col] = tempval; - len ++; - } - - float rlen = 1.f / (float)len; - - for (int col = radx + 1; col < W - radx; col++) { - tempval = tempval + ((float)(fabsf(src[row * W + col + radx]) - fabsf(src[row * W + col - radx - 1]))) * rlen; - temp[row * W + col] = tempval; - } - - for (int col = W - radx; col < W; col++) { - tempval = (tempval * len - fabsf(src[row * W + col - radx - 1])) / (len - 1); - temp[row * W + col] = tempval; - len --; - } - } - } - - if (rady == 0) { - for (int row = 0; row < H; row++) - for (int col = 0; col < W; col++) { - dst[row * W + col] = temp[row * W + col]; - } - } else { - //vertical blur -#ifdef __SSE2__ - vfloat leninitv = F2V( (float)(rady + 1)); - vfloat onev = F2V( 1.f ); - vfloat tempv, lenv, lenp1v, lenm1v, rlenv; - - for (int col = 0; col < W - 3; col += 4) { - lenv = leninitv; - tempv = LVF(temp[0 * W + col]); - - for (int i = 1; i <= rady; i++) { - tempv = tempv + LVF(temp[i * W + col]); - } - - tempv = tempv / lenv; - STVF(dst[0 * W + col], tempv); - - for (int row = 1; row <= rady; row++) { - lenp1v = lenv + onev; - tempv = (tempv * lenv + LVF(temp[(row + rady) * W + col])) / lenp1v; - STVF(dst[row * W + col], tempv); - lenv = lenp1v; - } - - rlenv = onev / lenv; - - for (int row = rady + 1; row < H - rady; row++) { - tempv = tempv + (LVF(temp[(row + rady) * W + col]) - LVF(temp[(row - rady - 1) * W + col])) * rlenv; - STVF(dst[row * W + col], tempv); - } - - for (int row = H - rady; row < H; row++) { - lenm1v = lenv - onev; - tempv = (tempv * lenv - LVF(temp[(row - rady - 1) * W + col])) / lenm1v; - STVF(dst[row * W + col], tempv); - lenv = lenm1v; - } - } - - for (int col = W - (W % 4); col < W; col++) { - int len = rady + 1; - dst[0 * W + col] = temp[0 * W + col] / len; - - for (int i = 1; i <= rady; i++) { - dst[0 * W + col] += temp[i * W + col] / len; - } - - for (int row = 1; row <= rady; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len + temp[(row + rady) * W + col]) / (len + 1); - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - dst[row * W + col] = dst[(row - 1) * W + col] + (temp[(row + rady) * W + col] - temp[(row - rady - 1) * W + col]) / len; - } - - for (int row = H - rady; row < H; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len - temp[(row - rady - 1) * W + col]) / (len - 1); - len --; - } - } - -#else - - for (int col = 0; col < W; col++) { - int len = rady + 1; - dst[0 * W + col] = temp[0 * W + col] / len; - - for (int i = 1; i <= rady; i++) { - dst[0 * W + col] += temp[i * W + col] / len; - } - - for (int row = 1; row <= rady; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len + temp[(row + rady) * W + col]) / (len + 1); - len ++; - } - - for (int row = rady + 1; row < H - rady; row++) { - dst[row * W + col] = dst[(row - 1) * W + col] + (temp[(row + rady) * W + col] - temp[(row - rady - 1) * W + col]) / len; - } - - for (int row = H - rady; row < H; row++) { - dst[row * W + col] = (dst[(row - 1) * W + col] * len - temp[(row - rady - 1) * W + col]) / (len - 1); - len --; - } - } - -#endif - } - -} - -} -#endif /* _BOXBLUR_H_ */ diff --git a/rtengine/gauss.cc b/rtengine/gauss.cc index ca330f9b9..dad1c4954 100644 --- a/rtengine/gauss.cc +++ b/rtengine/gauss.cc @@ -1349,7 +1349,7 @@ template void gaussVerticalmult (T** src, T** dst, const int W, const i } #endif -template void gaussianBlurImpl(T** src, T** dst, const int W, const int H, const double sigma, T *buffer = nullptr, eGaussType gausstype = GAUSS_STANDARD, T** buffer2 = nullptr) +template void gaussianBlurImpl(T** src, T** dst, const int W, const int H, const double sigma, bool useBoxBlur, eGaussType gausstype = GAUSS_STANDARD, T** buffer2 = nullptr) { static constexpr auto GAUSS_SKIP = 0.25; static constexpr auto GAUSS_3X3_LIMIT = 0.6; @@ -1357,7 +1357,7 @@ template void gaussianBlurImpl(T** src, T** dst, const int W, const int static constexpr auto GAUSS_7X7_LIMIT = 1.15; static constexpr auto GAUSS_DOUBLE = 25.0; - if(buffer) { + if (useBoxBlur) { // special variant for very large sigma, currently only used by retinex algorithm // use iterated boxblur to approximate gaussian blur // Compute ideal averaging filter width and number of iterations @@ -1393,10 +1393,10 @@ template void gaussianBlurImpl(T** src, T** dst, const int W, const int sizes[i] = ((i < m ? wl : wu) - 1) / 2; } - rtengine::boxblur(src, dst, buffer, sizes[0], sizes[0], W, H); + rtengine::boxblur(src, dst, sizes[0], W, H, true); for(int i = 1; i < n; i++) { - rtengine::boxblur(dst, dst, buffer, sizes[i], sizes[i], W, H); + rtengine::boxblur(dst, dst, sizes[i], W, H, true); } } else { if (sigma < GAUSS_SKIP) { @@ -1532,8 +1532,8 @@ template void gaussianBlurImpl(T** src, T** dst, const int W, const int } } -void gaussianBlur(float** src, float** dst, const int W, const int H, const double sigma, float *buffer, eGaussType gausstype, float** buffer2) +void gaussianBlur(float** src, float** dst, const int W, const int H, const double sigma, bool useBoxBlur, eGaussType gausstype, float** buffer2) { - gaussianBlurImpl(src, dst, W, H, sigma, buffer, gausstype, buffer2); + gaussianBlurImpl(src, dst, W, H, sigma, useBoxBlur, gausstype, buffer2); } diff --git a/rtengine/gauss.h b/rtengine/gauss.h index b63301d2b..f78762df3 100644 --- a/rtengine/gauss.h +++ b/rtengine/gauss.h @@ -21,6 +21,6 @@ enum eGaussType {GAUSS_STANDARD, GAUSS_MULT, GAUSS_DIV}; -void gaussianBlur(float** src, float** dst, const int W, const int H, const double sigma, float *buffer = nullptr, eGaussType gausstype = GAUSS_STANDARD, float** buffer2 = nullptr); +void gaussianBlur(float** src, float** dst, const int W, const int H, const double sigma, bool useBoxBlur = false, eGaussType gausstype = GAUSS_STANDARD, float** buffer2 = nullptr); #endif \ No newline at end of file diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index 159e89504..feb108198 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -105,7 +105,7 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 [multithread](array2D &d, array2D &s, int rad) -> void { rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1); - boxblur(s, d, rad, s.width(), s.height(), multithread); + boxblur(static_cast(s), static_cast(d), rad, s.width(), s.height(), multithread); }; const int W = src.width(); diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 84da1cacc..f88108422 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -198,20 +198,20 @@ public: void Median_Denoise(float **src, float **dst, float upperBound, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr); void RGB_denoise(int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi); void RGB_denoise_infoGamCurve(const procparams::DirPyrDenoiseParams & dnparams, const bool isRAW, LUTf &gamcurve, float &gam, float &gamthresh, float &gamslope); - void RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, bool isRAW, LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float & maxblueaut, float &minredaut, float & minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread = false); - void RGBtile_denoise(float * fLblox, int hblproc, float noisevar_Ldetail, float * nbrwt, float * blurbuffer); //for DCT + void RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, bool isRAW, const LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float & maxblueaut, float &minredaut, float & minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread = false); + void RGBtile_denoise(float * fLblox, int hblproc, float noisevar_Ldetail); //for DCT void RGBoutput_tile_row(float *bloxrow_L, float ** Ldetail, float ** tilemask_out, int height, int width, int top); - bool WaveletDenoiseAllL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge); - bool WaveletDenoiseAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); - void WaveletDenoiseAll_info(int levwav, wavelet_decomposition &WaveletCoeffs_a, - wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float & minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, + bool WaveletDenoiseAllL(const wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge); + bool WaveletDenoiseAllAB(const wavelet_decomposition &WaveletCoeffs_L, const wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); + void WaveletDenoiseAll_info(int levwav, const wavelet_decomposition &WaveletCoeffs_a, + const wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float & minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb); - bool WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]); - bool WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, + bool WaveletDenoiseAll_BiShrinkL(const wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]); + bool WaveletDenoiseAll_BiShrinkAB(const wavelet_decomposition &WaveletCoeffs_L, const wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb); - void ShrinkAllL(wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge); - void ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir, + void ShrinkAllL(const wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge); + void ShrinkAllAB(const wavelet_decomposition &WaveletCoeffs_L, const wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir, float *noisevarchrom, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, float * madL, float * madaab = nullptr, bool madCalculated = false); void ShrinkAll_info(float ** WavCoeffs_a, float ** WavCoeffs_b, int W_ab, int H_ab, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, int lvl, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index 7117c9f2a..de6f4960a 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -43,6 +43,7 @@ #include "gauss.h" #include "improcfun.h" +#include "jaggedarray.h" #include "median.h" #include "opthelper.h" #include "procparams.h" @@ -50,8 +51,6 @@ #include "rtengine.h" #include "StopWatch.h" -#define clipretinex( val, minv, maxv ) (( val = (val < minv ? minv : val ) ) > maxv ? maxv : val ) - namespace { void retinex_scales( float* scales, int nscales, int mode, int s, float high) @@ -138,360 +137,422 @@ namespace rtengine extern const Settings* settings; -void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) +void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) { +BENCHFUN + if (!deh.enabled) { + return; + } - if (deh.enabled) {//enabled - float maxtr, mintr; - constexpr float eps = 2.f; - bool useHsl = deh.retinexcolorspace == "HSLLOG"; - bool useHslLin = deh.retinexcolorspace == "HSLLIN"; - float offse = (float) deh.offs; //def = 0 not use - int iter = deh.iter; - int gradient = deh.scal; - int scal = 3;//disabled scal - int nei = (int) (2.8f * deh.neigh); //def = 220 - float vart = (float)deh.vart / 100.f;//variance - float gradvart = (float)deh.grad; - float gradstr = (float)deh.grads; - float strength = (float) deh.str / 100.f; // Blend with original L channel data - float limD = (float) deh.limd; - limD = pow(limD, 1.7f);//about 2500 enough - limD *= useHslLin ? 10.f : 1.f; - float ilimD = 1.f / limD; - float hig = ((float) deh.highl) / 100.f; - scal = deh.skal; + constexpr float eps = 2.f; + const bool useHsl = deh.retinexcolorspace == "HSLLOG"; + const bool useHslLin = deh.retinexcolorspace == "HSLLIN"; + const float offse = deh.offs; //def = 0 not use + const int iter = deh.iter; + const int gradient = deh.scal; + int scal = deh.skal; + const int nei = 2.8f * deh.neigh; //def = 220 + const float vart = deh.vart / 100.f;//variance + const float gradvart = deh.grad; + const float gradstr = deh.grads; + const float strength = deh.str / 100.f; // Blend with original L channel data + float limD = deh.limd; + limD = pow(limD, 1.7f);//about 2500 enough + limD *= useHslLin ? 10.f : 1.f; + const float ilimD = 1.f / limD; + const float hig = deh.highl / 100.f; - int H_L = height; - int W_L = width; + const int H_L = height; + const int W_L = width; - float *tran[H_L] ALIGNED16; - float *tranBuffer = nullptr; + constexpr float elogt = 2.71828f; + bool lhutili = false; - constexpr float elogt = 2.71828f; - bool lhutili = false; + FlatCurve* shcurve = new FlatCurve(deh.lhcurve); //curve L=f(H) - FlatCurve* shcurve = new FlatCurve(deh.lhcurve); //curve L=f(H) - - if (!shcurve || shcurve->isIdentity()) { - if (shcurve) { - delete shcurve; - shcurve = nullptr; - } - } else { - lhutili = true; + if (!shcurve || shcurve->isIdentity()) { + if (shcurve) { + delete shcurve; + shcurve = nullptr; } + } else { + lhutili = true; + } - bool higplus = false ; - int moderetinex = 2; // default to 2 ( deh.retinexMethod == "high" ) + bool higplus = false ; + int moderetinex = 2; // default to 2 ( deh.retinexMethod == "high" ) - if(deh.retinexMethod == "highliplus") { - higplus = true; - moderetinex = 3; - } else if (deh.retinexMethod == "uni") { - moderetinex = 0; - } else if (deh.retinexMethod == "low") { - moderetinex = 1; - } else { /*if (deh.retinexMethod == "highli") */ - moderetinex = 3; - } + if(deh.retinexMethod == "highliplus") { + higplus = true; + moderetinex = 3; + } else if (deh.retinexMethod == "uni") { + moderetinex = 0; + } else if (deh.retinexMethod == "low") { + moderetinex = 1; + } else { /*if (deh.retinexMethod == "highli") */ + moderetinex = 3; + } - constexpr float aahi = 49.f / 99.f; ////reduce sensibility 50% - constexpr float bbhi = 1.f - aahi; + constexpr float aahi = 49.f / 99.f; ////reduce sensibility 50% + constexpr float bbhi = 1.f - aahi; + float high = bbhi + aahi * (float) deh.highl; - for(int it = 1; it < iter + 1; it++) { //iter nb max of iterations - float high = bbhi + aahi * (float) deh.highl; + for (int it = 1; it < iter + 1; it++) { //iter nb max of iterations + float grad = 1.f; + float sc = scal; - float grad = 1.f; - float sc = scal; - - if(gradient == 0) { - grad = 1.f; - sc = 3.f; - } else if(gradient == 1) { - grad = 0.25f * it + 0.75f; - sc = -0.5f * it + 4.5f; - } else if(gradient == 2) { - grad = 0.5f * it + 0.5f; - sc = -0.75f * it + 5.75f; - } else if(gradient == 3) { - grad = 0.666f * it + 0.333f; - sc = -0.75f * it + 5.75f; - } else if(gradient == 4) { - grad = 0.8f * it + 0.2f; - sc = -0.75f * it + 5.75f; - } else if(gradient == 5) { - if(moderetinex != 3) { - grad = 2.5f * it - 1.5f; - } else { - float aa = (11.f * high - 1.f) / 4.f; - float bb = 1.f - aa; - grad = aa * it + bb; - } - - sc = -0.75f * it + 5.75f; - } else if(gradient == 6) { - if(moderetinex != 3) { - grad = 5.f * it - 4.f; - } else { - float aa = (21.f * high - 1.f) / 4.f; - float bb = 1.f - aa; - grad = aa * it + bb; - } - - sc = -0.75f * it + 5.75f; - } - - else if(gradient == -1) { - grad = -0.125f * it + 1.125f; - sc = 3.f; - } - - if(iter == 1) { - sc = scal; + if (gradient == 0) { + grad = 1.f; + sc = 3.f; + } else if (gradient == 1) { + grad = 0.25f * it + 0.75f; + sc = -0.5f * it + 4.5f; + } else if (gradient == 2) { + grad = 0.5f * it + 0.5f; + sc = -0.75f * it + 5.75f; + } else if (gradient == 3) { + grad = 0.666f * it + 0.333f; + sc = -0.75f * it + 5.75f; + } else if (gradient == 4) { + grad = 0.8f * it + 0.2f; + sc = -0.75f * it + 5.75f; + } else if (gradient == 5) { + if (moderetinex != 3) { + grad = 2.5f * it - 1.5f; } else { - //adjust sc in function of choice of scale by user if iterations - if(scal < 3) { - sc -= 1; + float aa = (11.f * high - 1.f) / 4.f; + float bb = 1.f - aa; + grad = aa * it + bb; + } - if(sc < 1.f) {//avoid 0 - sc = 1.f; - } + sc = -0.75f * it + 5.75f; + } else if (gradient == 6) { + if (moderetinex != 3) { + grad = 5.f * it - 4.f; + } else { + float aa = (21.f * high - 1.f) / 4.f; + float bb = 1.f - aa; + grad = aa * it + bb; + } + + sc = -0.75f * it + 5.75f; + } else if (gradient == -1) { + grad = -0.125f * it + 1.125f; + sc = 3.f; + } + + if (iter == 1) { + sc = scal; + } else { + //adjust sc in function of choice of scale by user if iterations + if (scal < 3) { + sc -= 1; + if (sc < 1.f) {//avoid 0 + sc = 1.f; } + } else if (scal > 4) { + sc += 1; + } + } - if(scal > 4) { - sc += 1; + float varx = vart; + float limdx = limD; + float ilimdx = ilimD; + + if (gradvart != 0) { + if (gradvart == 1) { + varx = vart * (-0.125f * it + 1.125f); + limdx = limD * (-0.125f * it + 1.125f); + ilimdx = 1.f / limdx; + } else if (gradvart == 2) { + varx = vart * (-0.2f * it + 1.2f); + limdx = limD * (-0.2f * it + 1.2f); + ilimdx = 1.f / limdx; + } else if (gradvart == -1) { + varx = vart * (0.125f * it + 0.875f); + limdx = limD * (0.125f * it + 0.875f); + ilimdx = 1.f / limdx; + } else if (gradvart == -2) { + varx = vart * (0.4f * it + 0.6f); + limdx = limD * (0.4f * it + 0.6f); + ilimdx = 1.f / limdx; + } + } + + scal = round(sc); + float ks = 1.f; + + if (gradstr != 0) { + if (gradstr == 1) { + if (it <= 3) { + ks = -0.3f * it + 1.6f; + } else { + ks = 0.5f; + } + } else if (gradstr == 2) { + if (it <= 3) { + ks = -0.6f * it + 2.2f; + } else { + ks = 0.3f; + } + } else if (gradstr == -1) { + if (it <= 3) { + ks = 0.2f * it + 0.6f; + } else { + ks = 1.2f; + } + } else if (gradstr == -2) { + if (it <= 3) { + ks = 0.4f * it + 0.2f; + } else { + ks = 1.5f; } } + } - float varx = vart; - float limdx = limD; - float ilimdx = ilimD; + const float strengthx = ks * strength; - if(gradvart != 0) { - if(gradvart == 1) { - varx = vart * (-0.125f * it + 1.125f); - limdx = limD * (-0.125f * it + 1.125f); - ilimdx = 1.f / limdx; - } else if(gradvart == 2) { - varx = vart * (-0.2f * it + 1.2f); - limdx = limD * (-0.2f * it + 1.2f); - ilimdx = 1.f / limdx; - } else if(gradvart == -1) { - varx = vart * (0.125f * it + 0.875f); - limdx = limD * (0.125f * it + 0.875f); - ilimdx = 1.f / limdx; - } else if(gradvart == -2) { - varx = vart * (0.4f * it + 0.6f); - limdx = limD * (0.4f * it + 0.6f); - ilimdx = 1.f / limdx; - } - } + constexpr auto maxRetinexScales = 8; + float RetinexScales[maxRetinexScales]; - scal = round(sc); - float ks = 1.f; + retinex_scales(RetinexScales, scal, moderetinex, nei / grad, high); - if(gradstr != 0) { - if(gradstr == 1) { - if(it <= 3) { - ks = -0.3f * it + 1.6f; - } else { - ks = 0.5f; - } - } else if(gradstr == 2) { - if(it <= 3) { - ks = -0.6f * it + 2.2f; - } else { - ks = 0.3f; - } - } else if(gradstr == -1) { - if(it <= 3) { - ks = 0.2f * it + 0.6f; - } else { - ks = 1.2f; - } - } else if(gradstr == -2) { - if(it <= 3) { - ks = 0.4f * it + 0.2f; - } else { - ks = 1.5f; - } - } - } + const int shHighlights = deh.highlights; + const int shShadows = deh.shadows; - float strengthx = ks * strength; + int mapmet = 0; - constexpr auto maxRetinexScales = 8; - float RetinexScales[maxRetinexScales]; + if(deh.mapMethod == "map") { + mapmet = 2; + } else if(deh.mapMethod == "mapT") { + mapmet = 3; + } else if(deh.mapMethod == "gaus") { + mapmet = 4; + } - retinex_scales( RetinexScales, scal, moderetinex, nei / grad, high ); + const double shradius = mapmet == 4 ? (double) deh.radius : 40.; - float *src[H_L] ALIGNED16; - float *srcBuffer = new float[H_L * W_L]; + int viewmet = 0; - for (int i = 0; i < H_L; i++) { - src[i] = &srcBuffer[i * W_L]; - } + if(deh.viewMethod == "mask") { + viewmet = 1; + } else if(deh.viewMethod == "tran") { + viewmet = 2; + } else if(deh.viewMethod == "tran2") { + viewmet = 3; + } else if(deh.viewMethod == "unsharp") { + viewmet = 4; + } - int h_th = 0, s_th = 0; - - int shHighlights = deh.highlights; - int shShadows = deh.shadows; - - int mapmet = 0; - - if(deh.mapMethod == "map") { - mapmet = 2; - } else if(deh.mapMethod == "mapT") { - mapmet = 3; - } else if(deh.mapMethod == "gaus") { - mapmet = 4; - } - - const double shradius = mapmet == 4 ? (double) deh.radius : 40.; - - int viewmet = 0; - - if(deh.viewMethod == "mask") { - viewmet = 1; - } else if(deh.viewMethod == "tran") { - viewmet = 2; - } else if(deh.viewMethod == "tran2") { - viewmet = 3; - } else if(deh.viewMethod == "unsharp") { - viewmet = 4; - } + std::unique_ptr> srcBuffer(new JaggedArray(W_L, H_L)); + float** src = *(srcBuffer.get()); #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel for #endif - for (int i = 0; i < H_L; i++) - for (int j = 0; j < W_L; j++) { - src[i][j] = luminance[i][j] + eps; - luminance[i][j] = 0.f; - } - - float *out[H_L] ALIGNED16; - float *outBuffer = new float[H_L * W_L]; - - for (int i = 0; i < H_L; i++) { - out[i] = &outBuffer[i * W_L]; + for (int i = 0; i < H_L; i++) + for (int j = 0; j < W_L; j++) { + src[i][j] = luminance[i][j] + eps; + luminance[i][j] = 0.f; } - if(viewmet == 3 || viewmet == 2) { - tranBuffer = new float[H_L * W_L]; + JaggedArray out(W_L, H_L); + JaggedArray& tran = out; // tran and out can safely use the same buffer - for (int i = 0; i < H_L; i++) { - tran[i] = &tranBuffer[i * W_L]; - } - } + const float logBetaGain = xlogf(16384.f); + float pond = logBetaGain / (float) scal; - const float logBetaGain = xlogf(16384.f); - float pond = logBetaGain / (float) scal; + if(!useHslLin) { + pond /= log(elogt); + } - if(!useHslLin) { - pond /= log(elogt); - } + std::unique_ptr shmap; + if (((mapmet == 2 || mapmet == 3 || mapmet == 4) && it == 1)) { + shmap.reset(new SHMap(W_L, H_L)); + } - auto shmap = ((mapmet == 2 || mapmet == 3 || mapmet == 4) && it == 1) ? new SHMap (W_L, H_L) : nullptr; + std::unique_ptr buffer; + if (mapmet > 0) { + buffer.reset(new float[W_L * H_L]); + } - float *buffer = new float[W_L * H_L];; - - for ( int scale = scal - 1; scale >= 0; scale-- ) { -#ifdef _OPENMP - #pragma omp parallel -#endif - { - if(scale == scal - 1) - { - gaussianBlur (src, out, W_L, H_L, RetinexScales[scale], buffer); - } else { // reuse result of last iteration - // out was modified in last iteration => restore it - if((((mapmet == 2 && scale > 1) || mapmet == 3 || mapmet == 4) || (mapmet > 0 && mapcontlutili)) && it == 1) - { -#ifdef _OPENMP - #pragma omp for -#endif - - for (int i = 0; i < H_L; i++) { - for (int j = 0; j < W_L; j++) { - out[i][j] = buffer[i * W_L + j]; - } - } - } - - gaussianBlur (out, out, W_L, H_L, sqrtf(SQR(RetinexScales[scale]) - SQR(RetinexScales[scale + 1])), buffer); - } - if((((mapmet == 2 && scale > 2) || mapmet == 3 || mapmet == 4) || (mapmet > 0 && mapcontlutili)) && it == 1 && scale > 0) - { - // out will be modified => store it for use in next iteration. We even don't need a new buffer because 'buffer' is free after gaussianBlur :) -#ifdef _OPENMP - #pragma omp for -#endif - - for (int i = 0; i < H_L; i++) { - for (int j = 0; j < W_L; j++) { - buffer[i * W_L + j] = out[i][j]; - } - } - } - } - - if(((mapmet == 2 && scale > 2) || mapmet == 3 || mapmet == 4) && it == 1) { - shmap->updateL (out, shradius, true, 1); - h_th = shmap->max_f - deh.htonalwidth * (shmap->max_f - shmap->avg) / 100; - s_th = deh.stonalwidth * (shmap->avg - shmap->min_f) / 100; - } - -#ifdef __SSE2__ - vfloat pondv = F2V(pond); - vfloat limMinv = F2V(ilimdx); - vfloat limMaxv = F2V(limdx); - -#endif - - if(mapmet > 0 && mapcontlutili && it == 1) { - // TODO: When rgbcurvespeedup branch is merged into master we can simplify the code by - // 1) in rawimagesource.retinexPrepareCurves() insert - // mapcurve *= 0.5f; - // after - // CurveFactory::mapcurve (mapcontlutili, retinexParams.mapcurve, mapcurve, 1, lhist16RETI, histLRETI); - // 2) remove the division by 2.f from the code 7 lines below this line + for (int scale = scal - 1; scale >= 0; --scale) { + if (scale == scal - 1) { + gaussianBlur(src, out, W_L, H_L, RetinexScales[scale], true); + } else { // reuse result of last iteration + // out was modified in last iteration => restore it + if((((mapmet == 2 && scale > 1) || mapmet == 3 || mapmet == 4) || (mapmet > 0 && mapcontlutili)) && it == 1) { #ifdef _OPENMP #pragma omp parallel for #endif for (int i = 0; i < H_L; i++) { for (int j = 0; j < W_L; j++) { - out[i][j] = mapcurve[2.f * out[i][j]] / 2.f; + out[i][j] = buffer[i * W_L + j]; } } - } - if(((mapmet == 2 && scale > 2) || mapmet == 3 || mapmet == 4) && it == 1) { - float hWeight = (100.f - shHighlights) / 100.f; - float sWeight = (100.f - shShadows) / 100.f; + gaussianBlur(out, out, W_L, H_L, sqrtf(SQR(RetinexScales[scale]) - SQR(RetinexScales[scale + 1])), true); + } + + if ((((mapmet == 2 && scale > 2) || mapmet == 3 || mapmet == 4) || (mapmet > 0 && mapcontlutili)) && it == 1 && scale > 0) { + // out will be modified => store it for use in next iteration. #ifdef _OPENMP - #pragma omp parallel for schedule(dynamic,16) + #pragma omp parallel for #endif - for (int i = 0; i < H_L; i++) { - for (int j = 0; j < W_L; j++) { - float mapval = 1.f + shmap->map[i][j]; - float factor = 1.f; + for (int i = 0; i < H_L; i++) { + for (int j = 0; j < W_L; j++) { + buffer[i * W_L + j] = out[i][j]; + } + } + } + int h_th = 0; + int s_th = 0; + if (((mapmet == 2 && scale > 2) || mapmet == 3 || mapmet == 4) && it == 1) { + shmap->updateL(out, shradius, true, 1); + h_th = shmap->max_f - deh.htonalwidth * (shmap->max_f - shmap->avg) / 100; + s_th = deh.stonalwidth * (shmap->avg - shmap->min_f) / 100; + } - if (mapval > h_th) { - factor = (h_th + hWeight * (mapval - h_th)) / mapval; - } else if (mapval < s_th) { - factor = (s_th - sWeight * (s_th - mapval)) / mapval; - } + if (mapmet > 0 && mapcontlutili && it == 1) { +#ifdef _OPENMP + #pragma omp parallel for +#endif - out[i][j] *= factor; + for (int i = 0; i < H_L; i++) { + for (int j = 0; j < W_L; j++) { + out[i][j] = mapcurve[2.f * out[i][j]]; + } + } + } + + if (((mapmet == 2 && scale > 2) || mapmet == 3 || mapmet == 4) && it == 1) { + const float hWeight = (100.f - shHighlights) / 100.f; + const float sWeight = (100.f - shShadows) / 100.f; +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic,16) +#endif + + for (int i = 0; i < H_L; i++) { + for (int j = 0; j < W_L; j++) { + const float mapval = 1.f + shmap->map[i][j]; + float factor; + + if (mapval > h_th) { + factor = (h_th + hWeight * (mapval - h_th)) / mapval; + } else if (mapval < s_th) { + factor = (s_th - sWeight * (s_th - mapval)) / mapval; + } else { + factor = 1.f; } + + out[i][j] *= factor; + } + } + } + +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int i = 0; i < H_L; i++) { + int j = 0; + +#ifdef __SSE2__ + const vfloat pondv = F2V(pond); + const vfloat limMinv = F2V(ilimdx); + const vfloat limMaxv = F2V(limdx); + if( useHslLin) { + for (; j < W_L - 3; j += 4) { + STVFU(luminance[i][j], LVFU(luminance[i][j]) + pondv * vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv)); + } + } else { + for (; j < W_L - 3; j += 4) { + STVFU(luminance[i][j], LVFU(luminance[i][j]) + pondv * xlogf(vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv))); + } + } + +#endif + + if(useHslLin) { + for (; j < W_L; j++) { + luminance[i][j] += pond * LIM(src[i][j] / out[i][j], ilimdx, limdx); + } + } else { + for (; j < W_L; j++) { + luminance[i][j] += pond * xlogf(LIM(src[i][j] / out[i][j], ilimdx, limdx)); // /logt ? + } + } + } + } + + srcBuffer.reset(); + + float mean = 0.f; + float stddv = 0.f; + // I call mean_stddv2 instead of mean_stddv ==> logBetaGain + + float maxtr, mintr; + mean_stddv2(luminance, mean, stddv, W_L, H_L, maxtr, mintr); + //printf("mean=%f std=%f delta=%f maxtr=%f mintr=%f\n", mean, stddv, delta, maxtr, mintr); + + //mean_stddv( luminance, mean, stddv, W_L, H_L, logBetaGain, maxtr, mintr); + if (dehatransmissionCurve && mean != 0.f && stddv != 0.f) { //if curve + float asig = 0.166666f / stddv; + float bsig = 0.5f - asig * mean; + float amax = 0.333333f / (maxtr - mean - stddv); + float bmax = 1.f - amax * maxtr; + float amin = 0.333333f / (mean - stddv - mintr); + float bmin = -amin * mintr; + + asig *= 500.f; + bsig *= 500.f; + amax *= 500.f; + bmax *= 500.f; + amin *= 500.f; + bmin *= 500.f; + +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic,16) +#endif + + for (int i = 0; i < H_L; i++ ) { + for (int j = 0; j < W_L; j++) { //for mintr to maxtr evalate absciss in function of original transmission + float absciss; + if (LIKELY(fabsf(luminance[i][j] - mean) < stddv)) { + absciss = asig * luminance[i][j] + bsig; + } else if (luminance[i][j] >= mean) { + absciss = amax * luminance[i][j] + bmax; + } else { /*if(luminance[i][j] <= mean - stddv)*/ + absciss = amin * luminance[i][j] + bmin; + } + + //TODO : move multiplication by 4.f and subtraction of 1.f inside the curve + luminance[i][j] *= (-1.f + 4.f * dehatransmissionCurve[absciss]); //new transmission + + if(viewmet == 3 || viewmet == 2) { + tran[i][j] = luminance[i][j]; + } + } + } + + // median filter on transmission ==> reduce artifacts + if (deh.medianmap && it == 1) { //only one time + JaggedArray tmL(W_L, H_L); + constexpr int borderL = 1; + +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int i = borderL; i < H_L - borderL; i++) { + for (int j = borderL; j < W_L - borderL; j++) { + tmL[i][j] = median(luminance[i][j], luminance[i - 1][j], luminance[i + 1][j], luminance[i][j + 1], luminance[i][j - 1], luminance[i - 1][j - 1], luminance[i - 1][j + 1], luminance[i + 1][j - 1], luminance[i + 1][j + 1]); //3x3 } } @@ -499,307 +560,164 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e #pragma omp parallel for #endif - for (int i = 0; i < H_L; i++) { - int j = 0; - -#ifdef __SSE2__ - - if(useHslLin) { - for (; j < W_L - 3; j += 4) { - _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * (vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); - } - } else { - for (; j < W_L - 3; j += 4) { - _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * xlogf(vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); - } - } - -#endif - - if(useHslLin) { - for (; j < W_L; j++) { - luminance[i][j] += pond * (LIM(src[i][j] / out[i][j], ilimdx, limdx)); - } - } else { - for (; j < W_L; j++) { - luminance[i][j] += pond * xlogf(LIM(src[i][j] / out[i][j], ilimdx, limdx)); // /logt ? - } + for (int i = borderL; i < H_L - borderL; i++ ) { + for (int j = borderL; j < W_L - borderL; j++) { + luminance[i][j] = tmL[i][j]; } } } - if(mapmet > 1) { - if(shmap) { - delete shmap; - } - } - - shmap = nullptr; - - delete [] buffer; - delete [] srcBuffer; - - float mean = 0.f; - float stddv = 0.f; // I call mean_stddv2 instead of mean_stddv ==> logBetaGain + //mean_stddv( luminance, mean, stddv, W_L, H_L, 1.f, maxtr, mintr); + mean_stddv2(luminance, mean, stddv, W_L, H_L, maxtr, mintr); + } - mean_stddv2( luminance, mean, stddv, W_L, H_L, maxtr, mintr); - //printf("mean=%f std=%f delta=%f maxtr=%f mintr=%f\n", mean, stddv, delta, maxtr, mintr); + constexpr float epsil = 0.1f; - //mean_stddv( luminance, mean, stddv, W_L, H_L, logBetaGain, maxtr, mintr); - if (dehatransmissionCurve && mean != 0.f && stddv != 0.f) { //if curve - float asig = 0.166666f / stddv; - float bsig = 0.5f - asig * mean; - float amax = 0.333333f / (maxtr - mean - stddv); - float bmax = 1.f - amax * maxtr; - float amin = 0.333333f / (mean - stddv - mintr); - float bmin = -amin * mintr; + mini = mean - varx * stddv; - asig *= 500.f; - bsig *= 500.f; - amax *= 500.f; - bmax *= 500.f; - amin *= 500.f; - bmin *= 500.f; + if (mini < mintr) { + mini = mintr + epsil; + } -#ifdef _OPENMP - #pragma omp parallel -#endif - { - float absciss; -#ifdef _OPENMP - #pragma omp for schedule(dynamic,16) -#endif + maxi = mean + varx * stddv; - for (int i = 0; i < H_L; i++ ) - for (int j = 0; j < W_L; j++) { //for mintr to maxtr evalate absciss in function of original transmission - if (LIKELY(fabsf(luminance[i][j] - mean) < stddv)) { - absciss = asig * luminance[i][j] + bsig; - } else if (luminance[i][j] >= mean) { - absciss = amax * luminance[i][j] + bmax; - } else { /*if(luminance[i][j] <= mean - stddv)*/ - absciss = amin * luminance[i][j] + bmin; - } + if (maxi > maxtr) { + maxi = maxtr - epsil; + } - //TODO : move multiplication by 4.f and subtraction of 1.f inside the curve - luminance[i][j] *= (-1.f + 4.f * dehatransmissionCurve[absciss]); //new transmission + float delta = maxi - mini; + //printf("maxi=%f mini=%f mean=%f std=%f delta=%f maxtr=%f mintr=%f\n", maxi, mini, mean, stddv, delta, maxtr, mintr); - if(viewmet == 3 || viewmet == 2) { - tran[i][j] = luminance[i][j]; - } - } - } + if ( !delta ) { + delta = 1.0f; + } - // median filter on transmission ==> reduce artifacts - if (deh.medianmap && it == 1) { //only one time - int wid = W_L; - int hei = H_L; - float *tmL[hei] ALIGNED16; - float *tmLBuffer = new float[wid * hei]; - int borderL = 1; - - for (int i = 0; i < hei; i++) { - tmL[i] = &tmLBuffer[i * wid]; - } - -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int i = borderL; i < hei - borderL; i++) { - for (int j = borderL; j < wid - borderL; j++) { - tmL[i][j] = median(luminance[i][j], luminance[i - 1][j], luminance[i + 1][j], luminance[i][j + 1], luminance[i][j - 1], luminance[i - 1][j - 1], luminance[i - 1][j + 1], luminance[i + 1][j - 1], luminance[i + 1][j + 1]); //3x3 - } - } - -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int i = borderL; i < hei - borderL; i++ ) { - for (int j = borderL; j < wid - borderL; j++) { - luminance[i][j] = tmL[i][j]; - } - } - - delete [] tmLBuffer; - - } - - // I call mean_stddv2 instead of mean_stddv ==> logBetaGain - //mean_stddv( luminance, mean, stddv, W_L, H_L, 1.f, maxtr, mintr); - mean_stddv2( luminance, mean, stddv, W_L, H_L, maxtr, mintr); - - } - - float epsil = 0.1f; - - mini = mean - varx * stddv; - - if (mini < mintr) { - mini = mintr + epsil; - } - - maxi = mean + varx * stddv; - - if (maxi > maxtr) { - maxi = maxtr - epsil; - } - - float delta = maxi - mini; - //printf("maxi=%f mini=%f mean=%f std=%f delta=%f maxtr=%f mintr=%f\n", maxi, mini, mean, stddv, delta, maxtr, mintr); - - if ( !delta ) { - delta = 1.0f; - } - - float cdfactor = 32768.f / delta; - maxCD = -9999999.f; - minCD = 9999999.f; - // coeff for auto "transmission" with 2 sigma #95% data - float aza = 16300.f / (2.f * stddv); - float azb = -aza * (mean - 2.f * stddv); - float bza = 16300.f / (2.f * stddv); - float bzb = 16300.f - bza * (mean); + // coeff for auto "transmission" with 2 sigma #95% data + const float aza = 16300.f / (2.f * stddv); + const float azb = -aza * (mean - 2.f * stddv); + const float bza = 16300.f / (2.f * stddv); + const float bzb = 16300.f - bza * (mean); //prepare work for curve gain #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel for #endif - for (int i = 0; i < H_L; i++) { - for (int j = 0; j < W_L; j++) { - luminance[i][j] = luminance[i][j] - mini; - } + for (int i = 0; i < H_L; i++) { + for (int j = 0; j < W_L; j++) { + luminance[i][j] = luminance[i][j] - mini; } + } - mean = 0.f; - stddv = 0.f; - // I call mean_stddv2 instead of mean_stddv ==> logBetaGain + mean = 0.f; + stddv = 0.f; + // I call mean_stddv2 instead of mean_stddv ==> logBetaGain - mean_stddv2( luminance, mean, stddv, W_L, H_L, maxtr, mintr); - float asig = 0.f, bsig = 0.f, amax = 0.f, bmax = 0.f, amin = 0.f, bmin = 0.f; + mean_stddv2(luminance, mean, stddv, W_L, H_L, maxtr, mintr); + float asig = 0.f, bsig = 0.f, amax = 0.f, bmax = 0.f, amin = 0.f, bmin = 0.f; - if (dehagaintransmissionCurve && mean != 0.f && stddv != 0.f) { //if curve - asig = 0.166666f / stddv; - bsig = 0.5f - asig * mean; - amax = 0.333333f / (maxtr - mean - stddv); - bmax = 1.f - amax * maxtr; - amin = 0.333333f / (mean - stddv - mintr); - bmin = -amin * mintr; + if (dehagaintransmissionCurve && mean != 0.f && stddv != 0.f) { //if curve + asig = 0.166666f / stddv; + bsig = 0.5f - asig * mean; + amax = 0.333333f / (maxtr - mean - stddv); + bmax = 1.f - amax * maxtr; + amin = 0.333333f / (mean - stddv - mintr); + bmin = -amin * mintr; - asig *= 500.f; - bsig *= 500.f; - amax *= 500.f; - bmax *= 500.f; - amin *= 500.f; - bmin *= 500.f; - } + asig *= 500.f; + bsig *= 500.f; + amax *= 500.f; + bmax *= 500.f; + amin *= 500.f; + bmin *= 500.f; + } + + const float cdfactor = 32768.f / delta; + maxCD = -9999999.f; + minCD = 9999999.f; #ifdef _OPENMP - #pragma omp parallel -#endif - { - float cdmax = -999999.f, cdmin = 999999.f; -#ifdef _OPENMP - #pragma omp for schedule(dynamic,16) nowait + #pragma omp parallel for reduction(max:maxCD) reduction(min:minCD) schedule(dynamic, 16) #endif - for ( int i = 0; i < H_L; i ++ ) - for (int j = 0; j < W_L; j++) { - float gan; + for ( int i = 0; i < H_L; i ++ ) { + for (int j = 0; j < W_L; j++) { + float gan; - if (dehagaintransmissionCurve && mean != 0.f && stddv != 0.f) { - float absciss; - - if (LIKELY(fabsf(luminance[i][j] - mean) < stddv)) { - absciss = asig * luminance[i][j] + bsig; - } else if (luminance[i][j] >= mean) { - absciss = amax * luminance[i][j] + bmax; - } else { /*if(luminance[i][j] <= mean - stddv)*/ - absciss = amin * luminance[i][j] + bmin; - } - - - // float cd = cdfactor * ( luminance[i][j] - mini ) + offse; - // TODO : move multiplication by 2.f inside the curve - gan = 2.f * (dehagaintransmissionCurve[absciss]); //new gain function transmission - } else { - gan = 0.5f; - } - - float cd = gan * cdfactor * ( luminance[i][j] ) + offse; - - cdmax = cd > cdmax ? cd : cdmax; - cdmin = cd < cdmin ? cd : cdmin; - - float str = strengthx; - - if(lhutili && it == 1) { // S=f(H) - { - float HH = exLuminance[i][j]; - float valparam; - - if(useHsl || useHslLin) { - valparam = float((shcurve->getVal(HH) - 0.5f)); - } else { - valparam = float((shcurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5f)); - } - - str *= (1.f + 2.f * valparam); - } - } - - if(higplus && exLuminance[i][j] > 65535.f * hig) { - str *= hig; - } - - if(viewmet == 0) { - luminance[i][j] = intp(str, clipretinex( cd, 0.f, 32768.f ), originalLuminance[i][j]); - } else if(viewmet == 1) { - luminance[i][j] = out[i][j]; - } else if(viewmet == 4) { - luminance[i][j] = originalLuminance[i][j] + str * (originalLuminance[i][j] - out[i][j]);//unsharp - } else if(viewmet == 2) { - if(tran[i][j] <= mean) { - luminance[i][j] = azb + aza * tran[i][j]; //auto values - } else { - luminance[i][j] = bzb + bza * tran[i][j]; - } - } else { /*if(viewmet == 3) */ - luminance[i][j] = 1000.f + tran[i][j] * 700.f; //arbitrary values to help display log values which are between -20 to + 30 - usage values -4 + 5 - } + if (dehagaintransmissionCurve && mean != 0.f && stddv != 0.f) { + float absciss; + if (LIKELY(fabsf(luminance[i][j] - mean) < stddv)) { + absciss = asig * luminance[i][j] + bsig; + } else if (luminance[i][j] >= mean) { + absciss = amax * luminance[i][j] + bmax; + } else { /*if(luminance[i][j] <= mean - stddv)*/ + absciss = amin * luminance[i][j] + bmin; } -#ifdef _OPENMP - #pragma omp critical -#endif - { - maxCD = maxCD > cdmax ? maxCD : cdmax; - minCD = minCD < cdmin ? minCD : cdmin; + + // float cd = cdfactor * ( luminance[i][j] - mini ) + offse; + // TODO : move multiplication by 2.f inside the curve + gan = 2.f * dehagaintransmissionCurve[absciss]; //new gain function transmission + } else { + gan = 0.5f; + } + + const float cd = gan * cdfactor * luminance[i][j] + offse; + + maxCD = cd > maxCD ? cd : maxCD; + minCD = cd < minCD ? cd : minCD; + + float str = strengthx; + + if (lhutili && it == 1) { // S=f(H) + { + const float HH = exLuminance[i][j]; + float valparam; + + if(useHsl || useHslLin) { + valparam = shcurve->getVal(HH) - 0.5f; + } else { + valparam = shcurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5f; + } + + str *= (1.f + 2.f * valparam); + } + } + + if (higplus && exLuminance[i][j] > 65535.f * hig) { + str *= hig; + } + + if (viewmet == 0) { + luminance[i][j] = intp(str, LIM(cd, 0.f, 32768.f), originalLuminance[i][j]); + } else if (viewmet == 1) { + luminance[i][j] = out[i][j]; + } else if (viewmet == 4) { + luminance[i][j] = originalLuminance[i][j] + str * (originalLuminance[i][j] - out[i][j]);//unsharp + } else if (viewmet == 2) { + if(tran[i][j] <= mean) { + luminance[i][j] = azb + aza * tran[i][j]; //auto values + } else { + luminance[i][j] = bzb + bza * tran[i][j]; + } + } else { /*if (viewmet == 3) */ + luminance[i][j] = 1000.f + tran[i][j] * 700.f; //arbitrary values to help display log values which are between -20 to + 30 - usage values -4 + 5 } } - - delete [] outBuffer; - outBuffer = nullptr; - //printf("cdmin=%f cdmax=%f\n",minCD, maxCD); - Tmean = mean; - Tsigma = stddv; - Tmin = mintr; - Tmax = maxtr; - - if (shcurve) { - delete shcurve; - shcurve = nullptr; - } } - if(tranBuffer) { - delete [] tranBuffer; - } + Tmean = mean; + Tsigma = stddv; + Tmin = mintr; + Tmax = maxtr; + if (shcurve) { + delete shcurve; + shcurve = nullptr; + } } } diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index bbd1de155..0b1332ec9 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -207,13 +207,13 @@ BENCHFUN for (int k = 0; k < sharpenParam.deconviter; k++) { if (!needdamp) { // apply gaussian blur and divide luminance by result of gaussian blur - gaussianBlur(tmpI, tmp, W, H, sigma, nullptr, GAUSS_DIV, luminance); + gaussianBlur(tmpI, tmp, W, H, sigma, false, GAUSS_DIV, luminance); } else { // apply gaussian blur + damping gaussianBlur(tmpI, tmp, W, H, sigma); dcdamping(tmp, luminance, damping, W, H); } - gaussianBlur(tmp, tmpI, W, H, sigma, nullptr, GAUSS_MULT); + gaussianBlur(tmp, tmpI, W, H, sigma, false, GAUSS_MULT); } // end for #ifdef _OPENMP diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 07e9da85b..6631aae32 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -32,7 +32,6 @@ #include "improcfun.h" #include "LUT.h" #include "array2D.h" -#include "boxblur.h" #include "rt_math.h" #include "mytime.h" #include "sleef.c" diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 5f1d13c79..ed1e45394 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -1950,8 +1950,8 @@ void RawImageSource::retinexPrepareCurves(const RetinexParams &retinexParams, LU CurveFactory::curveDehaContL (retinexcontlutili, retinexParams.cdcurve, cdcurve, 1, lhist16RETI, histLRETI); } - CurveFactory::mapcurve (mapcontlutili, retinexParams.mapcurve, mapcurve, 1, lhist16RETI, histLRETI); - + CurveFactory::mapcurve(mapcontlutili, retinexParams.mapcurve, mapcurve, 1, lhist16RETI, histLRETI); + mapcurve *= 0.5f; retinexParams.getCurves(retinextransmissionCurve, retinexgaintransmissionCurve); } diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index e52adea18..37d927445 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -201,7 +201,7 @@ public: } static void inverse33 (const double (*coeff)[3], double (*icoeff)[3]); - void MSR(float** luminance, float **originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); + void MSR(float** luminance, float **originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); void HLRecovery_inpaint (float** red, float** green, float** blue) override; static void HLRecovery_Luminance (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval); static void HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]); diff --git a/rtengine/rescale.h b/rtengine/rescale.h index e9d476fea..8e1f99271 100644 --- a/rtengine/rescale.h +++ b/rtengine/rescale.h @@ -21,6 +21,7 @@ #pragma once #include "array2D.h" +#include "rt_math.h" namespace rtengine { diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index 6b59c4b40..368442f2b 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -85,21 +85,14 @@ void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int if (!hq) { fillLuminance( img, map, lumi); - float *buffer = nullptr; - - if(radius > 40.) { - // When we pass another buffer to gaussianBlur, it will use iterated boxblur which is less prone to artifacts - buffer = new float[W * H]; - } + const bool useBoxBlur = radius > 40.0; // boxblur is less prone to artifacts for large radi #ifdef _OPENMP - #pragma omp parallel + #pragma omp parallel if (!useBoxBlur) #endif { - gaussianBlur (map, map, W, H, radius, buffer); + gaussianBlur (map, map, W, H, radius, useBoxBlur); } - - delete [] buffer; } else { From 5afb0a345e68374117dcf8957a485818de29b188 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 26 Sep 2019 15:27:12 +0200 Subject: [PATCH 02/66] add mising include --- rtengine/gauss.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/rtengine/gauss.cc b/rtengine/gauss.cc index dad1c4954..8d9e5de38 100644 --- a/rtengine/gauss.cc +++ b/rtengine/gauss.cc @@ -16,12 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#include "gauss.h" -#include "rt_math.h" #include #include -#include "opthelper.h" +#include + +#include "gauss.h" + #include "boxblur.h" +#include "opthelper.h" +#include "rt_math.h" + namespace { From feb278608714b912b9450678a784f517655cd476 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 6 Oct 2019 03:43:10 +0200 Subject: [PATCH 03/66] Update Deutsch locale --- rtdata/languages/Deutsch | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index bd98c63b2..2f7dbaf4c 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -83,6 +83,7 @@ #82 25.05.2019 Erweiterung (TooWaBoo) RT 5.6 #83 06.07.2019 Erweiterung (TooWaBoo) RT 5.6 #84 18.07.2019 Erweiterung (TooWaBoo) RT 5.6 +#84 06.10.2019 Erweiterung (TooWaBoo) RT 5.7 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -2375,17 +2376,17 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!HISTORY_MSG_494;Capture Sharpening -!HISTORY_MSG_DEHAZE_LUMINANCE;Dehaze - Luminance only -!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold -!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius -!HISTORY_MSG_PDSHARPEN_CONTRAST;CS - Contrast threshold -!HISTORY_MSG_PDSHARPEN_GAMMA;CS - Gamma -!HISTORY_MSG_PDSHARPEN_ITERATIONS;CS - Iterations -!HISTORY_MSG_PDSHARPEN_RADIUS;CS - Radius -!HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;CS - Corner radius boost -!HISTORY_MSG_SHARPENING_GAMMA;Sharpening - Gamma -!TP_DEHAZE_LUMINANCE;Luminance only -!TP_PDSHARPENING_LABEL;Capture Sharpening -!TP_SHARPENING_GAMMA;Gamma -!TP_SHARPENING_RADIUS_BOOST;Corner radius boost +HISTORY_MSG_494;(Eingangsschärfung) +HISTORY_MSG_DEHAZE_LUMINANCE;(Bildschleier entfernen)\nNur Luminanz +HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;(Eingangsschärfung)\nAuto-Schwelle +HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;(Eingangsschärfung)\nAuto-Radius +HISTORY_MSG_PDSHARPEN_CONTRAST;(Eingangsschärfung)\nKontrastschwelle +HISTORY_MSG_PDSHARPEN_GAMMA;(Eingangsschärfung)\nGamma +HISTORY_MSG_PDSHARPEN_ITERATIONS;(Eingangsschärfung)\nIterationen +HISTORY_MSG_PDSHARPEN_RADIUS;(Eingangsschärfung)\nRadius +HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;(Eingangsschärfung)\nRandschärfe erhöhen +HISTORY_MSG_SHARPENING_GAMMA;(Schärfung) - Gamma +TP_DEHAZE_LUMINANCE;Nur Luminanz +TP_PDSHARPENING_LABEL;Eingangsschärfung +TP_SHARPENING_GAMMA;Gamma +TP_SHARPENING_RADIUS_BOOST;Randschärfe erhöhen From 7885e113b8835c367c8150c2a400ec755cbca1c2 Mon Sep 17 00:00:00 2001 From: Andreas Hoenselaar Date: Sat, 5 Oct 2019 21:47:06 -0800 Subject: [PATCH 04/66] Stop right-shifting of predictor value for Hasselblad pixelshift and align math with lossless JPEG predictor 5 --- rtengine/dcraw.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index ef209118b..400eb62a7 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -2431,8 +2431,6 @@ void CLASS hasselblad_load_raw() for (int c = 0; c < 3; ++c) { back[c] = back[4] + c * raw_width; } - const int sh = tiff_samples > 1; - cblack[6] >>= sh; const int shot = LIM(shot_select, 1, tiff_samples) - 1; for (int row = 0; row < raw_height; ++row) { for (int c = 0; c < 4; ++c) { @@ -2459,14 +2457,14 @@ void CLASS hasselblad_load_raw() if (col) { pred = back[2][s - 2]; if (row > 1 && jh.psv == 11) { - pred += back[0][s] / 2 - back[0][s - 2] / 2; + pred += (back[0][s] - back[0][s - 2]) / 2; } } else { pred = 0x8000 + load_flags; } for (int c = 0; c < tiff_samples; ++c) { pred += diff[(s & 1) * tiff_samples + c]; - const unsigned upix = pred >> sh & 0xffff; + const unsigned upix = pred & 0xffff; if (raw_image && c == shot) { RAW(row, s) = upix; } @@ -2479,8 +2477,10 @@ void CLASS hasselblad_load_raw() *ip = c < 4 ? upix : (*ip + upix) >> 1; } } + if (c == (tiff_samples-1)) { + back[2][s] = static_cast(upix); + } } - back[2][s] = pred; } } } From 911cc85ffc8ad695eb29c691a27ebd0bab1930c3 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 13 Oct 2019 18:51:27 +0200 Subject: [PATCH 05/66] Added Panasonic DMC-GX7 dual-illuminant DCP, closes #5500 --- rtdata/dcpprofiles/Panasonic DMC-GX7.dcp | Bin 0 -> 1102966 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rtdata/dcpprofiles/Panasonic DMC-GX7.dcp diff --git a/rtdata/dcpprofiles/Panasonic DMC-GX7.dcp b/rtdata/dcpprofiles/Panasonic DMC-GX7.dcp new file mode 100644 index 0000000000000000000000000000000000000000..25f4e6eab79cc780bc78f93048758c2f28f2ec8d GIT binary patch literal 1102966 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�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 ^%K6piS?9e>6gdIXV^eHZd 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 J-{OPg6IA3vDD-EX> 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%0Ad}M6p74VwS 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%0Dt&Y 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Ð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 literal 0 HcmV?d00001 From 330a7807ed773068701ad1ea476eb0417dde9c1c Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 14 Oct 2019 21:31:22 +0200 Subject: [PATCH 06/66] Partial profile save dialog order If it's a partial profile, it's more intuitive to first allow the user to choose which parameters to save before showing the Save As dialog. Closes #5491 --- rtgui/profilepanel.cc | 69 ++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index b4b85dfd0..627f413f3 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -275,6 +275,23 @@ void ProfilePanel::save_clicked (GdkEventButton* event) return; } + // If it's a partial profile, it's more intuitive to first allow the user + // to choose which parameters to save before showing the Save As dialog + // #5491 + if (event->state & Gdk::CONTROL_MASK) { + if(!partialProfileDlg) { + partialProfileDlg = new PartialPasteDlg (Glib::ustring (), parent); + } + + partialProfileDlg->set_title(M("PROFILEPANEL_SAVEPPASTE")); + int i = partialProfileDlg->run(); + partialProfileDlg->hide(); + + if (i != Gtk::RESPONSE_OK) { + return; + } + } + Gtk::FileChooserDialog dialog (getToplevelWindow (this), M("PROFILEPANEL_SAVEDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_SAVE); bindCurrentFolder (dialog, options.loadSaveProfilePath); dialog.set_current_name (lastFilename); @@ -294,7 +311,6 @@ void ProfilePanel::save_clicked (GdkEventButton* event) dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); //Add filters, so that only certain file types can be selected: - Glib::RefPtr filter_pp = Gtk::FileFilter::create(); filter_pp->set_name(M("FILECHOOSER_FILTER_PP")); filter_pp->add_pattern("*" + paramFileExtension); @@ -305,8 +321,6 @@ void ProfilePanel::save_clicked (GdkEventButton* event) filter_any->add_pattern("*"); dialog.add_filter(filter_any); -// dialog.set_do_overwrite_confirmation (true); - bool done = false; do { @@ -337,45 +351,27 @@ void ProfilePanel::save_clicked (GdkEventButton* event) } if (toSave) { + int retCode; if (event->state & Gdk::CONTROL_MASK) { - // opening the partial paste dialog window - if(!partialProfileDlg) { - partialProfileDlg = new PartialPasteDlg (Glib::ustring (), parent); - } - partialProfileDlg->set_title(M("PROFILEPANEL_SAVEPPASTE")); - int i = partialProfileDlg->run(); - partialProfileDlg->hide(); - - if (i != Gtk::RESPONSE_OK) { - return; - } - - // saving the partial profile + // Build partial profile PartialProfile ppTemp(true); partialProfileDlg->applyPaste (ppTemp.pparams, ppTemp.pedited, toSave->pparams, toSave->pedited); - int retCode = ppTemp.pparams->save (fname, "", true, ppTemp.pedited); + // Save partial profile + retCode = ppTemp.pparams->save (fname, "", true, ppTemp.pedited); + // Cleanup ppTemp.deleteInstance(); - - if (retCode) { - writeFailed(dialog, fname); - } else { - done = true; - bool ccPrevState = changeconn.block(true); - ProfileStore::getInstance()->parseProfiles(); - changeconn.block (ccPrevState); - } } else { - // saving a full profile - int retCode = toSave->pparams->save (fname); + // Save full profile + retCode = toSave->pparams->save (fname); + } - if (retCode) { - writeFailed(dialog, fname); - } else { - done = true; - bool ccPrevState = changeconn.block(true); - ProfileStore::getInstance()->parseProfiles(); - changeconn.block (ccPrevState); - } + if (!retCode) { + done = true; + bool ccPrevState = changeconn.block(true); + ProfileStore::getInstance()->parseProfiles(); + changeconn.block (ccPrevState); + } else { + writeFailed(dialog, fname); } } else { done = true; @@ -465,7 +461,6 @@ void ProfilePanel::load_clicked (GdkEventButton* event) dialog.add_button(M("GENERAL_OPEN"), Gtk::RESPONSE_OK); //Add filters, so that only certain file types can be selected: - Glib::RefPtr filter_pp = Gtk::FileFilter::create(); filter_pp->set_name(M("FILECHOOSER_FILTER_PP")); filter_pp->add_pattern("*" + paramFileExtension); From de1c04b6336aef0cf52a477b7924952995c7c32e Mon Sep 17 00:00:00 2001 From: Andreas Hoenselaar Date: Sat, 19 Oct 2019 11:22:06 -0800 Subject: [PATCH 07/66] Use the same predictor for all Hasselblad files. --- rtengine/dcraw.cc | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 400eb62a7..a1fc6ca08 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -2418,7 +2418,7 @@ void CLASS hasselblad_correct() void CLASS hasselblad_load_raw() { struct jhead jh; - int *back[5], diff[12]; + int diff[12]; if (!ljpeg_start (&jh, 0)) { return; @@ -2426,16 +2426,12 @@ void CLASS hasselblad_load_raw() order = 0x4949; ph1_bithuff_t ph1_bithuff(this, ifp, order); hb_bits(-1); - back[4] = (int *) calloc(raw_width, 3 * sizeof **back); - merror(back[4], "hasselblad_load_raw()"); - for (int c = 0; c < 3; ++c) { - back[c] = back[4] + c * raw_width; - } const int shot = LIM(shot_select, 1, tiff_samples) - 1; for (int row = 0; row < raw_height; ++row) { - for (int c = 0; c < 4; ++c) { - back[(c + 3) & 3] = back[c]; - } + int stashed_predictors[2] = { + static_cast(0x8000 + load_flags), + static_cast(0x8000 + load_flags) + }; for (int col = 0; col < raw_width; col += 2) { for (int s = 0; s < tiff_samples * 2; s += 2) { const int len[2]= { @@ -2453,15 +2449,7 @@ void CLASS hasselblad_load_raw() } } for (int s = col; s < col + 2; ++s) { - int pred; - if (col) { - pred = back[2][s - 2]; - if (row > 1 && jh.psv == 11) { - pred += (back[0][s] - back[0][s - 2]) / 2; - } - } else { - pred = 0x8000 + load_flags; - } + int pred = stashed_predictors[s % 2]; for (int c = 0; c < tiff_samples; ++c) { pred += diff[(s & 1) * tiff_samples + c]; const unsigned upix = pred & 0xffff; @@ -2478,13 +2466,12 @@ void CLASS hasselblad_load_raw() } } if (c == (tiff_samples-1)) { - back[2][s] = static_cast(upix); + stashed_predictors[s % 2] = pred; } } } } } - free(back[4]); ljpeg_end(&jh); if (image) { mix_green = 1; From 1bffb54977a6e37eeb77bf6c92320364fcabf87e Mon Sep 17 00:00:00 2001 From: Andreas Hoenselaar Date: Sat, 19 Oct 2019 21:25:36 -0800 Subject: [PATCH 08/66] Calculate the initial predictor only once. --- rtengine/dcraw.cc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index a1fc6ca08..eb206a15f 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -2427,11 +2427,9 @@ void CLASS hasselblad_load_raw() ph1_bithuff_t ph1_bithuff(this, ifp, order); hb_bits(-1); const int shot = LIM(shot_select, 1, tiff_samples) - 1; + const int predictor_init = static_cast(0x8000 + load_flags); for (int row = 0; row < raw_height; ++row) { - int stashed_predictors[2] = { - static_cast(0x8000 + load_flags), - static_cast(0x8000 + load_flags) - }; + int stashed_predictors[2] = {predictor_init, predictor_init}; for (int col = 0; col < raw_width; col += 2) { for (int s = 0; s < tiff_samples * 2; s += 2) { const int len[2]= { @@ -2449,7 +2447,7 @@ void CLASS hasselblad_load_raw() } } for (int s = col; s < col + 2; ++s) { - int pred = stashed_predictors[s % 2]; + int pred = stashed_predictors[s & 1]; for (int c = 0; c < tiff_samples; ++c) { pred += diff[(s & 1) * tiff_samples + c]; const unsigned upix = pred & 0xffff; @@ -2466,7 +2464,7 @@ void CLASS hasselblad_load_raw() } } if (c == (tiff_samples-1)) { - stashed_predictors[s % 2] = pred; + stashed_predictors[s & 1] = pred; } } } From 0ede513e3b5fb16d4ce2e266cc6c7672cdea5e99 Mon Sep 17 00:00:00 2001 From: scx Date: Sun, 20 Oct 2019 23:30:14 +0200 Subject: [PATCH 09/66] Update desktop file - Add StartupNotify entry --- rtdata/rawtherapee.desktop.in | 1 + 1 file changed, 1 insertion(+) diff --git a/rtdata/rawtherapee.desktop.in b/rtdata/rawtherapee.desktop.in index b059e7d6a..f6bc3afeb 100644 --- a/rtdata/rawtherapee.desktop.in +++ b/rtdata/rawtherapee.desktop.in @@ -17,4 +17,5 @@ Terminal=false MimeType=image/jpeg;image/png;image/tiff;image/x-adobe-dng;image/x-canon-cr2;image/x-canon-crf;image/x-canon-crw;image/x-fuji-raf;image/x-hasselblad-3fr;image/x-hasselblad-fff;image/x-jpg;image/x-kodak-dcr;image/x-kodak-k25;image/x-kodak-kdc;image/x-leaf-mos;image/x-leica-rwl;image/x-mamiya-mef;image/x-minolta-mrw;image/x-nikon-nef;image/x-nikon-nrw;image/x-olympus-orf;image/x-panasonic-raw;image/x-panasonic-rw2;image/x-pentax-pef;image/x-pentax-raw;image/x-phaseone-iiq;image/x-raw;image/x-rwz;image/x-samsung-srw;image/x-sigma-x3f;image/x-sony-arq;image/x-sony-arw;image/x-sony-sr2;image/x-sony-srf;image/x-tif; Categories=Graphics;Photography;2DGraphics;RasterGraphics;GTK; Keywords=raw;photo;photography;develop;pp3;graphics; +StartupNotify=true StartupWMClass=rawtherapee From 095b5233a9082b3bf2286dde29d5368c45d9d92e Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 21 Oct 2019 22:50:17 +0200 Subject: [PATCH 10/66] partial save code review --- rtgui/profilepanel.cc | 50 +++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index 627f413f3..a6885d7d3 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -278,23 +278,24 @@ void ProfilePanel::save_clicked (GdkEventButton* event) // If it's a partial profile, it's more intuitive to first allow the user // to choose which parameters to save before showing the Save As dialog // #5491 - if (event->state & Gdk::CONTROL_MASK) { - if(!partialProfileDlg) { - partialProfileDlg = new PartialPasteDlg (Glib::ustring (), parent); + const auto isPartial = event->state & Gdk::CONTROL_MASK; + if (isPartial) { + if (!partialProfileDlg) { + partialProfileDlg = new PartialPasteDlg(Glib::ustring(), parent); } partialProfileDlg->set_title(M("PROFILEPANEL_SAVEPPASTE")); - int i = partialProfileDlg->run(); + const auto response = partialProfileDlg->run(); partialProfileDlg->hide(); - if (i != Gtk::RESPONSE_OK) { + if (response != Gtk::RESPONSE_OK) { return; } } - Gtk::FileChooserDialog dialog (getToplevelWindow (this), M("PROFILEPANEL_SAVEDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_SAVE); - bindCurrentFolder (dialog, options.loadSaveProfilePath); - dialog.set_current_name (lastFilename); + Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("PROFILEPANEL_SAVEDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_SAVE); + bindCurrentFolder(dialog, options.loadSaveProfilePath); + dialog.set_current_name(lastFilename); //Add the user's default (or global if multiuser=false) profile path to the Shortcut list try { @@ -311,33 +312,32 @@ void ProfilePanel::save_clicked (GdkEventButton* event) dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK); //Add filters, so that only certain file types can be selected: - Glib::RefPtr filter_pp = Gtk::FileFilter::create(); + auto filter_pp = Gtk::FileFilter::create(); filter_pp->set_name(M("FILECHOOSER_FILTER_PP")); filter_pp->add_pattern("*" + paramFileExtension); dialog.add_filter(filter_pp); - Glib::RefPtr filter_any = Gtk::FileFilter::create(); + auto filter_any = Gtk::FileFilter::create(); filter_any->set_name(M("FILECHOOSER_FILTER_ANY")); filter_any->add_pattern("*"); dialog.add_filter(filter_any); - bool done = false; + bool done = true; do { if (dialog.run() == Gtk::RESPONSE_OK) { std::string fname = dialog.get_filename(); - Glib::ustring ext = getExtension (fname); - if (("." + ext) != paramFileExtension) { + if (("." + getExtension(fname)) != paramFileExtension) { fname += paramFileExtension; } - if (!confirmOverwrite (dialog, fname)) { + if (!confirmOverwrite(dialog, fname)) { continue; } - lastFilename = Glib::path_get_basename (fname); + lastFilename = Glib::path_get_basename(fname); const PartialProfile* toSave; @@ -347,7 +347,7 @@ void ProfilePanel::save_clicked (GdkEventButton* event) toSave = lastsaved; } else { const ProfileStoreEntry* entry = profiles->getSelectedEntry(); - toSave = entry ? ProfileStore::getInstance()->getProfile (profiles->getSelectedEntry()) : nullptr; + toSave = entry ? ProfileStore::getInstance()->getProfile(entry) : nullptr; } if (toSave) { @@ -355,33 +355,27 @@ void ProfilePanel::save_clicked (GdkEventButton* event) if (event->state & Gdk::CONTROL_MASK) { // Build partial profile PartialProfile ppTemp(true); - partialProfileDlg->applyPaste (ppTemp.pparams, ppTemp.pedited, toSave->pparams, toSave->pedited); + partialProfileDlg->applyPaste(ppTemp.pparams, ppTemp.pedited, toSave->pparams, toSave->pedited); // Save partial profile - retCode = ppTemp.pparams->save (fname, "", true, ppTemp.pedited); + retCode = ppTemp.pparams->save(fname, "", true, ppTemp.pedited); // Cleanup ppTemp.deleteInstance(); } else { // Save full profile - retCode = toSave->pparams->save (fname); + retCode = toSave->pparams->save(fname); } if (!retCode) { - done = true; - bool ccPrevState = changeconn.block(true); + const auto ccPrevState = changeconn.block(true); ProfileStore::getInstance()->parseProfiles(); - changeconn.block (ccPrevState); + changeconn.block(ccPrevState); } else { + done = false; writeFailed(dialog, fname); } - } else { - done = true; } - } else { - done = true; } } while (!done); - - return; } /* From 45900cbd68fdd56515a90f867b6665d4b8252d57 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 21 Oct 2019 23:02:48 +0200 Subject: [PATCH 11/66] partial save code review --- rtgui/profilepanel.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index a6885d7d3..fc418e5b7 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -346,13 +346,13 @@ void ProfilePanel::save_clicked (GdkEventButton* event) } else if (isLastSavedSelected()) { toSave = lastsaved; } else { - const ProfileStoreEntry* entry = profiles->getSelectedEntry(); + const auto entry = profiles->getSelectedEntry(); toSave = entry ? ProfileStore::getInstance()->getProfile(entry) : nullptr; } if (toSave) { int retCode; - if (event->state & Gdk::CONTROL_MASK) { + if (isPartial) { // Build partial profile PartialProfile ppTemp(true); partialProfileDlg->applyPaste(ppTemp.pparams, ppTemp.pedited, toSave->pparams, toSave->pedited); From 0e209a0bc103cff752839a21fa0c1533b5f88af2 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 22 Oct 2019 14:12:38 +0200 Subject: [PATCH 12/66] Capture Sharpening: Highlights zone with Color Propagation are filled in a purple color, fixes #5505 --- rtengine/capturesharpening.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index 6720d9abc..38fe0897c 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -810,6 +810,7 @@ BENCHFUN if (plistener) { plistener->setProgress(1.0); } + rgbSourceModified = false; } } /* namespace */ From 959849f098b526f74ac7b43b600cefa44409a271 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 22 Oct 2019 14:32:36 +0200 Subject: [PATCH 13/66] Favorites tab: hide vertical scrollbar --- rtgui/toolpanelcoord.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 4fec4a18a..deea489fe 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -178,7 +178,6 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), favorit transformPanelSW = Gtk::manage (new MyScrolledWindow ()); rawPanelSW = Gtk::manage (new MyScrolledWindow ()); advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); - updateVScrollbars (options.hideTPVScrollbar); // load panel endings for (int i = 0; i < 7; i++) { @@ -195,6 +194,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), favorit favoritePanel->pack_start(*Gtk::manage(new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); favoritePanel->pack_start(*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); } + updateVScrollbars(options.hideTPVScrollbar); exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); From 6a44170aff6400a1936f0431ee727318646e9a73 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 23 Oct 2019 18:01:04 +0200 Subject: [PATCH 14/66] Fix shadow/highlight clipping indicator keyboard shortcuts in tooltips Closes #5493 --- rtdata/languages/Czech | 4 ++-- rtdata/languages/Deutsch | 4 ++-- rtdata/languages/English (UK) | 4 ++-- rtdata/languages/English (US) | 4 ++-- rtdata/languages/Espanol | 4 ++-- rtdata/languages/Francais | 4 ++-- rtdata/languages/Italiano | 4 ++-- rtdata/languages/Japanese | 4 ++-- rtdata/languages/Nederlands | 4 ++-- rtdata/languages/Polish | 4 ++-- rtdata/languages/Portugues | 4 ++-- rtdata/languages/Portugues (Brasil) | 4 ++-- rtdata/languages/Russian | 4 ++-- rtdata/languages/Swedish | 4 ++-- rtdata/languages/default | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 5c807b61d..f45b39ef2 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -961,8 +961,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Barva pozadí náhledu: bílá\nZkratka: 9 MAIN_TOOLTIP_BACKCOLOR3;Barva pozadí náhledu: středně šedá\nZkratka: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Zamknout / Odemknout pohled Před\n\nZamknout: ponechá pohled Před nezměněn.\nUžitečné pro posouzení výsledného efektu po použití více nástrojů.\nNavíc může být porovnání provedeno proti kterémukoli stavu v historii.\n\nOdemknout: pohled Před bude následovat pohled Poté, vždy jen o jeden krok zpět, představí vliv právě použitého nástroje. MAIN_TOOLTIP_HIDEHP;Zobrazit či schovat levý panel (obsahující historii).\nZkratka: l -MAIN_TOOLTIP_INDCLIPPEDH;Zvýraznit oříznutá světla.\nZkratka: < -MAIN_TOOLTIP_INDCLIPPEDS;Zvýraznit oříznuté stíny.\nZkratka: > +MAIN_TOOLTIP_INDCLIPPEDH;Zvýraznit oříznutá světla.\nZkratka: > +MAIN_TOOLTIP_INDCLIPPEDS;Zvýraznit oříznuté stíny.\nZkratka: < MAIN_TOOLTIP_PREVIEWB;Náhled modrého kanálu.\nZkratka: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Náhled masky zaostření.\nZkratka: Shift-f\n\nVíce přesné u snímků s nízkou hloubkou ostrosti, nízkým šumem a na vyšších úrovních zvětšení.\n\nPoužijte přiblížení v rozsahu 10 až 30% pro zlepšení přesnosti detekce u zašuměných snímků. MAIN_TOOLTIP_PREVIEWG;Náhled zeleného kanálu.\nZkratka: g diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 2f7dbaf4c..2ec2a020d 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1012,8 +1012,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Hintergrundfarbe der Vorschau: Weiß\nTaste: 9 MAIN_TOOLTIP_BACKCOLOR3;Hintergrundfarbe der Vorschau: Mittleres Grau\nTaste: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Vorher-Ansicht: Sperren / Entsperren\n\nGesperrt: Friert die Vorher-Ansicht ein, so\ndass sich die Gesamtwirkung mehrerer\nBearbeitungsschritte beurteilen lässt.\n\nEntsperrt: Die Vorher-Ansicht hinkt dem\naktuellen Bild immer einen Bearbeitungs-\nschritt hinterher. MAIN_TOOLTIP_HIDEHP;Linkes Bedienfeld ein-/ausblenden.\nTaste: l -MAIN_TOOLTIP_INDCLIPPEDH;Anzeige zu heller Bereiche ein-/ausschalten.\nTaste: < -MAIN_TOOLTIP_INDCLIPPEDS;Anzeige zu dunkler Bereiche ein-/ausschalten.\nTaste: > +MAIN_TOOLTIP_INDCLIPPEDH;Anzeige zu heller Bereiche ein-/ausschalten.\nTaste: > +MAIN_TOOLTIP_INDCLIPPEDS;Anzeige zu dunkler Bereiche ein-/ausschalten.\nTaste: < MAIN_TOOLTIP_PREVIEWB;Vorschau Blau-Kanal\nTaste: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Vorschau Fokusmaske\nTaste: Umschalt + f\n\nPräziser bei Bildern mit geringer Tiefenschärfe,\nniedrigem Rauschen und bei hoher Vergrößerung. MAIN_TOOLTIP_PREVIEWG;Vorschau Grün-Kanal\nTaste: g diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index a36a3d1a9..01f23c1e9 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1022,8 +1022,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. !MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l -!MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < -!MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > +!MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: > +!MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: < !MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b !MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index aa5239911..0e80fb985 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -939,8 +939,8 @@ !MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. !MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l -!MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < -!MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > +!MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: > +!MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: < !MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b !MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. !MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 27aa39c12..478a9a9eb 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -979,8 +979,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Color de fondo de la previsualización: Blanco\nT MAIN_TOOLTIP_BACKCOLOR3;Color de fondo de la vista previa: Medio gris \nMétodo rápido: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Bloquear / Desbloquear la vista Antes\n\nBloquear: la vista Antes permanece inalterada - \nútil para evaluar el efecto acumulativo de varias herramientas.\nAdemás, se puede hacer una comparación con cualquier estado en el Historial\n\nDesbloquear: la vista Antes seguirá a la vista Después un paso por detrás, mostrando la imagen antes del efecto de la herramienta que se está usando MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar panel izquierdo (incluyendo historial).\nTecla de Atajo: i -MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nTecla de Atajo: < -MAIN_TOOLTIP_INDCLIPPEDS;Indicación de sombras recortadas.\nTecla de Atajo: > +MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nTecla de Atajo: > +MAIN_TOOLTIP_INDCLIPPEDS;Indicación de sombras recortadas.\nTecla de Atajo: < MAIN_TOOLTIP_PREVIEWB;Previsualización Canal azul.\nTecla de Atajo: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Previsualización Máscara de Foco.\nTecla de Atajo: Shift-F\n\nMás preciso en imágenes con poca profundidad de campo, bajo ruido y a mayores niveles de aumento\n\nPara mejorar la precisión en imágenes con ruido evalúe usando menor aumento (10%-30%)\n\nLa vista previa es realizada más lentamente cuando la Máscara de Foco esta activa. MAIN_TOOLTIP_PREVIEWG;Previsualización Canal verde.\nTecla de Atajo: g diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 9f9485c70..60a7368d2 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -916,8 +916,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Couleur de fond de l'aperçu: Blanc\nRaccourci: < MAIN_TOOLTIP_BACKCOLOR3;Couleur de fond de l'aperçu: Gris moyen\nRaccourci : 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Vérouille / déverouille la vue Avant\n\nVérouille: garde la vue Avant inchangée - \nutile pour évaluer l'effet cumulatif de plusieurs outils.\nDe plus, une comparaison peut être faite à partir de n'importe quelle étape de l'historique\n\nDéverouille: la vue Avant représentera l'étape précédant la vue Après, montrant l'effet qui vient d'être modifié MAIN_TOOLTIP_HIDEHP;Montrer/cacher le panneau gauche (incluant l'historique)\nRaccourci: l -MAIN_TOOLTIP_INDCLIPPEDH;Indication hautes lumières hors domaine\nRaccourci: < -MAIN_TOOLTIP_INDCLIPPEDS;Indication ombres hors domaine\nRaccourci: > +MAIN_TOOLTIP_INDCLIPPEDH;Indication hautes lumières hors domaine\nRaccourci: > +MAIN_TOOLTIP_INDCLIPPEDS;Indication ombres hors domaine\nRaccourci: < MAIN_TOOLTIP_PREVIEWB;Affichage du canal Bleu\nRaccourci: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Affichage du Masque du focus\nRaccourci: Shift-f\n\nPlus précis sur les images avec une faible profondeur de champ, à faible bruit et à des niveaux de zoom élevé\n\nPour améliorer la précision de détection des images bruitées, évaluez les à un facteur de zoom de 10-30%\n\nLa prévisualisation met plus de temps à se calculer lorsque cet outil est actif. MAIN_TOOLTIP_PREVIEWG;Affichage du canal Vert\nRaccourci: g diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 7ba18b2d8..f388332b8 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -519,8 +519,8 @@ MAIN_TOOLTIP_BACKCOLOR1;Colore di sfondo dell'anteprima: Nero\nScorciatoi MAIN_TOOLTIP_BACKCOLOR2;Colore di sfondo dell'anteprima: Bianco\nScorciatoia: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Blocca/Sblocca la vista Prima\n\nBlocca: Conserva la vista Prima.\nUtile per valutare l'effetto cumulativo di diversi strumenti.\nIn più, possono essere confrontati diversi passi della cronologia.\n\nSblocca: la vista Prima segue di un passo la vista Dopo, mostrando l'immagine prima dell'effetto dello strumento corrente. MAIN_TOOLTIP_HIDEHP;Mostra/Nascondi il pannello sinistro (inclusa la cronologia)\nScorciatoia: l -MAIN_TOOLTIP_INDCLIPPEDH;Indicazione delle alteluci tosate.\nScorciatoia: < -MAIN_TOOLTIP_INDCLIPPEDS;Indicazione delle ombre tosate.\nScorciatoia: > +MAIN_TOOLTIP_INDCLIPPEDH;Indicazione delle alteluci tosate.\nScorciatoia: > +MAIN_TOOLTIP_INDCLIPPEDS;Indicazione delle ombre tosate.\nScorciatoia: < MAIN_TOOLTIP_PREVIEWB;Anteprima del Canale Blu.\nScorciatoia: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Anteprima della Focus Mask.\nScorciatoia: Maiuscolo-F\n\nPiù accurato su immagini con bassa profondità di campo, poco rumore e ad elevati livelli di zoom.\n\nPer aumentare l'accuratezza della rilevazione su immagini con molto rumore, riduci le dimensioni del 10-30%. MAIN_TOOLTIP_PREVIEWG;Anteprima del Canale Verde.\nScorciatoia: g diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 83b8caa30..242ef7631 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -960,8 +960,8 @@ MAIN_TOOLTIP_BACKCOLOR2;プレビューの背景色を指定します: 中間のグレー\nショートカット: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;固定 / 固定解除 - 補正前 の表示設定\n\n固定: 補正前をそのまま表示し変更されません\n複数のツールの累積効果を評価するのに役立ちます\nさらに、比較は履歴上のどこからでも行うことができます\n\n固定解除: 現在使用のツールの効果が 補正後 に表示され、その1段階前が 補正前 に表示されます MAIN_TOOLTIP_HIDEHP;左パネル 表示/非表示 (履歴含む)\nショートカット: l -MAIN_TOOLTIP_INDCLIPPEDH;ハイライト・クリッピング領域の表示\nショートカット: < -MAIN_TOOLTIP_INDCLIPPEDS;シャドウ・クリッピング領域の表示\nショートカット: > +MAIN_TOOLTIP_INDCLIPPEDH;ハイライト・クリッピング領域の表示\nショートカット: > +MAIN_TOOLTIP_INDCLIPPEDS;シャドウ・クリッピング領域の表示\nショートカット: < MAIN_TOOLTIP_PREVIEWB;ブルー チャンネル表示\nショートカット: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;フォーカス・マスク表示\nショートカット: Shift-f\n\n浅い被写界深度、低ノイズ、高ズームの画像の場合は、より正確に\n\nノイズの多い画像に対しては、検出精度を向上させるため10から30%縮小して評価します\n\nフォーカス・マスクをオンにすると表示に時間が掛かります MAIN_TOOLTIP_PREVIEWG;グリーン チャンネル表示\nショートカット: g diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 5e2c92742..12bce5305 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -788,8 +788,8 @@ MAIN_TOOLTIP_BACKCOLOR1;Achtergrond kleur van het voorbeeld: Zwart\nSnelt MAIN_TOOLTIP_BACKCOLOR2;Achtergrond kleur van het voorbeeld: Wit\nSneltoets: 0 MAIN_TOOLTIP_BEFOREAFTERLOCK;Vergrendel / Ontgrendel de Voorafbeelding.\n\nVergrendel: hou de Voorafbeelding ongewijzigd.\nDit is handig om het cumulatieve effect van meerdere gereedschappen te beoordelen.\nBovendien kan er worden vergeleken met elke stap in de geschiedenislijst.\n\nOntgrendel: de Voorafbeelding volgt een stap achter de Naafbeelding en laat de afbeelding zien zonder het effect van het huidige gereedschap. MAIN_TOOLTIP_HIDEHP;Toon/verberg linkerpaneel (geschiedenis).\nSneltoets: H -MAIN_TOOLTIP_INDCLIPPEDH;Overbelichtingsindicatie.\nSneltoets: < -MAIN_TOOLTIP_INDCLIPPEDS;Onderbelichtingsindicatie.\nSneltoets: > +MAIN_TOOLTIP_INDCLIPPEDH;Overbelichtingsindicatie.\nSneltoets: > +MAIN_TOOLTIP_INDCLIPPEDS;Onderbelichtingsindicatie.\nSneltoets: < MAIN_TOOLTIP_PREVIEWB;Bekijk het Blauwe kanaal.\nSneltoets: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Bekijk het Focus Masker.\nSneltoets: Shift-F\n\nAccurater bij afbeeldingen met geringe scherptediepte, weinig ruis en hogere zoomniveaus.\n\nBekijk de afbeelding op lagere zoomniveaus (10-30%) om de accuratesse te vergroten bij afbeeldingen met veel ruis.\n\nHet voorbeeld wordt langzamer aangemaakt als Focus Masker aanstaat. MAIN_TOOLTIP_PREVIEWG;Bekijk het Groene kanaal.\nSneltoets: g diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 2e8a4549f..440093ef3 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -563,8 +563,8 @@ MAIN_TOOLTIP_BACKCOLOR1;Kolor tła podglądu: Czarny\nSkrót: 9 MAIN_TOOLTIP_BACKCOLOR2;Kolor tła podglądu: Biały\nSkrót: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Zablokuj / Odblokuj widok Przed\n\nZablokuj: nie zmieniaj widoku Przed - \nPrzydatne w porównywaniu zablokowanego obrazu z obrazem na ktorym wykonano wiele zmian.\n\nOdblokuj: widok Przed będzie śledził widok Po o jeden krok do tyłu, pokazując obraz przed efektem aktualnie użytego narzędzia. MAIN_TOOLTIP_HIDEHP;Pokaż/ukryj lewy panel (razem z historią).\nSkrót: l -MAIN_TOOLTIP_INDCLIPPEDH;Pokaż obcięte prześwietlenia.\nSkrót: < -MAIN_TOOLTIP_INDCLIPPEDS;Pokaż obcięte niedoświetlenia.\nSkrót: > +MAIN_TOOLTIP_INDCLIPPEDH;Pokaż obcięte prześwietlenia.\nSkrót: > +MAIN_TOOLTIP_INDCLIPPEDS;Pokaż obcięte niedoświetlenia.\nSkrót: < MAIN_TOOLTIP_PREVIEWB;Podgląd kanału niebieskiego.\nSkrót: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Podgląd maski ostrości.\nSkrót: Shift-f\n\nDokładniejsze w przypadku zdjęc o płytkiej głębi ostrości, niskim pozimie szumów i o większym przybliżeniu. W przypadku zdjęć o wyższym poziomie szumów maska ostrości będzie dokładniejsza przy mniejszym zoomie (10-30%). MAIN_TOOLTIP_PREVIEWG;Podgląd kanału zielonego.\nSkrót: g diff --git a/rtdata/languages/Portugues b/rtdata/languages/Portugues index c4adbc7f9..33d1e32a1 100644 --- a/rtdata/languages/Portugues +++ b/rtdata/languages/Portugues @@ -916,8 +916,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Cor de fundo da pré-visualização: branco\nAtal MAIN_TOOLTIP_BACKCOLOR3;Cor de fundo da pré-visualização: cinza médio\nAtalho: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Bloquear / desbloquear a visualização antes\n\nBloquear: manter a visualização antes inalterada.\nÚtil para avaliar o efeito cumulativo de várias ferramentas.\nAlém disso, podem ser feitas comparações a qualquer momento no histórico.\n\nDesbloquear: a visualização antes seguirá a visualização depois um passo antes, mostrando a imagem antes do efeito da ferramenta atualmente utilizada. MAIN_TOOLTIP_HIDEHP;Mostrar o painel esquerdo (incluindo o histórico).\nAtalho: l -MAIN_TOOLTIP_INDCLIPPEDH;Ver altas luzes cortadas.\nAtalho: < -MAIN_TOOLTIP_INDCLIPPEDS;Ver sombras cortadas.\nAtalho: > +MAIN_TOOLTIP_INDCLIPPEDH;Ver altas luzes cortadas.\nAtalho: > +MAIN_TOOLTIP_INDCLIPPEDS;Ver sombras cortadas.\nAtalho: < MAIN_TOOLTIP_PREVIEWB;Pré-visualizar o canal azul.\nAtalho: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Pré-visualizar a máscara de foco.\nAtalho: Shift-f\n\nMais preciso em imagens com pouca profundidade de campo, baixo ruído e níveis de zoom mais altos.\n\nUtilize um zoom menor entre 10-30% para melhorar a precisão da deteção de imagens com muito ruído. MAIN_TOOLTIP_PREVIEWG;Pré-visualizar o canal verde.\nAtalho: g diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 259cabb7e..794bc20d2 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -923,8 +923,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Cor de fundo da pré-visualização: Branco\nAtal MAIN_TOOLTIP_BACKCOLOR3;Cor de fundo da pré-visualização: Cinza médio\nAtalho: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Travar / Destravar a Antes visualização\n\nTravar: mantenha o Antes visualização inalterada.\nÚtil para avaliar o efeito cumulativo de várias ferramentas.\nAlém disso, comparações podem ser feitas a qualquer momento.\n\nDestravar: o Antes visualização seguinte Depois visualização anterior, mostrando a imagem antes do efeito da ferramenta atualmente utilizada. MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar o painel esquerdo (incluindo o histórico).\nAtalho: l -MAIN_TOOLTIP_INDCLIPPEDH;Indicação de realce recortado.\nAtalho: < -MAIN_TOOLTIP_INDCLIPPEDS;Indicação de sombra recortada.\nAtalho: > +MAIN_TOOLTIP_INDCLIPPEDH;Indicação de realce recortado.\nAtalho: > +MAIN_TOOLTIP_INDCLIPPEDS;Indicação de sombra recortada.\nAtalho: < MAIN_TOOLTIP_PREVIEWB;Pré-visualize o Canal Azul.\nAtalho: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Pré-visualize a Máscara de Foco.\nAtalho: Shift-f\n\nMais preciso em imagens com pouca profundidade de campo, baixo ruído e níveis de zoom mais altos.\n\nPara melhorar a precisão da detecção de imagens ruidosas, avalie com zoom menor, cerca de 10-30%. MAIN_TOOLTIP_PREVIEWG;Pré-visualize o Canal verde.\nAtalho: g diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 2014f9aad..0512fb37c 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -613,8 +613,8 @@ MAIN_TOOLTIP_BACKCOLOR1;Фоновый цвет предпросмотра: MAIN_TOOLTIP_BACKCOLOR2;Фоновый цвет предпросмотра: Белый\nГорячая клавиша: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Заблокировать / Разблокировать предыдущий вид\n\nЗаблокировать: сохраняет предыдущий вид неизменным.\nПолезно для оценки общего эффекта от применения нескольких инструментов.\nК тому же, сравнения могут быть произведены на любом состоянии истории\n\nРазблокировать: предыдущий вид будет следовать сразу за следующим, показывая состояние изображения до применения текущего инструмента. MAIN_TOOLTIP_HIDEHP;Показать/скрыть левую панель (включая историю).\nГорячая клавиша l -MAIN_TOOLTIP_INDCLIPPEDH;Индикатор пересветов.\nГорячая клавиша: < -MAIN_TOOLTIP_INDCLIPPEDS;Индикатор затемнений.\nГорячая клавиша: > +MAIN_TOOLTIP_INDCLIPPEDH;Индикатор пересветов.\nГорячая клавиша: > +MAIN_TOOLTIP_INDCLIPPEDS;Индикатор затемнений.\nГорячая клавиша: < MAIN_TOOLTIP_PREVIEWB;Просмотреть канал синего.\nГорячая клавиша: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Просмотреть Маску резкости.\nГорячая клавиша: Shift-F\n\nБолее точна на изображениях с небольшой глубиной резкости, малым шумом и при большем приближении изображения\n\nДля улучшения определения на шумных изображениях используйте на маленьком зуме 10-30% MAIN_TOOLTIP_PREVIEWG;Просмотреть канал зеленого.\nГорячая клавиша: g diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index fbc55624d..34c32e632 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -698,8 +698,8 @@ MAIN_TOOLTIP_BACKCOLOR1;Bakgrundsfärg: Svart\nKortkommando: 9 MAIN_TOOLTIP_BACKCOLOR2;Bakgrundsfärg: Vit\nKortkommando: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Lås / Lås upp före-vyn\n\nLås: behåll före-vyn oförändrad.\nAnvändbart för att utvärdera den sammanlagda effekten av flera stegs redigering. Dessutom kan jämförelser göras gentemot varje annat steg i historiken.\n\nLås upp: Före-vyn kommer hela tiden visa ett tidigare steg jämfört med efter-vyn, och visar därmed effekten av det verktyg som användes senast. MAIN_TOOLTIP_HIDEHP;Visa/göm den vänstra panelen. Kortkommando: l -MAIN_TOOLTIP_INDCLIPPEDH;Markera högdagerindikation.\nKortkommando: < -MAIN_TOOLTIP_INDCLIPPEDS;Markera skuggindikation.\nKortkommando: > +MAIN_TOOLTIP_INDCLIPPEDH;Markera högdagerindikation.\nKortkommando: > +MAIN_TOOLTIP_INDCLIPPEDS;Markera skuggindikation.\nKortkommando: < MAIN_TOOLTIP_PREVIEWB;Förhandsgranska den blå kanalen.\nGenväg: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Förhandsgranska fokusmasken.\nKortkommando: Shift-f\n\nNoggrannare på bilder med kort skärpedjup, lågt brus och där en hög zoom-grad är vald.\n\nFör att förbättra detekteringen för brusiga bilder, utvärdera vid en zoom-grad om 10-30%\n\nFörhandsvisningen görs långsammare med fokusmasken påslagen. MAIN_TOOLTIP_PREVIEWG;Förhandsgranska den gröna kanalen.\nGenväg: g diff --git a/rtdata/languages/default b/rtdata/languages/default index 968a8c0ed..d6f146dbb 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -938,8 +938,8 @@ MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l -MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < -MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > +MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: > +MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: < MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g From 37e7a705abd28c01350d99cb75b83bd70af96cc3 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 23 Oct 2019 20:22:03 +0200 Subject: [PATCH 15/66] Review of flatfield code, own compilation unit, use clip control value 0 when using auto clip control on already clipped image, code review --- rtdata/languages/default | 2 +- rtengine/CMakeLists.txt | 1 + rtengine/rawflatfield.cc | 559 +++++++++++++++++++++++++++++++++++++ rtengine/rawimagesource.cc | 552 ------------------------------------ rtengine/rawimagesource.h | 1 - rtgui/flatfield.cc | 2 +- 6 files changed, 562 insertions(+), 555 deletions(-) create mode 100644 rtengine/rawflatfield.cc diff --git a/rtdata/languages/default b/rtdata/languages/default index 968a8c0ed..cad717e6f 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1667,7 +1667,7 @@ TP_FLATFIELD_BT_HORIZONTAL;Horizontal TP_FLATFIELD_BT_VERTHORIZ;Vertical + Horizontal TP_FLATFIELD_BT_VERTICAL;Vertical TP_FLATFIELD_CLIPCONTROL;Clip control -TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. +TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, value 0 is used. TP_FLATFIELD_LABEL;Flat-Field TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1. TP_GRADIENT_CENTER;Center diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 40ddaefbb..52ec61b2f 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -111,6 +111,7 @@ set(RTENGINESOURCEFILES processingjob.cc procparams.cc profilestore.cc + rawflatfield.cc rawimage.cc rawimagesource.cc rcd_demosaic.cc diff --git a/rtengine/rawflatfield.cc b/rtengine/rawflatfield.cc new file mode 100644 index 000000000..8d8ed0873 --- /dev/null +++ b/rtengine/rawflatfield.cc @@ -0,0 +1,559 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2004-2017 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 + +#include "rtengine.h" +#include "rawimagesource.h" +#include "rawimage.h" +#include "procparams.h" +//#define BENCHMARK +//#include "StopWatch.h" +#include "opthelper.h" + +namespace { + +void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, int W) +{ + + if (boxW < 0 || boxH < 0 || (boxW == 0 && boxH == 0)) { // nothing to blur or negative values + memcpy(cfablur, riFlatFile[0], W * H * sizeof(float)); + return; + } + + float *tmpBuffer = nullptr; + float *cfatmp = nullptr; + float *srcVertical = nullptr; + + + if (boxH > 0 && boxW > 0) { + // we need a temporary buffer if we have to blur both directions + tmpBuffer = (float (*)) calloc (H * W, sizeof * tmpBuffer); + } + + if (boxH == 0) { + // if boxH == 0 we can skip the vertical blur and process the horizontal blur from riFlatFile to cfablur without using a temporary buffer + cfatmp = cfablur; + } else { + cfatmp = tmpBuffer; + } + + if (boxW == 0) { + // if boxW == 0 we can skip the horizontal blur and process the vertical blur from riFlatFile to cfablur without using a temporary buffer + srcVertical = riFlatFile[0]; + } else { + srcVertical = cfatmp; + } + +#ifdef _OPENMP + #pragma omp parallel +#endif + { + + if (boxW > 0) { + //box blur cfa image; box size = BS + //horizontal blur +#ifdef _OPENMP + #pragma omp for +#endif + + for (int row = 0; row < H; row++) { + int len = boxW / 2 + 1; + cfatmp[row * W + 0] = riFlatFile[row][0] / len; + cfatmp[row * W + 1] = riFlatFile[row][1] / len; + + for (int j = 2; j <= boxW; j += 2) { + cfatmp[row * W + 0] += riFlatFile[row][j] / len; + cfatmp[row * W + 1] += riFlatFile[row][j + 1] / len; + } + + for (int col = 2; col <= boxW; col += 2) { + cfatmp[row * W + col] = (cfatmp[row * W + col - 2] * len + riFlatFile[row][boxW + col]) / (len + 1); + cfatmp[row * W + col + 1] = (cfatmp[row * W + col - 1] * len + riFlatFile[row][boxW + col + 1]) / (len + 1); + len ++; + } + + for (int col = boxW + 2; col < W - boxW; col++) { + cfatmp[row * W + col] = cfatmp[row * W + col - 2] + (riFlatFile[row][boxW + col] - cfatmp[row * W + col - boxW - 2]) / len; + } + + for (int col = W - boxW; col < W; col += 2) { + cfatmp[row * W + col] = (cfatmp[row * W + col - 2] * len - cfatmp[row * W + col - boxW - 2]) / (len - 1); + + if (col + 1 < W) { + cfatmp[row * W + col + 1] = (cfatmp[row * W + col - 1] * len - cfatmp[row * W + col - boxW - 1]) / (len - 1); + } + + len --; + } + } + } + + if (boxH > 0) { + //vertical blur +#ifdef __SSE2__ + const vfloat leninitv = F2V(boxH / 2 + 1); + const vfloat onev = F2V(1.f); +#ifdef _OPENMP + #pragma omp for nowait +#endif + + for (int col = 0; col < W - 7; col += 8) { + vfloat lenv = leninitv; + vfloat temp1v = LVFU(srcVertical[0 * W + col]) / lenv; + vfloat temp2v = LVFU(srcVertical[1 * W + col]) / lenv; + vfloat temp3v = LVFU(srcVertical[0 * W + col + 4]) / lenv; + vfloat temp4v = LVFU(srcVertical[1 * W + col + 4]) / lenv; + + for (int i = 2; i < boxH + 2; i += 2) { + temp1v += LVFU(srcVertical[i * W + col]) / lenv; + temp2v += LVFU(srcVertical[(i + 1) * W + col]) / lenv; + temp3v += LVFU(srcVertical[i * W + col + 4]) / lenv; + temp4v += LVFU(srcVertical[(i + 1) * W + col + 4]) / lenv; + } + + STVFU(cfablur[0 * W + col], temp1v); + STVFU(cfablur[1 * W + col], temp2v); + STVFU(cfablur[0 * W + col + 4], temp3v); + STVFU(cfablur[1 * W + col + 4], temp4v); + + int row; + for (row = 2; row < boxH + 2; row += 2) { + const vfloat lenp1v = lenv + onev; + temp1v = (temp1v * lenv + LVFU(srcVertical[(row + boxH) * W + col])) / lenp1v; + temp2v = (temp2v * lenv + LVFU(srcVertical[(row + boxH + 1) * W + col])) / lenp1v; + temp3v = (temp3v * lenv + LVFU(srcVertical[(row + boxH) * W + col + 4])) / lenp1v; + temp4v = (temp4v * lenv + LVFU(srcVertical[(row + boxH + 1) * W + col + 4])) / lenp1v; + STVFU(cfablur[row * W + col], temp1v); + STVFU(cfablur[(row + 1)*W + col], temp2v); + STVFU(cfablur[row * W + col + 4], temp3v); + STVFU(cfablur[(row + 1)*W + col + 4], temp4v); + lenv = lenp1v; + } + + for (; row < H - boxH - 1; row += 2) { + temp1v = temp1v + (LVFU(srcVertical[(row + boxH) * W + col]) - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenv; + temp2v = temp2v + (LVFU(srcVertical[(row + 1 + boxH) * W + col]) - LVFU(srcVertical[(row + 1 - boxH - 2) * W + col])) / lenv; + temp3v = temp3v + (LVFU(srcVertical[(row + boxH) * W + col + 4]) - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenv; + temp4v = temp4v + (LVFU(srcVertical[(row + 1 + boxH) * W + col + 4]) - LVFU(srcVertical[(row + 1 - boxH - 2) * W + col + 4])) / lenv; + STVFU(cfablur[row * W + col], temp1v); + STVFU(cfablur[(row + 1)*W + col], temp2v); + STVFU(cfablur[row * W + col + 4], temp3v); + STVFU(cfablur[(row + 1)*W + col + 4], temp4v); + } + + if (row < H - boxH) { + temp1v = temp1v + (LVFU(srcVertical[(row + boxH) * W + col]) - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenv; + temp3v = temp3v + (LVFU(srcVertical[(row + boxH) * W + col + 4]) - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenv; + STVFU(cfablur[row * W + col], temp1v); + STVFU(cfablur[row * W + col + 4], temp3v); + vfloat swapv = temp1v; + temp1v = temp2v; + temp2v = swapv; + swapv = temp3v; + temp3v = temp4v; + temp4v = swapv; + ++row; + } + + for (; row < H - 1; row += 2) { + const vfloat lenm1v = lenv - onev; + temp1v = (temp1v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenm1v; + temp2v = (temp2v * lenv - LVFU(srcVertical[(row - boxH - 1) * W + col])) / lenm1v; + temp3v = (temp3v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenm1v; + temp4v = (temp4v * lenv - LVFU(srcVertical[(row - boxH - 1) * W + col + 4])) / lenm1v; + STVFU(cfablur[row * W + col], temp1v); + STVFU(cfablur[(row + 1)*W + col], temp2v); + STVFU(cfablur[row * W + col + 4], temp3v); + STVFU(cfablur[(row + 1)*W + col + 4], temp4v); + lenv = lenm1v; + } + + if (row < H) { + vfloat lenm1v = lenv - onev; + temp1v = (temp1v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenm1v; + temp3v = (temp3v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenm1v; + STVFU(cfablur[(row)*W + col], temp1v); + STVFU(cfablur[(row)*W + col + 4], temp3v); + } + + } + +#ifdef _OPENMP + #pragma omp single +#endif + + for (int col = W - (W % 8); col < W; col++) { + int len = boxH / 2 + 1; + cfablur[0 * W + col] = srcVertical[0 * W + col] / len; + cfablur[1 * W + col] = srcVertical[1 * W + col] / len; + + for (int i = 2; i < boxH + 2; i += 2) { + cfablur[0 * W + col] += srcVertical[i * W + col] / len; + cfablur[1 * W + col] += srcVertical[(i + 1) * W + col] / len; + } + + for (int row = 2; row < boxH + 2; row += 2) { + cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len + srcVertical[(row + boxH) * W + col]) / (len + 1); + cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); + len ++; + } + + for (int row = boxH + 2; row < H - boxH; row++) { + cfablur[row * W + col] = cfablur[(row - 2) * W + col] + (srcVertical[(row + boxH) * W + col] - srcVertical[(row - boxH - 2) * W + col]) / len; + } + + for (int row = H - boxH; row < H; row += 2) { + cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len - srcVertical[(row - boxH - 2) * W + col]) / (len - 1); + + if (row + 1 < H) { + cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); + } + + len --; + } + } + +#else +#ifdef _OPENMP + #pragma omp for +#endif + + for (int col = 0; col < W; col++) { + int len = boxH / 2 + 1; + cfablur[0 * W + col] = srcVertical[0 * W + col] / len; + cfablur[1 * W + col] = srcVertical[1 * W + col] / len; + + for (int i = 2; i < boxH + 2; i += 2) { + cfablur[0 * W + col] += srcVertical[i * W + col] / len; + cfablur[1 * W + col] += srcVertical[(i + 1) * W + col] / len; + } + + for (int row = 2; row < boxH + 2; row += 2) { + cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len + srcVertical[(row + boxH) * W + col]) / (len + 1); + cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); + len ++; + } + + for (int row = boxH + 2; row < H - boxH; row++) { + cfablur[row * W + col] = cfablur[(row - 2) * W + col] + (srcVertical[(row + boxH) * W + col] - srcVertical[(row - boxH - 2) * W + col]) / len; + } + + for (int row = H - boxH; row < H; row += 2) { + cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len - srcVertical[(row - boxH - 2) * W + col]) / (len - 1); + + if (row + 1 < H) { + cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); + } + + len --; + } + } + +#endif + } + } + + if (tmpBuffer) { + free (tmpBuffer); + } +} + +} + +namespace rtengine +{ + +void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]) +{ +// BENCHFUN + float *cfablur = new float[H * W]; + int BS = raw.ff_BlurRadius; + BS += BS & 1; + + if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::V)) { + cfaboxblur(riFlatFile->data, cfablur, 2 * BS, 0, H, W); + } else if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::H)) { + cfaboxblur(riFlatFile->data, cfablur, 0, 2 * BS, H, W); + } else if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::VH)) { + //slightly more complicated blur if trying to correct both vertical and horizontal anomalies + cfaboxblur(riFlatFile->data, cfablur, BS, BS, H, W); //first do area blur to correct vignette + } else { //(raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::area_ff)) + cfaboxblur(riFlatFile->data, cfablur, BS, BS, H, W); + } + + if (ri->getSensorType() == ST_BAYER || ri->get_colors() == 1) { + float refcolor[2][2]; + + // find center values by channel + for (int m = 0; m < 2; ++m) + for (int n = 0; n < 2; ++n) { + const int row = 2 * (H >> 2) + m; + const int col = 2 * (W >> 2) + n; + const int c = ri->get_colors() != 1 ? FC(row, col) : 0; + const int c4 = ri->get_colors() != 1 ? ((c == 1 && !(row & 1)) ? 3 : c) : 0; + refcolor[m][n] = std::max(0.0f, cfablur[row * W + col] - black[c4]); + } + + float limitFactor = 1.f; + + if (raw.ff_AutoClipControl) { + bool clippedBefore = false; + for (int m = 0; m < 2 && !clippedBefore; ++m) { + for (int n = 0; n < 2 && !clippedBefore; ++n) { + float maxval = 0.f; + const int c = ri->get_colors() != 1 ? FC(m, n) : 0; + const int c4 = ri->get_colors() != 1 ? ((c == 1 && !(m & 1)) ? 3 : c) : 0; + const float clipVal = ri->get_white(c4); +#ifdef _OPENMP + #pragma omp parallel for reduction(max:maxval) schedule(dynamic, 16) +#endif + for (int row = 0; row < H - m; row += 2) { + for (int col = 0; col < W - n && !clippedBefore; col += 2) { + const float rawVal = rawData[row + m][col + n]; + if (rawVal >= clipVal) { + clippedBefore = true; + break; + } + const float tempval = (rawVal - black[c4]) * (refcolor[m][n] / std::max(1e-5f, cfablur[(row + m) * W + col + n] - black[c4])); + maxval = std::max(maxval, tempval); + } + } + + // now we have the max value for the channel + // if it clips, calculate factor to avoid clipping + if (maxval + black[c4] >= ri->get_white(c4)) { + if (!clippedBefore) { + limitFactor = std::min(limitFactor, ri->get_white(c4) / (maxval + black[c4])); + } else { + limitFactor = 1.f; + } + } + } + } + flatFieldAutoClipValue = (1.f - limitFactor) * 100.f; // this value can be used to set the clip control slider in gui + } else { + limitFactor = std::max((float)(100 - raw.ff_clipControl) / 100.f, 0.01f); + } + + for (int m = 0; m < 2; ++m) + for (int n = 0; n < 2; ++n) { + refcolor[m][n] *= limitFactor; + } + + unsigned int c[2][2] {}; + unsigned int c4[2][2] {}; + if (ri->get_colors() != 1) { + for (int i = 0; i < 2; ++i) { + for (int j = 0; j < 2; ++j) { + c[i][j] = FC(i, j); + } + } + c4[0][0] = (c[0][0] == 1) ? 3 : c[0][0]; + c4[0][1] = (c[0][1] == 1) ? 3 : c[0][1]; + c4[1][0] = c[1][0]; + c4[1][1] = c[1][1]; + } + + constexpr float minValue = 1.f; // if the pixel value in the flat field is less or equal this value, no correction will be applied. + +#ifdef __SSE2__ + const vfloat refcolorv[2] = {_mm_set_ps(refcolor[0][1], refcolor[0][0], refcolor[0][1], refcolor[0][0]), + _mm_set_ps(refcolor[1][1], refcolor[1][0], refcolor[1][1], refcolor[1][0]) + }; + const vfloat blackv[2] = {_mm_set_ps(black[c4[0][1]], black[c4[0][0]], black[c4[0][1]], black[c4[0][0]]), + _mm_set_ps(black[c4[1][1]], black[c4[1][0]], black[c4[1][1]], black[c4[1][0]]) + }; + + const vfloat onev = F2V(1.f); + const vfloat minValuev = F2V(minValue); +#endif +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic,16) +#endif + + for (int row = 0; row < H; ++row) { + int col = 0; +#ifdef __SSE2__ + const vfloat rowBlackv = blackv[row & 1]; + const vfloat rowRefcolorv = refcolorv[row & 1]; + + for (; col < W - 3; col += 4) { + const vfloat blurv = LVFU(cfablur[(row) * W + col]) - rowBlackv; + vfloat vignettecorrv = rowRefcolorv / blurv; + vignettecorrv = vself(vmaskf_le(blurv, minValuev), onev, vignettecorrv); + const vfloat valv = LVFU(rawData[row][col]) - rowBlackv; + STVFU(rawData[row][col], valv * vignettecorrv + rowBlackv); + } + +#endif + + for (; col < W; ++col) { + const float blur = cfablur[(row) * W + col] - black[c4[row & 1][col & 1]]; + const float vignettecorr = blur <= minValue ? 1.f : refcolor[row & 1][col & 1] / blur; + rawData[row][col] = (rawData[row][col] - black[c4[row & 1][col & 1]]) * vignettecorr + black[c4[row & 1][col & 1]]; + } + } + } else if (ri->getSensorType() == ST_FUJI_XTRANS) { + float refcolor[3] = {0.f}; + int cCount[3] = {0}; + + // find center average values by channel + for (int m = -3; m < 3; ++m) + for (int n = -3; n < 3; ++n) { + const int row = 2 * (H >> 2) + m; + const int col = 2 * (W >> 2) + n; + const int c = riFlatFile->XTRANSFC(row, col); + refcolor[c] += std::max(0.0f, cfablur[row * W + col] - black[c]); + cCount[c] ++; + } + + for (int c = 0; c < 3; ++c) { + refcolor[c] = refcolor[c] / cCount[c]; + } + + float limitFactor = 1.f; + + if (raw.ff_AutoClipControl) { + // determine maximum calculated value to avoid clipping + bool clippedBefore = false; + const float clipVal = ri->get_white(0); + float maxval = 0.f; + // xtrans files have only one black level actually, so we can simplify the code a bit +#ifdef _OPENMP + #pragma omp parallel for reduction(max:maxval) schedule(dynamic,16) +#endif + for (int row = 0; row < H; ++row) { + for (int col = 0; col < W && !clippedBefore; ++col) { + const float rawVal = rawData[row][col]; + if (rawVal >= clipVal) { + clippedBefore = true; + break; + } + const float tempval = (rawVal - black[0]) * (refcolor[ri->XTRANSFC(row, col)] / std::max(1e-5f, cfablur[(row) * W + col] - black[0])); + maxval = std::max(maxval, tempval); + } + } + + // there's only one white level for xtrans + if (!clippedBefore && maxval + black[0] > ri->get_white(0)) { + limitFactor = ri->get_white(0) / (maxval + black[0]); + flatFieldAutoClipValue = (1.f - limitFactor) * 100.f; // this value can be used to set the clip control slider in gui + } + } else { + limitFactor = std::max((float)(100 - raw.ff_clipControl) / 100.f, 0.01f); + } + + + for (int c = 0; c < 3; ++c) { + refcolor[c] *= limitFactor; + } + + constexpr float minValue = 1.f; // if the pixel value in the flat field is less or equal this value, no correction will be applied. + +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int row = 0; row < H; ++row) { + for (int col = 0; col < W; ++col) { + const int c = ri->XTRANSFC(row, col); + const float blur = cfablur[(row) * W + col] - black[c]; + const float vignettecorr = blur <= minValue ? 1.f : refcolor[c] / blur; + rawData[row][col] = (rawData[row][col] - black[c]) * vignettecorr + black[c]; + } + } + } + + if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::VH)) { + float *cfablur1 = new float[H * W]; + float *cfablur2 = new float[H * W]; + //slightly more complicated blur if trying to correct both vertical and horizontal anomalies + cfaboxblur(riFlatFile->data, cfablur1, 0, 2 * BS, H, W); //now do horizontal blur + cfaboxblur(riFlatFile->data, cfablur2, 2 * BS, 0, H, W); //now do vertical blur + + if (ri->getSensorType() == ST_BAYER || ri->get_colors() == 1) { + unsigned int c[2][2] {}; + unsigned int c4[2][2] {}; + if (ri->get_colors() != 1) { + for (int i = 0; i < 2; ++i) { + for (int j = 0; j < 2; ++j) { + c[i][j] = FC(i, j); + } + } + c4[0][0] = (c[0][0] == 1) ? 3 : c[0][0]; + c4[0][1] = (c[0][1] == 1) ? 3 : c[0][1]; + c4[1][0] = c[1][0]; + c4[1][1] = c[1][1]; + } + +#ifdef __SSE2__ + const vfloat blackv[2] = {_mm_set_ps(black[c4[0][1]], black[c4[0][0]], black[c4[0][1]], black[c4[0][0]]), + _mm_set_ps(black[c4[1][1]], black[c4[1][0]], black[c4[1][1]], black[c4[1][0]]) + }; + + const vfloat epsv = F2V(1e-5f); +#endif +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic,16) +#endif + + for (int row = 0; row < H; ++row) { + int col = 0; +#ifdef __SSE2__ + const vfloat rowBlackv = blackv[row & 1]; + + for (; col < W - 3; col += 4) { + const vfloat linecorrv = SQRV(vmaxf(LVFU(cfablur[row * W + col]) - rowBlackv, epsv)) / + (vmaxf(LVFU(cfablur1[row * W + col]) - rowBlackv, epsv) * vmaxf(LVFU(cfablur2[row * W + col]) - rowBlackv, epsv)); + const vfloat valv = LVFU(rawData[row][col]) - rowBlackv; + STVFU(rawData[row][col], valv * linecorrv + rowBlackv); + } + +#endif + + for (; col < W; ++col) { + const float linecorr = SQR(std::max(1e-5f, cfablur[row * W + col] - black[c4[row & 1][col & 1]])) / + (std::max(1e-5f, cfablur1[row * W + col] - black[c4[row & 1][col & 1]]) * std::max(1e-5f, cfablur2[row * W + col] - black[c4[row & 1][col & 1]])); + rawData[row][col] = (rawData[row][col] - black[c4[row & 1][col & 1]]) * linecorr + black[c4[row & 1][col & 1]]; + } + } + } else if (ri->getSensorType() == ST_FUJI_XTRANS) { +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int row = 0; row < H; ++row) { + for (int col = 0; col < W; ++col) { + const int c = ri->XTRANSFC(row, col); + const float hlinecorr = std::max(1e-5f, cfablur[(row) * W + col] - black[c]) / std::max(1e-5f, cfablur1[(row) * W + col] - black[c]); + const float vlinecorr = std::max(1e-5f, cfablur[(row) * W + col] - black[c]) / std::max(1e-5f, cfablur2[(row) * W + col] - black[c]); + rawData[row][col] = (rawData[row][col] - black[c]) * hlinecorr * vlinecorr + black[c]; + } + } + + } + + delete [] cfablur1; + delete [] cfablur2; + } + + delete [] cfablur; +} +} /* namespace */ diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 5f1d13c79..34a50b944 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -2386,311 +2386,6 @@ void RawImageSource::HLRecovery_Global(const ToneCurveParams &hrp) } - -void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]) -{ -// BENCHFUN - float *cfablur = (float (*)) malloc (H * W * sizeof * cfablur); - int BS = raw.ff_BlurRadius; - BS += BS & 1; - - //function call to cfabloxblur - if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::V)) { - cfaboxblur(riFlatFile, cfablur, 2 * BS, 0); - } else if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::H)) { - cfaboxblur(riFlatFile, cfablur, 0, 2 * BS); - } else if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::VH)) { - //slightly more complicated blur if trying to correct both vertical and horizontal anomalies - cfaboxblur(riFlatFile, cfablur, BS, BS); //first do area blur to correct vignette - } else { //(raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::area_ff)) - cfaboxblur(riFlatFile, cfablur, BS, BS); - } - - if(ri->getSensorType() == ST_BAYER || ri->get_colors() == 1) { - float refcolor[2][2]; - - //find centre average values by channel - for (int m = 0; m < 2; m++) - for (int n = 0; n < 2; n++) { - int row = 2 * (H >> 2) + m; - int col = 2 * (W >> 2) + n; - int c = ri->get_colors() != 1 ? FC(row, col) : 0; - int c4 = ri->get_colors() != 1 ? (( c == 1 && !(row & 1) ) ? 3 : c) : 0; - refcolor[m][n] = max(0.0f, cfablur[row * W + col] - black[c4]); - } - - float limitFactor = 1.f; - - if(raw.ff_AutoClipControl) { - for (int m = 0; m < 2; m++) - for (int n = 0; n < 2; n++) { - float maxval = 0.f; - int c = ri->get_colors() != 1 ? FC(m, n) : 0; - int c4 = ri->get_colors() != 1 ? (( c == 1 && !(m & 1) ) ? 3 : c) : 0; -#ifdef _OPENMP - #pragma omp parallel -#endif - { - float maxvalthr = 0.f; -#ifdef _OPENMP - #pragma omp for -#endif - - for (int row = 0; row < H - m; row += 2) { - for (int col = 0; col < W - n; col += 2) { - float tempval = (rawData[row + m][col + n] - black[c4]) * ( refcolor[m][n] / max(1e-5f, cfablur[(row + m) * W + col + n] - black[c4]) ); - - if(tempval > maxvalthr) { - maxvalthr = tempval; - } - } - } - -#ifdef _OPENMP - #pragma omp critical -#endif - { - - if(maxvalthr > maxval) { - maxval = maxvalthr; - } - - } - } - - // now we have the max value for the channel - // if it clips, calculate factor to avoid clipping - if(maxval + black[c4] >= ri->get_white(c4)) { - limitFactor = min(limitFactor, ri->get_white(c4) / (maxval + black[c4])); - } - } - - flatFieldAutoClipValue = (1.f - limitFactor) * 100.f; // this value can be used to set the clip control slider in gui - } else { - limitFactor = max((float)(100 - raw.ff_clipControl) / 100.f, 0.01f); - } - - for (int m = 0; m < 2; m++) - for (int n = 0; n < 2; n++) { - refcolor[m][n] *= limitFactor; - } - - unsigned int c[2][2] {}; - unsigned int c4[2][2] {}; - if(ri->get_colors() != 1) { - for (int i = 0; i < 2; ++i) { - for(int j = 0; j < 2; ++j) { - c[i][j] = FC(i, j); - } - } - c4[0][0] = ( c[0][0] == 1) ? 3 : c[0][0]; - c4[0][1] = ( c[0][1] == 1) ? 3 : c[0][1]; - c4[1][0] = c[1][0]; - c4[1][1] = c[1][1]; - } - - constexpr float minValue = 1.f; // if the pixel value in the flat field is less or equal this value, no correction will be applied. - -#ifdef __SSE2__ - vfloat refcolorv[2] = {_mm_set_ps(refcolor[0][1], refcolor[0][0], refcolor[0][1], refcolor[0][0]), - _mm_set_ps(refcolor[1][1], refcolor[1][0], refcolor[1][1], refcolor[1][0]) - }; - vfloat blackv[2] = {_mm_set_ps(black[c4[0][1]], black[c4[0][0]], black[c4[0][1]], black[c4[0][0]]), - _mm_set_ps(black[c4[1][1]], black[c4[1][0]], black[c4[1][1]], black[c4[1][0]]) - }; - - vfloat onev = F2V(1.f); - vfloat minValuev = F2V(minValue); -#endif -#ifdef _OPENMP - #pragma omp parallel for schedule(dynamic,16) -#endif - - for (int row = 0; row < H; row ++) { - int col = 0; -#ifdef __SSE2__ - vfloat rowBlackv = blackv[row & 1]; - vfloat rowRefcolorv = refcolorv[row & 1]; - - for (; col < W - 3; col += 4) { - vfloat blurv = LVFU(cfablur[(row) * W + col]) - rowBlackv; - vfloat vignettecorrv = rowRefcolorv / blurv; - vignettecorrv = vself(vmaskf_le(blurv, minValuev), onev, vignettecorrv); - vfloat valv = LVFU(rawData[row][col]); - valv -= rowBlackv; - STVFU(rawData[row][col], valv * vignettecorrv + rowBlackv); - } - -#endif - - for (; col < W; col ++) { - float blur = cfablur[(row) * W + col] - black[c4[row & 1][col & 1]]; - float vignettecorr = blur <= minValue ? 1.f : refcolor[row & 1][col & 1] / blur; - rawData[row][col] = (rawData[row][col] - black[c4[row & 1][col & 1]]) * vignettecorr + black[c4[row & 1][col & 1]]; - } - } - } else if(ri->getSensorType() == ST_FUJI_XTRANS) { - float refcolor[3] = {0.f}; - int cCount[3] = {0}; - - //find center ave values by channel - for (int m = -3; m < 3; m++) - for (int n = -3; n < 3; n++) { - int row = 2 * (H >> 2) + m; - int col = 2 * (W >> 2) + n; - int c = riFlatFile->XTRANSFC(row, col); - refcolor[c] += max(0.0f, cfablur[row * W + col] - black[c]); - cCount[c] ++; - } - - for(int c = 0; c < 3; c++) { - refcolor[c] = refcolor[c] / cCount[c]; - } - - float limitFactor = 1.f; - - if(raw.ff_AutoClipControl) { - // determine maximum calculated value to avoid clipping - float maxval = 0.f; - // xtrans files have only one black level actually, so we can simplify the code a bit -#ifdef _OPENMP - #pragma omp parallel -#endif - { - float maxvalthr = 0.f; -#ifdef _OPENMP - #pragma omp for schedule(dynamic,16) nowait -#endif - - for (int row = 0; row < H; row++) { - for (int col = 0; col < W; col++) { - float tempval = (rawData[row][col] - black[0]) * ( refcolor[ri->XTRANSFC(row, col)] / max(1e-5f, cfablur[(row) * W + col] - black[0]) ); - - if(tempval > maxvalthr) { - maxvalthr = tempval; - } - } - } - -#ifdef _OPENMP - #pragma omp critical -#endif - { - if(maxvalthr > maxval) { - maxval = maxvalthr; - } - } - } - - // there's only one white level for xtrans - if(maxval + black[0] > ri->get_white(0)) { - limitFactor = ri->get_white(0) / (maxval + black[0]); - flatFieldAutoClipValue = (1.f - limitFactor) * 100.f; // this value can be used to set the clip control slider in gui - } - } else { - limitFactor = max((float)(100 - raw.ff_clipControl) / 100.f, 0.01f); - } - - - for(int c = 0; c < 3; c++) { - refcolor[c] *= limitFactor; - } - - constexpr float minValue = 1.f; // if the pixel value in the flat field is less or equal this value, no correction will be applied. - -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int row = 0; row < H; row++) { - for (int col = 0; col < W; col++) { - int c = ri->XTRANSFC(row, col); - float blur = cfablur[(row) * W + col] - black[c]; - float vignettecorr = blur <= minValue ? 1.f : refcolor[c] / blur; - rawData[row][col] = (rawData[row][col] - black[c]) * vignettecorr + black[c]; - } - } - } - - if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::VH)) { - float *cfablur1 = (float (*)) malloc (H * W * sizeof * cfablur1); - float *cfablur2 = (float (*)) malloc (H * W * sizeof * cfablur2); - //slightly more complicated blur if trying to correct both vertical and horizontal anomalies - cfaboxblur(riFlatFile, cfablur1, 0, 2 * BS); //now do horizontal blur - cfaboxblur(riFlatFile, cfablur2, 2 * BS, 0); //now do vertical blur - - if(ri->getSensorType() == ST_BAYER || ri->get_colors() == 1) { - unsigned int c[2][2] {}; - unsigned int c4[2][2] {}; - if(ri->get_colors() != 1) { - for (int i = 0; i < 2; ++i) { - for(int j = 0; j < 2; ++j) { - c[i][j] = FC(i, j); - } - } - c4[0][0] = ( c[0][0] == 1) ? 3 : c[0][0]; - c4[0][1] = ( c[0][1] == 1) ? 3 : c[0][1]; - c4[1][0] = c[1][0]; - c4[1][1] = c[1][1]; - } - -#ifdef __SSE2__ - vfloat blackv[2] = {_mm_set_ps(black[c4[0][1]], black[c4[0][0]], black[c4[0][1]], black[c4[0][0]]), - _mm_set_ps(black[c4[1][1]], black[c4[1][0]], black[c4[1][1]], black[c4[1][0]]) - }; - - vfloat epsv = F2V(1e-5f); -#endif -#ifdef _OPENMP - #pragma omp parallel for schedule(dynamic,16) -#endif - - for (int row = 0; row < H; row ++) { - int col = 0; -#ifdef __SSE2__ - vfloat rowBlackv = blackv[row & 1]; - - for (; col < W - 3; col += 4) { - vfloat linecorrv = SQRV(vmaxf(LVFU(cfablur[row * W + col]) - rowBlackv, epsv)) / - (vmaxf(LVFU(cfablur1[row * W + col]) - rowBlackv, epsv) * vmaxf(LVFU(cfablur2[row * W + col]) - rowBlackv, epsv)); - vfloat valv = LVFU(rawData[row][col]); - valv -= rowBlackv; - STVFU(rawData[row][col], valv * linecorrv + rowBlackv); - } - -#endif - - for (; col < W; col ++) { - float linecorr = SQR(max(1e-5f, cfablur[row * W + col] - black[c4[row & 1][col & 1]])) / - (max(1e-5f, cfablur1[row * W + col] - black[c4[row & 1][col & 1]]) * max(1e-5f, cfablur2[row * W + col] - black[c4[row & 1][col & 1]])) ; - rawData[row][col] = (rawData[row][col] - black[c4[row & 1][col & 1]]) * linecorr + black[c4[row & 1][col & 1]]; - } - } - } else if(ri->getSensorType() == ST_FUJI_XTRANS) { -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int row = 0; row < H; row++) { - for (int col = 0; col < W; col++) { - int c = ri->XTRANSFC(row, col); - float hlinecorr = (max(1e-5f, cfablur[(row) * W + col] - black[c]) / max(1e-5f, cfablur1[(row) * W + col] - black[c]) ); - float vlinecorr = (max(1e-5f, cfablur[(row) * W + col] - black[c]) / max(1e-5f, cfablur2[(row) * W + col] - black[c]) ); - rawData[row][col] = ((rawData[row][col] - black[c]) * hlinecorr * vlinecorr + black[c]); - } - } - - } - - free (cfablur1); - free (cfablur2); - } - - free (cfablur); -} - -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - /* Copy original pixel data and * subtract dark frame (if present) from current image and apply flat field correction (if present) */ @@ -2782,253 +2477,6 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw } } -void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH, int boxW) -{ - - if (boxW < 0 || boxH < 0 || (boxW == 0 && boxH == 0)) { // nothing to blur or negative values - memcpy(cfablur, riFlatFile->data[0], W * H * sizeof(float)); - return; - } - - float *tmpBuffer = nullptr; - float *cfatmp = nullptr; - float *srcVertical = nullptr; - - - if(boxH > 0 && boxW > 0) { - // we need a temporary buffer if we have to blur both directions - tmpBuffer = (float (*)) calloc (H * W, sizeof * tmpBuffer); - } - - if(boxH == 0) { - // if boxH == 0 we can skip the vertical blur and process the horizontal blur from riFlatFile to cfablur without using a temporary buffer - cfatmp = cfablur; - } else { - cfatmp = tmpBuffer; - } - - if(boxW == 0) { - // if boxW == 0 we can skip the horizontal blur and process the vertical blur from riFlatFile to cfablur without using a temporary buffer - srcVertical = riFlatFile->data[0]; - } else { - srcVertical = cfatmp; - } - -#ifdef _OPENMP - #pragma omp parallel -#endif - { - - if(boxW > 0) { - //box blur cfa image; box size = BS - //horizontal blur -#ifdef _OPENMP - #pragma omp for -#endif - - for (int row = 0; row < H; row++) { - int len = boxW / 2 + 1; - cfatmp[row * W + 0] = riFlatFile->data[row][0] / len; - cfatmp[row * W + 1] = riFlatFile->data[row][1] / len; - - for (int j = 2; j <= boxW; j += 2) { - cfatmp[row * W + 0] += riFlatFile->data[row][j] / len; - cfatmp[row * W + 1] += riFlatFile->data[row][j + 1] / len; - } - - for (int col = 2; col <= boxW; col += 2) { - cfatmp[row * W + col] = (cfatmp[row * W + col - 2] * len + riFlatFile->data[row][boxW + col]) / (len + 1); - cfatmp[row * W + col + 1] = (cfatmp[row * W + col - 1] * len + riFlatFile->data[row][boxW + col + 1]) / (len + 1); - len ++; - } - - for (int col = boxW + 2; col < W - boxW; col++) { - cfatmp[row * W + col] = cfatmp[row * W + col - 2] + (riFlatFile->data[row][boxW + col] - cfatmp[row * W + col - boxW - 2]) / len; - } - - for (int col = W - boxW; col < W; col += 2) { - cfatmp[row * W + col] = (cfatmp[row * W + col - 2] * len - cfatmp[row * W + col - boxW - 2]) / (len - 1); - - if (col + 1 < W) { - cfatmp[row * W + col + 1] = (cfatmp[row * W + col - 1] * len - cfatmp[row * W + col - boxW - 1]) / (len - 1); - } - - len --; - } - } - } - - if(boxH > 0) { - //vertical blur -#ifdef __SSE2__ - vfloat leninitv = F2V(boxH / 2 + 1); - vfloat onev = F2V( 1.0f ); - vfloat temp1v, temp2v, temp3v, temp4v, lenv, lenp1v, lenm1v; - int row; -#ifdef _OPENMP - #pragma omp for nowait -#endif - - for (int col = 0; col < W - 7; col += 8) { - lenv = leninitv; - temp1v = LVFU(srcVertical[0 * W + col]) / lenv; - temp2v = LVFU(srcVertical[1 * W + col]) / lenv; - temp3v = LVFU(srcVertical[0 * W + col + 4]) / lenv; - temp4v = LVFU(srcVertical[1 * W + col + 4]) / lenv; - - for (int i = 2; i < boxH + 2; i += 2) { - temp1v += LVFU(srcVertical[i * W + col]) / lenv; - temp2v += LVFU(srcVertical[(i + 1) * W + col]) / lenv; - temp3v += LVFU(srcVertical[i * W + col + 4]) / lenv; - temp4v += LVFU(srcVertical[(i + 1) * W + col + 4]) / lenv; - } - - STVFU(cfablur[0 * W + col], temp1v); - STVFU(cfablur[1 * W + col], temp2v); - STVFU(cfablur[0 * W + col + 4], temp3v); - STVFU(cfablur[1 * W + col + 4], temp4v); - - for (row = 2; row < boxH + 2; row += 2) { - lenp1v = lenv + onev; - temp1v = (temp1v * lenv + LVFU(srcVertical[(row + boxH) * W + col])) / lenp1v; - temp2v = (temp2v * lenv + LVFU(srcVertical[(row + boxH + 1) * W + col])) / lenp1v; - temp3v = (temp3v * lenv + LVFU(srcVertical[(row + boxH) * W + col + 4])) / lenp1v; - temp4v = (temp4v * lenv + LVFU(srcVertical[(row + boxH + 1) * W + col + 4])) / lenp1v; - STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[(row + 1)*W + col], temp2v); - STVFU(cfablur[row * W + col + 4], temp3v); - STVFU(cfablur[(row + 1)*W + col + 4], temp4v); - lenv = lenp1v; - } - - for (; row < H - boxH - 1; row += 2) { - temp1v = temp1v + (LVFU(srcVertical[(row + boxH) * W + col]) - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenv; - temp2v = temp2v + (LVFU(srcVertical[(row + 1 + boxH) * W + col]) - LVFU(srcVertical[(row + 1 - boxH - 2) * W + col])) / lenv; - temp3v = temp3v + (LVFU(srcVertical[(row + boxH) * W + col + 4]) - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenv; - temp4v = temp4v + (LVFU(srcVertical[(row + 1 + boxH) * W + col + 4]) - LVFU(srcVertical[(row + 1 - boxH - 2) * W + col + 4])) / lenv; - STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[(row + 1)*W + col], temp2v); - STVFU(cfablur[row * W + col + 4], temp3v); - STVFU(cfablur[(row + 1)*W + col + 4], temp4v); - } - - for(; row < H - boxH; row++) { - temp1v = temp1v + (LVFU(srcVertical[(row + boxH) * W + col]) - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenv; - temp3v = temp3v + (LVFU(srcVertical[(row + boxH) * W + col + 4]) - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenv; - STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[row * W + col + 4], temp3v); - vfloat swapv = temp1v; - temp1v = temp2v; - temp2v = swapv; - swapv = temp3v; - temp3v = temp4v; - temp4v = swapv; - } - - for (; row < H - 1; row += 2) { - lenm1v = lenv - onev; - temp1v = (temp1v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenm1v; - temp2v = (temp2v * lenv - LVFU(srcVertical[(row - boxH - 1) * W + col])) / lenm1v; - temp3v = (temp3v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenm1v; - temp4v = (temp4v * lenv - LVFU(srcVertical[(row - boxH - 1) * W + col + 4])) / lenm1v; - STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[(row + 1)*W + col], temp2v); - STVFU(cfablur[row * W + col + 4], temp3v); - STVFU(cfablur[(row + 1)*W + col + 4], temp4v); - lenv = lenm1v; - } - - for(; row < H; row++) { - lenm1v = lenv - onev; - temp1v = (temp1v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenm1v; - temp3v = (temp3v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenm1v; - STVFU(cfablur[(row)*W + col], temp1v); - STVFU(cfablur[(row)*W + col + 4], temp3v); - } - - } - -#ifdef _OPENMP - #pragma omp single -#endif - - for (int col = W - (W % 8); col < W; col++) { - int len = boxH / 2 + 1; - cfablur[0 * W + col] = srcVertical[0 * W + col] / len; - cfablur[1 * W + col] = srcVertical[1 * W + col] / len; - - for (int i = 2; i < boxH + 2; i += 2) { - cfablur[0 * W + col] += srcVertical[i * W + col] / len; - cfablur[1 * W + col] += srcVertical[(i + 1) * W + col] / len; - } - - for (int row = 2; row < boxH + 2; row += 2) { - cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len + srcVertical[(row + boxH) * W + col]) / (len + 1); - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); - len ++; - } - - for (int row = boxH + 2; row < H - boxH; row++) { - cfablur[row * W + col] = cfablur[(row - 2) * W + col] + (srcVertical[(row + boxH) * W + col] - srcVertical[(row - boxH - 2) * W + col]) / len; - } - - for (int row = H - boxH; row < H; row += 2) { - cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len - srcVertical[(row - boxH - 2) * W + col]) / (len - 1); - - if (row + 1 < H) { - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); - } - - len --; - } - } - -#else -#ifdef _OPENMP - #pragma omp for -#endif - - for (int col = 0; col < W; col++) { - int len = boxH / 2 + 1; - cfablur[0 * W + col] = srcVertical[0 * W + col] / len; - cfablur[1 * W + col] = srcVertical[1 * W + col] / len; - - for (int i = 2; i < boxH + 2; i += 2) { - cfablur[0 * W + col] += srcVertical[i * W + col] / len; - cfablur[1 * W + col] += srcVertical[(i + 1) * W + col] / len; - } - - for (int row = 2; row < boxH + 2; row += 2) { - cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len + srcVertical[(row + boxH) * W + col]) / (len + 1); - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); - len ++; - } - - for (int row = boxH + 2; row < H - boxH; row++) { - cfablur[row * W + col] = cfablur[(row - 2) * W + col] + (srcVertical[(row + boxH) * W + col] - srcVertical[(row - boxH - 2) * W + col]) / len; - } - - for (int row = H - boxH; row < H; row += 2) { - cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len - srcVertical[(row - boxH - 2) * W + col]) / (len - 1); - - if (row + 1 < H) { - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); - } - - len --; - } - } - -#endif - } - } - - if(tmpBuffer) { - free (tmpBuffer); - } -} - - // Scale original pixels into the range 0 65535 using black offsets and multipliers void RawImageSource::scaleColors(int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData) { diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index e52adea18..ecadec410 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -140,7 +140,6 @@ public: void processFlatField(const RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]); void copyOriginalPixels(const RAWParams &raw, RawImage *ri, RawImage *riDark, RawImage *riFlatFile, array2D &rawData ); - void cfaboxblur (RawImage *riFlatFile, float* cfablur, int boxH, int boxW); void scaleColors (int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData); // raw for cblack void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hrp, const procparams::RAWParams &raw) override; diff --git a/rtgui/flatfield.cc b/rtgui/flatfield.cc index 03204c037..c0bd0555a 100644 --- a/rtgui/flatfield.cc +++ b/rtgui/flatfield.cc @@ -54,7 +54,7 @@ FlatField::FlatField () : FoldableToolPanel(this, "flatfield", M("TP_FLATFIELD_L flatFieldBlurRadius->show(); Gtk::HBox* hbffbt = Gtk::manage (new Gtk::HBox ()); - hbffbt->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_FLATFIELD_BLURTYPE") + ":"))); + hbffbt->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_FLATFIELD_BLURTYPE") + ":")), Gtk::PACK_SHRINK, 4); hbffbt->set_spacing(4); flatFieldBlurType = Gtk::manage (new MyComboBoxText ()); flatFieldBlurType->append(M("TP_FLATFIELD_BT_AREA")); From dc972ddb21005c16f4ec06c789e3213f32ec05fd Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 23 Oct 2019 20:32:41 +0200 Subject: [PATCH 16/66] Film Negative button and tooltip changes --- rtdata/languages/Catala | 4 ++-- rtdata/languages/Chinese (Simplified) | 4 ++-- rtdata/languages/Czech | 4 ++-- rtdata/languages/Deutsch | 4 ++-- rtdata/languages/English (UK) | 4 ++-- rtdata/languages/English (US) | 4 ++-- rtdata/languages/Espanol | 4 ++-- rtdata/languages/Francais | 4 ++-- rtdata/languages/Italiano | 4 ++-- rtdata/languages/Japanese | 4 ++-- rtdata/languages/Magyar | 4 ++-- rtdata/languages/Nederlands | 4 ++-- rtdata/languages/Polish | 4 ++-- rtdata/languages/Portugues | 4 ++-- rtdata/languages/Portugues (Brasil) | 4 ++-- rtdata/languages/Russian | 4 ++-- rtdata/languages/Serbian (Cyrilic Characters) | 4 ++-- rtdata/languages/Swedish | 4 ++-- rtdata/languages/default | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index e702cbe49..a2d8012cd 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1867,9 +1867,9 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 387d8fb85..556f609ea 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1814,9 +1814,9 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index f45b39ef2..af9ae0c88 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2340,9 +2340,9 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !TP_DEHAZE_LUMINANCE;Luminance only !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_PDSHARPENING_LABEL;Capture Sharpening !TP_SHARPENING_GAMMA;Gamma diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 2ec2a020d..4c60ad8d8 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1724,9 +1724,9 @@ TP_EXPOS_BLACKPOINT_LABEL;Schwarzpunkt TP_EXPOS_WHITEPOINT_LABEL;Weißpunkt TP_FILMNEGATIVE_BLUE;Blauverhältnis TP_FILMNEGATIVE_GREEN;Bezugsexponent (Kontrast) -TP_FILMNEGATIVE_GUESS_TOOLTIP;Berechnet die Exponenten durch Auswahl zweier neutraler\nReferenzpunkte im Bild. Weiß (Hellgrau) und Schwarz (Dunkelgrau).\nDie Reihenfolge spielt keine Rolle. Die Exponenten werden aktualisiert,\nnachdem der zweite Punkt ausgewählt wurde. +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;Filmnegativ -TP_FILMNEGATIVE_PICK;Weißen und schwarzen Bereich auswählen +TP_FILMNEGATIVE_PICK;Pick neutral spots TP_FILMNEGATIVE_RED;Rotverhältnis TP_FILMSIMULATION_LABEL;Filmsimulation TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee sucht nach Hald-CLUT-Bildern, die für die Filmsimulation benötigt werden, in einem Ordner, der viel Zeit benötigt.\nGehen Sie zu\n< Einstellungen > Bildbearbeitung > Filmsimulation >\nund prüfen Sie welcher Order benutzt wird. Wählen Sie den Ordner aus, der nur die Hald-CLUT-Bilder beinhaltet, oder einen leeren Ordner, wenn Sie die Filsimulation nicht verwenden möchten.\n\nWeitere Informationen über die Filmsimulation finden Sie auf RawPedia.\n\nMöchten Sie die Suche beenden? diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 01f23c1e9..b4c76fd22 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1681,9 +1681,9 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 0e80fb985..6aeae1a45 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1652,9 +1652,9 @@ !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 478a9a9eb..211f968e2 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -2358,9 +2358,9 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: - !TP_DEHAZE_LUMINANCE;Luminance only !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically selected !TP_LENSPROFILE_CORRECTION_MANUAL;Manually selected diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 60a7368d2..82ef3fcd2 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2291,9 +2291,9 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !TP_DEHAZE_LUMINANCE;Luminance only !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically selected !TP_LENSPROFILE_CORRECTION_MANUAL;Manually selected diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index f388332b8..4649aea62 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1919,9 +1919,9 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 242ef7631..511f6daf0 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1672,9 +1672,9 @@ TP_EXPOS_BLACKPOINT_LABEL;raw ブラック・ポイント TP_EXPOS_WHITEPOINT_LABEL;raw ホワイト・ポイント TP_FILMNEGATIVE_BLUE;ブルーの比率 TP_FILMNEGATIVE_GREEN;参考指数(コントラスト) -TP_FILMNEGATIVE_GUESS_TOOLTIP;画像の中でニュートラルな参考ポイントを2点選んで指数を計算します;白い(明るいグレー)1点と黒い(暗いグレー)1点を選びます。順番は関係ありません。2つ目のポイントが選択されると指数が更新されます。 +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;ネガフィルム -TP_FILMNEGATIVE_PICK;白と黒のポイントをピックアップする +TP_FILMNEGATIVE_PICK;Pick neutral spots TP_FILMNEGATIVE_RED;レッドの比率 TP_FILMSIMULATION_LABEL;フィルムシミュレーション TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapeeはフィルムシミュレーション機能に使う画像をHald CLUTフォルダーの中から探すよう設計されています(プログラムに組み込むにはフォルダーが大き過ぎるため)。\n変更するには、環境設定 > 画像処理 > フィルムシミュレーションと進み\nどのフォルダーが使われているか確認します。機能を利用する場合は、Hald CLUTだけが入っているフォルダーを指定するか、 この機能を使わない場合はそのフォルダーを空にしておきます。\n\n詳しくはRawPediaを参照して下さい。\n\nフィルム画像のスキャンを止めますか? diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 11c48c3d9..8ee6e66e4 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1832,9 +1832,9 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 12bce5305..ebfdbed9d 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2246,9 +2246,9 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail. !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_ICM_WORKING_TRC;Tone response curve: !TP_ICM_WORKING_TRC_CUSTOM;Custom diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 440093ef3..86461bf6d 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1945,9 +1945,9 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!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 diff --git a/rtdata/languages/Portugues b/rtdata/languages/Portugues index 33d1e32a1..dea314f46 100644 --- a/rtdata/languages/Portugues +++ b/rtdata/languages/Portugues @@ -2290,9 +2290,9 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: - !TP_DEHAZE_LUMINANCE;Luminance only !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically selected !TP_LENSPROFILE_CORRECTION_MANUAL;Manually selected diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 794bc20d2..c6ff58310 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1626,7 +1626,7 @@ TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Padrão Ponderado TP_EXPOS_BLACKPOINT_LABEL;Pontos Pretos Raw TP_EXPOS_WHITEPOINT_LABEL;Pontos Brancos Raw TP_FILMNEGATIVE_BLUE;Relação de azul -TP_FILMNEGATIVE_PICK;Escolher os pontos brancos e pretos +TP_FILMNEGATIVE_PICK;Pick neutral spots TP_FILMNEGATIVE_RED;Relação de vermelho TP_FILMSIMULATION_LABEL;Simulação de Filme TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee está configurado para procurar por imagens Hald CLUT, que são usadas para a ferramenta Simulação de Filme, numa pasta que está demorando para carregar.\nVá para Preferências > Processamento de Imagem > Simulação de Filme\npara ver qual pasta está sendo usada. Deves apontar RawTherapee para uma pasta que contenha apenas imagens Hald CLUT e nada mais, ou para uma pasta vazia, se não quiseres usar a ferramenta Simulação de Filme.\n\nLeia o artigo sobre Simulação de Filme na RawPedia para mais informações.\n\nDesejas cancelar a verificação agora? @@ -2293,7 +2293,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !TP_CROP_PPI;PPI !TP_DEHAZE_LUMINANCE;Luminance only !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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_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 diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 0512fb37c..9f8f47da0 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1990,9 +1990,9 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!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_FLATFIELD_CLIPCONTROL;Clip control diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 0e940be55..63b838201 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1918,9 +1918,9 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FILMSIMULATION_LABEL;Film Simulation !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? diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 34c32e632..b39d95e02 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -2133,9 +2133,9 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail. !TP_FILMNEGATIVE_BLUE;Blue ratio !TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -!TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +!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 white and black spots +!TP_FILMNEGATIVE_PICK;Pick neutral spots !TP_FILMNEGATIVE_RED;Red ratio !TP_FLATFIELD_CLIPCONTROL;Clip control !TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast. diff --git a/rtdata/languages/default b/rtdata/languages/default index d6f146dbb..43660472f 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1651,9 +1651,9 @@ TP_EXPOS_BLACKPOINT_LABEL;Raw Black Points TP_EXPOS_WHITEPOINT_LABEL;Raw White Points TP_FILMNEGATIVE_BLUE;Blue ratio TP_FILMNEGATIVE_GREEN;Reference exponent (contrast) -TP_FILMNEGATIVE_GUESS_TOOLTIP;Calculate exponents by picking two neutral reference spots in the image; one white (light gray) and one black (dark gray). The order does not matter. The exponents will be updated after the second spot is picked. +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 white and black spots +TP_FILMNEGATIVE_PICK;Pick neutral spots TP_FILMNEGATIVE_RED;Red ratio TP_FILMSIMULATION_LABEL;Film Simulation 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? From ff2e5da9e4f4cacc3609f3615589f250e9df4ccd Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 23 Oct 2019 20:51:08 +0200 Subject: [PATCH 17/66] generateTranslationDiffs --- rtdata/languages/Deutsch | 34 +++++++++++++++------------------- rtdata/languages/English (UK) | 2 +- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 4c60ad8d8..0ee886945 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -82,8 +82,8 @@ #81 15.04.2019 Erweiterung (TooWaBoo) RT 5.6 #82 25.05.2019 Erweiterung (TooWaBoo) RT 5.6 #83 06.07.2019 Erweiterung (TooWaBoo) RT 5.6 -#84 18.07.2019 Erweiterung (TooWaBoo) RT 5.6 #84 06.10.2019 Erweiterung (TooWaBoo) RT 5.7 +#84 18.07.2019 Erweiterung (TooWaBoo) RT 5.6 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -809,6 +809,7 @@ HISTORY_MSG_490;(Dynamikkompression)\nIntensität HISTORY_MSG_491;(Weißabgleich) HISTORY_MSG_492;(RGB-Kurven) HISTORY_MSG_493;(L*a*b*) +HISTORY_MSG_494;(Eingangsschärfung) HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich @@ -826,6 +827,7 @@ HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrekt HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) +HISTORY_MSG_DEHAZE_LUMINANCE;(Bildschleier entfernen)\nNur Luminanz HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen HISTORY_MSG_DEHAZE_STRENGTH;(Bildschleier entfernen)\nIntensität HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;(Sensor—Matrix)\nFarbinterpolation\nAuto-Kontrastschwelle @@ -846,6 +848,13 @@ HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;(Lokaler Kontrast)\nHelle Bereiche HISTORY_MSG_LOCALCONTRAST_RADIUS;(Lokaler Kontrast)\nRadius HISTORY_MSG_METADATA_MODE;(Metadaten)\nKopiermodus HISTORY_MSG_MICROCONTRAST_CONTRAST;(Mikrokontrast)\nKontrastschwelle +HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;(Eingangsschärfung)\nAuto-Schwelle +HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;(Eingangsschärfung)\nAuto-Radius +HISTORY_MSG_PDSHARPEN_CONTRAST;(Eingangsschärfung)\nKontrastschwelle +HISTORY_MSG_PDSHARPEN_GAMMA;(Eingangsschärfung)\nGamma +HISTORY_MSG_PDSHARPEN_ITERATIONS;(Eingangsschärfung)\nIterationen +HISTORY_MSG_PDSHARPEN_RADIUS;(Eingangsschärfung)\nRadius +HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;(Eingangsschärfung)\nRandschärfe erhöhen HISTORY_MSG_PIXELSHIFT_DEMOSAIC;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegungsmethode HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;(Sensor-Matrix)\nVorverarbeitung\nRichtung HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;(Sensor-Matrix)\nVorverarbeitung\nPDAF-Zeilenfilter @@ -856,6 +865,7 @@ HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen HISTORY_MSG_SHARPENING_BLUR;(Schärfung)\nWeichzeichnerradius HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle +HISTORY_MSG_SHARPENING_GAMMA;(Schärfung) - Gamma HISTORY_MSG_SH_COLORSPACE;Farbraum HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität @@ -1614,6 +1624,7 @@ TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Schwelle TP_DEHAZE_DEPTH;Tiefe TP_DEHAZE_LABEL;Bildschleier entfernen +TP_DEHAZE_LUMINANCE;Nur Luminanz TP_DEHAZE_SHOW_DEPTH_MAP;Maske anzeigen TP_DEHAZE_STRENGTH;Intensität TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto-Multizonen @@ -1876,6 +1887,7 @@ TP_PCVIGNETTE_ROUNDNESS;Form TP_PCVIGNETTE_ROUNDNESS_TOOLTIP;Form:\n0 = Rechteck\n50 = Ellipse\n100 = Kreis TP_PCVIGNETTE_STRENGTH;Intensität TP_PCVIGNETTE_STRENGTH_TOOLTIP;Filterstärke in Blendenstufen (bezogen auf die Bildecken). +TP_PDSHARPENING_LABEL;Eingangsschärfung TP_PERSPECTIVE_HORIZONTAL;Horizontal TP_PERSPECTIVE_LABEL;Perspektive TP_PERSPECTIVE_VERTICAL;Vertikal @@ -2105,12 +2117,14 @@ TP_SHARPENING_BLUR;Weichzeichnerradius TP_SHARPENING_CONTRAST;Kontrastschwelle TP_SHARPENING_EDRADIUS;Radius TP_SHARPENING_EDTOLERANCE;Kantentoleranz +TP_SHARPENING_GAMMA;Gamma TP_SHARPENING_HALOCONTROL;Halokontrolle TP_SHARPENING_HCAMOUNT;Intensität TP_SHARPENING_LABEL;Schärfung TP_SHARPENING_METHOD;Methode TP_SHARPENING_ONLYEDGES;Nur Kanten schärfen TP_SHARPENING_RADIUS;Radius +TP_SHARPENING_RADIUS_BOOST;Randschärfe erhöhen TP_SHARPENING_RLD;RL-Dekonvolution TP_SHARPENING_RLD_AMOUNT;Intensität TP_SHARPENING_RLD_DAMPING;Dämpfung @@ -2372,21 +2386,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -HISTORY_MSG_494;(Eingangsschärfung) -HISTORY_MSG_DEHAZE_LUMINANCE;(Bildschleier entfernen)\nNur Luminanz -HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;(Eingangsschärfung)\nAuto-Schwelle -HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;(Eingangsschärfung)\nAuto-Radius -HISTORY_MSG_PDSHARPEN_CONTRAST;(Eingangsschärfung)\nKontrastschwelle -HISTORY_MSG_PDSHARPEN_GAMMA;(Eingangsschärfung)\nGamma -HISTORY_MSG_PDSHARPEN_ITERATIONS;(Eingangsschärfung)\nIterationen -HISTORY_MSG_PDSHARPEN_RADIUS;(Eingangsschärfung)\nRadius -HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;(Eingangsschärfung)\nRandschärfe erhöhen -HISTORY_MSG_SHARPENING_GAMMA;(Schärfung) - Gamma -TP_DEHAZE_LUMINANCE;Nur Luminanz -TP_PDSHARPENING_LABEL;Eingangsschärfung -TP_SHARPENING_GAMMA;Gamma -TP_SHARPENING_RADIUS_BOOST;Randschärfe erhöhen diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index b4c76fd22..6c1398a16 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -88,6 +88,7 @@ TP_DIRPYREQUALIZER_ALGO;Skin Colour Range TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colours of the skin, minimizing the action on other colours\nLarge: avoid more artifacts. TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colours (hue, chroma, luma) and the rest of the image. TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colours +TP_FILMNEGATIVE_GUESS_TOOLTIP;Automatically set the red and blue ratios by picking two patches which had a neutral hue (no colour) in the original scene. The patches should differ in brightness. Set the white balance afterwards. TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to colour cast. TP_GRADIENT_CENTER;Centre TP_GRADIENT_CENTER_X;Centre X @@ -1681,7 +1682,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !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 From ccf4b4c84313c33c88b1007e40f1b3f845611859 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 23 Oct 2019 23:14:08 +0200 Subject: [PATCH 18/66] flatfield: code review --- rtengine/rawflatfield.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/rtengine/rawflatfield.cc b/rtengine/rawflatfield.cc index 8d8ed0873..f1c0222f0 100644 --- a/rtengine/rawflatfield.cc +++ b/rtengine/rawflatfield.cc @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . - */ +*/ + #include #include @@ -73,7 +74,7 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i #pragma omp for #endif - for (int row = 0; row < H; row++) { + for (int row = 0; row < H; ++row) { int len = boxW / 2 + 1; cfatmp[row * W + 0] = riFlatFile[row][0] / len; cfatmp[row * W + 1] = riFlatFile[row][1] / len; @@ -199,7 +200,7 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i #pragma omp single #endif - for (int col = W - (W % 8); col < W; col++) { + for (int col = W - (W % 8); col < W; ++col) { int len = boxH / 2 + 1; cfablur[0 * W + col] = srcVertical[0 * W + col] / len; cfablur[1 * W + col] = srcVertical[1 * W + col] / len; @@ -215,7 +216,7 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i len ++; } - for (int row = boxH + 2; row < H - boxH; row++) { + for (int row = boxH + 2; row < H - boxH; ++row) { cfablur[row * W + col] = cfablur[(row - 2) * W + col] + (srcVertical[(row + boxH) * W + col] - srcVertical[(row - boxH - 2) * W + col]) / len; } @@ -235,7 +236,7 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i #pragma omp for #endif - for (int col = 0; col < W; col++) { + for (int col = 0; col < W; ++col) { int len = boxH / 2 + 1; cfablur[0 * W + col] = srcVertical[0 * W + col] / len; cfablur[1 * W + col] = srcVertical[1 * W + col] / len; @@ -251,7 +252,7 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i len ++; } - for (int row = boxH + 2; row < H - boxH; row++) { + for (int row = boxH + 2; row < H - boxH; ++row) { cfablur[row * W + col] = cfablur[(row - 2) * W + col] + (srcVertical[(row + boxH) * W + col] - srcVertical[(row - boxH - 2) * W + col]) / len; } From 91589191e052535199ab51ba7c303926ec26a07e Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Wed, 23 Oct 2019 23:33:29 +0200 Subject: [PATCH 19/66] Small Flat-Field UI cleanup --- rtgui/flatfield.cc | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/rtgui/flatfield.cc b/rtgui/flatfield.cc index c0bd0555a..03da558cb 100644 --- a/rtgui/flatfield.cc +++ b/rtgui/flatfield.cc @@ -32,18 +32,17 @@ using namespace rtengine::procparams; FlatField::FlatField () : FoldableToolPanel(this, "flatfield", M("TP_FLATFIELD_LABEL")) { hbff = Gtk::manage(new Gtk::HBox()); - hbff->set_spacing(2); flatFieldFile = Gtk::manage(new MyFileChooserButton(M("TP_FLATFIELD_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); bindCurrentFolder (*flatFieldFile, options.lastFlatfieldDir); ffLabel = Gtk::manage(new Gtk::Label(M("GENERAL_FILE"))); flatFieldFileReset = Gtk::manage(new Gtk::Button()); flatFieldFileReset->set_image (*Gtk::manage(new RTImage ("cancel-small.png"))); - hbff->pack_start(*ffLabel, Gtk::PACK_SHRINK, 0); + hbff->pack_start(*ffLabel, Gtk::PACK_SHRINK); hbff->pack_start(*flatFieldFile); - hbff->pack_start(*flatFieldFileReset, Gtk::PACK_SHRINK, 0); + hbff->pack_start(*flatFieldFileReset, Gtk::PACK_SHRINK); flatFieldAutoSelect = Gtk::manage(new Gtk::CheckButton((M("TP_FLATFIELD_AUTOSELECT")))); - ffInfo = Gtk::manage(new Gtk::Label("")); - ffInfo->set_alignment(0, 0); //left align + ffInfo = Gtk::manage(new Gtk::Label("-")); + setExpandAlignProperties(ffInfo, true, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); flatFieldBlurRadius = Gtk::manage(new Adjuster (M("TP_FLATFIELD_BLURRADIUS"), 0, 200, 2, 32)); flatFieldBlurRadius->setAdjusterListener (this); @@ -54,15 +53,14 @@ FlatField::FlatField () : FoldableToolPanel(this, "flatfield", M("TP_FLATFIELD_L flatFieldBlurRadius->show(); Gtk::HBox* hbffbt = Gtk::manage (new Gtk::HBox ()); - hbffbt->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_FLATFIELD_BLURTYPE") + ":")), Gtk::PACK_SHRINK, 4); - hbffbt->set_spacing(4); + hbffbt->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_FLATFIELD_BLURTYPE") + ":")), Gtk::PACK_SHRINK); flatFieldBlurType = Gtk::manage (new MyComboBoxText ()); flatFieldBlurType->append(M("TP_FLATFIELD_BT_AREA")); flatFieldBlurType->append(M("TP_FLATFIELD_BT_VERTICAL")); flatFieldBlurType->append(M("TP_FLATFIELD_BT_HORIZONTAL")); flatFieldBlurType->append(M("TP_FLATFIELD_BT_VERTHORIZ")); flatFieldBlurType->set_active(0); - hbffbt->pack_end (*flatFieldBlurType); + hbffbt->pack_end (*flatFieldBlurType, Gtk::PACK_EXPAND_WIDGET); flatFieldClipControl = Gtk::manage (new Adjuster(M("TP_FLATFIELD_CLIPCONTROL"), 0., 100., 1., 0.)); flatFieldClipControl->setAdjusterListener(this); @@ -75,12 +73,12 @@ FlatField::FlatField () : FoldableToolPanel(this, "flatfield", M("TP_FLATFIELD_L flatFieldClipControl->show(); flatFieldClipControl->set_tooltip_markup (M("TP_FLATFIELD_CLIPCONTROL_TOOLTIP")); - pack_start( *hbff, Gtk::PACK_SHRINK, 0); - pack_start( *flatFieldAutoSelect, Gtk::PACK_SHRINK, 0); - pack_start( *ffInfo, Gtk::PACK_SHRINK, 0); - pack_start( *hbffbt, Gtk::PACK_SHRINK, 0); - pack_start( *flatFieldBlurRadius, Gtk::PACK_SHRINK, 0); - pack_start( *flatFieldClipControl, Gtk::PACK_SHRINK, 0); + pack_start( *hbff, Gtk::PACK_SHRINK); + pack_start( *flatFieldAutoSelect, Gtk::PACK_SHRINK); + pack_start( *ffInfo, Gtk::PACK_SHRINK); + pack_start( *hbffbt, Gtk::PACK_SHRINK); + pack_start( *flatFieldBlurRadius, Gtk::PACK_SHRINK); + pack_start( *flatFieldClipControl, Gtk::PACK_SHRINK); flatFieldFileconn = flatFieldFile->signal_file_set().connect ( sigc::mem_fun(*this, &FlatField::flatFieldFileChanged)); //, true); flatFieldFileReset->signal_clicked().connect( sigc::mem_fun(*this, &FlatField::flatFieldFile_Reset), true ); @@ -169,7 +167,7 @@ void FlatField::read(const rtengine::procparams::ProcParams* pp, const ParamsEdi ffInfo->set_text(Glib::ustring(M("TP_PREPROCESS_NO_FOUND"))); } } else { - ffInfo->set_text(""); + ffInfo->set_text("-"); } ffChanged = false; @@ -334,7 +332,7 @@ void FlatField::flatFieldFile_Reset() flatFieldFile->set_current_folder(options.lastFlatfieldDir); } - ffInfo->set_text(""); + ffInfo->set_text("-"); if (listener) { listener->panelChanged (EvFlatFieldFile, M("GENERAL_NONE") ); @@ -384,7 +382,7 @@ void FlatField::flatFieldAutoSelectChanged() ffInfo->set_text(Glib::ustring(M("TP_PREPROCESS_NO_FOUND"))); } } else { - ffInfo->set_text(""); + ffInfo->set_text("-"); } if (listener) { From 8dba371ebb0ece243360601ce496fd182461af06 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 24 Oct 2019 17:39:09 +0200 Subject: [PATCH 20/66] flatfield: code review --- rtengine/rawflatfield.cc | 190 +++++++++++++++++--------------------- rtengine/rawimagesource.h | 2 +- 2 files changed, 84 insertions(+), 108 deletions(-) diff --git a/rtengine/rawflatfield.cc b/rtengine/rawflatfield.cc index f1c0222f0..782a44b78 100644 --- a/rtengine/rawflatfield.cc +++ b/rtengine/rawflatfield.cc @@ -1,7 +1,7 @@ /* * This file is part of RawTherapee. * - * Copyright (c) 2004-2017 Gabor Horvath + * Copyright (c) 2004-2019 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 @@ -17,12 +17,11 @@ * along with RawTherapee. If not, see . */ -#include +#include +#include #include -#include "rtengine.h" #include "rawimagesource.h" -#include "rawimage.h" #include "procparams.h" //#define BENCHMARK //#include "StopWatch.h" @@ -30,37 +29,25 @@ namespace { -void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, int W) +void cfaboxblur(const float* const * riFlatFile, float* cfablur, int boxH, int boxW, int H, int W) { - if (boxW < 0 || boxH < 0 || (boxW == 0 && boxH == 0)) { // nothing to blur or negative values memcpy(cfablur, riFlatFile[0], W * H * sizeof(float)); return; } - float *tmpBuffer = nullptr; - float *cfatmp = nullptr; - float *srcVertical = nullptr; + std::unique_ptr tmpBuffer; + float *cfatmp = cfablur; if (boxH > 0 && boxW > 0) { // we need a temporary buffer if we have to blur both directions - tmpBuffer = (float (*)) calloc (H * W, sizeof * tmpBuffer); + tmpBuffer.reset(new float [H * W]); + cfatmp = tmpBuffer.get(); } - if (boxH == 0) { - // if boxH == 0 we can skip the vertical blur and process the horizontal blur from riFlatFile to cfablur without using a temporary buffer - cfatmp = cfablur; - } else { - cfatmp = tmpBuffer; - } - - if (boxW == 0) { - // if boxW == 0 we can skip the horizontal blur and process the vertical blur from riFlatFile to cfablur without using a temporary buffer - srcVertical = riFlatFile[0]; - } else { - srcVertical = cfatmp; - } + // if boxW == 0 we can skip the horizontal blur and process the vertical blur from riFlatFile to cfablur without using a temporary buffer + const float* srcVertical = boxW == 0 ? riFlatFile[0] : cfatmp; #ifdef _OPENMP #pragma omp parallel @@ -76,11 +63,11 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i for (int row = 0; row < H; ++row) { int len = boxW / 2 + 1; - cfatmp[row * W + 0] = riFlatFile[row][0] / len; + cfatmp[row * W] = riFlatFile[row][0] / len; cfatmp[row * W + 1] = riFlatFile[row][1] / len; for (int j = 2; j <= boxW; j += 2) { - cfatmp[row * W + 0] += riFlatFile[row][j] / len; + cfatmp[row * W] += riFlatFile[row][j] / len; cfatmp[row * W + 1] += riFlatFile[row][j + 1] / len; } @@ -90,8 +77,9 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i len ++; } + const float rlen = 1.f / len; for (int col = boxW + 2; col < W - boxW; col++) { - cfatmp[row * W + col] = cfatmp[row * W + col - 2] + (riFlatFile[row][boxW + col] - cfatmp[row * W + col - boxW - 2]) / len; + cfatmp[row * W + col] = cfatmp[row * W + col - 2] + (riFlatFile[row][boxW + col] - cfatmp[row * W + col - boxW - 2]) * rlen; } for (int col = W - boxW; col < W; col += 2) { @@ -117,10 +105,10 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i for (int col = 0; col < W - 7; col += 8) { vfloat lenv = leninitv; - vfloat temp1v = LVFU(srcVertical[0 * W + col]) / lenv; - vfloat temp2v = LVFU(srcVertical[1 * W + col]) / lenv; - vfloat temp3v = LVFU(srcVertical[0 * W + col + 4]) / lenv; - vfloat temp4v = LVFU(srcVertical[1 * W + col + 4]) / lenv; + vfloat temp1v = LVFU(srcVertical[col]) / lenv; + vfloat temp2v = LVFU(srcVertical[W + col]) / lenv; + vfloat temp3v = LVFU(srcVertical[col + 4]) / lenv; + vfloat temp4v = LVFU(srcVertical[W + col + 4]) / lenv; for (int i = 2; i < boxH + 2; i += 2) { temp1v += LVFU(srcVertical[i * W + col]) / lenv; @@ -129,10 +117,10 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i temp4v += LVFU(srcVertical[(i + 1) * W + col + 4]) / lenv; } - STVFU(cfablur[0 * W + col], temp1v); - STVFU(cfablur[1 * W + col], temp2v); - STVFU(cfablur[0 * W + col + 4], temp3v); - STVFU(cfablur[1 * W + col + 4], temp4v); + STVFU(cfablur[col], temp1v); + STVFU(cfablur[W + col], temp2v); + STVFU(cfablur[col + 4], temp3v); + STVFU(cfablur[W + col + 4], temp4v); int row; for (row = 2; row < boxH + 2; row += 2) { @@ -142,9 +130,9 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i temp3v = (temp3v * lenv + LVFU(srcVertical[(row + boxH) * W + col + 4])) / lenp1v; temp4v = (temp4v * lenv + LVFU(srcVertical[(row + boxH + 1) * W + col + 4])) / lenp1v; STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[(row + 1)*W + col], temp2v); + STVFU(cfablur[(row + 1) * W + col], temp2v); STVFU(cfablur[row * W + col + 4], temp3v); - STVFU(cfablur[(row + 1)*W + col + 4], temp4v); + STVFU(cfablur[(row + 1) * W + col + 4], temp4v); lenv = lenp1v; } @@ -154,9 +142,9 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i temp3v = temp3v + (LVFU(srcVertical[(row + boxH) * W + col + 4]) - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenv; temp4v = temp4v + (LVFU(srcVertical[(row + 1 + boxH) * W + col + 4]) - LVFU(srcVertical[(row + 1 - boxH - 2) * W + col + 4])) / lenv; STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[(row + 1)*W + col], temp2v); + STVFU(cfablur[(row + 1) * W + col], temp2v); STVFU(cfablur[row * W + col + 4], temp3v); - STVFU(cfablur[(row + 1)*W + col + 4], temp4v); + STVFU(cfablur[(row + 1) * W + col + 4], temp4v); } if (row < H - boxH) { @@ -180,9 +168,9 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i temp3v = (temp3v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenm1v; temp4v = (temp4v * lenv - LVFU(srcVertical[(row - boxH - 1) * W + col + 4])) / lenm1v; STVFU(cfablur[row * W + col], temp1v); - STVFU(cfablur[(row + 1)*W + col], temp2v); + STVFU(cfablur[(row + 1) * W + col], temp2v); STVFU(cfablur[row * W + col + 4], temp3v); - STVFU(cfablur[(row + 1)*W + col + 4], temp4v); + STVFU(cfablur[(row + 1) * W + col + 4], temp4v); lenv = lenm1v; } @@ -190,8 +178,8 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i vfloat lenm1v = lenv - onev; temp1v = (temp1v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col])) / lenm1v; temp3v = (temp3v * lenv - LVFU(srcVertical[(row - boxH - 2) * W + col + 4])) / lenm1v; - STVFU(cfablur[(row)*W + col], temp1v); - STVFU(cfablur[(row)*W + col + 4], temp3v); + STVFU(cfablur[row * W + col], temp1v); + STVFU(cfablur[row * W + col + 4], temp3v); } } @@ -202,18 +190,18 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i for (int col = W - (W % 8); col < W; ++col) { int len = boxH / 2 + 1; - cfablur[0 * W + col] = srcVertical[0 * W + col] / len; - cfablur[1 * W + col] = srcVertical[1 * W + col] / len; + cfablur[col] = srcVertical[col] / len; + cfablur[W + col] = srcVertical[W + col] / len; for (int i = 2; i < boxH + 2; i += 2) { - cfablur[0 * W + col] += srcVertical[i * W + col] / len; - cfablur[1 * W + col] += srcVertical[(i + 1) * W + col] / len; + cfablur[col] += srcVertical[i * W + col] / len; + cfablur[W + col] += srcVertical[(i + 1) * W + col] / len; } for (int row = 2; row < boxH + 2; row += 2) { cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len + srcVertical[(row + boxH) * W + col]) / (len + 1); - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); - len ++; + cfablur[(row + 1) * W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); + ++len; } for (int row = boxH + 2; row < H - boxH; ++row) { @@ -224,10 +212,9 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len - srcVertical[(row - boxH - 2) * W + col]) / (len - 1); if (row + 1 < H) { - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); + cfablur[(row + 1) * W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); } - - len --; + --len; } } @@ -238,18 +225,18 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i for (int col = 0; col < W; ++col) { int len = boxH / 2 + 1; - cfablur[0 * W + col] = srcVertical[0 * W + col] / len; - cfablur[1 * W + col] = srcVertical[1 * W + col] / len; + cfablur[col] = srcVertical[col] / len; + cfablur[W + col] = srcVertical[W + col] / len; for (int i = 2; i < boxH + 2; i += 2) { - cfablur[0 * W + col] += srcVertical[i * W + col] / len; - cfablur[1 * W + col] += srcVertical[(i + 1) * W + col] / len; + cfablur[col] += srcVertical[i * W + col] / len; + cfablur[W + col] += srcVertical[(i + 1) * W + col] / len; } for (int row = 2; row < boxH + 2; row += 2) { cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len + srcVertical[(row + boxH) * W + col]) / (len + 1); - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); - len ++; + cfablur[(row + 1) * W + col] = (cfablur[(row - 1) * W + col] * len + srcVertical[(row + boxH + 1) * W + col]) / (len + 1); + ++len; } for (int row = boxH + 2; row < H - boxH; ++row) { @@ -260,20 +247,14 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i cfablur[row * W + col] = (cfablur[(row - 2) * W + col] * len - srcVertical[(row - boxH - 2) * W + col]) / (len - 1); if (row + 1 < H) { - cfablur[(row + 1)*W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); + cfablur[(row + 1) * W + col] = (cfablur[(row - 1) * W + col] * len - srcVertical[(row - boxH - 1) * W + col]) / (len - 1); } - - len --; + --len; } } - #endif } } - - if (tmpBuffer) { - free (tmpBuffer); - } } } @@ -281,22 +262,23 @@ void cfaboxblur(float** riFlatFile, float* cfablur, int boxH, int boxW, int H, i namespace rtengine { -void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]) +void RawImageSource::processFlatField(const RAWParams &raw, const RawImage *riFlatFile, const unsigned short black[4]) { // BENCHFUN - float *cfablur = new float[H * W]; - int BS = raw.ff_BlurRadius; - BS += BS & 1; + const float fblack[4] = {static_cast(black[0]), static_cast(black[1]), static_cast(black[2]), static_cast(black[3])}; + std::unique_ptr cfablur(new float[H * W]); + + const int BS = raw.ff_BlurRadius + (raw.ff_BlurRadius & 1); if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::V)) { - cfaboxblur(riFlatFile->data, cfablur, 2 * BS, 0, H, W); + cfaboxblur(riFlatFile->data, cfablur.get(), 2 * BS, 0, H, W); } else if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::H)) { - cfaboxblur(riFlatFile->data, cfablur, 0, 2 * BS, H, W); + cfaboxblur(riFlatFile->data, cfablur.get(), 0, 2 * BS, H, W); } else if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::VH)) { //slightly more complicated blur if trying to correct both vertical and horizontal anomalies - cfaboxblur(riFlatFile->data, cfablur, BS, BS, H, W); //first do area blur to correct vignette + cfaboxblur(riFlatFile->data, cfablur.get(), BS, BS, H, W); //first do area blur to correct vignette } else { //(raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::area_ff)) - cfaboxblur(riFlatFile->data, cfablur, BS, BS, H, W); + cfaboxblur(riFlatFile->data, cfablur.get(), BS, BS, H, W); } if (ri->getSensorType() == ST_BAYER || ri->get_colors() == 1) { @@ -309,7 +291,7 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile const int col = 2 * (W >> 2) + n; const int c = ri->get_colors() != 1 ? FC(row, col) : 0; const int c4 = ri->get_colors() != 1 ? ((c == 1 && !(row & 1)) ? 3 : c) : 0; - refcolor[m][n] = std::max(0.0f, cfablur[row * W + col] - black[c4]); + refcolor[m][n] = std::max(0.0f, cfablur[row * W + col] - fblack[c4]); } float limitFactor = 1.f; @@ -332,16 +314,16 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile clippedBefore = true; break; } - const float tempval = (rawVal - black[c4]) * (refcolor[m][n] / std::max(1e-5f, cfablur[(row + m) * W + col + n] - black[c4])); + const float tempval = (rawVal - fblack[c4]) * (refcolor[m][n] / std::max(1e-5f, cfablur[(row + m) * W + col + n] - fblack[c4])); maxval = std::max(maxval, tempval); } } // now we have the max value for the channel // if it clips, calculate factor to avoid clipping - if (maxval + black[c4] >= ri->get_white(c4)) { + if (maxval + fblack[c4] >= ri->get_white(c4)) { if (!clippedBefore) { - limitFactor = std::min(limitFactor, ri->get_white(c4) / (maxval + black[c4])); + limitFactor = std::min(limitFactor, ri->get_white(c4) / (maxval + fblack[c4])); } else { limitFactor = 1.f; } @@ -350,7 +332,7 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile } flatFieldAutoClipValue = (1.f - limitFactor) * 100.f; // this value can be used to set the clip control slider in gui } else { - limitFactor = std::max((float)(100 - raw.ff_clipControl) / 100.f, 0.01f); + limitFactor = std::max((100 - raw.ff_clipControl) / 100.f, 0.01f); } for (int m = 0; m < 2; ++m) @@ -378,8 +360,8 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile const vfloat refcolorv[2] = {_mm_set_ps(refcolor[0][1], refcolor[0][0], refcolor[0][1], refcolor[0][0]), _mm_set_ps(refcolor[1][1], refcolor[1][0], refcolor[1][1], refcolor[1][0]) }; - const vfloat blackv[2] = {_mm_set_ps(black[c4[0][1]], black[c4[0][0]], black[c4[0][1]], black[c4[0][0]]), - _mm_set_ps(black[c4[1][1]], black[c4[1][0]], black[c4[1][1]], black[c4[1][0]]) + const vfloat blackv[2] = {_mm_set_ps(fblack[c4[0][1]], fblack[c4[0][0]], fblack[c4[0][1]], fblack[c4[0][0]]), + _mm_set_ps(fblack[c4[1][1]], fblack[c4[1][0]], fblack[c4[1][1]], fblack[c4[1][0]]) }; const vfloat onev = F2V(1.f); @@ -396,7 +378,7 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile const vfloat rowRefcolorv = refcolorv[row & 1]; for (; col < W - 3; col += 4) { - const vfloat blurv = LVFU(cfablur[(row) * W + col]) - rowBlackv; + const vfloat blurv = LVFU(cfablur[row * W + col]) - rowBlackv; vfloat vignettecorrv = rowRefcolorv / blurv; vignettecorrv = vself(vmaskf_le(blurv, minValuev), onev, vignettecorrv); const vfloat valv = LVFU(rawData[row][col]) - rowBlackv; @@ -406,9 +388,9 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile #endif for (; col < W; ++col) { - const float blur = cfablur[(row) * W + col] - black[c4[row & 1][col & 1]]; + const float blur = cfablur[row * W + col] - fblack[c4[row & 1][col & 1]]; const float vignettecorr = blur <= minValue ? 1.f : refcolor[row & 1][col & 1] / blur; - rawData[row][col] = (rawData[row][col] - black[c4[row & 1][col & 1]]) * vignettecorr + black[c4[row & 1][col & 1]]; + rawData[row][col] = (rawData[row][col] - fblack[c4[row & 1][col & 1]]) * vignettecorr + fblack[c4[row & 1][col & 1]]; } } } else if (ri->getSensorType() == ST_FUJI_XTRANS) { @@ -421,7 +403,7 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile const int row = 2 * (H >> 2) + m; const int col = 2 * (W >> 2) + n; const int c = riFlatFile->XTRANSFC(row, col); - refcolor[c] += std::max(0.0f, cfablur[row * W + col] - black[c]); + refcolor[c] += std::max(0.0f, cfablur[row * W + col] - fblack[c]); cCount[c] ++; } @@ -447,14 +429,14 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile clippedBefore = true; break; } - const float tempval = (rawVal - black[0]) * (refcolor[ri->XTRANSFC(row, col)] / std::max(1e-5f, cfablur[(row) * W + col] - black[0])); + const float tempval = (rawVal - fblack[0]) * (refcolor[ri->XTRANSFC(row, col)] / std::max(1e-5f, cfablur[(row) * W + col] - fblack[0])); maxval = std::max(maxval, tempval); } } // there's only one white level for xtrans - if (!clippedBefore && maxval + black[0] > ri->get_white(0)) { - limitFactor = ri->get_white(0) / (maxval + black[0]); + if (!clippedBefore && maxval + fblack[0] > ri->get_white(0)) { + limitFactor = ri->get_white(0) / (maxval + fblack[0]); flatFieldAutoClipValue = (1.f - limitFactor) * 100.f; // this value can be used to set the clip control slider in gui } } else { @@ -475,19 +457,19 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile for (int row = 0; row < H; ++row) { for (int col = 0; col < W; ++col) { const int c = ri->XTRANSFC(row, col); - const float blur = cfablur[(row) * W + col] - black[c]; + const float blur = cfablur[(row) * W + col] - fblack[c]; const float vignettecorr = blur <= minValue ? 1.f : refcolor[c] / blur; - rawData[row][col] = (rawData[row][col] - black[c]) * vignettecorr + black[c]; + rawData[row][col] = (rawData[row][col] - fblack[c]) * vignettecorr + fblack[c]; } } } if (raw.ff_BlurType == RAWParams::getFlatFieldBlurTypeString(RAWParams::FlatFieldBlurType::VH)) { - float *cfablur1 = new float[H * W]; - float *cfablur2 = new float[H * W]; + std::unique_ptr cfablur1(new float[H * W]); + std::unique_ptr cfablur2(new float[H * W]); //slightly more complicated blur if trying to correct both vertical and horizontal anomalies - cfaboxblur(riFlatFile->data, cfablur1, 0, 2 * BS, H, W); //now do horizontal blur - cfaboxblur(riFlatFile->data, cfablur2, 2 * BS, 0, H, W); //now do vertical blur + cfaboxblur(riFlatFile->data, cfablur1.get(), 0, 2 * BS, H, W); //now do horizontal blur + cfaboxblur(riFlatFile->data, cfablur2.get(), 2 * BS, 0, H, W); //now do vertical blur if (ri->getSensorType() == ST_BAYER || ri->get_colors() == 1) { unsigned int c[2][2] {}; @@ -505,8 +487,8 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile } #ifdef __SSE2__ - const vfloat blackv[2] = {_mm_set_ps(black[c4[0][1]], black[c4[0][0]], black[c4[0][1]], black[c4[0][0]]), - _mm_set_ps(black[c4[1][1]], black[c4[1][0]], black[c4[1][1]], black[c4[1][0]]) + const vfloat blackv[2] = {_mm_set_ps(fblack[c4[0][1]], fblack[c4[0][0]], fblack[c4[0][1]], fblack[c4[0][0]]), + _mm_set_ps(fblack[c4[1][1]], fblack[c4[1][0]], fblack[c4[1][1]], fblack[c4[1][0]]) }; const vfloat epsv = F2V(1e-5f); @@ -530,9 +512,9 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile #endif for (; col < W; ++col) { - const float linecorr = SQR(std::max(1e-5f, cfablur[row * W + col] - black[c4[row & 1][col & 1]])) / - (std::max(1e-5f, cfablur1[row * W + col] - black[c4[row & 1][col & 1]]) * std::max(1e-5f, cfablur2[row * W + col] - black[c4[row & 1][col & 1]])); - rawData[row][col] = (rawData[row][col] - black[c4[row & 1][col & 1]]) * linecorr + black[c4[row & 1][col & 1]]; + const float linecorr = SQR(std::max(1e-5f, cfablur[row * W + col] - fblack[c4[row & 1][col & 1]])) / + (std::max(1e-5f, cfablur1[row * W + col] - fblack[c4[row & 1][col & 1]]) * std::max(1e-5f, cfablur2[row * W + col] - fblack[c4[row & 1][col & 1]])); + rawData[row][col] = (rawData[row][col] - fblack[c4[row & 1][col & 1]]) * linecorr + fblack[c4[row & 1][col & 1]]; } } } else if (ri->getSensorType() == ST_FUJI_XTRANS) { @@ -543,18 +525,12 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile for (int row = 0; row < H; ++row) { for (int col = 0; col < W; ++col) { const int c = ri->XTRANSFC(row, col); - const float hlinecorr = std::max(1e-5f, cfablur[(row) * W + col] - black[c]) / std::max(1e-5f, cfablur1[(row) * W + col] - black[c]); - const float vlinecorr = std::max(1e-5f, cfablur[(row) * W + col] - black[c]) / std::max(1e-5f, cfablur2[(row) * W + col] - black[c]); - rawData[row][col] = (rawData[row][col] - black[c]) * hlinecorr * vlinecorr + black[c]; + const float hlinecorr = std::max(1e-5f, cfablur[(row) * W + col] - fblack[c]) / std::max(1e-5f, cfablur1[(row) * W + col] - fblack[c]); + const float vlinecorr = std::max(1e-5f, cfablur[(row) * W + col] - fblack[c]) / std::max(1e-5f, cfablur2[(row) * W + col] - fblack[c]); + rawData[row][col] = (rawData[row][col] - fblack[c]) * hlinecorr * vlinecorr + fblack[c]; } } - } - - delete [] cfablur1; - delete [] cfablur2; } - - delete [] cfablur; } } /* namespace */ diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index ecadec410..aff252842 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -138,7 +138,7 @@ public: return rgbSourceModified; // tracks whether cached rgb output of demosaic has been modified } - void processFlatField(const RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]); + void processFlatField(const RAWParams &raw, const RawImage *riFlatFile, const unsigned short black[4]); void copyOriginalPixels(const RAWParams &raw, RawImage *ri, RawImage *riDark, RawImage *riFlatFile, array2D &rawData ); void scaleColors (int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData); // raw for cblack From 11f8672584ecb0b589bc4916c12980e0a4aee955 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sat, 26 Oct 2019 12:54:29 +0200 Subject: [PATCH 21/66] Fix bug in Capture Sharpening --- rtengine/capturesharpening.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index 38fe0897c..a080b4f36 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -668,7 +668,7 @@ BENCHFUN buildClipMaskBayer(rawData, W, H, clipMask, whites); const unsigned int fc[2] = {FC(0,0), FC(1,0)}; if (sharpeningParams.autoRadius) { - radius = calcRadiusBayer(rawData, W, H, 1000.f, clipVal, fc); + radius = std::min(calcRadiusBayer(rawData, W, H, 1000.f, clipVal, fc), 1.15f); } } else if (ri->getSensorType() == ST_FUJI_XTRANS) { float whites[6][6]; @@ -696,14 +696,14 @@ BENCHFUN } } if (sharpeningParams.autoRadius) { - radius = calcRadiusXtrans(rawData, W, H, 1000.f, clipVal, i, j); + radius = std::min(calcRadiusXtrans(rawData, W, H, 1000.f, clipVal, i, j), 1.15f); } } else if (ri->get_colors() == 1) { buildClipMaskMono(rawData, W, H, clipMask, (ri->get_white(0) - c_black[0]) * scale_mul[0] * clipLimit); if (sharpeningParams.autoRadius) { const unsigned int fc[2] = {0, 0}; - radius = calcRadiusBayer(rawData, W, H, 1000.f, clipVal, fc); + radius = std::min(calcRadiusBayer(rawData, W, H, 1000.f, clipVal, fc), 1.15f); } } From 0ee3873ce485fa0903f41aa7a657b4813548f953 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 28 Oct 2019 13:35:46 +0100 Subject: [PATCH 22/66] fix clang warning --- rtengine/guidedfilter.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index feb108198..70807424a 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -66,7 +66,12 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 enum Op {MUL, DIVEPSILON, SUBMUL}; const auto apply = +#ifdef _OPENMP [multithread, epsilon](Op op, array2D &res, const array2D &a, const array2D &b, const array2D &c=array2D()) -> void +#else + // removed multithread to fix clang warning on msys2 clang builds, which don't support OpenMp + [epsilon](Op op, array2D &res, const array2D &a, const array2D &b, const array2D &c=array2D()) -> void +#endif { const int w = res.width(); const int h = res.height(); From 66191609d6206536ee884bc536fb49120796ddde Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 28 Oct 2019 15:17:25 +0100 Subject: [PATCH 23/66] Forward declare wavelet_decomposition --- rtengine/cplx_wavelet_dec.h | 6 +----- rtengine/cplx_wavelet_filter_coeffs.h | 2 +- rtengine/cplx_wavelet_level.h | 8 ++------ rtengine/improcfun.h | 3 ++- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/rtengine/cplx_wavelet_dec.h b/rtengine/cplx_wavelet_dec.h index 91e71fcd5..c127a7adf 100644 --- a/rtengine/cplx_wavelet_dec.h +++ b/rtengine/cplx_wavelet_dec.h @@ -17,9 +17,7 @@ * 2010 Ilya Popov * 2012 Emil Martinec */ - -#ifndef CPLX_WAVELET_DEC_H_INCLUDED -#define CPLX_WAVELET_DEC_H_INCLUDED +#pragma once #include #include @@ -266,5 +264,3 @@ void wavelet_decomposition::reconstruct(E * dst, const float blend) } } - -#endif diff --git a/rtengine/cplx_wavelet_filter_coeffs.h b/rtengine/cplx_wavelet_filter_coeffs.h index 6b8255b89..6287fc03b 100644 --- a/rtengine/cplx_wavelet_filter_coeffs.h +++ b/rtengine/cplx_wavelet_filter_coeffs.h @@ -17,7 +17,7 @@ * 2012 Emil Martinec * 2014 Jacques Desmis */ - +#pragma once namespace rtengine { diff --git a/rtengine/cplx_wavelet_level.h b/rtengine/cplx_wavelet_level.h index 4c98addfe..8664606c6 100644 --- a/rtengine/cplx_wavelet_level.h +++ b/rtengine/cplx_wavelet_level.h @@ -17,10 +17,8 @@ * 2010 Ilya Popov * 2012 Emil Martinec * 2014 Ingo Weyrich - */ - -#ifndef CPLX_WAVELET_LEVEL_H_INCLUDED -#define CPLX_WAVELET_LEVEL_H_INCLUDED +*/ +#pragma once #include #include "rt_math.h" @@ -759,5 +757,3 @@ template template void wavelet_level::reconstruct_lev } #endif } - -#endif diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 684927e47..9b8d0f63f 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -31,13 +31,14 @@ #include "lcp.h" #include "dcp.h" #include "curves.h" -#include "cplx_wavelet_dec.h" #include "pipettebuffer.h" #include "gamutwarning.h" namespace rtengine { +class wavelet_decomposition; + namespace procparams { From eaf0eeff4e4020e8afb6e59216c3373e9444177f Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 28 Oct 2019 15:43:58 +0100 Subject: [PATCH 24/66] Forward declare CieImage --- rtengine/PF_correct_RT.cc | 1 + rtengine/cieimage.cc | 8 +++----- rtengine/cieimage.h | 6 +----- rtengine/dcrop.cc | 2 ++ rtengine/dirpyr_equalizer.cc | 2 ++ rtengine/improccoordinator.cc | 1 + rtengine/improcfun.cc | 1 + rtengine/improcfun.h | 3 +-- rtengine/ipsharpen.cc | 1 + rtengine/rtthumbnail.cc | 1 + rtengine/simpleprocess.cc | 1 + 11 files changed, 15 insertions(+), 12 deletions(-) diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index 7df042663..98c399bff 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -29,6 +29,7 @@ #include "gauss.h" #include "improcfun.h" +#include "cieimage.h" #include "sleef.c" #include "../rtgui/myflatcurve.h" #include "rt_math.h" diff --git a/rtengine/cieimage.cc b/rtengine/cieimage.cc index be122febf..f19808df7 100644 --- a/rtengine/cieimage.cc +++ b/rtengine/cieimage.cc @@ -1,5 +1,7 @@ #include "cieimage.h" -#include + +#include +#include namespace rtengine { @@ -10,7 +12,6 @@ CieImage::CieImage (int w, int h) : fromImage(false), W(w), H(h) M_p = new float*[H]; C_p = new float*[H]; sh_p = new float*[H]; - // ch_p = new float*[H]; h_p = new float*[H]; // Initialize the pointers to zero @@ -98,9 +99,6 @@ CieImage::CieImage (int w, int h) : fromImage(false), W(w), H(h) ++c; - // for (int i=0; i. */ -#ifndef _CIEIMAGE_H_ -#define _CIEIMAGE_H_ +#pragma once -#include "image16.h" #include "noncopyable.h" namespace rtengine @@ -39,7 +37,6 @@ public: float** M_p; float** C_p; float** sh_p; -// float** ch_p; float** h_p; CieImage (int w, int h); @@ -50,4 +47,3 @@ public: }; } -#endif diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 61b96b3a3..41e052b3e 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -17,6 +17,8 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include "cieimage.h" #include "curves.h" #include "dcrop.h" #include "mytime.h" diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index e822d8492..79f85a944 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -20,6 +20,8 @@ #include #include + +#include "cieimage.h" #include "improcfun.h" #include "array2D.h" #include "rt_math.h" diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 8b9e49124..5633f77fa 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "improccoordinator.h" +#include "cieimage.h" #include "curves.h" #include "mytime.h" #include "refreshmap.h" diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 5acf4e15d..56eaeaa55 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -24,6 +24,7 @@ #endif #include "alignedbuffer.h" +#include "cieimage.h" #include "rtengine.h" #include "improcfun.h" #include "curves.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 9b8d0f63f..41e4704b9 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -26,7 +26,6 @@ #include "coord2d.h" #include "color.h" #include "labimage.h" -#include "cieimage.h" #include "LUT.h" #include "lcp.h" #include "dcp.h" @@ -36,7 +35,7 @@ namespace rtengine { - +class CieImage; class wavelet_decomposition; namespace procparams diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 0b1332ec9..0ba94a7c4 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -18,6 +18,7 @@ */ #include "improcfun.h" +#include "cieimage.h" #include "gauss.h" #include "bilateral2.h" #include "jaggedarray.h" diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 25f50980d..704721e3f 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -16,6 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include "cieimage.h" #include "rtengine.h" #include "rtthumbnail.h" #include "../rtgui/options.h" diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 6dbb0e649..5a43e0a21 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -16,6 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include "cieimage.h" #include "rtengine.h" #include "colortemp.h" #include "imagesource.h" From 22e5348db7560800a415913818c9b39528adff32 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 28 Oct 2019 17:17:15 +0100 Subject: [PATCH 25/66] Forward declare LabImage --- rtengine/FTblockDN.cc | 1 + rtengine/PF_correct_RT.cc | 1 + rtengine/color.h | 1 - rtengine/dcrop.cc | 1 + rtengine/imagefloat.cc | 1 + rtengine/imagefloat.h | 1 + rtengine/improccoordinator.cc | 1 + rtengine/improcfun.cc | 1 + rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 1 + rtengine/iplabregions.cc | 1 + rtengine/iplocalcontrast.cc | 1 + rtengine/ipresize.cc | 1 + rtengine/ipshadowshighlights.cc | 1 + rtengine/ipsharpen.cc | 1 + rtengine/ipsoftlight.cc | 1 + rtengine/ipvibrance.cc | 1 + rtengine/ipwavelet.cc | 1 + rtengine/labimage.cc | 1 - rtengine/labimage.h | 6 +++--- rtengine/pipettebuffer.cc | 1 + rtengine/pipettebuffer.h | 1 + rtengine/rtthumbnail.cc | 1 + rtengine/simpleprocess.cc | 1 + 24 files changed, 24 insertions(+), 6 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 8fd0ba29e..117d8740a 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -30,6 +30,7 @@ #include "LUT.h" #include "array2D.h" #include "iccmatrices.h" +#include "labimage.h" #include "boxblur.h" #include "rt_math.h" #include "mytime.h" diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index 98c399bff..eb450dce9 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -30,6 +30,7 @@ #include "gauss.h" #include "improcfun.h" #include "cieimage.h" +#include "labimage.h" #include "sleef.c" #include "../rtgui/myflatcurve.h" #include "rt_math.h" diff --git a/rtengine/color.h b/rtengine/color.h index 2acf675d4..d0053470e 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -24,7 +24,6 @@ #include "rt_math.h" #include "LUT.h" -#include "labimage.h" #include "iccmatrices.h" #include "lcms2.h" #include "sleef.c" diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 41e052b3e..fe904527e 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -19,6 +19,7 @@ */ #include "cieimage.h" +#include "labimage.h" #include "curves.h" #include "dcrop.h" #include "mytime.h" diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 8a9a511a6..0b67e0785 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -20,6 +20,7 @@ #include "imagefloat.h" #include "image16.h" #include "image8.h" +#include "labimage.h" #include #include "rtengine.h" #include "mytime.h" diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 261a0677c..5250e16e8 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -31,6 +31,7 @@ using namespace procparams; class Image8; class Image16; +class LabImage; /* * Image type used by most tools; expected range: [0.0 ; 65535.0] diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 5633f77fa..c12e8132c 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -18,6 +18,7 @@ */ #include "improccoordinator.h" #include "cieimage.h" +#include "labimage.h" #include "curves.h" #include "mytime.h" #include "refreshmap.h" diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 56eaeaa55..e446f21a0 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -25,6 +25,7 @@ #include "alignedbuffer.h" #include "cieimage.h" +#include "labimage.h" #include "rtengine.h" #include "improcfun.h" #include "curves.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 41e4704b9..05c06e0ef 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -25,7 +25,6 @@ #include "shmap.h" #include "coord2d.h" #include "color.h" -#include "labimage.h" #include "LUT.h" #include "lcp.h" #include "dcp.h" @@ -36,6 +35,7 @@ namespace rtengine { class CieImage; +class LabImage; class wavelet_decomposition; namespace procparams diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 14aeb4049..8854331e4 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "rtengine.h" +#include "labimage.h" #include "improcfun.h" #include #include "iccstore.h" diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index af6567c3c..2462959bf 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -23,6 +23,7 @@ #endif #include "improcfun.h" +#include "labimage.h" #include "guidedfilter.h" #include "procparams.h" //#define BENCHMARK diff --git a/rtengine/iplocalcontrast.cc b/rtengine/iplocalcontrast.cc index 6143f48a3..4e6c32e7e 100644 --- a/rtengine/iplocalcontrast.cc +++ b/rtengine/iplocalcontrast.cc @@ -28,6 +28,7 @@ #include "array2D.h" #include "gauss.h" +#include "labimage.h" #include "improcfun.h" #include "procparams.h" diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index 0c1fb1ad8..601ec146d 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -20,6 +20,7 @@ #include "improcfun.h" #include "alignedbuffer.h" +#include "labimage.h" #include "opthelper.h" #include "rt_math.h" #include "procparams.h" diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index cddc8734b..7680ae6c7 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -22,6 +22,7 @@ #include "gauss.h" #include "guidedfilter.h" +#include "labimage.h" #include "opthelper.h" #include "procparams.h" #include "sleef.c" diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 0ba94a7c4..1b3ab6270 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -19,6 +19,7 @@ #include "improcfun.h" #include "cieimage.h" +#include "labimage.h" #include "gauss.h" #include "bilateral2.h" #include "jaggedarray.h" diff --git a/rtengine/ipsoftlight.cc b/rtengine/ipsoftlight.cc index cd49e858f..e0dc6aa40 100644 --- a/rtengine/ipsoftlight.cc +++ b/rtengine/ipsoftlight.cc @@ -20,6 +20,7 @@ */ #include "improcfun.h" +#include "labimage.h" #include "procparams.h" diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index a7199064a..365dff587 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -23,6 +23,7 @@ #include "rtengine.h" #include "improcfun.h" #include "iccstore.h" +#include "labimage.h" #include "mytime.h" #include "../rtgui/thresholdselector.h" #include "curves.h" diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 6631aae32..078b9d585 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -30,6 +30,7 @@ #include "rtengine.h" #include "improcfun.h" +#include "labimage.h" #include "LUT.h" #include "array2D.h" #include "rt_math.h" diff --git a/rtengine/labimage.cc b/rtengine/labimage.cc index b31bc89a1..153af4c75 100644 --- a/rtengine/labimage.cc +++ b/rtengine/labimage.cc @@ -17,7 +17,6 @@ * along with RawTherapee. If not, see . */ -#include #include #include "labimage.h" diff --git a/rtengine/labimage.h b/rtengine/labimage.h index bcc2484ab..79f003b07 100644 --- a/rtengine/labimage.h +++ b/rtengine/labimage.h @@ -16,8 +16,9 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LABIMAGE_H_ -#define _LABIMAGE_H_ +#pragma once + +#include namespace rtengine { @@ -45,4 +46,3 @@ public: }; } -#endif diff --git a/rtengine/pipettebuffer.cc b/rtengine/pipettebuffer.cc index d915381ef..11cf50ae9 100644 --- a/rtengine/pipettebuffer.cc +++ b/rtengine/pipettebuffer.cc @@ -20,6 +20,7 @@ #include "pipettebuffer.h" #include "imagefloat.h" +#include "labimage.h" #include "../rtgui/editcallbacks.h" diff --git a/rtengine/pipettebuffer.h b/rtengine/pipettebuffer.h index 01b24720c..ef8a5f69a 100644 --- a/rtengine/pipettebuffer.h +++ b/rtengine/pipettebuffer.h @@ -31,6 +31,7 @@ namespace rtengine { class Imagefloat; +class LabImage; /// @brief Structure that contains information about and pointers to the Edit buffer class PipetteBuffer diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 704721e3f..b30bf3eb4 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "cieimage.h" +#include "labimage.h" #include "rtengine.h" #include "rtthumbnail.h" #include "../rtgui/options.h" diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 5a43e0a21..2eb640fca 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "cieimage.h" +#include "labimage.h" #include "rtengine.h" #include "colortemp.h" #include "imagesource.h" From 20726d5bfe505f206aa36ff8c900dbd0f3da77b0 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 28 Oct 2019 20:01:16 +0100 Subject: [PATCH 26/66] Forward declare Imagefloat --- rtengine/FTblockDN.cc | 1 + rtengine/dcp.cc | 1 + rtengine/dcp.h | 3 ++- rtengine/dcrop.cc | 1 + rtengine/dual_demosaic_RT.cc | 18 +++++++++--------- rtengine/filmnegativeproc.cc | 2 +- rtengine/image16.h | 2 +- rtengine/image8.cc | 1 + rtengine/image8.h | 2 +- rtengine/imagefloat.h | 5 +---- rtengine/imagesource.h | 10 +++++----- rtengine/improccoordinator.cc | 1 + rtengine/improcfun.h | 10 +++++----- rtengine/ipdehaze.cc | 1 + rtengine/iplab2rgb.cc | 1 + rtengine/ipresize.cc | 1 + rtengine/ipretinex.cc | 2 +- rtengine/ipsharpen.cc | 6 +++--- rtengine/iptransform.cc | 1 + rtengine/lcp.cc | 3 ++- rtengine/lcp.h | 12 ++++++++++-- rtengine/pixelshift.cc | 24 ++++++++++++------------ rtengine/rawimagesource.cc | 1 + rtengine/rawimagesource.h | 16 ++++++++-------- rtengine/rtlensfun.cc | 3 ++- rtengine/rtlensfun.h | 6 ++++-- rtengine/shmap.cc | 1 + rtengine/shmap.h | 4 ++-- rtengine/simpleprocess.cc | 1 + rtengine/stdimagesource.cc | 1 + rtengine/stdimagesource.h | 16 +++++++++++++--- rtengine/tmo_fattal02.cc | 1 + 32 files changed, 96 insertions(+), 62 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 117d8740a..8cd9a4086 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -30,6 +30,7 @@ #include "LUT.h" #include "array2D.h" #include "iccmatrices.h" +#include "imagefloat.h" #include "labimage.h" #include "boxblur.h" #include "rt_math.h" diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 8127ebfcb..6376968e6 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -27,6 +27,7 @@ #include "cJSON.h" #include "iccmatrices.h" #include "iccstore.h" +#include "imagefloat.h" #include "improcfun.h" #include "rawimagesource.h" #include "rt_math.h" diff --git a/rtengine/dcp.h b/rtengine/dcp.h index 826f073a5..ba8be93eb 100644 --- a/rtengine/dcp.h +++ b/rtengine/dcp.h @@ -28,7 +28,6 @@ #include "../rtgui/threadutils.h" -#include "imagefloat.h" #include "curves.h" #include "colortemp.h" #include "noncopyable.h" @@ -36,6 +35,8 @@ namespace rtengine { +class Imagefloat; + class DCPProfile final { public: diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index fe904527e..bc09f5348 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -19,6 +19,7 @@ */ #include "cieimage.h" +#include "imagefloat.h" #include "labimage.h" #include "curves.h" #include "dcrop.h" diff --git a/rtengine/dual_demosaic_RT.cc b/rtengine/dual_demosaic_RT.cc index 60cce506b..895d7c6fc 100644 --- a/rtengine/dual_demosaic_RT.cc +++ b/rtengine/dual_demosaic_RT.cc @@ -37,22 +37,22 @@ using namespace std; namespace rtengine { -void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, double &contrast, bool autoContrast) +void RawImageSource::dual_demosaic_RT(bool isBayer, const procparams::RAWParams &raw, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, double &contrast, bool autoContrast) { BENCHFUN if (contrast == 0.f && !autoContrast) { // contrast == 0.0 means only first demosaicer will be used if(isBayer) { - if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4) ) { + if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4) ) { amaze_demosaic_RT(0, 0, winw, winh, rawData, red, green, blue, options.chunkSizeAMAZE, options.measure); - } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCBVNG4) ) { + } else if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::DCBVNG4) ) { dcb_demosaic(raw.bayersensor.dcb_iterations, raw.bayersensor.dcb_enhance); - } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::RCDVNG4) ) { + } else if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::RCDVNG4) ) { rcd_demosaic(options.chunkSizeRCD, options.measure); } } else { - if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) { + if (raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::FOUR_PASS) ) { xtrans_interpolate (3, true, options.chunkSizeXT, options.measure); } else { xtrans_interpolate (1, false, options.chunkSizeXT, options.measure); @@ -70,15 +70,15 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi if (isBayer) { vng4_demosaic(rawData, redTmp, greenTmp, blueTmp); - if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4) || raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)) { + if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4) || raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::PIXELSHIFT)) { amaze_demosaic_RT(0, 0, winw, winh, rawData, red, green, blue, options.chunkSizeAMAZE, options.measure); - } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCBVNG4) ) { + } else if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::DCBVNG4) ) { dcb_demosaic(raw.bayersensor.dcb_iterations, raw.bayersensor.dcb_enhance); - } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::RCDVNG4) ) { + } else if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::RCDVNG4) ) { rcd_demosaic(options.chunkSizeRCD, options.measure); } } else { - if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) { + if (raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::FOUR_PASS) ) { xtrans_interpolate (3, true, options.chunkSizeXT, options.measure); } else { xtrans_interpolate (1, false, options.chunkSizeXT, options.measure); diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 4293c6b2a..81de775a3 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -98,7 +98,7 @@ bool channelsAvg( } -bool rtengine::RawImageSource::getFilmNegativeExponents(Coord2D spotA, Coord2D spotB, int tran, const FilmNegativeParams ¤tParams, std::array& newExps) +bool rtengine::RawImageSource::getFilmNegativeExponents(Coord2D spotA, Coord2D spotB, int tran, const procparams::FilmNegativeParams ¤tParams, std::array& newExps) { newExps = { static_cast(currentParams.redRatio * currentParams.greenExp), diff --git a/rtengine/image16.h b/rtengine/image16.h index 07747a172..c16b7dd0d 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -24,12 +24,12 @@ #include "imageio.h" #include "rtengine.h" -#include "imagefloat.h" namespace rtengine { class Image8; +class Imagefloat; class Image16 : public IImage16, public ImageIO { diff --git a/rtengine/image8.cc b/rtengine/image8.cc index abcd4efae..fb71e94a4 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -19,6 +19,7 @@ #include #include #include "image8.h" +#include "imagefloat.h" #include "rtengine.h" using namespace rtengine; diff --git a/rtengine/image8.h b/rtengine/image8.h index 969627f69..2fa2528ed 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -24,10 +24,10 @@ #include "imageio.h" #include "rtengine.h" -#include "imagefloat.h" namespace rtengine { +class Imagefloat; class Image8 : public IImage8, public ImageIO { diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 5250e16e8..4a2b2f7e1 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -19,11 +19,9 @@ // // A class representing a 16 bit rgb image with separate planes and 16 byte aligned data // -#ifndef _IMAGEFLOAT_ -#define _IMAGEFLOAT_ +#pragma once #include "imageio.h" -#include "rtengine.h" namespace rtengine { @@ -228,4 +226,3 @@ public: }; } -#endif diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index edc1102c4..065a2e582 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -29,12 +29,12 @@ #include "image16.h" #include "image8.h" #include "imagedata.h" -#include "imagefloat.h" #include "LUT.h" #include "rtengine.h" namespace rtengine { +class Imagefloat; namespace procparams { @@ -47,7 +47,7 @@ struct RAWParams; struct RetinexParams; struct ToneCurveParams; struct CaptureSharpeningParams; -} +}; class ImageMatrices { @@ -82,7 +82,7 @@ public: virtual int load (const Glib::ustring &fname) = 0; virtual void preprocess (const procparams::RAWParams &raw, const procparams::LensProfParams &lensProf, const procparams::CoarseTransformParams& coarse, bool prepareDenoise = true) {}; virtual void filmNegativeProcess (const procparams::FilmNegativeParams ¶ms) {}; - virtual bool getFilmNegativeExponents (Coord2D spotA, Coord2D spotB, int tran, const FilmNegativeParams& currentParams, std::array& newExps) { return false; }; + virtual bool getFilmNegativeExponents (Coord2D spotA, Coord2D spotB, int tran, const procparams::FilmNegativeParams& currentParams, std::array& newExps) { return false; }; virtual void demosaic (const procparams::RAWParams &raw, bool autoContrast, double &contrastThreshold, bool cache = false) {}; virtual void retinex (const procparams::ColorManagementParams& cmp, const procparams::RetinexParams &deh, const procparams::ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) {}; virtual void retinexPrepareCurves (const procparams::RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) {}; @@ -101,13 +101,13 @@ public: // use right after demosaicing image, add coarse transformation and put the result in the provided Imagefloat* - virtual void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hlp, const RAWParams &raw) = 0; + virtual void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hlp, const procparams::RAWParams &raw) = 0; virtual eSensorType getSensorType () const = 0; virtual bool isMono () const = 0; // true is ready to provide the AutoWB, i.e. when the image has been demosaiced for RawImageSource virtual bool isWBProviderReady () = 0; - virtual void convertColorSpace (Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) = 0; // DIRTY HACK: this method is derived in rawimagesource and strimagesource, but (...,RAWParams raw) will be used ONLY for raw images + virtual void convertColorSpace (Imagefloat* image, const procparams::ColorManagementParams &cmp, const ColorTemp &wb) = 0; // DIRTY HACK: this method is derived in rawimagesource and strimagesource, but (...,RAWParams raw) will be used ONLY for raw images virtual void getAutoWBMultipliers (double &rm, double &gm, double &bm) = 0; virtual ColorTemp getWB () const = 0; virtual ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) = 0; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index c12e8132c..d75f515bf 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -18,6 +18,7 @@ */ #include "improccoordinator.h" #include "cieimage.h" +#include "imagefloat.h" #include "labimage.h" #include "curves.h" #include "mytime.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 05c06e0ef..80e750a26 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -19,7 +19,6 @@ #ifndef _IMPROCFUN_H_ #define _IMPROCFUN_H_ -#include "imagefloat.h" #include "image16.h" #include "image8.h" #include "shmap.h" @@ -35,6 +34,7 @@ namespace rtengine { class CieImage; +class Imagefloat; class LabImage; class wavelet_decomposition; @@ -57,7 +57,7 @@ class ImProcFunctions cmsHTRANSFORM monitorTransform; std::unique_ptr gamutWarning; - const ProcParams* params; + const procparams::ProcParams* params; double scale; bool multiThread; @@ -90,7 +90,7 @@ public: double lumimul[3]; - explicit ImProcFunctions(const ProcParams* iparams, bool imultiThread = true) + explicit ImProcFunctions(const procparams::ProcParams* iparams, bool imultiThread = true) : monitorTransform(nullptr), params(iparams), scale(1), multiThread(imultiThread), lumimul{} {} ~ImProcFunctions(); bool needsLuminanceOnly() @@ -122,7 +122,7 @@ public: void moyeqt(Imagefloat* working, float &moyS, float &eqty); void luminanceCurve(LabImage* lold, LabImage* lnew, LUTf &curve); - void ciecam_02float(CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params, + void ciecam_02float(CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const procparams::ProcParams* params, const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3, LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt, bool showSharpMask = false); @@ -132,7 +132,7 @@ public: void sharpening(LabImage* lab, const procparams::SharpeningParams &sharpenParam, bool showMask = false); void sharpeningcam(CieImage* ncie, float** buffer, bool showMask = false); void transform(Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage); - float resizeScale(const ProcParams* params, int fw, int fh, int &imw, int &imh); + float resizeScale(const procparams::ProcParams* params, int fw, int fh, int &imw, int &imh); void lab2monitorRgb(LabImage* lab, Image8* image); void resize(Imagefloat* src, Imagefloat* dst, float dScale); void Lanczos(const LabImage* src, LabImage* dst, float scale); diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index e7bf71ba6..e3c86454f 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -33,6 +33,7 @@ #include #include "guidedfilter.h" +#include "imagefloat.h" #include "improcfun.h" #include "procparams.h" #include "rescale.h" diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 8854331e4..c5c3f97d1 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "rtengine.h" +#include "imagefloat.h" #include "labimage.h" #include "improcfun.h" #include diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index 601ec146d..b31fcf864 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -20,6 +20,7 @@ #include "improcfun.h" #include "alignedbuffer.h" +#include "imagefloat.h" #include "labimage.h" #include "opthelper.h" #include "rt_math.h" diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index de6f4960a..e443b5bca 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -137,7 +137,7 @@ namespace rtengine extern const Settings* settings; -void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) +void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const procparams::RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) { BENCHFUN if (!deh.enabled) { diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 1b3ab6270..1223ff9ce 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -34,7 +34,7 @@ using namespace std; namespace { -void sharpenHaloCtrl (float** luminance, float** blurmap, float** base, float** blend, int W, int H, const SharpeningParams &sharpenParam) +void sharpenHaloCtrl (float** luminance, float** blurmap, float** base, float** blend, int W, int H, const procparams::SharpeningParams &sharpenParam) { const float scale = (100.f - sharpenParam.halocontrol_amount) * 0.01f; @@ -160,7 +160,7 @@ namespace rtengine extern const Settings* settings; -void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, const float * const * blend, int W, int H, const SharpeningParams &sharpenParam, double Scale) +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) { return; @@ -243,7 +243,7 @@ BENCHFUN delete blurbuffer; } -void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpenParam, bool showMask) +void ImProcFunctions::sharpening (LabImage* lab, const procparams::SharpeningParams &sharpenParam, bool showMask) { if ((!sharpenParam.enabled) || sharpenParam.amount < 1 || lab->W < 8 || lab->H < 8) { diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index 69b57d0ba..b6338b8d3 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -22,6 +22,7 @@ #include #endif +#include "imagefloat.h" #include "improcfun.h" #include "mytime.h" diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index b456fc478..ddf3e0643 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -31,6 +31,7 @@ #include "procparams.h" #include "settings.h" +#include "utils.h" namespace rtengine { @@ -984,7 +985,7 @@ rtengine::LCPMapper::LCPMapper( bool useCADistP, int fullWidth, int fullHeight, - const CoarseTransformParams& coarse, + const procparams::CoarseTransformParams& coarse, int rawRotationDeg ) : enableCA(false), diff --git a/rtengine/lcp.h b/rtengine/lcp.h index 30b7e5191..ebfa350ac 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -29,12 +29,20 @@ #include #include "cache.h" -#include "imagefloat.h" #include "opthelper.h" namespace rtengine { +namespace procparams +{ + +class ProcParams; + +struct CoarseTransformParams; + +} + enum class LCPCorrectionMode { VIGNETTE, DISTORTION, @@ -185,7 +193,7 @@ public: bool useCADistP, int fullWidth, int fullHeight, - const CoarseTransformParams& coarse, + const procparams::CoarseTransformParams& coarse, int rawRotationDeg ); diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index 4b93f3f61..abe6a0536 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -295,7 +295,7 @@ void calcFrameBrightnessFactor(unsigned int frame, uint32_t datalen, LUTu *histo using namespace std; using namespace rtengine; -void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParamsIn, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection) +void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const procparams::RAWParams &rawParamsIn, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection) { BENCHFUN if(numFrames != 4) { // fallback for non pixelshift files @@ -303,15 +303,15 @@ BENCHFUN return; } - RAWParams::BayerSensor bayerParams = rawParamsIn.bayersensor; + procparams::RAWParams::BayerSensor bayerParams = rawParamsIn.bayersensor; bool motionDetection = true; - if(bayerParams.pixelShiftMotionCorrectionMethod == RAWParams::BayerSensor::PSMotionCorrectionMethod::AUTO) { + if(bayerParams.pixelShiftMotionCorrectionMethod == procparams::RAWParams::BayerSensor::PSMotionCorrectionMethod::AUTO) { bool pixelShiftEqualBright = bayerParams.pixelShiftEqualBright; bayerParams.setPixelShiftDefaults(); bayerParams.pixelShiftEqualBright = pixelShiftEqualBright; - } else if(bayerParams.pixelShiftMotionCorrectionMethod == RAWParams::BayerSensor::PSMotionCorrectionMethod::OFF) { + } else if(bayerParams.pixelShiftMotionCorrectionMethod == procparams::RAWParams::BayerSensor::PSMotionCorrectionMethod::OFF) { motionDetection = false; bayerParams.pixelShiftShowMotion = false; } @@ -323,9 +323,9 @@ BENCHFUN if(motionDetection) { if(!showOnlyMask) { if(bayerParams.pixelShiftMedian) { // We need the demosaiced frames for motion correction - if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { + if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.lmmse_iterations); - } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { + } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[0]), red, green, blue, options.chunkSizeAMAZE, options.measure); @@ -335,9 +335,9 @@ BENCHFUN multi_array2D blueTmp(winw, winh); for(int i = 0; i < 3; i++) { - if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { + if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.lmmse_iterations); - } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { + } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], options.chunkSizeAMAZE, options.measure); @@ -362,11 +362,11 @@ BENCHFUN } } } else { - if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { + if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, rawData, red, green, blue, bayerParams.lmmse_iterations); - } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { - RAWParams rawParamsTmp = rawParamsIn; - rawParamsTmp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4); + } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(procparams::RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { + procparams::RAWParams rawParamsTmp = rawParamsIn; + rawParamsTmp.bayersensor.method = procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4); dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, rawData, red, green, blue, options.chunkSizeAMAZE, options.measure); diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index ed1e45394..d7e8ac812 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -20,6 +20,7 @@ #include #include "rtengine.h" +#include "imagefloat.h" #include "rawimagesource.h" #include "rawimagesource_i.h" #include "jaggedarray.h" diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 37d927445..ab8459f20 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -122,7 +122,7 @@ public: int load(const Glib::ustring &fname, bool firstFrameOnly); void preprocess (const procparams::RAWParams &raw, const procparams::LensProfParams &lensProf, const procparams::CoarseTransformParams& coarse, bool prepareDenoise = true) override; void filmNegativeProcess (const procparams::FilmNegativeParams ¶ms) override; - bool getFilmNegativeExponents (Coord2D spotA, Coord2D spotB, int tran, const FilmNegativeParams ¤tParams, std::array& newExps) override; + bool getFilmNegativeExponents (Coord2D spotA, Coord2D spotB, int tran, const procparams::FilmNegativeParams ¤tParams, std::array& newExps) override; void demosaic (const procparams::RAWParams &raw, bool autoContrast, double &contrastThreshold, bool cache = false) override; void retinex (const procparams::ColorManagementParams& cmp, const procparams::RetinexParams &deh, const procparams::ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) override; void retinexPrepareCurves (const procparams::RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) override; @@ -138,10 +138,10 @@ public: return rgbSourceModified; // tracks whether cached rgb output of demosaic has been modified } - void processFlatField(const RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]); - void copyOriginalPixels(const RAWParams &raw, RawImage *ri, RawImage *riDark, RawImage *riFlatFile, array2D &rawData ); + void processFlatField(const procparams::RAWParams &raw, RawImage *riFlatFile, unsigned short black[4]); + void copyOriginalPixels(const procparams::RAWParams &raw, RawImage *ri, RawImage *riDark, RawImage *riFlatFile, array2D &rawData ); void cfaboxblur (RawImage *riFlatFile, float* cfablur, int boxH, int boxW); - void scaleColors (int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData); // raw for cblack + void scaleColors (int winx, int winy, int winw, int winh, const procparams::RAWParams &raw, array2D &rawData); // raw for cblack void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hrp, const procparams::RAWParams &raw) override; eSensorType getSensorType () const override @@ -195,13 +195,13 @@ public: void convertColorSpace(Imagefloat* image, const procparams::ColorManagementParams &cmp, const ColorTemp &wb) override; static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in); - static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName) + static void colorSpaceConversion (Imagefloat* im, const procparams::ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName) { colorSpaceConversion_ (im, cmp, wb, pre_mul, embedded, camprofile, cam, camName); } static void inverse33 (const double (*coeff)[3], double (*icoeff)[3]); - void MSR(float** luminance, float **originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); + void MSR(float** luminance, float **originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const procparams::RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); void HLRecovery_inpaint (float** red, float** green, float** blue) override; static void HLRecovery_Luminance (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval); static void HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]); @@ -282,7 +282,7 @@ protected: void igv_interpolate(int winw, int winh); void lmmse_interpolate_omp(int winw, int winh, array2D &rawData, array2D &red, array2D &green, array2D &blue, int iterations); void amaze_demosaic_RT(int winx, int winy, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, size_t chunkSize = 1, bool measure = false);//Emil's code for AMaZE - void dual_demosaic_RT(bool isBayer, const RAWParams &raw, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, double &contrast, bool autoContrast = false); + void dual_demosaic_RT(bool isBayer, const procparams::RAWParams &raw, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, double &contrast, bool autoContrast = false); void fast_demosaic();//Emil's code for fast demosaicing void dcb_demosaic(int iterations, bool dcb_enhance); void ahd_demosaic(); @@ -307,7 +307,7 @@ protected: void xtransborder_interpolate (int border, array2D &red, array2D &green, array2D &blue); void xtrans_interpolate (const int passes, const bool useCieLab, size_t chunkSize = 1, bool measure = false); void fast_xtrans_interpolate (const array2D &rawData, array2D &red, array2D &green, array2D &blue); - void pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection); + void pixelshift(int winx, int winy, int winw, int winh, const procparams::RAWParams &rawParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection); void hflip (Imagefloat* im); void vflip (Imagefloat* im); void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override; diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 8c634eaa8..1fcb5ec26 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -19,6 +19,7 @@ */ #include "rtlensfun.h" +#include "imagedata.h" #include "procparams.h" #include "settings.h" #include @@ -500,7 +501,7 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons } -std::unique_ptr LFDatabase::findModifier(const LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const CoarseTransformParams &coarse, int rawRotationDeg) +std::unique_ptr LFDatabase::findModifier(const procparams::LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const procparams::CoarseTransformParams &coarse, int rawRotationDeg) { Glib::ustring make, model, lens; float focallen = idata->getFocalLen(); diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index 092e2bf01..2a7571b58 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -32,11 +32,13 @@ namespace rtengine { +class FramesMetaData; + namespace procparams { +struct CoarseTransformParams; struct LensProfParams; - } class LFModifier final : @@ -119,7 +121,7 @@ public: LFCamera findCamera(const Glib::ustring &make, const Glib::ustring &model) const; LFLens findLens(const LFCamera &camera, const Glib::ustring &name) const; - static std::unique_ptr findModifier(const procparams::LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const CoarseTransformParams &coarse, int rawRotationDeg); + static std::unique_ptr findModifier(const procparams::LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const procparams::CoarseTransformParams &coarse, int rawRotationDeg); private: std::unique_ptr getModifier(const LFCamera &camera, const LFLens &lens, diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index 368442f2b..f654ab51d 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -18,6 +18,7 @@ */ #include "shmap.h" #include "gauss.h" +#include "imagefloat.h" #include "rtengine.h" #include "rt_math.h" #include "rawimagesource.h" diff --git a/rtengine/shmap.h b/rtengine/shmap.h index 539ef99ff..f07759a2c 100644 --- a/rtengine/shmap.h +++ b/rtengine/shmap.h @@ -19,12 +19,12 @@ #ifndef __SHMAP__ #define __SHMAP__ -#include "imagefloat.h" -#include "image16.h" +#include "LUT.h" #include "noncopyable.h" namespace rtengine { +class Imagefloat; class SHMap : public NonCopyable diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 2eb640fca..71edba62c 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "cieimage.h" +#include "imagefloat.h" #include "labimage.h" #include "rtengine.h" #include "colortemp.h" diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 2ec1529f7..eddd12ae4 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -21,6 +21,7 @@ #include "color.h" #include "curves.h" #include "iccstore.h" +#include "imagefloat.h" #include "imageio.h" #include "mytime.h" #include "procparams.h" diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index 0dffe2fd0..2db2fdf57 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -23,6 +23,16 @@ namespace rtengine { +namespace procparams +{ + +class ProcParams; + +struct ToneCurveParams; +struct RAWParams; +struct ColorManagementParams; + +} class StdImageSource : public ImageSource { @@ -43,7 +53,7 @@ public: ~StdImageSource () override; int load (const Glib::ustring &fname) override; - void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override; + void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hrp, const procparams::RAWParams &raw) override; ColorTemp getWB () const override { return wb; @@ -87,8 +97,8 @@ public: plistener = pl; } - void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override;// RAWParams raw will not be used for non-raw files (see imagesource.h) - static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams &cmp, cmsHPROFILE embedded, IIOSampleFormat sampleFormat); + void convertColorSpace(Imagefloat* image, const procparams::ColorManagementParams &cmp, const ColorTemp &wb) override;// RAWParams raw will not be used for non-raw files (see imagesource.h) + static void colorSpaceConversion (Imagefloat* im, const procparams::ColorManagementParams &cmp, cmsHPROFILE embedded, IIOSampleFormat sampleFormat); bool isRGBSourceModified() const override { diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index 6b5460ffd..f1822b486 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -66,6 +66,7 @@ #include #include "array2D.h" +#include "imagefloat.h" #include "improcfun.h" #include "settings.h" #include "iccstore.h" From 54b6b53e128c636b4711801967cc951ff60522b9 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 28 Oct 2019 21:03:45 +0100 Subject: [PATCH 27/66] Reduce image16.h dependencies --- rtengine/dcrop.h | 1 - rtengine/image16.cc | 5 +++-- rtengine/image16.h | 5 +---- rtengine/imagesource.h | 1 - rtengine/improccoordinator.h | 1 - rtengine/improcfun.h | 1 - rtengine/stdimagesource.cc | 1 + 7 files changed, 5 insertions(+), 10 deletions(-) diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h index 6ce034f3f..ff046dd68 100644 --- a/rtengine/dcrop.h +++ b/rtengine/dcrop.h @@ -22,7 +22,6 @@ #include "rtengine.h" #include "improcfun.h" #include "image8.h" -#include "image16.h" #include "imagesource.h" #include "procevents.h" #include "pipettebuffer.h" diff --git a/rtengine/image16.cc b/rtengine/image16.cc index 0cdcc578f..14ba4964d 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -16,11 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include + #include "image16.h" #include "imagefloat.h" #include "image8.h" -#include -#include "rtengine.h" +#include "rt_math.h" namespace { diff --git a/rtengine/image16.h b/rtengine/image16.h index c16b7dd0d..d0053cbfc 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -19,11 +19,9 @@ // // A class representing a 16 bit rgb image with separate planes and 16 byte aligned data // -#ifndef _IMAGE16_ -#define _IMAGE16_ +#pragma once #include "imageio.h" -#include "rtengine.h" namespace rtengine { @@ -109,4 +107,3 @@ public: }; } -#endif diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 065a2e582..614e7c23c 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -26,7 +26,6 @@ #include "colortemp.h" #include "coord2d.h" #include "dcp.h" -#include "image16.h" #include "image8.h" #include "imagedata.h" #include "LUT.h" diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 379a3fb20..2969184bc 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -24,7 +24,6 @@ #include "rtengine.h" #include "improcfun.h" #include "image8.h" -#include "image16.h" #include "imagesource.h" #include "procevents.h" #include "dcrop.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 80e750a26..189722846 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -19,7 +19,6 @@ #ifndef _IMPROCFUN_H_ #define _IMPROCFUN_H_ -#include "image16.h" #include "image8.h" #include "shmap.h" #include "coord2d.h" diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index eddd12ae4..c0befef7f 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -21,6 +21,7 @@ #include "color.h" #include "curves.h" #include "iccstore.h" +#include "image16.h" #include "imagefloat.h" #include "imageio.h" #include "mytime.h" From e92a99350b83ab4ff129b57bcde32ed886dad75c Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 11:44:00 +0100 Subject: [PATCH 28/66] Forward declare Image8 --- rtengine/dcrop.cc | 1 + rtengine/dcrop.h | 3 ++- rtengine/demosaic_algos.cc | 1 - rtengine/gamutwarning.cc | 4 +++- rtengine/gamutwarning.h | 3 ++- rtengine/image8.h | 5 +---- rtengine/imagesource.h | 1 - rtengine/improccoordinator.cc | 1 + rtengine/improccoordinator.h | 3 ++- rtengine/improcfun.h | 2 +- rtengine/iplab2rgb.cc | 1 + rtengine/stdimagesource.cc | 1 + rtengine/stdimagesource.h | 3 +++ 13 files changed, 18 insertions(+), 11 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index bc09f5348..85074fd96 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -19,6 +19,7 @@ */ #include "cieimage.h" +#include "image8.h" #include "imagefloat.h" #include "labimage.h" #include "curves.h" diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h index ff046dd68..c65c1e72f 100644 --- a/rtengine/dcrop.h +++ b/rtengine/dcrop.h @@ -21,7 +21,6 @@ #include "improccoordinator.h" #include "rtengine.h" #include "improcfun.h" -#include "image8.h" #include "imagesource.h" #include "procevents.h" #include "pipettebuffer.h" @@ -30,6 +29,8 @@ namespace rtengine { +class Image8; + using namespace procparams; class ImProcCoordinator; diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 51db8bb3f..52e15be54 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -22,7 +22,6 @@ #include "rawimagesource.h" #include "rawimage.h" #include "mytime.h" -#include "image8.h" #include "rt_math.h" #include "color.h" #include "../rtgui/multilangmgr.h" diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index 3fc20d43a..fe6b7c0dc 100644 --- a/rtengine/gamutwarning.cc +++ b/rtengine/gamutwarning.cc @@ -23,9 +23,11 @@ * also distributed under the GPL V3+ */ -#include "gamutwarning.h" #include +#include "gamutwarning.h" +#include "image8.h" + namespace rtengine { GamutWarning::GamutWarning(cmsHPROFILE iprof, cmsHPROFILE gamutprof, RenderingIntent intent, bool gamutbpc): diff --git a/rtengine/gamutwarning.h b/rtengine/gamutwarning.h index e0aaa98d9..b7ac5e41d 100644 --- a/rtengine/gamutwarning.h +++ b/rtengine/gamutwarning.h @@ -27,10 +27,11 @@ #include "iccstore.h" #include "noncopyable.h" -#include "image8.h" namespace rtengine { +class Image8; + enum RenderingIntent : int; class GamutWarning: public NonCopyable { diff --git a/rtengine/image8.h b/rtengine/image8.h index 2fa2528ed..f125dccf8 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -19,11 +19,9 @@ // // A class representing a 8 bit rgb image without alpha channel // -#ifndef _IMAGE8_ -#define _IMAGE8_ +#pragma once #include "imageio.h" -#include "rtengine.h" namespace rtengine { @@ -104,4 +102,3 @@ public: }; } -#endif diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 614e7c23c..428027bc0 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -26,7 +26,6 @@ #include "colortemp.h" #include "coord2d.h" #include "dcp.h" -#include "image8.h" #include "imagedata.h" #include "LUT.h" #include "rtengine.h" diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index d75f515bf..0ab015fd3 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -18,6 +18,7 @@ */ #include "improccoordinator.h" #include "cieimage.h" +#include "image8.h" #include "imagefloat.h" #include "labimage.h" #include "curves.h" diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 2969184bc..e7199565b 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -23,7 +23,6 @@ #include "rtengine.h" #include "improcfun.h" -#include "image8.h" #include "imagesource.h" #include "procevents.h" #include "dcrop.h" @@ -33,6 +32,8 @@ namespace rtengine { +class Image8; + using namespace procparams; class Crop; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 189722846..b3ba2ccb8 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -19,7 +19,6 @@ #ifndef _IMPROCFUN_H_ #define _IMPROCFUN_H_ -#include "image8.h" #include "shmap.h" #include "coord2d.h" #include "color.h" @@ -33,6 +32,7 @@ namespace rtengine { class CieImage; +class Image8; class Imagefloat; class LabImage; class wavelet_decomposition; diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index c5c3f97d1..451a68a3f 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "rtengine.h" +#include "image8.h" #include "imagefloat.h" #include "labimage.h" #include "improcfun.h" diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index c0befef7f..43628e074 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -21,6 +21,7 @@ #include "color.h" #include "curves.h" #include "iccstore.h" +#include "image8.h" #include "image16.h" #include "imagefloat.h" #include "imageio.h" diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index 2db2fdf57..632b84ccb 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -23,6 +23,9 @@ namespace rtengine { + +class ImageIO; + namespace procparams { From 3aa84c48da4d46509ac7c798a8f16c9d021a3cc9 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 12:33:14 +0100 Subject: [PATCH 29/66] Forward declare ColorTemp --- rtengine/ahd_demosaic_RT.cc | 1 + rtengine/clutstore.cc | 1 + rtengine/colortemp.h | 4 +--- rtengine/dcp.h | 2 +- rtengine/dcrop.cc | 1 + rtengine/image16.cc | 1 + rtengine/image8.cc | 2 ++ rtengine/imagefloat.cc | 2 ++ rtengine/imageio.h | 2 +- rtengine/imagesource.h | 2 +- rtengine/improccoordinator.cc | 1 + rtengine/improccoordinator.h | 1 + rtengine/rawimagesource.h | 1 + rtengine/stdimagesource.h | 1 + rtgui/thumbnail.cc | 1 + 15 files changed, 17 insertions(+), 6 deletions(-) diff --git a/rtengine/ahd_demosaic_RT.cc b/rtengine/ahd_demosaic_RT.cc index b3a34295c..77e342c18 100644 --- a/rtengine/ahd_demosaic_RT.cc +++ b/rtengine/ahd_demosaic_RT.cc @@ -24,6 +24,7 @@ // #include +#include "colortemp.h" #include "rtengine.h" #include "rawimagesource.h" #include "rt_math.h" diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc index 10b7a2c38..cd97ed9e9 100644 --- a/rtengine/clutstore.cc +++ b/rtengine/clutstore.cc @@ -2,6 +2,7 @@ #include "clutstore.h" +#include "colortemp.h" #include "iccstore.h" #include "imagefloat.h" #include "opthelper.h" diff --git a/rtengine/colortemp.h b/rtengine/colortemp.h index da83177be..a38e01072 100644 --- a/rtengine/colortemp.h +++ b/rtengine/colortemp.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _COLORTEMP_ -#define _COLORTEMP_ +#pragma once #include #include @@ -207,4 +206,3 @@ public: }; } -#endif diff --git a/rtengine/dcp.h b/rtengine/dcp.h index ba8be93eb..062459e42 100644 --- a/rtengine/dcp.h +++ b/rtengine/dcp.h @@ -29,12 +29,12 @@ #include "../rtgui/threadutils.h" #include "curves.h" -#include "colortemp.h" #include "noncopyable.h" namespace rtengine { +class ColorTemp; class Imagefloat; class DCPProfile final diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 85074fd96..6d45d232b 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -18,6 +18,7 @@ * along with RawTherapee. If not, see . */ +#include "colortemp.h" #include "cieimage.h" #include "image8.h" #include "imagefloat.h" diff --git a/rtengine/image16.cc b/rtengine/image16.cc index 14ba4964d..a98d64d51 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -18,6 +18,7 @@ */ #include +#include "colortemp.h" #include "image16.h" #include "imagefloat.h" #include "image8.h" diff --git a/rtengine/image8.cc b/rtengine/image8.cc index fb71e94a4..3d0a8df06 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -18,6 +18,8 @@ */ #include #include + +#include "colortemp.h" #include "image8.h" #include "imagefloat.h" #include "rtengine.h" diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 0b67e0785..3e80b617b 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -17,6 +17,8 @@ * along with RawTherapee. If not, see . */ #include + +#include "colortemp.h" #include "imagefloat.h" #include "image16.h" #include "image8.h" diff --git a/rtengine/imageio.h b/rtengine/imageio.h index 89c482ca3..baf456037 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -37,11 +37,11 @@ #include "../rtexif/rtexif.h" #include "imagedimensions.h" #include "iimage.h" -#include "colortemp.h" namespace rtengine { +class ColorTemp; class ProgressListener; class Imagefloat; diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 428027bc0..0f7a2ff51 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -23,7 +23,6 @@ #include -#include "colortemp.h" #include "coord2d.h" #include "dcp.h" #include "imagedata.h" @@ -32,6 +31,7 @@ namespace rtengine { +class ColorTemp; class Imagefloat; namespace procparams diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 0ab015fd3..b0996c6dd 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "improccoordinator.h" + #include "cieimage.h" #include "image8.h" #include "imagefloat.h" diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index e7199565b..14e93b771 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -21,6 +21,7 @@ #include +#include "colortemp.h" #include "rtengine.h" #include "improcfun.h" #include "imagesource.h" diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index ab8459f20..6c8dff696 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -24,6 +24,7 @@ #include "array2D.h" #include "color.h" +#include "colortemp.h" #include "curves.h" #include "dcp.h" #include "iimage.h" diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index 632b84ccb..b70c6554b 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -19,6 +19,7 @@ #ifndef _STDIMAGESOURCE_ #define _STDIMAGESOURCE_ +#include "colortemp.h" #include "imagesource.h" namespace rtengine diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 7ec1fef4e..78928fdf4 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -24,6 +24,7 @@ #include #include #include +#include "../rtengine/colortemp.h" #include "../rtengine/imagedata.h" #include "../rtengine/procparams.h" #include From c11087c28d6df55330ad4b57880a8ccd5111eb75 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 14:15:45 +0100 Subject: [PATCH 30/66] Cleanup curves.h includes --- rtengine/capturesharpening.cc | 5 ++--- rtengine/curves.h | 5 +---- rtengine/dcp.cc | 1 - rtengine/imagesource.h | 2 ++ rtengine/improcfun.cc | 1 + rtengine/improcfun.h | 10 +++++++++- rtengine/iplab2rgb.cc | 1 - rtengine/rawimagesource.h | 6 ++++-- rtengine/stdimagesource.cc | 1 - rtgui/navigator.cc | 1 - 10 files changed, 19 insertions(+), 14 deletions(-) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index a080b4f36..63c42026e 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -22,7 +22,6 @@ #include "rtengine.h" #include "rawimagesource.h" #include "rt_math.h" -#include "improcfun.h" #include "procparams.h" #include "color.h" #include "gauss.h" @@ -605,13 +604,13 @@ BENCHFUN // special handling for small tiles at end of row or column for (int k = border, ii = endOfCol ? H - fullTileSize - border : i - border; k < fullTileSize - border; ++k) { for (int l = border, jj = endOfRow ? W - fullTileSize - border : j - border; l < fullTileSize - border; ++l) { - luminance[ii + k][jj + l] = rtengine::intp(blend[ii + k][jj + l], max(tmpIThr[k][l], 0.0f), luminance[ii + k][jj + l]); + luminance[ii + k][jj + l] = rtengine::intp(blend[ii + k][jj + l], std::max(tmpIThr[k][l], 0.0f), luminance[ii + k][jj + l]); } } } else { for (int ii = border; ii < fullTileSize - border; ++ii) { for (int jj = border; jj < fullTileSize - border; ++jj) { - luminance[i + ii - border][j + jj - border] = rtengine::intp(blend[i + ii - border][j + jj - border], max(tmpIThr[ii][jj], 0.0f), luminance[i + ii - border][j + jj - border]); + luminance[i + ii - border][j + jj - border] = rtengine::intp(blend[i + ii - border][j + jj - border], std::max(tmpIThr[ii][jj], 0.0f), luminance[i + ii - border][j + jj - border]); } } } diff --git a/rtengine/curves.h b/rtengine/curves.h index 25272d44c..b4c1b54d4 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __CURVES_H__ -#define __CURVES_H__ +#pragma once #include #include @@ -1311,5 +1310,3 @@ inline void SatAndValueBlendingToneCurve::Apply (float& ir, float& ig, float& ib } #undef CLIPI - -#endif diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 6376968e6..9fac31c99 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -28,7 +28,6 @@ #include "iccmatrices.h" #include "iccstore.h" #include "imagefloat.h" -#include "improcfun.h" #include "rawimagesource.h" #include "rt_math.h" diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 0f7a2ff51..8597a8dc3 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -33,6 +33,8 @@ namespace rtengine { class ColorTemp; class Imagefloat; +class RetinextransmissionCurve; +class RetinexgaintransmissionCurve; namespace procparams { diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index e446f21a0..523683002 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -29,6 +29,7 @@ #include "rtengine.h" #include "improcfun.h" #include "curves.h" +#include "dcp.h" #include "mytime.h" #include "iccstore.h" #include "imagesource.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index b3ba2ccb8..16b8e27b0 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -25,12 +25,20 @@ #include "LUT.h" #include "lcp.h" #include "dcp.h" -#include "curves.h" #include "pipettebuffer.h" #include "gamutwarning.h" namespace rtengine { +class ColorGradientCurve; +class OpacityCurve; +class ToneCurve; +class WavCurve; +class WavOpacityCurveRG; +class WavOpacityCurveBY; +class WavOpacityCurveW; +class WavOpacityCurveWL; + class CieImage; class Image8; class Imagefloat; diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 451a68a3f..4298e41c9 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -26,7 +26,6 @@ #include "iccmatrices.h" #include "../rtgui/options.h" #include "settings.h" -#include "curves.h" #include "alignedbuffer.h" #include "color.h" #include "procparams.h" diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 6c8dff696..771398fa0 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -25,8 +25,6 @@ #include "array2D.h" #include "color.h" #include "colortemp.h" -#include "curves.h" -#include "dcp.h" #include "iimage.h" #include "imagesource.h" #include "pixelsmap.h" @@ -36,6 +34,10 @@ namespace rtengine { +class DiagonalCurve; +class RetinextransmissionCurve; +class RetinexgaintransmissionCurve; + class RawImageSource : public ImageSource { private: diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 43628e074..8e4c05ac8 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -19,7 +19,6 @@ #include "stdimagesource.h" #include "color.h" -#include "curves.h" #include "iccstore.h" #include "image8.h" #include "image16.h" diff --git a/rtgui/navigator.cc b/rtgui/navigator.cc index de07ffcd7..2cad9fdc1 100644 --- a/rtgui/navigator.cc +++ b/rtgui/navigator.cc @@ -21,7 +21,6 @@ #include "toolpanel.h" #include "../rtengine/iccmatrices.h" #include "../rtengine/iccstore.h" -#include "../rtengine/curves.h" #include "../rtengine/color.h" #include "../rtengine/rt_math.h" #include "options.h" From ed161c6288c2bd80443e7f5c16e6bb13a344a9f5 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 15:21:02 +0100 Subject: [PATCH 31/66] Reduce rawimage.h dependencies --- rtengine/badpixels.cc | 1 + rtengine/capturesharpening.cc | 1 + rtengine/dcp.cc | 1 + rtengine/dfmanager.h | 1 + rtengine/eahd_demosaic.cc | 1 + rtengine/ffmanager.cc | 7 +++++++ rtengine/ffmanager.h | 11 +++-------- rtengine/filmnegativeproc.cc | 1 + rtengine/hphd_demosaic_RT.cc | 1 + rtengine/imagedata.h | 1 - rtengine/pdaflinesfilter.cc | 1 + rtengine/pdaflinesfilter.h | 2 ++ rtengine/rawimage.h | 5 +---- rtengine/rawimagesource.cc | 21 +++++++++++++++++++++ rtengine/rawimagesource.h | 24 ++++++------------------ rtengine/vng4_demosaic_RT.cc | 1 + rtengine/xtrans_demosaic.cc | 1 + rtgui/bayerpreprocess.h | 1 - rtgui/preprocess.h | 1 - rtgui/rawexposure.h | 1 - rtgui/xtransrawexposure.h | 1 - 21 files changed, 50 insertions(+), 35 deletions(-) diff --git a/rtengine/badpixels.cc b/rtengine/badpixels.cc index 79b8187f7..5f519f7c2 100644 --- a/rtengine/badpixels.cc +++ b/rtengine/badpixels.cc @@ -20,6 +20,7 @@ #include "array2D.h" #include "median.h" #include "pixelsmap.h" +#include "rawimage.h" #include "rawimagesource.h" namespace rtengine diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index 63c42026e..4eeca1f15 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -20,6 +20,7 @@ #include #include "rtengine.h" +#include "rawimage.h" #include "rawimagesource.h" #include "rt_math.h" #include "procparams.h" diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 9fac31c99..78655dcf6 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include "dcp.h" diff --git a/rtengine/dfmanager.h b/rtengine/dfmanager.h index 23ca97d14..e1fa38f77 100644 --- a/rtengine/dfmanager.h +++ b/rtengine/dfmanager.h @@ -30,6 +30,7 @@ namespace rtengine { +class RawImage; class dfInfo { public: diff --git a/rtengine/eahd_demosaic.cc b/rtengine/eahd_demosaic.cc index aa8fdf485..b87c0771d 100644 --- a/rtengine/eahd_demosaic.cc +++ b/rtengine/eahd_demosaic.cc @@ -20,6 +20,7 @@ #include #include "color.h" +#include "rawimage.h" #include "rawimagesource.h" #include "rawimagesource_i.h" #include "jaggedarray.h" diff --git a/rtengine/ffmanager.cc b/rtengine/ffmanager.cc index e1a9134a8..2dbc95055 100644 --- a/rtengine/ffmanager.cc +++ b/rtengine/ffmanager.cc @@ -50,6 +50,13 @@ inline ffInfo& ffInfo::operator =(const ffInfo &o) return *this; } +ffInfo::~ffInfo() +{ + if( ri ) { + delete ri; + } +} + bool ffInfo::operator <(const ffInfo &e2) const { if( this->maker.compare( e2.maker) >= 0 ) { diff --git a/rtengine/ffmanager.h b/rtengine/ffmanager.h index 537f8ee46..80ef5fa1c 100644 --- a/rtengine/ffmanager.h +++ b/rtengine/ffmanager.h @@ -19,16 +19,16 @@ #pragma once #include +#include #include #include #include -#include "rawimage.h" - namespace rtengine { +class RawImage; class ffInfo { public: @@ -48,13 +48,8 @@ public: ffInfo( const ffInfo &o) : pathname(o.pathname), maker(o.maker), model(o.model), lens(o.lens), aperture(o.aperture), focallength(o.focallength), timestamp(o.timestamp), ri(nullptr) {} - ~ffInfo() - { - if( ri ) { - delete ri; - } - } + ~ffInfo(); ffInfo &operator =(const ffInfo &o); bool operator <(const ffInfo &e2) const; diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 81de775a3..1eae22ad6 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -23,6 +23,7 @@ #include #endif +#include "rawimage.h" #include "rawimagesource.h" #include "mytime.h" diff --git a/rtengine/hphd_demosaic_RT.cc b/rtengine/hphd_demosaic_RT.cc index 0e56eae48..342cd2b6b 100644 --- a/rtengine/hphd_demosaic_RT.cc +++ b/rtengine/hphd_demosaic_RT.cc @@ -18,6 +18,7 @@ */ #include +#include "rawimage.h" #include "rawimagesource.h" #include "rawimagesource_i.h" #include "jaggedarray.h" diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 99caaf361..06c7f4edf 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -21,7 +21,6 @@ #include #include -#include "rawimage.h" #include #include #include "../rtexif/rtexif.h" diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index d0694fd11..350c6f758 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -19,6 +19,7 @@ */ #include "pdaflinesfilter.h" +#include "rawimage.h" #include "settings.h" #include #include "camconst.h" diff --git a/rtengine/pdaflinesfilter.h b/rtengine/pdaflinesfilter.h index 7f4c7985b..e2904716e 100644 --- a/rtengine/pdaflinesfilter.h +++ b/rtengine/pdaflinesfilter.h @@ -26,6 +26,8 @@ namespace rtengine { +class RawImage; + class PDAFLinesFilter: public rtengine::NonCopyable { public: diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index 9c6d42969..4537fdcab 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __RAWIMAGE_H -#define __RAWIMAGE_H +#pragma once #include #include @@ -307,5 +306,3 @@ public: }; } - -#endif // __RAWIMAGE_H diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index d7e8ac812..ca324a5c1 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -21,6 +21,7 @@ #include "rtengine.h" #include "imagefloat.h" +#include "rawimage.h" #include "rawimagesource.h" #include "rawimagesource_i.h" #include "jaggedarray.h" @@ -501,6 +502,26 @@ RawImageSource::~RawImageSource () } } +unsigned RawImageSource::FC(int row, int col) const +{ + return ri->FC(row, col); +} + +eSensorType RawImageSource::getSensorType () const +{ + return ri != nullptr ? ri->getSensorType() : ST_NONE; +} + +bool RawImageSource::isMono() const +{ + return ri->get_colors() == 1; +} + +int RawImageSource::getRotateDegree() const +{ + return ri->get_rotateDegree(); +} + //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% void RawImageSource::transformRect (const PreviewProps &pp, int tran, int &ssx1, int &ssy1, int &width, int &height, int &fw) diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 771398fa0..118dcb559 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -33,7 +33,7 @@ namespace rtengine { - +class RawImage; class DiagonalCurve; class RetinextransmissionCurve; class RetinexgaintransmissionCurve; @@ -110,10 +110,7 @@ protected: void transformRect (const PreviewProps &pp, int tran, int &sx1, int &sy1, int &width, int &height, int &fw); void transformPosition (int x, int y, int tran, int& tx, int& ty); - unsigned FC(int row, int col) const - { - return ri->FC(row, col); - } + unsigned FC(int row, int col) const; inline void getRowStartEnd (int x, int &start, int &end); static void getProfilePreprocParams(cmsHPROFILE in, float& gammafac, float& lineFac, float& lineSum); @@ -147,15 +144,9 @@ public: void scaleColors (int winx, int winy, int winw, int winh, const procparams::RAWParams &raw, array2D &rawData); // raw for cblack void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hrp, const procparams::RAWParams &raw) override; - eSensorType getSensorType () const override - { - return ri != nullptr ? ri->getSensorType() : ST_NONE; - } - bool isMono () const override - { - return ri->get_colors() == 1; - } - ColorTemp getWB () const override + eSensorType getSensorType () const override; + bool isMono () const override; + ColorTemp getWB () const override { return camera_wb; } @@ -173,10 +164,7 @@ public: void getFullSize (int& w, int& h, int tr = TR_NONE) override; void getSize (const PreviewProps &pp, int& w, int& h) override; - int getRotateDegree() const override - { - return ri->get_rotateDegree(); - } + int getRotateDegree() const override; ImageMatrices* getImageMatrices () override { diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 66413e4c7..384ec3219 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -21,6 +21,7 @@ //////////////////////////////////////////////////////////////// #include "rtengine.h" +#include "rawimage.h" #include "rawimagesource.h" #include "procparams.h" #include "../rtgui/multilangmgr.h" diff --git a/rtengine/xtrans_demosaic.cc b/rtengine/xtrans_demosaic.cc index 9a3b341cc..418d369b8 100644 --- a/rtengine/xtrans_demosaic.cc +++ b/rtengine/xtrans_demosaic.cc @@ -20,6 +20,7 @@ //////////////////////////////////////////////////////////////// #include "rtengine.h" +#include "rawimage.h" #include "rawimagesource.h" #include "rt_algo.h" #include "rt_math.h" diff --git a/rtgui/bayerpreprocess.h b/rtgui/bayerpreprocess.h index 5d2b101d9..9114c37d4 100644 --- a/rtgui/bayerpreprocess.h +++ b/rtgui/bayerpreprocess.h @@ -22,7 +22,6 @@ #include #include "adjuster.h" #include "toolpanel.h" -#include "../rtengine/rawimage.h" class BayerPreProcess : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel { diff --git a/rtgui/preprocess.h b/rtgui/preprocess.h index 015fa3650..cf4cc8857 100644 --- a/rtgui/preprocess.h +++ b/rtgui/preprocess.h @@ -24,7 +24,6 @@ #include "toolpanel.h" #include "adjuster.h" #include "guiutils.h" -#include "../rtengine/rawimage.h" class PreProcess : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel { diff --git a/rtgui/rawexposure.h b/rtgui/rawexposure.h index 1dafd4d64..339a054c9 100644 --- a/rtgui/rawexposure.h +++ b/rtgui/rawexposure.h @@ -22,7 +22,6 @@ #include #include "adjuster.h" #include "toolpanel.h" -#include "../rtengine/rawimage.h" class RAWExposure : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel { diff --git a/rtgui/xtransrawexposure.h b/rtgui/xtransrawexposure.h index 08cdcc8bf..4211e3e0c 100644 --- a/rtgui/xtransrawexposure.h +++ b/rtgui/xtransrawexposure.h @@ -22,7 +22,6 @@ #include #include "adjuster.h" #include "toolpanel.h" -#include "../rtengine/rawimage.h" class XTransRAWExposure : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel { From 068847eb5a2cac9478df9ba9a371ae0915d5018b Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 21:06:27 +0100 Subject: [PATCH 32/66] Further cleanup of include dependencies --- rtengine/CMakeLists.txt | 1 - rtengine/LUT.h | 21 --------------------- rtengine/bilateral2.h | 1 - rtengine/camconst.cc | 3 +++ rtengine/camconst.h | 3 ++- rtengine/clutstore.h | 2 -- rtengine/color.h | 2 +- rtengine/curves.h | 2 +- rtengine/dcp.h | 2 +- rtengine/dfmanager.cc | 1 - rtengine/dynamicprofile.cc | 3 ++- rtengine/dynamicprofile.h | 2 +- rtengine/ffmanager.cc | 4 ++++ rtengine/iccstore.cc | 4 +++- rtengine/iccstore.h | 3 ++- rtengine/iimage.h | 2 +- rtengine/imagedata.h | 2 +- rtengine/imageio.h | 2 +- rtengine/imagesource.h | 2 +- rtengine/improcfun.cc | 3 +-- rtengine/iplab2rgb.cc | 2 +- rtengine/lcp.cc | 2 ++ rtengine/lcp.h | 2 +- rtengine/myfile.cc | 1 - rtengine/previewimage.h | 2 +- rtengine/procparams.h | 3 ++- rtengine/profilestore.cc | 4 ++++ rtengine/profilestore.h | 2 +- rtengine/rtengine.h | 2 +- rtengine/rtlensfun.h | 2 +- rtengine/rtthumbnail.cc | 2 +- rtengine/rtthumbnail.h | 2 +- rtengine/simpleprocess.cc | 2 +- rtexif/rtexif.h | 3 ++- rtgui/batchqueue.cc | 2 +- rtgui/bqentryupdater.h | 3 ++- rtgui/browserfilter.h | 3 ++- rtgui/cacheimagedata.h | 2 +- rtgui/extprog.cc | 2 ++ rtgui/filebrowser.cc | 2 +- rtgui/filmsimulation.h | 2 +- rtgui/histogrampanel.h | 2 +- rtgui/lensprofile.cc | 3 ++- rtgui/mycurve.h | 1 - rtgui/options.cc | 1 + rtgui/options.h | 2 +- rtgui/pathutils.cc | 2 ++ rtgui/pathutils.h | 14 ++------------ rtgui/pparamschangelistener.h | 2 +- rtgui/previewloader.h | 2 +- rtgui/profilestorecombobox.h | 2 +- rtgui/rtscalable.cc | 2 +- rtgui/thumbbrowserbase.cc | 2 +- rtgui/thumbimageupdater.h | 1 - rtgui/thumbnail.cc | 1 - rtgui/thumbnail.h | 2 +- rtgui/toolpanel.h | 2 +- 57 files changed, 70 insertions(+), 83 deletions(-) diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index e39ccde8e..8ec208a2b 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -121,7 +121,6 @@ set(RTENGINESOURCEFILES rtthumbnail.cc shmap.cc simpleprocess.cc - slicer.cc stdimagesource.cc tmo_fattal02.cc utils.cc diff --git a/rtengine/LUT.h b/rtengine/LUT.h index 34f572f58..f1090eefa 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -64,7 +64,6 @@ #include #ifndef NDEBUG -#include #include #endif @@ -485,26 +484,6 @@ public: return (p1 + p2 * diff); } -#ifndef NDEBUG - // Debug facility ; dump the content of the LUT in a file. No control of the filename is done - void dump(Glib::ustring fname) - { - if (size) { - Glib::ustring fname_ = fname + ".xyz"; // TopSolid'Design "plot" file format - std::ofstream f (fname_.c_str()); - f << "$" << std::endl; - - for (unsigned int iter = 0; iter < size; iter++) { - f << iter << ", " << data[iter] << ", 0." << std::endl; - } - - f << "$" << std::endl; - f.close (); - } - } -#endif - - operator bool (void) const { return size > 0; diff --git a/rtengine/bilateral2.h b/rtengine/bilateral2.h index d0496810d..75fafc3ba 100644 --- a/rtengine/bilateral2.h +++ b/rtengine/bilateral2.h @@ -22,7 +22,6 @@ #include #include #include -#include #include "rtengine.h" #include "rt_math.h" diff --git a/rtengine/camconst.cc b/rtengine/camconst.cc index 43de5d688..93f0057f1 100644 --- a/rtengine/camconst.cc +++ b/rtengine/camconst.cc @@ -2,6 +2,9 @@ * This file is part of RawTherapee. */ #include "camconst.h" +#include +#include +#include #include "settings.h" #include "rt_math.h" #include diff --git a/rtengine/camconst.h b/rtengine/camconst.h index eb43da483..89180fbb5 100644 --- a/rtengine/camconst.h +++ b/rtengine/camconst.h @@ -4,8 +4,9 @@ #ifndef __CAMCONST__ #define __CAMCONST__ -#include +#include #include +#include namespace rtengine { diff --git a/rtengine/clutstore.h b/rtengine/clutstore.h index cd94bc18b..7c570df98 100644 --- a/rtengine/clutstore.h +++ b/rtengine/clutstore.h @@ -3,8 +3,6 @@ #include #include -#include - #include "cache.h" #include "alignedbuffer.h" #include "noncopyable.h" diff --git a/rtengine/color.h b/rtengine/color.h index d0053470e..abe67d906 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -20,7 +20,7 @@ #pragma once #include -#include +#include #include "rt_math.h" #include "LUT.h" diff --git a/rtengine/curves.h b/rtengine/curves.h index b4c1b54d4..ef25ff8d7 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -22,7 +22,7 @@ #include #include -#include +#include #include "rt_math.h" #include "../rtgui/mycurve.h" diff --git a/rtengine/dcp.h b/rtengine/dcp.h index 062459e42..922b88142 100644 --- a/rtengine/dcp.h +++ b/rtengine/dcp.h @@ -24,7 +24,7 @@ #include #include -#include +#include #include "../rtgui/threadutils.h" diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc index 4877aacd8..fbeb2596e 100644 --- a/rtengine/dfmanager.cc +++ b/rtengine/dfmanager.cc @@ -19,7 +19,6 @@ #include "dfmanager.h" #include "../rtgui/options.h" #include -#include "../rtgui/guiutils.h" #include "rawimage.h" #include #include diff --git a/rtengine/dynamicprofile.cc b/rtengine/dynamicprofile.cc index af6ecd2ff..b9f76fa95 100644 --- a/rtengine/dynamicprofile.cc +++ b/rtengine/dynamicprofile.cc @@ -17,10 +17,11 @@ * along with RawTherapee. If not, see . */ -#include "../rtengine/dynamicprofile.h" +#include "dynamicprofile.h" #include #include +#include using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtengine/dynamicprofile.h b/rtengine/dynamicprofile.h index aaffc5c4f..714f526f2 100644 --- a/rtengine/dynamicprofile.h +++ b/rtengine/dynamicprofile.h @@ -19,7 +19,7 @@ #ifndef _DYNAMICPROFILE_H_ #define _DYNAMICPROFILE_H_ -#include +#include #include #include "../rtgui/options.h" diff --git a/rtengine/ffmanager.cc b/rtengine/ffmanager.cc index 2dbc95055..dbbc25b81 100644 --- a/rtengine/ffmanager.cc +++ b/rtengine/ffmanager.cc @@ -16,6 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include +#include + #include "ffmanager.h" #include "../rtgui/options.h" #include "rawimage.h" diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index a8d54b810..7151e244d 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -18,7 +18,9 @@ */ #include -#include +#include +#include +#include #include #ifdef WIN32 diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h index 5c76660e5..cc67c6152 100644 --- a/rtengine/iccstore.h +++ b/rtengine/iccstore.h @@ -19,10 +19,11 @@ #pragma once #include +#include #include #include -#include +#include #include diff --git a/rtengine/iimage.h b/rtengine/iimage.h index b04b4bf9a..11eb3e482 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -19,7 +19,7 @@ #ifndef _IIMAGE_ #define _IIMAGE_ -#include +#include #include #include "rt_math.h" #include "alignedbuffer.h" diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 06c7f4edf..ee8a3fc3c 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include "../rtexif/rtexif.h" #include #include "rtengine.h" diff --git a/rtengine/imageio.h b/rtengine/imageio.h index baf456037..c74756614 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -30,7 +30,7 @@ #include -#include +#include #include #include "rtengine.h" #include "imageformat.h" diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 8597a8dc3..4a679f77e 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include "coord2d.h" #include "dcp.h" diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 523683002..90cd438d6 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -18,7 +18,7 @@ */ #include #include -#include +#include #ifdef _OPENMP #include #endif @@ -46,7 +46,6 @@ #include "StopWatch.h" #include "procparams.h" #include "../rtgui/ppversion.h" -#include "../rtgui/guiutils.h" #include "../rtgui/editcallbacks.h" #undef CLIPD diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 4298e41c9..f2b337e01 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -21,7 +21,7 @@ #include "imagefloat.h" #include "labimage.h" #include "improcfun.h" -#include +#include #include "iccstore.h" #include "iccmatrices.h" #include "../rtgui/options.h" diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index ddf3e0643..e2442e094 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -20,6 +20,8 @@ #include #include +#include +#include #include #ifdef WIN32 diff --git a/rtengine/lcp.h b/rtengine/lcp.h index ebfa350ac..60df289e8 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include "cache.h" diff --git a/rtengine/myfile.cc b/rtengine/myfile.cc index 259e08565..aab45448a 100644 --- a/rtengine/myfile.cc +++ b/rtengine/myfile.cc @@ -18,7 +18,6 @@ */ #include "myfile.h" #include -#include // get mmap() sorted out #ifdef MYFILE_MMAP diff --git a/rtengine/previewimage.h b/rtengine/previewimage.h index 71ddefe8a..aac5eabe5 100644 --- a/rtengine/previewimage.h +++ b/rtengine/previewimage.h @@ -19,7 +19,7 @@ #ifndef _PREVIEWIMAGE_ #define _PREVIEWIMAGE_ -#include +#include #include namespace rtengine diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 734ca7556..57c27063e 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -23,7 +23,8 @@ #include #include -#include +#include +#include #include #include "noncopyable.h" diff --git a/rtengine/profilestore.cc b/rtengine/profilestore.cc index 5c38cf705..23e4d8321 100644 --- a/rtengine/profilestore.cc +++ b/rtengine/profilestore.cc @@ -16,6 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include +#include + #include "profilestore.h" #include "dynamicprofile.h" diff --git a/rtengine/profilestore.h b/rtengine/profilestore.h index 384aa2a46..3b7bc7f9d 100644 --- a/rtengine/profilestore.h +++ b/rtengine/profilestore.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include "rtengine.h" #include "noncopyable.h" diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index c188622af..f2c448805 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -22,7 +22,7 @@ #include #include -#include +#include #include diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index 2a7571b58..9c95ca3aa 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -23,7 +23,7 @@ #include #include -#include +#include #include diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index b30bf3eb4..7f232d8be 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -24,7 +24,7 @@ #include "image8.h" #include #include "curves.h" -#include +#include #include "improcfun.h" #include "colortemp.h" #include "mytime.h" diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 8b3f27a8b..a1df25224 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -20,7 +20,7 @@ #define _THUMBPROCESSINGPARAMETERS_ #include "rawmetadatalocation.h" -#include +#include #include #include "image8.h" #include "image16.h" diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 71edba62c..b7bc46cb1 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -28,7 +28,7 @@ #include "clutstore.h" #include "processingjob.h" #include "procparams.h" -#include +#include #include "../rtgui/options.h" #include "rawimagesource.h" #include "../rtgui/multilangmgr.h" diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index f4b0e089e..e89260932 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -30,7 +30,8 @@ #include #include -#include +#include +#include #include "../rtengine/noncopyable.h" #include "../rtengine/rawmetadatalocation.h" diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index abb37b24d..ed9861ad6 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#include +#include #include #include #include diff --git a/rtgui/bqentryupdater.h b/rtgui/bqentryupdater.h index efd63f9de..9e3e09a51 100644 --- a/rtgui/bqentryupdater.h +++ b/rtgui/bqentryupdater.h @@ -19,7 +19,8 @@ #ifndef _BQENTRYUPDATER_ #define _BQENTRYUPDATER_ -#include +#include + #include "../rtengine/rtengine.h" #include "threadutils.h" #include "thumbnail.h" diff --git a/rtgui/browserfilter.h b/rtgui/browserfilter.h index f5dac180e..11bfd9920 100644 --- a/rtgui/browserfilter.h +++ b/rtgui/browserfilter.h @@ -19,8 +19,9 @@ #ifndef _BROWSERFILTER_ #define _BROWSERFILTER_ +#include + #include "exiffiltersettings.h" -#include class BrowserFilter { diff --git a/rtgui/cacheimagedata.h b/rtgui/cacheimagedata.h index 72bf55749..56b4ad434 100644 --- a/rtgui/cacheimagedata.h +++ b/rtgui/cacheimagedata.h @@ -19,7 +19,7 @@ #ifndef _CACHEIMAGEDATA_ #define _CACHEIMAGEDATA_ -#include +#include #include "options.h" #include "../rtengine/rtengine.h" #include "../rtengine/imageformat.h" diff --git a/rtgui/extprog.cc b/rtgui/extprog.cc index 00ea07713..a17bcdc6a 100644 --- a/rtgui/extprog.cc +++ b/rtgui/extprog.cc @@ -26,6 +26,8 @@ #include #endif +#include + #include "options.h" #include "multilangmgr.h" diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index f9afcef48..d4f5bb8ca 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -21,7 +21,7 @@ #include #include -#include +#include #include "filebrowser.h" diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h index b5c9ffa6b..6eb0fd024 100644 --- a/rtgui/filmsimulation.h +++ b/rtgui/filmsimulation.h @@ -2,7 +2,7 @@ #define FILM_SIMULATION_INCLUDED #include -#include +#include #include #include "toolpanel.h" #include "guiutils.h" diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h index 1515db97a..ef8d9368d 100644 --- a/rtgui/histogrampanel.h +++ b/rtgui/histogrampanel.h @@ -21,7 +21,7 @@ #include -#include +#include #include #include "../rtengine/LUT.h" #include "../rtengine/improccoordinator.h" diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 389f15461..a6694287f 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -18,9 +18,10 @@ */ #include #include +#include #include -#include +#include #include "lensprofile.h" diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index 62d8d30f2..fd22660ea 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -26,7 +26,6 @@ #include "coloredbar.h" #include "coordinateadjuster.h" #include "../rtengine/LUT.h" -#include "guiutils.h" #include "options.h" #include "../rtengine/noncopyable.h" diff --git a/rtgui/options.cc b/rtgui/options.cc index 737607bcf..9757fa3b7 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -19,6 +19,7 @@ #include "options.h" #include #include +#include #include #include "multilangmgr.h" #include "addsetids.h" diff --git a/rtgui/options.h b/rtgui/options.h index 3bd83cd5b..990a32228 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -20,7 +20,7 @@ #define _OPTIONS_ #include -#include +#include #include "../rtengine/rtengine.h" #include diff --git a/rtgui/pathutils.cc b/rtgui/pathutils.cc index 71ff8b0b2..fc47a0e25 100644 --- a/rtgui/pathutils.cc +++ b/rtgui/pathutils.cc @@ -16,6 +16,8 @@ * along with RawTherapee. If not, see . */ +#include + #include "pathutils.h" diff --git a/rtgui/pathutils.h b/rtgui/pathutils.h index ed7d21984..482dfb82f 100644 --- a/rtgui/pathutils.h +++ b/rtgui/pathutils.h @@ -16,19 +16,9 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __PATH_UTILS_ -#define __PATH_UTILS_ - -#include -#include -#include "../rtengine/rtengine.h" -#include "../rtengine/coord.h" -#include "rtimage.h" -#include -#include +#pragma once +#include // Removed from guiutils because used by rawtherapee-cli Glib::ustring removeExtension (const Glib::ustring& filename); Glib::ustring getExtension (const Glib::ustring& filename); - -#endif diff --git a/rtgui/pparamschangelistener.h b/rtgui/pparamschangelistener.h index 2c73ea3f6..bc3a5600b 100644 --- a/rtgui/pparamschangelistener.h +++ b/rtgui/pparamschangelistener.h @@ -20,7 +20,7 @@ #define _PPARAMSCHANGELISTENER_ #include "../rtengine/rtengine.h" -#include +#include #include "paramsedited.h" class PParamsChangeListener diff --git a/rtgui/previewloader.h b/rtgui/previewloader.h index 52dbee43c..ede509c0a 100644 --- a/rtgui/previewloader.h +++ b/rtgui/previewloader.h @@ -20,7 +20,7 @@ #define _PREVIEWLOADER_ #include -#include +#include #include "../rtengine/noncopyable.h" diff --git a/rtgui/profilestorecombobox.h b/rtgui/profilestorecombobox.h index 5d04813d6..cec67d188 100644 --- a/rtgui/profilestorecombobox.h +++ b/rtgui/profilestorecombobox.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include "../rtengine/rtengine.h" #include "../rtengine/profilestore.h" diff --git a/rtgui/rtscalable.cc b/rtgui/rtscalable.cc index b37f2276f..fa92655ac 100644 --- a/rtgui/rtscalable.cc +++ b/rtgui/rtscalable.cc @@ -20,7 +20,7 @@ #include "rtscalable.h" #include #include -#include +#include #include #include #include "options.h" diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index adf451f05..f5f4076bb 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -16,7 +16,7 @@ */ #include -#include +#include #include "multilangmgr.h" #include "options.h" diff --git a/rtgui/thumbimageupdater.h b/rtgui/thumbimageupdater.h index 0e46b11d7..81636103e 100644 --- a/rtgui/thumbimageupdater.h +++ b/rtgui/thumbimageupdater.h @@ -19,7 +19,6 @@ #ifndef _THUMBIMAGEUPDATER_ #define _THUMBIMAGEUPDATER_ -#include #include #include "../rtengine/rtengine.h" diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 78928fdf4..531529d5c 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -23,7 +23,6 @@ #include "../rtengine/mytime.h" #include #include -#include #include "../rtengine/colortemp.h" #include "../rtengine/imagedata.h" #include "../rtengine/procparams.h" diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index ec5dbd249..b1c45fdfa 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -22,7 +22,7 @@ #include #include -#include +#include #include "cachemanager.h" #include "options.h" #include "../rtengine/rtengine.h" diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 8d4a55eab..2c787d937 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -20,7 +20,7 @@ #define __TOOLPANEL__ #include -#include +#include #include "../rtengine/rtengine.h" #include "editbuffer.h" #include "guiutils.h" From dfa41d6947fa3e31d9f0f3e275121c4ee232f149 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 21:09:37 +0100 Subject: [PATCH 33/66] removed rtengine/slicer.* --- rtengine/slicer.cc | 152 --------------------------------------------- rtengine/slicer.h | 63 ------------------- 2 files changed, 215 deletions(-) delete mode 100644 rtengine/slicer.cc delete mode 100644 rtengine/slicer.h diff --git a/rtengine/slicer.cc b/rtengine/slicer.cc deleted file mode 100644 index 96c0a0ee8..000000000 --- a/rtengine/slicer.cc +++ /dev/null @@ -1,152 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ - -#include -#include -#include "rt_math.h" - -#include "slicer.h" - -#ifdef _OPENMP -#include -#endif - -using namespace std; - -// If no parameter set, everything = 0 -> process all the image -Block::Block() -{ - posX = 0; - posY = 0; - width = 0; - height = 0; -} - -Block::Block(unsigned int x, unsigned int y, unsigned int w, unsigned int h) -{ - posX = x; - posY = y; - width = w; - height = h; -} - -/* - * Slice a sub-region to process in blocks who's size is given by the number of processor - * and the number of pixel per block (and hence the memory footprint) - */ -Slicer::Slicer(unsigned int imageWidth, unsigned int imageHeight, Block *subRegion, unsigned int pixels ) -{ - // If the sub-region has a portrait shape, X and Y coordinates are swapped for better result - // It will be swapped back when sending back the block coordinates - region.width = !(subRegion->width) ? imageWidth : subRegion->width; - region.height = !(subRegion->height) ? imageHeight : subRegion->height; // Assuming that the sub-region is under posY - - if (region.width < region.height) { - region.width = !(subRegion->height) ? imageHeight : subRegion->height; - region.height = !(subRegion->width) ? imageWidth : subRegion->width; // Assuming that the sub-region is under posY - portrait = true; - imWidth = imageHeight; - imHeight = imageWidth; - region.posX = subRegion->posY; - region.posY = subRegion->posX; - } else { - portrait = false; - imWidth = imageWidth; - imHeight = imageHeight; - region.posX = subRegion->posX; - region.posY = subRegion->posY; - } - - double subRegionRatio = (double)(region.width) / (double)(region.height); - - //total number of core/processor -#ifdef _OPENMP - unsigned int procNumber = omp_get_num_procs(); -#else - unsigned int procNumber = 1; -#endif - - //calculate the number of block - blockNumber = (double(region.width * region.height) / (double)pixels); - blockNumber = int((rtengine::max(blockNumber, 1U) + (double)procNumber / 2.) / procNumber) * procNumber; - vBlockNumber = (unsigned int)(sqrt((double)blockNumber / subRegionRatio) + 0.5); - vBlockNumber = CLAMP(vBlockNumber, 1, blockNumber); - hBlockNumber = (double)blockNumber / (double)vBlockNumber; - blockWidth = 1.0 / hBlockNumber; - - double maxPixelNumberX = (double)region.height / (double)vBlockNumber; - double maxPixelNumberY = (double)region.width / (double)((unsigned int)hBlockNumber); - - if (maxPixelNumberX - (double)((unsigned int)maxPixelNumberX) != 0.) { - maxPixelNumberX += 1.; - } - - if (maxPixelNumberY - (double)((unsigned int)maxPixelNumberY) != 0.) { - maxPixelNumberY += 1.; - } - - maxPixelNumber = (unsigned int)maxPixelNumberX * (unsigned int)maxPixelNumberY; - -} - -// return the absolute position and size of the requested block -void Slicer::get_block(unsigned int numBlock, Block *block) -{ - double roundingTradeOff = (hBlockNumber - (double)((int)hBlockNumber)) == 0.5 ? 2.1 : 2.0; - unsigned int alreadyCompletedLineNbr = (unsigned int)((double)(numBlock) * blockWidth + (blockWidth / roundingTradeOff)); - - unsigned int prevLineEnd = (unsigned int)((double)alreadyCompletedLineNbr * hBlockNumber + 0.5); - unsigned int myLineEnd = (unsigned int)((double)(alreadyCompletedLineNbr + 1) * hBlockNumber + 0.5); - - unsigned int nbrCellsOnMyLine = myLineEnd - prevLineEnd; - unsigned int cellOnMyLine = numBlock - prevLineEnd; - - unsigned int blockStart = (unsigned int)(((double)region.width / (double)nbrCellsOnMyLine) * (double)(cellOnMyLine)); - unsigned int blockEnd = (unsigned int)(((double)region.width / (double)nbrCellsOnMyLine) * (double)(cellOnMyLine + 1)); - block->width = blockEnd - blockStart; - block->posX = region.posX + blockStart; - - if (cellOnMyLine == (nbrCellsOnMyLine - 1)) { - // We make sure that the last block of the row take the rest of the remaining X space - block->width = region.posX + region.width - block->posX; - } - - blockStart = (unsigned int)(((double)region.height / (double)vBlockNumber) * (double)(alreadyCompletedLineNbr)); - blockEnd = (unsigned int)(((double)region.height / (double)vBlockNumber) * (double)(alreadyCompletedLineNbr + 1)); - block->height = blockEnd - blockStart; - block->posY = region.posY + blockStart; - - if (alreadyCompletedLineNbr == (vBlockNumber - 1)) { - block->height = region.posY + region.height - block->posY; - } - - if (portrait) { - // we swap back the X/Y coordinates - unsigned int temp; - - temp = block->posX; - block->posX = block->posY; - block->posY = temp; - - temp = block->width; - block->width = block->height; - block->height = temp; - - } -} diff --git a/rtengine/slicer.h b/rtengine/slicer.h deleted file mode 100644 index 658133e5f..000000000 --- a/rtengine/slicer.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ -#ifndef _SLICER_ -#define _SLICER_ - -//The image is divided in blocks even on single processor machine, mainly to decrease memory consumption -//maximum number of pixel per block -#define PIXELS_PER_BLOCK 250000 - -/* - * Used to specify a subregion of an image and to specify a cell in this subregion - */ -class Block -{ -public: - unsigned int posX; - unsigned int posY; - unsigned int width; // If 0, use the full width of the image - unsigned int height; // If 0, use the full height of the image - Block(); - Block(unsigned int x, unsigned int y, unsigned int w, unsigned int h); -}; - -/* - * This class handle the best slicing of the image with a given number of pixels per block and the number of - * processor, and tries to create blocks as square as possible. There can be a different number of block on - * each line, and the pixel per block requested may be oversized by very few percents. - */ -class Slicer -{ -protected: - bool portrait; // Orientation of the sub-region - unsigned int imWidth; // Image width - unsigned int imHeight; // Image height - Block region; // Sub-region to process - double hBlockNumber; // Horizontal number of block for the sub-region - unsigned int vBlockNumber; // Vertical number of block for the sub-region - double blockWidth; - -public: - unsigned int blockNumber; // number of block for the sub-region - unsigned int maxPixelNumber; // number of pixel of the biggest block (for memory allocation purpose) - Slicer(unsigned int imageWidth, unsigned int imageHeight, Block *subRegion, unsigned int pixels); - void get_block(unsigned int blockId, Block *block); -}; - -#endif From 1acca23fe1e6edd4139b45d50a73608c1d92a52f Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 22:45:26 +0100 Subject: [PATCH 34/66] Further cleanup of include dependencies --- rtengine/dynamicprofile.cc | 2 ++ rtengine/dynamicprofile.h | 2 +- rtengine/gamutwarning.cc | 1 + rtengine/gamutwarning.h | 3 ++- rtengine/histmatching.cc | 1 - rtengine/ipdehaze.cc | 1 + rtengine/iplabregions.cc | 1 + rtengine/ipshadowshighlights.cc | 1 + rtengine/ipsoftlight.cc | 1 + rtgui/dynamicprofilepanel.cc | 1 + rtgui/histogrampanel.cc | 3 --- rtgui/iccprofilecreator.cc | 1 + rtgui/navigator.cc | 2 -- rtgui/navigator.h | 1 - rtgui/preferences.cc | 1 + 15 files changed, 13 insertions(+), 9 deletions(-) diff --git a/rtengine/dynamicprofile.cc b/rtengine/dynamicprofile.cc index b9f76fa95..607b0b528 100644 --- a/rtengine/dynamicprofile.cc +++ b/rtengine/dynamicprofile.cc @@ -23,6 +23,8 @@ #include #include +#include "../rtgui/options.h" + using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtengine/dynamicprofile.h b/rtengine/dynamicprofile.h index 714f526f2..e23c57b49 100644 --- a/rtengine/dynamicprofile.h +++ b/rtengine/dynamicprofile.h @@ -21,7 +21,7 @@ #include #include -#include "../rtgui/options.h" +#include "../rtengine/rtengine.h" class DynamicProfileRule { diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index fe6b7c0dc..290800f90 100644 --- a/rtengine/gamutwarning.cc +++ b/rtengine/gamutwarning.cc @@ -26,6 +26,7 @@ #include #include "gamutwarning.h" +#include "iccstore.h" #include "image8.h" namespace rtengine { diff --git a/rtengine/gamutwarning.h b/rtengine/gamutwarning.h index b7ac5e41d..4e34ed431 100644 --- a/rtengine/gamutwarning.h +++ b/rtengine/gamutwarning.h @@ -25,7 +25,8 @@ #pragma once -#include "iccstore.h" +#include + #include "noncopyable.h" namespace rtengine { diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 212b11d00..e85f5ee13 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -23,7 +23,6 @@ #include "curves.h" #include "color.h" #include "rt_math.h" -#include "iccstore.h" #include "procparams.h" #include "../rtgui/mydiagonalcurve.h" #include "improcfun.h" diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index e3c86454f..7ca4d72ad 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -33,6 +33,7 @@ #include #include "guidedfilter.h" +#include "iccstore.h" #include "imagefloat.h" #include "improcfun.h" #include "procparams.h" diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 2462959bf..d6b7294f6 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -22,6 +22,7 @@ #include #endif +#include "iccstore.h" #include "improcfun.h" #include "labimage.h" #include "guidedfilter.h" diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index 7680ae6c7..1e8842cbb 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -22,6 +22,7 @@ #include "gauss.h" #include "guidedfilter.h" +#include "iccstore.h" #include "labimage.h" #include "opthelper.h" #include "procparams.h" diff --git a/rtengine/ipsoftlight.cc b/rtengine/ipsoftlight.cc index e0dc6aa40..ab2e7c8b1 100644 --- a/rtengine/ipsoftlight.cc +++ b/rtengine/ipsoftlight.cc @@ -19,6 +19,7 @@ * along with RawTherapee. If not, see . */ +#include "iccstore.h" #include "improcfun.h" #include "labimage.h" diff --git a/rtgui/dynamicprofilepanel.cc b/rtgui/dynamicprofilepanel.cc index 38029af71..6acad07f9 100644 --- a/rtgui/dynamicprofilepanel.cc +++ b/rtgui/dynamicprofilepanel.cc @@ -18,6 +18,7 @@ */ #include "dynamicprofilepanel.h" +#include "options.h" #include "multilangmgr.h" #include "../rtengine/profilestore.h" #include "../rtengine/rtengine.h" diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index 36803ddf2..74e473096 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -24,10 +24,7 @@ #include #include "../rtengine/LUT.h" #include "rtimage.h" -#include "../rtengine/improccoordinator.h" #include "../rtengine/color.h" -#include "../rtengine/opthelper.h" -#include "../rtengine/iccstore.h" using namespace rtengine; diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 9efa4360b..2728a7611 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -19,6 +19,7 @@ */ #include #include "iccprofilecreator.h" +#include "../rtengine/iccstore.h" #include "multilangmgr.h" #include "cachemanager.h" #include "addsetids.h" diff --git a/rtgui/navigator.cc b/rtgui/navigator.cc index 2cad9fdc1..50946f32f 100644 --- a/rtgui/navigator.cc +++ b/rtgui/navigator.cc @@ -19,8 +19,6 @@ #include #include "navigator.h" #include "toolpanel.h" -#include "../rtengine/iccmatrices.h" -#include "../rtengine/iccstore.h" #include "../rtengine/color.h" #include "../rtengine/rt_math.h" #include "options.h" diff --git a/rtgui/navigator.h b/rtgui/navigator.h index eb4584f42..32ad68175 100644 --- a/rtgui/navigator.h +++ b/rtgui/navigator.h @@ -23,7 +23,6 @@ #include "previewwindow.h" #include "pointermotionlistener.h" #include "options.h" -#include "../rtengine/iccstore.h" class Navigator : public Gtk::Frame, public PointerMotionListener { diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index b4447fd44..3c0d1bedc 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -24,6 +24,7 @@ #include "addsetids.h" #include "../rtengine/dfmanager.h" #include "../rtengine/ffmanager.h" +#include "../rtengine/iccstore.h" #include #include "rtimage.h" #ifdef _OPENMP From 81575a6e364da5ed5b65f94ac093c2912cb358aa Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 29 Oct 2019 23:49:43 +0100 Subject: [PATCH 35/66] Further cleanup of include dependencies --- rtengine/bilateral2.h | 1 - rtengine/cfa_linedn_RT.cc | 1 - rtengine/ciecam02.cc | 2 +- rtengine/colortemp.cc | 6 +++++- rtengine/imagedata.h | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/rtengine/bilateral2.h b/rtengine/bilateral2.h index 75fafc3ba..f4b1a80e9 100644 --- a/rtengine/bilateral2.h +++ b/rtengine/bilateral2.h @@ -23,7 +23,6 @@ #include #include -#include "rtengine.h" #include "rt_math.h" #include "mytime.h" diff --git a/rtengine/cfa_linedn_RT.cc b/rtengine/cfa_linedn_RT.cc index 5f6e46f8f..3aef79133 100644 --- a/rtengine/cfa_linedn_RT.cc +++ b/rtengine/cfa_linedn_RT.cc @@ -24,7 +24,6 @@ #include -#include "rtengine.h" #include "rawimagesource.h" #include "rt_math.h" diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index dc71fee85..3219884ad 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -17,7 +17,7 @@ * along with RawTherapee. If not, see . */ #include "ciecam02.h" -#include "rtengine.h" +#include "rt_math.h" #include "curves.h" #include #include "sleef.c" diff --git a/rtengine/colortemp.cc b/rtengine/colortemp.cc index 3ddbdc28a..927d8423d 100644 --- a/rtengine/colortemp.cc +++ b/rtengine/colortemp.cc @@ -16,8 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include + #include "colortemp.h" -#include "rtengine.h" +#include "iccmatrices.h" +#include "rt_math.h" #include #include #include diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index ee8a3fc3c..66c4285b9 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -23,9 +23,9 @@ #include #include #include +#include "imageio.h" #include "../rtexif/rtexif.h" #include -#include "rtengine.h" namespace rtengine { From d7ec033829068898bd3c790e03ea336955be7627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Wed, 30 Oct 2019 09:30:21 +0100 Subject: [PATCH 36/66] Reduce `dcp.h` dependencies --- rtengine/FTblockDN.cc | 31 ++++++++++++-------- rtengine/PF_correct_RT.cc | 1 + rtengine/bilateral2.h | 25 ++++++++--------- rtengine/clutstore.cc | 3 ++ rtengine/dcp.cc | 12 ++++---- rtengine/dcp.h | 33 +++++++++++----------- rtengine/dcrop.cc | 10 ++++--- rtengine/dirpyr_equalizer.cc | 28 +++++++++--------- rtengine/dual_demosaic_RT.cc | 11 +++++--- rtengine/filmnegativeproc.cc | 1 + rtengine/imagedata.cc | 11 ++++++-- rtengine/imagesource.h | 11 ++++++-- rtengine/improccoordinator.cc | 29 +++++++++++-------- rtengine/improccoordinator.h | 13 +++++---- rtengine/improcfun.cc | 4 +-- rtengine/improcfun.h | 18 +++++++++--- rtengine/ipdehaze.cc | 2 +- rtengine/iplabregions.cc | 7 +++-- rtengine/ipretinex.cc | 3 +- rtengine/ipshadowshighlights.cc | 2 ++ rtengine/ipsharpen.cc | 19 +++++++------ rtengine/ipwavelet.cc | 17 +++++------ rtengine/pixelshift.cc | 13 +++++++-- rtengine/rawimagesource.cc | 36 +++++++++++++----------- rtengine/rawimagesource.h | 2 +- rtengine/rtthumbnail.cc | 50 ++++++++++++++++++--------------- rtengine/simpleprocess.cc | 4 +-- 27 files changed, 232 insertions(+), 164 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 8cd9a4086..b708f521a 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -23,27 +23,34 @@ //////////////////////////////////////////////////////////////// #include + #include -#include "../rtgui/threadutils.h" -#include "rtengine.h" -#include "improcfun.h" -#include "LUT.h" + #include "array2D.h" -#include "iccmatrices.h" -#include "imagefloat.h" -#include "labimage.h" #include "boxblur.h" -#include "rt_math.h" -#include "mytime.h" -#include "sleef.c" -#include "opthelper.h" #include "cplx_wavelet_dec.h" -#include "median.h" +#include "curves.h" +#include "iccmatrices.h" #include "iccstore.h" +#include "imagefloat.h" +#include "improcfun.h" +#include "labimage.h" +#include "LUT.h" +#include "median.h" +#include "mytime.h" +#include "opthelper.h" #include "procparams.h" +#include "rt_math.h" +#include "rtengine.h" +#include "sleef.c" + +#include "../rtgui/threadutils.h" +#include "../rtgui/options.h" + #ifdef _OPENMP #include #endif + //#define BENCHMARK #include "StopWatch.h" diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index eb450dce9..40b4933ae 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -30,6 +30,7 @@ #include "gauss.h" #include "improcfun.h" #include "cieimage.h" +#include "curves.h" #include "labimage.h" #include "sleef.c" #include "../rtgui/myflatcurve.h" diff --git a/rtengine/bilateral2.h b/rtengine/bilateral2.h index f4b1a80e9..a431bcecd 100644 --- a/rtengine/bilateral2.h +++ b/rtengine/bilateral2.h @@ -16,17 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BILATERAL2_ -#define _BILATERAL2_ +#pragma once +#include #include -#include #include - -#include "rt_math.h" -#include "mytime.h" +#include #include "array2D.h" +#include "LUT.h" +#include "mytime.h" +#include "rt_math.h" + #ifdef _OPENMP #include #endif @@ -571,7 +572,7 @@ template void bilateral (T** src, T** dst, int W, int H, int sigmar, do // calculate histogram at the beginning of the row rhist.clear(); - for (int x = MAX(0, row_from - r); x <= MIN(H, row_from + r); x++) + for (int x = std::max(0, row_from - r); x <= std::min(H, row_from + r); x++) for (int y = 0; y < r + 1; y++) { rhist[((int)src[x][y]) >> TRANSBIT]++; } @@ -582,12 +583,12 @@ template void bilateral (T** src, T** dst, int W, int H, int sigmar, do // calculate histogram at the beginning of the row if (i > r) - for (int x = 0; x <= MIN(H, r); x++) { + for (int x = 0; x <= std::min(H, r); x++) { rhist[((int)src[i - r - 1][x]) >> TRANSBIT]--; } if (i < H - r) - for (int x = 0; x <= MIN(H, r); x++) { + for (int x = 0; x <= std::min(H, r); x++) { rhist[((int)src[i + r][x]) >> TRANSBIT]++; } @@ -597,12 +598,12 @@ template void bilateral (T** src, T** dst, int W, int H, int sigmar, do // subtract pixels at the left and add pixels at the right if (j > r) - for (int x = MAX(0, i - r); x <= MIN(i + r, H - 1); x++) { + for (int x = std::max(0, i - r); x <= std::min(i + r, H - 1); x++) { hist[(int)(src[x][j - r - 1]) >> TRANSBIT]--; } if (j < W - r) - for (int x = MAX(0, i - r); x <= MIN(i + r, H - 1); x++) { + for (int x = std::max(0, i - r); x <= std::min(i + r, H - 1); x++) { hist[((int)src[x][j + r]) >> TRANSBIT]++; } @@ -641,5 +642,3 @@ template void bilateral (T** src, T** dst, int W, int H, int sigmar, do } #undef BINBIT #undef TRANSBIT - -#endif diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc index cd97ed9e9..e3bd9c988 100644 --- a/rtengine/clutstore.cc +++ b/rtengine/clutstore.cc @@ -1,5 +1,8 @@ #include +#include +#include + #include "clutstore.h" #include "colortemp.h" diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 78655dcf6..549fcf150 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -433,7 +433,7 @@ std::map getAliases(const Glib::ustring& profile_dir) } -struct DCPProfile::ApplyState::Data { +struct DCPProfileApplyState::Data { float pro_photo[3][3]; float work[3][3]; bool already_pro_photo; @@ -442,14 +442,12 @@ struct DCPProfile::ApplyState::Data { float bl_scale; }; -DCPProfile::ApplyState::ApplyState() : +DCPProfileApplyState::DCPProfileApplyState() : data(new Data{}) { } -DCPProfile::ApplyState::~ApplyState() -{ -} +DCPProfileApplyState::~DCPProfileApplyState() = default; DCPProfile::DCPProfile(const Glib::ustring& filename) : has_color_matrix_1(false), @@ -1149,7 +1147,7 @@ void DCPProfile::apply( } } -void DCPProfile::setStep2ApplyState(const Glib::ustring& working_space, bool use_tone_curve, bool apply_look_table, bool apply_baseline_exposure, ApplyState& as_out) +void DCPProfile::setStep2ApplyState(const Glib::ustring& working_space, bool use_tone_curve, bool apply_look_table, bool apply_baseline_exposure, DCPProfileApplyState& as_out) { as_out.data->use_tone_curve = use_tone_curve; as_out.data->apply_look_table = apply_look_table; @@ -1193,7 +1191,7 @@ void DCPProfile::setStep2ApplyState(const Glib::ustring& working_space, bool use } } -void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int height, int tile_width, const ApplyState& as_in) const +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) diff --git a/rtengine/dcp.h b/rtengine/dcp.h index 922b88142..573349348 100644 --- a/rtengine/dcp.h +++ b/rtengine/dcp.h @@ -36,24 +36,11 @@ namespace rtengine class ColorTemp; class Imagefloat; +class DCPProfileApplyState; class DCPProfile final { public: - class ApplyState final - { - public: - ApplyState(); - ~ApplyState(); - - private: - struct Data; - - const std::unique_ptr data; - - friend class DCPProfile; - }; - struct Illuminants { short light_source_1; short light_source_2; @@ -87,8 +74,8 @@ public: const Matrix& cam_wb_matrix, bool apply_hue_sat_map = true ) const; - void setStep2ApplyState(const Glib::ustring& working_space, bool use_tone_curve, bool apply_look_table, bool apply_baseline_exposure, ApplyState& as_out); - void step2ApplyTile(float* r, float* g, float* b, int width, int height, int tile_width, const ApplyState& as_in) const; + void setStep2ApplyState(const Glib::ustring& working_space, bool use_tone_curve, bool apply_look_table, bool apply_baseline_exposure, DCPProfileApplyState& as_out); + void step2ApplyTile(float* r, float* g, float* b, int width, int height, int tile_width, const DCPProfileApplyState& as_in) const; private: struct HsbModify { @@ -149,6 +136,20 @@ private: AdobeToneCurve tone_curve; }; +class DCPProfileApplyState final +{ +public: + DCPProfileApplyState(); + ~DCPProfileApplyState(); + +private: + struct Data; + + const std::unique_ptr data; + + friend class DCPProfile; +}; + class DCPStore final : public NonCopyable { diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 6d45d232b..819a6d01e 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -18,17 +18,19 @@ * along with RawTherapee. If not, see . */ -#include "colortemp.h" #include "cieimage.h" +#include "colortemp.h" +#include "curves.h" +#include "dcp.h" +#include "dcrop.h" #include "image8.h" #include "imagefloat.h" #include "labimage.h" -#include "curves.h" -#include "dcrop.h" #include "mytime.h" #include "procparams.h" #include "refreshmap.h" #include "rt_math.h" + #include "../rtgui/editcallbacks.h" namespace @@ -830,7 +832,7 @@ void Crop::update(int todo) } } double rrm, ggm, bbm; - DCPProfile::ApplyState as; + DCPProfileApplyState as; DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as); LUTu histToneCurve; diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index 79f85a944..d40f9fce6 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -18,14 +18,16 @@ * */ -#include +#include #include +#include +#include "array2D.h" #include "cieimage.h" #include "improcfun.h" -#include "array2D.h" -#include "rt_math.h" #include "opthelper.h" +#include "rt_math.h" +#include "settings.h" namespace { @@ -73,8 +75,8 @@ void dirpyr_channel(const float * const * data_fine, float ** data_coarse, int w float val = 0.f; float norm = 0.f; - for (int inbr = max(0, i - scalewin); inbr <= min(height - 1, i + scalewin); inbr += scale) { - for (int jnbr = max(0, j - scalewin); jnbr <= j + scalewin; jnbr += scale) { + for (int inbr = std::max(0, i - scalewin); inbr <= std::min(height - 1, i + scalewin); inbr += scale) { + for (int jnbr = std::max(0, j - scalewin); jnbr <= j + scalewin; jnbr += scale) { const float dirwt = domker[(inbr - i) / scale + halfwin][(jnbr - j)/ scale + halfwin] * rangeFn(fabsf(data_fine[inbr][jnbr] - data_fine[i][j])); val += dirwt * data_fine[inbr][jnbr]; norm += dirwt; @@ -107,7 +109,7 @@ void dirpyr_channel(const float * const * data_fine, float ** data_coarse, int w float val = 0.f; float norm = 0.f; - for (int inbr = max(0, i - scalewin); inbr <= min(height - 1, i + scalewin); inbr += scale) { + for (int inbr = std::max(0, i - scalewin); inbr <= std::min(height - 1, i + scalewin); inbr += scale) { for (int jnbr = j - scalewin; jnbr <= j + scalewin; jnbr += scale) { const float dirwt = domker[(inbr - i) / scale + halfwin][(jnbr - j)/ scale + halfwin] * rangeFn(fabsf(data_fine[inbr][jnbr] - data_fine[i][j])); val += dirwt * data_fine[inbr][jnbr]; @@ -121,8 +123,8 @@ void dirpyr_channel(const float * const * data_fine, float ** data_coarse, int w float val = 0.f; float norm = 0.f; - for (int inbr = max(0, i - scalewin); inbr <= min(height - 1, i + scalewin); inbr += scale) { - for (int jnbr = j - scalewin; jnbr <= min(width - 1, j + scalewin); jnbr += scale) { + for (int inbr = std::max(0, i - scalewin); inbr <= std::min(height - 1, i + scalewin); inbr += scale) { + for (int jnbr = j - scalewin; jnbr <= std::min(width - 1, j + scalewin); jnbr += scale) { const float dirwt = domker[(inbr - i) / scale + halfwin][(jnbr - j)/ scale + halfwin] * rangeFn(fabsf(data_fine[inbr][jnbr] - data_fine[i][j])); val += dirwt * data_fine[inbr][jnbr]; norm += dirwt; @@ -151,8 +153,8 @@ void dirpyr_channel(const float * const * data_fine, float ** data_coarse, int w float val = 0.f; float norm = 0.f; - for (int inbr = max(0, i - scale); inbr <= min(height - 1, i + scale); inbr += scale) { - for (int jnbr = max(0, j - scale); jnbr <= j + scale; jnbr += scale) { + for (int inbr = std::max(0, i - scale); inbr <= std::min(height - 1, i + scale); inbr += scale) { + for (int jnbr = std::max(0, j - scale); jnbr <= j + scale; jnbr += scale) { const float dirwt = rangeFn(fabsf(data_fine[inbr][jnbr] - data_fine[i][j])); val += dirwt * data_fine[inbr][jnbr]; norm += dirwt; @@ -184,7 +186,7 @@ void dirpyr_channel(const float * const * data_fine, float ** data_coarse, int w float val = 0.f; float norm = 0.f; - for (int inbr = max(0, i - scale); inbr <= min(height - 1, i + scale); inbr += scale) { + for (int inbr = std::max(0, i - scale); inbr <= std::min(height - 1, i + scale); inbr += scale) { for (int jnbr = j - scale; jnbr <= j + scale; jnbr += scale) { const float dirwt = rangeFn(fabsf(data_fine[inbr][jnbr] - data_fine[i][j])); val += dirwt * data_fine[inbr][jnbr]; @@ -198,8 +200,8 @@ void dirpyr_channel(const float * const * data_fine, float ** data_coarse, int w float val = 0.f; float norm = 0.f; - for (int inbr = max(0, i - scale); inbr <= min(height - 1, i + scale); inbr += scale) { - for (int jnbr = j - scale; jnbr <= min(width - 1, j + scale); jnbr += scale) { + for (int inbr = std::max(0, i - scale); inbr <= std::min(height - 1, i + scale); inbr += scale) { + for (int jnbr = j - scale; jnbr <= std::min(width - 1, j + scale); jnbr += scale) { const float dirwt = rangeFn(fabsf(data_fine[inbr][jnbr] - data_fine[i][j])); val += dirwt * data_fine[inbr][jnbr]; norm += dirwt; diff --git a/rtengine/dual_demosaic_RT.cc b/rtengine/dual_demosaic_RT.cc index 895d7c6fc..8a3564279 100644 --- a/rtengine/dual_demosaic_RT.cc +++ b/rtengine/dual_demosaic_RT.cc @@ -24,13 +24,16 @@ //////////////////////////////////////////////////////////////// #include "jaggedarray.h" -#include "rtengine.h" -#include "rawimagesource.h" -#include "rt_math.h" #include "procparams.h" +#include "rawimagesource.h" +#include "rt_algo.h" +#include "rt_math.h" +#include "rtengine.h" + +#include "../rtgui/options.h" + //#define BENCHMARK #include "StopWatch.h" -#include "rt_algo.h" using namespace std; diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 1eae22ad6..26c1314f4 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -26,6 +26,7 @@ #include "rawimage.h" #include "rawimagesource.h" +#include "coord.h" #include "mytime.h" #include "opthelper.h" #include "procparams.h" diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 403f4708c..184e288e9 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -17,15 +17,20 @@ * along with RawTherapee. If not, see . */ #include + #include -#include + #include +#include + +#include + #include "imagedata.h" -#include "iptcpairs.h" #include "imagesource.h" -#include "rt_math.h" +#include "iptcpairs.h" #include "procparams.h" +#include "rt_math.h" #pragma GCC diagnostic warning "-Wextra" #define PRINT_HDR_PS_DETECTION 0 diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 4a679f77e..6b5a22b63 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -24,17 +24,22 @@ #include #include "coord2d.h" -#include "dcp.h" #include "imagedata.h" #include "LUT.h" #include "rtengine.h" +template +class multi_array2D; + namespace rtengine { + class ColorTemp; +class DCPProfile; +class DCPProfileApplyState; class Imagefloat; -class RetinextransmissionCurve; class RetinexgaintransmissionCurve; +class RetinextransmissionCurve; namespace procparams { @@ -126,7 +131,7 @@ public: virtual ImageMatrices* getImageMatrices () = 0; virtual bool isRAW () const = 0; - virtual DCPProfile* getDCP (const procparams::ColorManagementParams &cmp, DCPProfile::ApplyState &as) + virtual DCPProfile* getDCP (const procparams::ColorManagementParams &cmp, DCPProfileApplyState &as) { return nullptr; }; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index b0996c6dd..b55c6ee75 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -16,27 +16,32 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include +#include +#include + #include "improccoordinator.h" #include "cieimage.h" +#include "color.h" +#include "colortemp.h" +#include "curves.h" +#include "dcp.h" +#include "iccstore.h" #include "image8.h" #include "imagefloat.h" -#include "labimage.h" -#include "curves.h" -#include "mytime.h" -#include "refreshmap.h" -#include "../rtgui/ppversion.h" -#include "colortemp.h" #include "improcfun.h" -#include "iccstore.h" +#include "labimage.h" +#include "mytime.h" #include "procparams.h" -#include -#include -#include -#include "color.h" +#include "refreshmap.h" + +#include "../rtgui/ppversion.h" + #ifdef _OPENMP #include #endif + namespace rtengine { @@ -736,7 +741,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) double ggm = 33.; double bbm = 33.; - DCPProfile::ApplyState as; + DCPProfileApplyState as; DCPProfile *dcpProf = imgsrc->getDCP(params->icm, as); ipf.rgbProc (oprevi, oprevl, nullptr, hltonecurve, shtonecurve, tonecurve, params->toneCurve.saturation, diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 14e93b771..71bca1d8a 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -21,20 +21,21 @@ #include +#include "array2D.h" #include "colortemp.h" -#include "rtengine.h" -#include "improcfun.h" -#include "imagesource.h" -#include "procevents.h" +#include "curves.h" #include "dcrop.h" +#include "imagesource.h" +#include "improcfun.h" #include "LUT.h" +#include "procevents.h" +#include "rtengine.h" + #include "../rtgui/threadutils.h" namespace rtengine { -class Image8; - using namespace procparams; class Crop; diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 90cd438d6..c84027e6a 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -2050,7 +2050,7 @@ filmlike_clip (float *r, float *g, float *b) void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clToningcurve, LUTf & cl2Toningcurve, - const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve, size_t chunkSize, bool measure) + const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfileApplyState &asIn, LUTu &histToneCurve, size_t chunkSize, bool measure) { rgbProc (working, lab, pipetteBuffer, hltonecurve, shtonecurve, tonecurve, sat, rCurve, gCurve, bCurve, satLimit, satLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, customToneCurvebw1, customToneCurvebw2, rrm, ggm, bbm, autor, autog, autob, params->toneCurve.expcomp, params->toneCurve.hlcompr, params->toneCurve.hlcomprthresh, dcpProf, asIn, histToneCurve, chunkSize, measure); } @@ -2058,7 +2058,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer // Process RGB image and convert to LAB space void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clToningcurve, LUTf & cl2Toningcurve, - const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve, size_t chunkSize, bool measure) + const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfileApplyState &asIn, LUTu &histToneCurve, size_t chunkSize, bool measure) { std::unique_ptr stop; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 16b8e27b0..a47ba2980 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -24,18 +24,27 @@ #include "color.h" #include "LUT.h" #include "lcp.h" -#include "dcp.h" #include "pipettebuffer.h" #include "gamutwarning.h" +template +class multi_array2D; + namespace rtengine { + +class ColorAppearance; class ColorGradientCurve; +class DCPProfile; +class DCPProfileApplyState; +class FlatCurve; +class FramesMetaData; +class NoiseCurve; class OpacityCurve; class ToneCurve; class WavCurve; -class WavOpacityCurveRG; class WavOpacityCurveBY; +class WavOpacityCurveRG; class WavOpacityCurveW; class WavOpacityCurveWL; @@ -50,6 +59,7 @@ namespace procparams class ProcParams; +struct ColorManagementParams; struct DirPyrDenoiseParams; struct SharpeningParams; struct VignettingParams; @@ -113,11 +123,11 @@ public: void updateColorProfiles(const Glib::ustring& monitorProfile, RenderingIntent monitorIntent, bool softProof, bool gamutCheck); void rgbProc(Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, - const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve, size_t chunkSize = 1, bool measure = false); + const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfileApplyState &asIn, LUTu &histToneCurve, size_t chunkSize = 1, bool measure = false); void rgbProc(Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2, const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, - double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve, size_t chunkSize = 1, bool measure = false); + double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfileApplyState &asIn, LUTu &histToneCurve, size_t chunkSize = 1, bool measure = false); void labtoning(float r, float g, float b, float &ro, float &go, float &bo, int algm, int metchrom, int twoc, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, LUTf & clToningcurve, LUTf & cl2Toningcurve, float iplow, float iphigh, double wp[3][3], double wip[3][3]); void toning2col(float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float rl, float gl, float bl, float rh, float gh, float bh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect); void toningsmh(float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect); diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 7ca4d72ad..ce5843da8 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -40,7 +40,7 @@ #include "rescale.h" #include "rt_math.h" -extern Options options; +#include "../rtgui/options.h" namespace rtengine { diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index d6b7294f6..932b7e18d 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -22,14 +22,17 @@ #include #endif +#include "curves.h" +#include "guidedfilter.h" #include "iccstore.h" #include "improcfun.h" #include "labimage.h" -#include "guidedfilter.h" #include "procparams.h" + +#include "sleef.c" + //#define BENCHMARK #include "StopWatch.h" -#include "sleef.c" namespace { diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index e443b5bca..ab3a632da 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -41,6 +41,7 @@ #include #include +#include "curves.h" #include "gauss.h" #include "improcfun.h" #include "jaggedarray.h" @@ -135,8 +136,6 @@ void mean_stddv2( float **dst, float &mean, float &stddv, int W_L, int H_L, floa namespace rtengine { -extern const Settings* settings; - void RawImageSource::MSR(float** luminance, float** originalLuminance, float **exLuminance, const LUTf& mapcurve, bool mapcontlutili, int width, int height, const procparams::RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) { BENCHFUN diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index 1e8842cbb..a1e91c4ab 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -20,12 +20,14 @@ #include "improcfun.h" +#include "curves.h" #include "gauss.h" #include "guidedfilter.h" #include "iccstore.h" #include "labimage.h" #include "opthelper.h" #include "procparams.h" + #include "sleef.c" namespace rtengine { diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 1223ff9ce..8f63b59f6 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -17,19 +17,22 @@ * along with RawTherapee. If not, see . */ -#include "improcfun.h" -#include "cieimage.h" -#include "labimage.h" -#include "gauss.h" #include "bilateral2.h" +#include "cieimage.h" +#include "gauss.h" +#include "improcfun.h" #include "jaggedarray.h" -#include "rt_math.h" -#include "procparams.h" -#include "sleef.c" +#include "labimage.h" #include "opthelper.h" +#include "procparams.h" +#include "rt_algo.h" +#include "rt_math.h" +#include "settings.h" +#include "sleef.c" + //#define BENCHMARK #include "StopWatch.h" -#include "rt_algo.h" + using namespace std; namespace { diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 078b9d585..4cd16f90b 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -28,19 +28,20 @@ #include "../rtgui/threadutils.h" -#include "rtengine.h" +#include "array2D.h" +#include "curves.h" +#include "EdgePreservingDecomposition.h" +#include "iccstore.h" #include "improcfun.h" #include "labimage.h" #include "LUT.h" -#include "array2D.h" -#include "rt_math.h" -#include "mytime.h" -#include "sleef.c" -#include "opthelper.h" #include "median.h" -#include "EdgePreservingDecomposition.h" -#include "iccstore.h" +#include "mytime.h" +#include "opthelper.h" #include "procparams.h" +#include "rt_math.h" +#include "rtengine.h" +#include "sleef.c" #ifdef _OPENMP #include diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index abe6a0536..ca5e742fb 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -21,13 +21,20 @@ //////////////////////////////////////////////////////////////// #include -#include "rawimagesource.h" -#include "../rtgui/multilangmgr.h" -#include "procparams.h" +#include + +#include "array2D.h" #include "gauss.h" #include "median.h" +#include "procparams.h" +#include "rawimagesource.h" + +#include "../rtgui/multilangmgr.h" +#include "../rtgui/options.h" + //#define BENCHMARK #include "StopWatch.h" + namespace { diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index ca324a5c1..7d101ff5d 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -19,34 +19,38 @@ #include #include -#include "rtengine.h" -#include "imagefloat.h" -#include "rawimage.h" -#include "rawimagesource.h" -#include "rawimagesource_i.h" -#include "jaggedarray.h" -#include "median.h" -#include "rawimage.h" -#include "mytime.h" -#include "iccstore.h" +#include "camconst.h" +#include "color.h" #include "curves.h" +#include "dcp.h" #include "dfmanager.h" #include "ffmanager.h" -#include "dcp.h" -#include "rt_math.h" +#include "iccstore.h" +#include "imagefloat.h" #include "improcfun.h" -#include "rtlensfun.h" +#include "jaggedarray.h" +#include "median.h" +#include "mytime.h" #include "pdaflinesfilter.h" -#include "camconst.h" #include "procparams.h" -#include "color.h" +#include "rawimage.h" +#include "rawimage.h" +#include "rawimagesource_i.h" +#include "rawimagesource.h" +#include "rt_math.h" +#include "rtengine.h" +#include "rtlensfun.h" + //#define BENCHMARK //#include "StopWatch.h" + #ifdef _OPENMP #include #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) @@ -935,7 +939,7 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima } } -DCPProfile *RawImageSource::getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as) +DCPProfile *RawImageSource::getDCP(const ColorManagementParams &cmp, DCPProfileApplyState &as) { if (cmp.inputProfile == "(camera)" || cmp.inputProfile == "(none)") { return nullptr; diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 118dcb559..82e842ad3 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -182,7 +182,7 @@ public: void getAutoExpHistogram (LUTu & histogram, int& histcompr) override; void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw) override; void getAutoMatchedToneCurve(const procparams::ColorManagementParams &cp, std::vector &outCurve) override; - DCPProfile *getDCP(const procparams::ColorManagementParams &cmp, DCPProfile::ApplyState &as) override; + DCPProfile *getDCP(const procparams::ColorManagementParams &cmp, DCPProfileApplyState &as) override; void convertColorSpace(Imagefloat* image, const procparams::ColorManagementParams &cmp, const ColorTemp &wb) override; static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in); diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 7f232d8be..d10e2b1dc 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -16,33 +16,39 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include + +#include + +#include + +#include + #include "cieimage.h" +#include "colortemp.h" +#include "curves.h" +#include "dcp.h" +#include "iccmatrices.h" +#include "iccstore.h" +#include "image8.h" +#include "improccoordinator.h" +#include "improcfun.h" +#include "jpeg.h" #include "labimage.h" +#include "median.h" +#include "mytime.h" +#include "procparams.h" +#include "rawimage.h" +#include "rawimagesource.h" #include "rtengine.h" #include "rtthumbnail.h" -#include "../rtgui/options.h" -#include "image8.h" -#include -#include "curves.h" -#include -#include "improcfun.h" -#include "colortemp.h" -#include "mytime.h" -#include "utils.h" -#include "iccstore.h" -#include "iccmatrices.h" -#include "rawimagesource.h" -#include "stdimagesource.h" -#include -#include "rawimage.h" -#include "jpeg.h" -#include "../rtgui/ppversion.h" -#include "improccoordinator.h" #include "settings.h" -#include "procparams.h" -#include +#include "stdimagesource.h" #include "StopWatch.h" -#include "median.h" +#include "utils.h" + +#include "../rtgui/options.h" +#include "../rtgui/ppversion.h" namespace { @@ -1365,7 +1371,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT LabImage* labView = new LabImage (fw, fh); DCPProfile *dcpProf = nullptr; - DCPProfile::ApplyState as; + DCPProfileApplyState as; if (isRaw) { cmsHPROFILE dummy; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index b7bc46cb1..978479304 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "cieimage.h" +#include "dcp.h" #include "imagefloat.h" #include "labimage.h" #include "rtengine.h" @@ -243,7 +244,6 @@ private: bool dehacontlutili = false; bool mapcontlutili = false; bool useHsl = false; -// multi_array2D conversionBuffer(1, 1); multi_array2D conversionBuffer (1, 1); imgsrc->retinexPrepareBuffers (params.icm, params.retinex, conversionBuffer, dummy); imgsrc->retinexPrepareCurves (params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, dummy, dummy ); @@ -998,7 +998,7 @@ private: } autor = -9000.f; // This will ask to compute the "auto" values for the B&W tool (have to be inferior to -5000) - DCPProfile::ApplyState as; + DCPProfileApplyState as; DCPProfile *dcpProf = imgsrc->getDCP (params.icm, as); LUTu histToneCurve; From 1d51016bdde96e08be9c553967eae87c41f3e223 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 30 Oct 2019 14:07:49 +0100 Subject: [PATCH 37/66] Fix some lgtm issues --- rtengine/CA_correct_RT.cc | 2 +- rtengine/array2D.h | 2 +- rtengine/capturesharpening.cc | 4 ++-- rtengine/cfa_linedn_RT.cc | 2 +- rtengine/demosaic_algos.cc | 16 ++++++++-------- rtengine/pixelshift.cc | 4 ++-- rtengine/tmo_fattal02.cc | 4 ++-- rtengine/vng4_demosaic_RT.cc | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index a2d68402f..05fd806ca 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -198,7 +198,7 @@ float* RawImageSource::CA_correct_RT( //block CA shift values and weight assigned to block float* const blockwt = buffer + (height * width); - memset(blockwt, 0, vblsz * hblsz * (2 * 2 + 1) * sizeof(float)); + memset(blockwt, 0, static_cast(vblsz) * hblsz * (2 * 2 + 1) * sizeof(float)); float (*blockshifts)[2][2] = (float (*)[2][2])(blockwt + vblsz * hblsz); // Because we can't break parallel processing, we need a switch do handle the errors diff --git a/rtengine/array2D.h b/rtengine/array2D.h index 7713cd55c..d25e20a83 100644 --- a/rtengine/array2D.h +++ b/rtengine/array2D.h @@ -249,7 +249,7 @@ public: ar_realloc(w, h, offset); if (flags & ARRAY2D_CLEAR_DATA) { - memset(data + offset, 0, w * h * sizeof(T)); + memset(data + offset, 0, static_cast(w) * h * sizeof(T)); } } diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index 4eeca1f15..bbc0be50b 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -583,10 +583,10 @@ BENCHFUN } else { if (sigmaCornerOffset != 0.0) { const float distance = sqrt(rtengine::SQR(i + tileSize / 2 - H / 2) + rtengine::SQR(j + tileSize / 2 - W / 2)); - const float sigmaTile = sigma + distanceFactor * distance; + const float sigmaTile = static_cast(sigma) + distanceFactor * distance; if (sigmaTile >= 0.4f) { float lkernel7[7][7]; - compute7x7kernel(sigma + distanceFactor * distance, lkernel7); + compute7x7kernel(static_cast(sigma) + distanceFactor * distance, lkernel7); for (int k = 0; k < iterations - 1; ++k) { // apply 7x7 gaussian blur and divide luminance by result of gaussian blur gauss7x7div(tmpIThr, tmpThr, lumThr, fullTileSize, fullTileSize, lkernel7); diff --git a/rtengine/cfa_linedn_RT.cc b/rtengine/cfa_linedn_RT.cc index 3aef79133..ba26740c1 100644 --- a/rtengine/cfa_linedn_RT.cc +++ b/rtengine/cfa_linedn_RT.cc @@ -62,7 +62,7 @@ void RawImageSource::CLASS cfa_linedn(float noise, bool horizontal, bool vertica // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% float noisevar = SQR(3 * noise * 65535); // _noise_ (as a fraction of saturation) is input to the algorithm float noisevarm4 = 4.0f * noisevar; - float* RawDataTmp = (float*)malloc( width * height * sizeof(float)); + float* RawDataTmp = (float*)malloc(static_cast(width) * height * sizeof(float)); #ifdef _OPENMP #pragma omp parallel #endif diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 52e15be54..f1b9cb5e8 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -77,7 +77,7 @@ void RawImageSource::ppg_demosaic() plistener->setProgress (0.0); } - image = (float (*)[4]) calloc (H * W, sizeof * image); + image = (float (*)[4]) calloc (static_cast(H) * W, sizeof * image); for (int ii = 0; ii < H; ii++) for (int jj = 0; jj < W; jj++) { @@ -375,9 +375,9 @@ void RawImageSource::jdl_interpolate_omp() // from "Lassus" int row, col, c, d, i, u = width, v = 2 * u, w = 3 * u, x = 4 * u, y = 5 * u, z = 6 * u, indx, (*dif)[2], (*chr)[2]; float f[4], g[4]; float (*image)[4]; - image = (float (*)[4]) calloc (width * height, sizeof * image); - dif = (int (*)[2]) calloc(width * height, sizeof * dif); - chr = (int (*)[2]) calloc(width * height, sizeof * chr); + image = (float (*)[4]) calloc (static_cast(width) * height, sizeof * image); + dif = (int (*)[2]) calloc(static_cast(width) * height, sizeof * dif); + chr = (int (*)[2]) calloc(static_cast(width) * height, sizeof * chr); if (plistener) { // this function seems to be unused @@ -542,14 +542,14 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, array2D &r float *rix[5]; float *qix[5]; - float *buffer = (float *)calloc(rr1 * cc1 * 5 * sizeof(float), 1); + float *buffer = (float *)calloc(static_cast(rr1) * cc1 * 5 * sizeof(float), 1); if(buffer == nullptr) { // allocation of big block of memory failed, try to get 5 smaller ones printf("lmmse_interpolate_omp: allocation of big memory block failed, try to get 5 smaller ones now...\n"); bool allocationFailed = false; for(int i = 0; i < 5; i++) { - qix[i] = (float *)calloc(rr1 * cc1 * sizeof(float), 1); + qix[i] = (float *)calloc(static_cast(rr1) * cc1 * sizeof(float), 1); if(!qix[i]) { // allocation of at least one small block failed allocationFailed = true; @@ -1144,7 +1144,7 @@ void RawImageSource::igv_interpolate(int winw, int winh) vdif = (float (*)) calloc( width * height / 2, sizeof * vdif ); hdif = (float (*)) calloc( width * height / 2, sizeof * hdif ); - chrarray = (float (*)) calloc( width * height, sizeof( float ) ); + chrarray = (float (*)) calloc(static_cast(width) * height, sizeof( float ) ); chr[0] = chrarray; chr[1] = chrarray + (width * height) / 2; @@ -2039,7 +2039,7 @@ void RawImageSource::refinement_lassus(int PassCount) t1e.set(); int u = W, v = 2 * u, w = 3 * u, x = 4 * u, y = 5 * u; float (*image)[3]; - image = (float(*)[3]) calloc(W * H, sizeof * image); + image = (float(*)[3]) calloc(static_cast(W) * H, sizeof * image); #ifdef _OPENMP #pragma omp parallel shared(image) #endif diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index ca5e742fb..9cb5844c2 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -114,9 +114,9 @@ void xorMasks(int xStart, int xEnd, int yStart, int yEnd, const array2D } } -void floodFill4Impl(int y, int x, int xStart, int xEnd, int yStart, int yEnd, array2D &mask, std::stack, std::vector>> &coordStack) +void floodFill4Impl(int yin, int xin, int xStart, int xEnd, int yStart, int yEnd, array2D &mask, std::stack, std::vector>> &coordStack) { - coordStack.emplace(x, y); + coordStack.emplace(xin, yin); while(!coordStack.empty()) { auto coord = coordStack.top(); diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index f1822b486..31671bd0c 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -1094,7 +1094,7 @@ void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) float oldMedian; const float percentile = float(LIM(params->fattal.anchor, 1, 100)) / 100.f; - findMinMaxPercentile (Yr.data(), Yr.getRows() * Yr.getCols(), percentile, oldMedian, percentile, oldMedian, multiThread); + findMinMaxPercentile (Yr.data(), static_cast(Yr.getRows()) * Yr.getCols(), percentile, oldMedian, percentile, oldMedian, multiThread); // median filter on the deep shadows, to avoid boosting noise // because w2 >= w and h2 >= h, we can use the L buffer as temporary buffer for Median_Denoise() int w2 = find_fast_dim (w) + 1; @@ -1136,7 +1136,7 @@ void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) const float wr = float(w2) / float(w); float newMedian; - findMinMaxPercentile (L.data(), L.getRows() * L.getCols(), percentile, newMedian, percentile, newMedian, multiThread); + findMinMaxPercentile (L.data(), static_cast(L.getRows()) * L.getCols(), percentile, newMedian, percentile, newMedian, multiThread); const float scale = (oldMedian == 0.f || newMedian == 0.f) ? 65535.f : (oldMedian / newMedian); // avoid Nan #ifdef _OPENMP diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 384ec3219..aaaa1b9a6 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -103,7 +103,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D(height) * width, sizeof * image); int lcode[16][16][32]; float mul[16][16][8]; From ba8dda18365a8eb4db65b372fda5d2c0686c0fb3 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 30 Oct 2019 16:38:02 +0100 Subject: [PATCH 38/66] Further cleanup of include dependencies --- rtengine/dcp.cc | 1 + rtengine/iccstore.cc | 1 + rtengine/improccoordinator.cc | 2 ++ rtengine/iplab2rgb.cc | 1 - rtengine/ipwavelet.cc | 2 +- rtengine/procparams.h | 2 +- rtengine/rawimagesource.cc | 1 + rtengine/rtthumbnail.cc | 2 -- rtgui/batchqueue.h | 1 - rtgui/batchtoolpanelcoord.h | 3 ++- rtgui/blackwhite.cc | 1 + rtgui/colorappearance.cc | 1 + rtgui/colortoning.cc | 1 + rtgui/crop.cc | 2 -- rtgui/cropwindow.h | 6 +++++- rtgui/cursormanager.cc | 1 - rtgui/curveeditorgroup.cc | 1 + rtgui/defringe.cc | 1 + rtgui/diagonalcurveeditorsubgroup.cc | 1 + rtgui/dirpyrdenoise.cc | 4 ++-- rtgui/dirpyrdenoise.h | 1 - rtgui/filebrowser.cc | 2 -- rtgui/flatcurveeditorsubgroup.cc | 1 + rtgui/histogrampanel.cc | 2 -- rtgui/hsvequalizer.cc | 2 ++ rtgui/iccprofilecreator.cc | 2 -- rtgui/iccprofilecreator.h | 1 - rtgui/icmpanel.cc | 2 -- rtgui/inspector.cc | 2 -- rtgui/labcurve.cc | 2 ++ rtgui/lockablecolorpicker.cc | 2 -- rtgui/main-cli.cc | 2 -- rtgui/main.cc | 2 -- rtgui/mycurve.h | 1 - rtgui/navigator.cc | 2 -- rtgui/options.cc | 1 + rtgui/options.h | 12 +++++++----- rtgui/preferences.cc | 1 - rtgui/renamedlg.cc | 1 - rtgui/retinex.cc | 1 + rtgui/rgbcurves.cc | 2 ++ rtgui/rtimage.cc | 1 + rtgui/rtscalable.cc | 3 ++- rtgui/saveasdlg.cc | 2 -- rtgui/saveasdlg.h | 1 - rtgui/thumbnail.h | 1 - rtgui/tonecurve.cc | 1 + rtgui/vibrance.cc | 1 + rtgui/wavelet.cc | 2 +- rtgui/wavelet.h | 1 - 50 files changed, 44 insertions(+), 48 deletions(-) diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 549fcf150..9dbee9375 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -31,6 +31,7 @@ #include "imagefloat.h" #include "rawimagesource.h" #include "rt_math.h" +#include "../rtgui/options.h" namespace rtengine { diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 7151e244d..02a1fffac 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -35,6 +35,7 @@ #include "iccmatrices.h" +#include "../rtgui/guiutils.h" #include "../rtgui/options.h" #include "../rtgui/threadutils.h" #include "lcms2_plugin.h" diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index b55c6ee75..090c3376d 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -36,12 +36,14 @@ #include "procparams.h" #include "refreshmap.h" +#include "../rtgui/options.h" #include "../rtgui/ppversion.h" #ifdef _OPENMP #include #endif + namespace rtengine { diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index f2b337e01..6166c928e 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -24,7 +24,6 @@ #include #include "iccstore.h" #include "iccmatrices.h" -#include "../rtgui/options.h" #include "settings.h" #include "alignedbuffer.h" #include "color.h" diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 4cd16f90b..2ba6ec97b 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -42,6 +42,7 @@ #include "rt_math.h" #include "rtengine.h" #include "sleef.c" +#include "../rtgui/options.h" #ifdef _OPENMP #include @@ -56,7 +57,6 @@ #define epsilon 0.001f/(TS*TS) //tolerance - namespace rtengine { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 57c27063e..015b487ff 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -20,11 +20,11 @@ #include #include +#include #include #include #include -#include #include #include "noncopyable.h" diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 7d101ff5d..347331467 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -40,6 +40,7 @@ #include "rt_math.h" #include "rtengine.h" #include "rtlensfun.h" +#include "../rtgui/options.h" //#define BENCHMARK //#include "StopWatch.h" diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index d10e2b1dc..4a7fb2d11 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -191,8 +191,6 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], } -extern Options options; - namespace rtengine { diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index f61b7b5c4..7248ac793 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -26,7 +26,6 @@ #include "batchqueueentry.h" #include "lwbuttonset.h" -#include "options.h" #include "threadutils.h" #include "thumbbrowserbase.h" #include "../rtengine/noncopyable.h" diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index f03d1d4b2..53741be49 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -22,7 +22,8 @@ #include "thumbnail.h" #include "toolpanelcoord.h" #include "fileselectionchangelistener.h" -#include "../rtengine/rtengine.h" +#include "../rtengine/procparams.h" +#include "../rtengine/procevents.h" #include "paramsedited.h" #include "thumbnaillistener.h" diff --git a/rtgui/blackwhite.cc b/rtgui/blackwhite.cc index b5ecb96bd..482bf437f 100644 --- a/rtgui/blackwhite.cc +++ b/rtgui/blackwhite.cc @@ -23,6 +23,7 @@ #include "guiutils.h" #include "rtimage.h" +#include "options.h" #include "../rtengine/color.h" #include "../rtengine/procparams.h" diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index f8eb736d4..0d155e97b 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -21,6 +21,7 @@ #include "colorappearance.h" #include "guiutils.h" +#include "options.h" #include "../rtengine/color.h" #include "../rtengine/procparams.h" diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index e164739e5..f177602a3 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -6,6 +6,7 @@ #include "rtimage.h" #include "eventmapper.h" #include "labgrid.h" +#include "options.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/crop.cc b/rtgui/crop.cc index b1780538e..3bdcf14cf 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -26,8 +26,6 @@ using namespace rtengine; using namespace rtengine::procparams; -extern Options options; - namespace { diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h index 99b0fd897..be07db5c9 100644 --- a/rtgui/cropwindow.h +++ b/rtgui/cropwindow.h @@ -19,7 +19,6 @@ #ifndef _CROPWINDOW_ #define _CROPWINDOW_ -#include "../rtengine/rtengine.h" #include #include "lwbutton.h" #include "lwbuttonset.h" @@ -33,6 +32,11 @@ #include "editcoordsys.h" #include "../rtengine/noncopyable.h" +namespace rtengine { + +class Coord; + +} class CropWindow; class CropWindowListener diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc index 76b4eabfb..e915150aa 100644 --- a/rtgui/cursormanager.cc +++ b/rtgui/cursormanager.cc @@ -18,7 +18,6 @@ */ #include "cursormanager.h" -#include "options.h" #include "rtimage.h" CursorManager mainWindowCursorManager; diff --git a/rtgui/curveeditorgroup.cc b/rtgui/curveeditorgroup.cc index 0e7205518..edad0349d 100644 --- a/rtgui/curveeditorgroup.cc +++ b/rtgui/curveeditorgroup.cc @@ -25,6 +25,7 @@ #include "flatcurveeditorsubgroup.h" #include "multilangmgr.h" #include "rtimage.h" +#include "options.h" CurveEditorGroup::CurveEditorGroup (Glib::ustring& curveDir, Glib::ustring groupLabel) : curveDir(curveDir), line(0), curve_reset(nullptr), displayedCurve(nullptr), flatSubGroup(nullptr), diagonalSubGroup(nullptr), cl(nullptr), numberOfPackedCurve(0) diff --git a/rtgui/defringe.cc b/rtgui/defringe.cc index 659d41960..8aa79dddd 100644 --- a/rtgui/defringe.cc +++ b/rtgui/defringe.cc @@ -20,6 +20,7 @@ #include #include "defringe.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index 21b42a6ce..cece9be66 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -31,6 +31,7 @@ #include "curveeditor.h" #include "diagonalcurveeditorsubgroup.h" #include "rtimage.h" +#include "options.h" #include "../rtengine/curves.h" diff --git a/rtgui/dirpyrdenoise.cc b/rtgui/dirpyrdenoise.cc index 2a0bba596..dd695eecf 100644 --- a/rtgui/dirpyrdenoise.cc +++ b/rtgui/dirpyrdenoise.cc @@ -21,14 +21,14 @@ #include "dirpyrdenoise.h" +#include "editbuffer.h" #include "guiutils.h" +#include "options.h" #include "../rtengine/procparams.h" -#include "editbuffer.h" using namespace rtengine; using namespace rtengine::procparams; -extern Options options; DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP_DIRPYRDENOISE_LABEL"), true, true), lastmedian(false) { diff --git a/rtgui/dirpyrdenoise.h b/rtgui/dirpyrdenoise.h index a513eb262..05304e4f7 100644 --- a/rtgui/dirpyrdenoise.h +++ b/rtgui/dirpyrdenoise.h @@ -26,7 +26,6 @@ #include "curveeditorgroup.h" #include "colorprovider.h" #include "guiutils.h" -#include "options.h" class EditDataProvider; diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index d4f5bb8ca..5817222dd 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -37,8 +37,6 @@ #include "../rtengine/ffmanager.h" #include "../rtengine/procparams.h" -extern Options options; - namespace { diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 6dc3a1f5b..b5dc4f726 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -32,6 +32,7 @@ #include "curveeditor.h" #include "flatcurveeditorsubgroup.h" #include "rtimage.h" +#include "options.h" #include "../rtengine/curves.h" diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index 74e473096..ddf60ca75 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -28,8 +28,6 @@ using namespace rtengine; -extern Options options; - // // diff --git a/rtgui/hsvequalizer.cc b/rtgui/hsvequalizer.cc index b6b5b04f2..b570a23ac 100644 --- a/rtgui/hsvequalizer.cc +++ b/rtgui/hsvequalizer.cc @@ -18,6 +18,8 @@ */ #include "hsvequalizer.h" +#include "options.h" + #include "../rtengine/color.h" #include "../rtengine/procparams.h" diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 2728a7611..0ac0b79f3 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -29,8 +29,6 @@ #include #endif -extern Options options; - namespace rtengine { diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index b28ac29f2..950fcc01f 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -21,7 +21,6 @@ #include #include "adjuster.h" -#include "options.h" #include #include "rtwindow.h" diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 012aeca78..99bd6cfca 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -32,8 +32,6 @@ using namespace rtengine; using namespace rtengine::procparams; -extern Options options; - ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunchanged(nullptr), icmplistener(nullptr) { auto m = ProcEventMapper::getInstance(); diff --git a/rtgui/inspector.cc b/rtgui/inspector.cc index 8bd9862a7..ad2e424ec 100644 --- a/rtgui/inspector.cc +++ b/rtgui/inspector.cc @@ -24,8 +24,6 @@ #include "options.h" #include "../rtengine/previewimage.h" -extern Options options; - InspectorBuffer::InspectorBuffer(const Glib::ustring &imagePath) : currTransform(0), fromRaw(false) { if (!imagePath.empty() && Glib::file_test(imagePath, Glib::FILE_TEST_EXISTS) && !Glib::file_test(imagePath, Glib::FILE_TEST_IS_DIR)) { diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index 237f9ea9b..fd1065269 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -20,6 +20,8 @@ #include "labcurve.h" +#include "options.h" + #include "../rtengine/improcfun.h" #include "../rtengine/procparams.h" #include "editcallbacks.h" diff --git a/rtgui/lockablecolorpicker.cc b/rtgui/lockablecolorpicker.cc index ef16df6ec..a4f3dbdab 100644 --- a/rtgui/lockablecolorpicker.cc +++ b/rtgui/lockablecolorpicker.cc @@ -25,8 +25,6 @@ #include "multilangmgr.h" #include "navigator.h" -extern Options options; - LockableColorPicker::LockableColorPicker (CropWindow* cropWindow, Glib::ustring *oProfile, Glib::ustring *wProfile) : cropWindow(cropWindow), displayedValues(ColorPickerType::RGB), position(0, 0), size(Size::S15), outputProfile(oProfile), workingProfile(wProfile), validity(Validity::OUTSIDE), diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc index 09aab1cff..8310867df 100644 --- a/rtgui/main-cli.cc +++ b/rtgui/main-cli.cc @@ -55,8 +55,6 @@ // Set this to 1 to make RT work when started with Eclipse and arguments, at least on Windows platform #define ECLIPSE_ARGS 0 -extern Options options; - // stores path to data files Glib::ustring argv0; Glib::ustring creditsPath; diff --git a/rtgui/main.cc b/rtgui/main.cc index 631d3db0a..997f20732 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -53,8 +53,6 @@ // Set this to 1 to make RT work when started with Eclipse and arguments, at least on Windows platform #define ECLIPSE_ARGS 0 -extern Options options; - // stores path to data files Glib::ustring argv0; Glib::ustring creditsPath; diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index fd22660ea..b5577e8dd 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -26,7 +26,6 @@ #include "coloredbar.h" #include "coordinateadjuster.h" #include "../rtengine/LUT.h" -#include "options.h" #include "../rtengine/noncopyable.h" #define RADIUS 3.5 /** radius of the control points ; must be x.5 to target the center of a pixel */ diff --git a/rtgui/navigator.cc b/rtgui/navigator.cc index 50946f32f..6a8137737 100644 --- a/rtgui/navigator.cc +++ b/rtgui/navigator.cc @@ -23,8 +23,6 @@ #include "../rtengine/rt_math.h" #include "options.h" -extern Options options; - using namespace rtengine; Navigator::Navigator () : currentRGBUnit(options.navRGBUnit), currentHSVUnit(options.navHSVUnit) diff --git a/rtgui/options.cc b/rtgui/options.cc index 9757fa3b7..8d8d52c83 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -19,6 +19,7 @@ #include "options.h" #include #include +#include #include #include #include "multilangmgr.h" diff --git a/rtgui/options.h b/rtgui/options.h index 990a32228..b2263f59c 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -16,12 +16,11 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _OPTIONS_ -#define _OPTIONS_ +#pragma once #include #include -#include "../rtengine/rtengine.h" +#include "../rtengine/settings.h" #include #define STARTUPDIR_CURRENT 0 @@ -103,6 +102,11 @@ enum PPLoadLocation {PLL_Cache = 0, PLL_Input = 1}; enum CPBKeyType {CPBKT_TID = 0, CPBKT_NAME = 1, CPBKT_TID_NAME = 2}; enum prevdemo_t {PD_Sidecar = 1, PD_Fast = 0}; +namespace Glib { + +class KeyFile; + +} class Options { public: @@ -447,5 +451,3 @@ extern bool gimpPlugin; extern bool remote; extern Glib::ustring versionString; extern Glib::ustring paramFileExtension; - -#endif diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 3c0d1bedc..2676e0940 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -50,7 +50,6 @@ void placeSpinBox(Gtk::Container* where, Gtk::SpinButton* &spin, const std::stri } } -extern Options options; extern Glib::ustring argv0; Glib::RefPtr themecss; Glib::RefPtr fontcss; diff --git a/rtgui/renamedlg.cc b/rtgui/renamedlg.cc index 8f55b3653..81bcd86e5 100644 --- a/rtgui/renamedlg.cc +++ b/rtgui/renamedlg.cc @@ -18,7 +18,6 @@ */ #include "renamedlg.h" #include "multilangmgr.h" -#include "options.h" #include "rtimage.h" RenameDialog::RenameDialog (Gtk::Window* parent) diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index e074d7e9c..dddf1da20 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -4,6 +4,7 @@ #include "retinex.h" #include "mycurve.h" #include "rtimage.h" +#include "options.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/rgbcurves.cc b/rtgui/rgbcurves.cc index 2350783e0..7af6cab97 100644 --- a/rtgui/rgbcurves.cc +++ b/rtgui/rgbcurves.cc @@ -18,6 +18,8 @@ */ #include "rgbcurves.h" +#include "options.h" + #include "../rtengine/procparams.h" using namespace rtengine; diff --git a/rtgui/rtimage.cc b/rtgui/rtimage.cc index e35a6d164..ff27dbbd3 100644 --- a/rtgui/rtimage.cc +++ b/rtgui/rtimage.cc @@ -20,6 +20,7 @@ #include "rtimage.h" +#include #include #include "options.h" diff --git a/rtgui/rtscalable.cc b/rtgui/rtscalable.cc index fa92655ac..b803ab270 100644 --- a/rtgui/rtscalable.cc +++ b/rtgui/rtscalable.cc @@ -25,11 +25,12 @@ #include #include "options.h" +#include "../rtengine/rt_math.h" + double RTScalable::dpi = 0.; int RTScalable::scale = 0; extern Glib::ustring argv0; -extern Options options; extern unsigned char initialGdkScale; extern float fontScale; Gtk::TextDirection RTScalable::direction = Gtk::TextDirection::TEXT_DIR_NONE; diff --git a/rtgui/saveasdlg.cc b/rtgui/saveasdlg.cc index 1b61d7d3d..5516bdf7c 100644 --- a/rtgui/saveasdlg.cc +++ b/rtgui/saveasdlg.cc @@ -26,8 +26,6 @@ #include "../rtengine/utils.h" -extern Options options; - namespace { diff --git a/rtgui/saveasdlg.h b/rtgui/saveasdlg.h index dd120337d..4097a3ae9 100644 --- a/rtgui/saveasdlg.h +++ b/rtgui/saveasdlg.h @@ -22,7 +22,6 @@ #include #include "adjuster.h" #include "saveformatpanel.h" -#include "options.h" class SaveAsDialog : public Gtk::Dialog, public FormatChangeListener { diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index b1c45fdfa..cacffbd58 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -24,7 +24,6 @@ #include #include "cachemanager.h" -#include "options.h" #include "../rtengine/rtengine.h" #include "../rtengine/rtthumbnail.h" #include "cacheimagedata.h" diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index fa1c80ed8..1f660f72a 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -25,6 +25,7 @@ #include "adjuster.h" #include "eventmapper.h" #include "ppversion.h" +#include "options.h" #include "../rtengine/procparams.h" #include "editcallbacks.h" diff --git a/rtgui/vibrance.cc b/rtgui/vibrance.cc index 461c4a79f..67052785a 100644 --- a/rtgui/vibrance.cc +++ b/rtgui/vibrance.cc @@ -18,6 +18,7 @@ */ #include "vibrance.h" +#include "options.h" #include "../rtengine/color.h" using namespace rtengine; diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 94f96e0cc..6e49d36b9 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -23,10 +23,10 @@ #include "editcallbacks.h" #include "guiutils.h" #include "rtimage.h" +#include "options.h" using namespace rtengine; using namespace rtengine::procparams; -extern Options options; namespace { diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index feec85fc9..20a0ba4e5 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -27,7 +27,6 @@ #include "thresholdadjuster.h" #include "colorprovider.h" #include "guiutils.h" -#include "options.h" class EditDataProvider; From 4dcee23cb34d5e8b093fb6bf7788505bf0a74451 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 30 Oct 2019 18:06:30 +0100 Subject: [PATCH 39/66] Fix broken lgtm build --- rtengine/settings.h | 7 ++----- rtgui/options.h | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/rtengine/settings.h b/rtengine/settings.h index 8852c05c8..a32a1b7dd 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -16,9 +16,9 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RTSETTINGS_ -#define _RTSETTINGS_ +#pragma once +#include namespace rtengine { @@ -97,6 +97,3 @@ public: static void destroy(Settings* s); }; } - -#endif - diff --git a/rtgui/options.h b/rtgui/options.h index b2263f59c..33d6b6f90 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -19,6 +19,7 @@ #pragma once #include +#include #include #include "../rtengine/settings.h" #include From 6935faa2583762d0ae383c302f09b75b965beb72 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 30 Oct 2019 22:12:06 +0100 Subject: [PATCH 40/66] Further cleanup of include dependencies --- rtengine/CA_correct_RT.cc | 5 +---- rtengine/FTblockDN.cc | 4 ---- rtengine/camconst.cc | 2 -- rtengine/ciecam02.cc | 4 ---- rtengine/color.cc | 2 -- rtengine/colortemp.cc | 2 -- rtengine/dcp.cc | 9 +-------- rtengine/dcrop.cc | 2 -- rtengine/demosaic_algos.cc | 2 -- rtengine/dfmanager.cc | 2 -- rtengine/dirpyr_equalizer.cc | 2 -- rtengine/dynamicprofile.cc | 6 +++--- rtengine/ffmanager.cc | 2 -- rtengine/filmnegativeproc.cc | 7 ------- rtengine/filmnegativethumb.cc | 8 -------- rtengine/hilite_recon.cc | 2 -- rtengine/iccstore.cc | 7 +------ rtengine/imageio.cc | 2 +- rtengine/improccoordinator.cc | 2 -- rtengine/improcfun.cc | 2 -- rtengine/init.cc | 2 +- rtengine/ipdehaze.cc | 10 +++++----- rtengine/iplab2rgb.cc | 2 -- rtengine/ipsharpen.cc | 2 -- rtengine/ipwavelet.cc | 2 -- rtengine/lcp.cc | 7 ------- rtengine/profilestore.cc | 12 ++++++------ rtengine/rawimage.cc | 2 -- rtengine/rawimagesource.cc | 1 - rtengine/rtengine.h | 2 +- rtengine/rtthumbnail.cc | 19 ++++++++----------- rtengine/settings.h | 1 + rtengine/shmap.cc | 2 -- rtengine/simpleprocess.cc | 1 - rtengine/stdimagesource.cc | 2 -- rtgui/adjuster.cc | 2 +- rtgui/cacheimagedata.cc | 11 ++++++----- rtgui/cachemanager.cc | 10 +++++----- rtgui/colorappearance.cc | 1 + rtgui/dirbrowser.cc | 4 ++-- rtgui/dynamicprofilepanel.cc | 4 ++-- rtgui/editwindow.h | 1 + rtgui/extprog.cc | 4 ++-- rtgui/fattaltonemap.cc | 1 + rtgui/filecatalog.cc | 4 ++-- rtgui/guiutils.h | 14 ++++++++++++-- rtgui/iccprofilecreator.cc | 7 ------- rtgui/inspector.cc | 1 + rtgui/inspector.h | 2 ++ rtgui/labgrid.cc | 1 + rtgui/lensprofile.cc | 10 +++++----- rtgui/main.cc | 2 +- rtgui/mycurve.cc | 1 + rtgui/mycurve.h | 1 + rtgui/mydiagonalcurve.cc | 1 + rtgui/myflatcurve.cc | 1 + rtgui/options.cc | 1 + rtgui/profilepanel.h | 3 ++- rtgui/rtimage.cc | 4 ++-- rtgui/rtscalable.cc | 4 ++-- rtgui/rtwindow.cc | 8 ++++---- rtgui/shcselector.cc | 3 +++ rtgui/thresholdselector.cc | 1 + rtgui/thumbnail.cc | 4 ++-- rtgui/toolbar.cc | 1 + rtgui/toolbar.h | 3 ++- rtgui/toolpanel.cc | 1 + rtgui/toolpanelcoord.cc | 1 + 68 files changed, 100 insertions(+), 158 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 05fd806ca..36b2fa05f 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -28,6 +28,7 @@ #include "gauss.h" #include "median.h" #include "StopWatch.h" + namespace { bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution) @@ -106,10 +107,6 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution) //end of linear equation solver } -namespace rtengine { - extern const Settings* settings; -} - using namespace std; using namespace rtengine; diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index b708f521a..02164aded 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -78,11 +78,7 @@ namespace rtengine */ -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -extern const Settings* settings; extern MyMutex *fftwMutex; diff --git a/rtengine/camconst.cc b/rtengine/camconst.cc index 93f0057f1..e8f7b1cbf 100644 --- a/rtengine/camconst.cc +++ b/rtengine/camconst.cc @@ -20,8 +20,6 @@ namespace rtengine { -extern const Settings* settings; - CameraConst::CameraConst() : pdafOffset(0) { memset(dcraw_matrix, 0, sizeof(dcraw_matrix)); diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index 3219884ad..0553c129e 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -34,10 +34,6 @@ namespace rtengine { -#ifdef _DEBUG -extern const Settings* settings; -#endif - void Ciecam02::curvecolorfloat (float satind, float satval, float &sres, float parsat) { if (satind > 0.f) { diff --git a/rtengine/color.cc b/rtengine/color.cc index 7a91f0073..20b2c7310 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -30,8 +30,6 @@ using namespace std; namespace rtengine { -extern const Settings* settings; - cmsToneCurve* Color::linearGammaTRC; LUTf Color::cachef; LUTf Color::cachefy; diff --git a/rtengine/colortemp.cc b/rtengine/colortemp.cc index 927d8423d..413880d49 100644 --- a/rtengine/colortemp.cc +++ b/rtengine/colortemp.cc @@ -31,8 +31,6 @@ namespace rtengine { -extern const Settings* settings; - static const double cie_colour_match_jd[97][3] = {//350nm to 830nm 5 nm J.Desmis 2° Standard Observer. {0.0000000, 0.000000, 0.000000}, {0.0000000, 0.000000, 0.000000}, {0.0001299, 0.0003917, 0.0006061}, {0.0002321, 0.000006965, 0.001086}, {0.0004149, 0.00001239, 0.001946}, {0.0007416, 0.00002202, 0.003846}, diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index 9dbee9375..ea4e40514 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -33,13 +33,6 @@ #include "rt_math.h" #include "../rtgui/options.h" -namespace rtengine -{ - -extern const Settings* settings; - -} - using namespace rtengine; using namespace rtexif; @@ -1868,7 +1861,7 @@ DCPProfile* DCPStore::getProfile(const Glib::ustring& filename) const if (res->isValid()) { // Add profile profile_cache[key] = res; - if (options.rtSettings.verbose) { + if (settings->verbose) { printf("DCP profile '%s' loaded from disk\n", filename.c_str()); } return res; diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 819a6d01e..06c9d59bd 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -48,8 +48,6 @@ constexpr T skips(T a, T b) namespace rtengine { -extern const Settings* settings; - Crop::Crop(ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow) : PipetteBuffer(editDataProvider), origCrop(nullptr), laboCrop(nullptr), labnCrop(nullptr), cropImg (nullptr), transCrop (nullptr), cieCrop (nullptr), diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index f1b9cb5e8..823260129 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -40,8 +40,6 @@ using namespace std; namespace rtengine { -extern const Settings* settings; - #undef ABS #define ABS(a) ((a)<0?-(a):(a)) diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc index fbeb2596e..f5a7686e6 100644 --- a/rtengine/dfmanager.cc +++ b/rtengine/dfmanager.cc @@ -29,8 +29,6 @@ namespace rtengine { -extern const Settings* settings; - // *********************** class dfInfo ************************************** inline dfInfo& dfInfo::operator =(const dfInfo &o) diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index d40f9fce6..6fd4f002c 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -350,8 +350,6 @@ void idirpyr_eq_channelcam(const float * const * data_coarse, const float * cons namespace rtengine { -extern const Settings* settings; - void ImProcFunctions::dirpyr_equalizer(const float * const * src, float ** dst, int srcwidth, int srcheight, const float * const * l_a, const float * const * l_b, const double * mult, const double dirpyrThreshold, const double skinprot, float b_l, float t_l, float t_r, int scaleprev) { //sequence of scales diff --git a/rtengine/dynamicprofile.cc b/rtengine/dynamicprofile.cc index 607b0b528..402610ed1 100644 --- a/rtengine/dynamicprofile.cc +++ b/rtengine/dynamicprofile.cc @@ -179,7 +179,7 @@ bool DynamicProfileRules::loadRules() return false; } - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("loading dynamic profiles...\n"); } @@ -198,7 +198,7 @@ bool DynamicProfileRules::loadRules() return false; } - if (options.rtSettings.verbose) { + if (settings->verbose) { printf (" loading rule %d\n", serial); } @@ -228,7 +228,7 @@ bool DynamicProfileRules::loadRules() bool DynamicProfileRules::storeRules() { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("saving dynamic profiles...\n"); } diff --git a/rtengine/ffmanager.cc b/rtengine/ffmanager.cc index dbbc25b81..d8b082dd1 100644 --- a/rtengine/ffmanager.cc +++ b/rtengine/ffmanager.cc @@ -30,8 +30,6 @@ namespace rtengine { -extern const Settings* settings; - // *********************** class ffInfo ************************************** inline ffInfo& ffInfo::operator =(const ffInfo &o) diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 26c1314f4..f373f8c14 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -36,13 +36,6 @@ //#define BENCHMARK #include "StopWatch.h" -namespace rtengine -{ - -extern const Settings* settings; - -} - namespace { diff --git a/rtengine/filmnegativethumb.cc b/rtengine/filmnegativethumb.cc index 6a4da31b0..1e52300d4 100644 --- a/rtengine/filmnegativethumb.cc +++ b/rtengine/filmnegativethumb.cc @@ -22,19 +22,11 @@ #include "rtthumbnail.h" #include "opthelper.h" #include "rt_algo.h" -#include "rtengine.h" #include "settings.h" #include "procparams.h" #define BENCHMARK #include "StopWatch.h" -namespace rtengine -{ - -extern const Settings* settings; - -} - void rtengine::Thumbnail::processFilmNegative( const procparams::ProcParams ¶ms, const Imagefloat* baseImg, diff --git a/rtengine/hilite_recon.cc b/rtengine/hilite_recon.cc index 35dd74463..697a5e3d3 100644 --- a/rtengine/hilite_recon.cc +++ b/rtengine/hilite_recon.cc @@ -288,8 +288,6 @@ void boxblur_resamp(const float* const* src, float** dst, float** temp, int H, i namespace rtengine { -extern const Settings* settings; - void RawImageSource::HLRecovery_inpaint(float** red, float** green, float** blue) { double progress = 0.0; diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 02a1fffac..02fe4c16d 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -34,6 +34,7 @@ #include "iccstore.h" #include "iccmatrices.h" +#include "utils.h" #include "../rtgui/guiutils.h" #include "../rtgui/options.h" @@ -44,12 +45,6 @@ #include "cJSON.h" #define inkc_constant 0x696E6B43 -namespace rtengine -{ - -extern const Settings* settings; - -} namespace { diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index f335f5be8..c586aabaf 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -810,7 +810,7 @@ int ImageIO::loadTIFF (const Glib::ustring &fname) * TIFFTAG_SMAXSAMPLEVALUE, but for now, we normalize the image to the * effective minimum and maximum values */ - if (options.rtSettings.verbose) { + if (settings->verbose) { printf("Information of \"%s\":\n", fname.c_str()); uint16 tiffDefaultScale, tiffBaselineExposure, tiffLinearResponseLimit; if (TIFFGetField(in, TIFFTAG_DEFAULTSCALE, &tiffDefaultScale)) { diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 090c3376d..c61b37341 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -47,8 +47,6 @@ namespace rtengine { -extern const Settings* settings; - ImProcCoordinator::ImProcCoordinator() : orig_prev(nullptr), oprevi(nullptr), diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index c84027e6a..886e49567 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -267,8 +267,6 @@ namespace rtengine using namespace procparams; -extern const Settings* settings; - ImProcFunctions::~ImProcFunctions () { if (monitorTransform) { diff --git a/rtengine/init.cc b/rtengine/init.cc index 8d3ee96cb..453374e3a 100644 --- a/rtengine/init.cc +++ b/rtengine/init.cc @@ -42,7 +42,7 @@ const Settings* settings; MyMutex* lcmsMutex = nullptr; MyMutex *fftwMutex = nullptr; -int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDir, bool loadAll) +int init (const Settings* s, const Glib::ustring& baseDir, const Glib::ustring& userSettingsDir, bool loadAll) { settings = s; ProcParams::init(); diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index ce5843da8..729282dbe 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -200,7 +200,7 @@ float estimate_ambient_light(const array2D &R, const array2D &G, c } } - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "dehaze: computing ambient light from " << patches.size() << " patches" << std::endl; } @@ -284,7 +284,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) const int H = img->getHeight(); const float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f); - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "dehaze: strength = " << strength << std::endl; } @@ -326,7 +326,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) } if (min(ambient[0], ambient[1], ambient[2]) < 0.01f) { - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "dehaze: no haze detected" << std::endl; } restore(img, maxChannel, multiThread); @@ -334,7 +334,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) } patchsize = max(max(W, H) / 600, 2); - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "dehaze: ambient light is " << ambient[0] << ", " << ambient[1] << ", " << ambient[2] << std::endl; @@ -349,7 +349,7 @@ void ImProcFunctions::dehaze(Imagefloat *img) array2D guideB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); guidedFilter(guideB, dark, dark, radius, epsilon, multiThread); - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "dehaze: max distance is " << maxDistance << std::endl; } diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 6166c928e..1d3f2f494 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -34,8 +34,6 @@ namespace rtengine extern void filmlike_clip(float *r, float *g, float *b); -extern const Settings* settings; - namespace { inline void copyAndClampLine(const float *src, unsigned char *dst, const int W) diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 8f63b59f6..0758011bb 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -161,8 +161,6 @@ void dcdamping (float** aI, float** aO, float damping, int W, int H) namespace rtengine { -extern const Settings* settings; - 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) { diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 2ba6ec97b..d550664b9 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -60,8 +60,6 @@ namespace rtengine { -extern const Settings* settings; - struct cont_params { float mul[10]; int chrom; diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index e2442e094..0b73f6960 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -35,13 +35,6 @@ #include "settings.h" #include "utils.h" -namespace rtengine -{ - -extern const Settings* settings; - -} - class rtengine::LCPProfile::LCPPersModel { public: diff --git a/rtengine/profilestore.cc b/rtengine/profilestore.cc index 23e4d8321..7d937e736 100644 --- a/rtengine/profilestore.cc +++ b/rtengine/profilestore.cc @@ -160,7 +160,7 @@ void ProfileStore::_parseProfiles () if (findEntryFromFullPathU (options.defProfRaw) == nullptr) { options.setDefProfRawMissing (true); - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("WARNING: Default profile \"%s\" for raw images not found!\n", options.defProfRaw.c_str()); } } @@ -168,7 +168,7 @@ void ProfileStore::_parseProfiles () if (findEntryFromFullPathU (options.defProfImg) == nullptr) { options.setDefProfImgMissing (true); - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("WARNING: Default profile \"%s\" for standard images not found!\n", options.defProfImg.c_str()); } } @@ -220,7 +220,7 @@ bool ProfileStore::parseDir (Glib::ustring& realPath, Glib::ustring& virtualPath if (lastdot != Glib::ustring::npos && lastdot == currDir.length() - 4 && currDir.substr (lastdot).casefold() == paramFileExtension) { // file found - if ( options.rtSettings.verbose ) { + if (settings->verbose) { printf ("Processing file %s...", fname.c_str()); } @@ -233,7 +233,7 @@ bool ProfileStore::parseDir (Glib::ustring& realPath, Glib::ustring& virtualPath if (!res && pProf->pparams->ppVersion >= 220) { fileFound = true; - if ( options.rtSettings.verbose ) { + if (settings->verbose) { printf ("OK\n"); } @@ -244,7 +244,7 @@ bool ProfileStore::parseDir (Glib::ustring& realPath, Glib::ustring& virtualPath // map the partial profile partProfiles[filePSE] = pProf; //partProfiles.insert( std::pair (filePSE, pProf) ); - } else if ( options.rtSettings.verbose ) { + } else if (settings->verbose) { printf ("failed!\n"); } } @@ -522,7 +522,7 @@ PartialProfile *ProfileStore::loadDynamicProfile (const FramesMetaData *im) for (auto rule : dynamicRules) { if (rule.matches (im)) { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("found matching profile %s\n", rule.profilepath.c_str()); } diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 0134d4d16..a69a97ab7 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -19,8 +19,6 @@ namespace rtengine { -extern const Settings* settings; - RawImage::RawImage( const Glib::ustring &name ) : data(nullptr) , prefilters(0) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 347331467..0836a3832 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -426,7 +426,6 @@ void transLineD1x (const float* const red, const float* const green, const float namespace rtengine { -extern const Settings* settings; #undef ABS #undef DIST diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index f2c448805..389fe8355 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -562,7 +562,7 @@ public: * @param baseDir base directory of RT's installation dir * @param userSettingsDir RT's base directory in the user's settings dir * @param loadAll if false, don't load the various dependencies (profiles, HALDClut files, ...), they'll be loaded from disk each time they'll be used (launching time improvement) */ -int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDir, bool loadAll = true); +int init (const Settings* s, const Glib::ustring& baseDir, const Glib::ustring& userSettingsDir, bool loadAll = true); /** Cleanup the RT engine (static variables) */ void cleanup (); diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 4a7fb2d11..3b6046b4e 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -47,7 +47,6 @@ #include "StopWatch.h" #include "utils.h" -#include "../rtgui/options.h" #include "../rtgui/ppversion.h" namespace @@ -194,8 +193,6 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], namespace rtengine { -extern const Settings *settings; - using namespace procparams; Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, int fixwh, double wbEq, bool inspectorMode) @@ -335,7 +332,7 @@ Image8 *load_inspector_mode(const Glib::ustring &fname, RawMetaDataLocation &rml neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); neutral.icm.inputProfile = "(camera)"; - neutral.icm.workingProfile = options.rtSettings.srgb; + neutral.icm.workingProfile = settings->srgb; src.preprocess(neutral.raw, neutral.lensProf, neutral.coarse, false); double thresholdDummy = 0.f; @@ -434,7 +431,7 @@ Thumbnail* Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, RawMetaDataL // did we succeed? if ( err ) { - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "Could not extract thumb from " << fname.c_str() << std::endl; } delete tpp; @@ -1242,7 +1239,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ImProcFunctions ipf (¶ms, forHistogramMatching); // enable multithreading when forHistogramMatching is true ipf.setScale (sqrt (double (fw * fw + fh * fh)) / sqrt (double (thumbImg->getWidth() * thumbImg->getWidth() + thumbImg->getHeight() * thumbImg->getHeight()))*scale); - ipf.updateColorProfiles (ICCStore::getInstance()->getDefaultMonitorProfileName(), RenderingIntent(options.rtSettings.monitorIntent), false, false); + ipf.updateColorProfiles (ICCStore::getInstance()->getDefaultMonitorProfileName(), RenderingIntent(settings->monitorIntent), false, false); LUTu hist16 (65536); @@ -2132,11 +2129,11 @@ bool Thumbnail::readData (const Glib::ustring& fname) return true; } catch (Glib::Error &err) { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("Thumbnail::readData / Error code %d while reading values from \"%s\":\n%s\n", err.code(), fname.c_str(), err.what().c_str()); } } catch (...) { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("Thumbnail::readData / Unknown exception while trying to load \"%s\"!\n", fname.c_str()); } } @@ -2183,11 +2180,11 @@ bool Thumbnail::writeData (const Glib::ustring& fname) keyData = keyFile.to_data (); } catch (Glib::Error& err) { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("Thumbnail::writeData / Error code %d while reading values from \"%s\":\n%s\n", err.code(), fname.c_str(), err.what().c_str()); } } catch (...) { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("Thumbnail::writeData / Unknown exception while trying to save \"%s\"!\n", fname.c_str()); } } @@ -2199,7 +2196,7 @@ bool Thumbnail::writeData (const Glib::ustring& fname) FILE *f = g_fopen (fname.c_str (), "wt"); if (!f) { - if (options.rtSettings.verbose) { + if (settings->verbose) { printf ("Thumbnail::writeData / Error: unable to open file \"%s\" with write access!\n", fname.c_str()); } diff --git a/rtengine/settings.h b/rtengine/settings.h index a32a1b7dd..f261444c8 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -96,4 +96,5 @@ public: * @param s a pointer to the Settings instance to destroy. */ static void destroy(Settings* s); }; +extern const Settings* settings; } diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index f654ab51d..36582df39 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -29,8 +29,6 @@ namespace rtengine { -extern const Settings* settings; - SHMap::SHMap (int w, int h) : max_f(0.f), min_f(0.f), avg(0.f), W(w), H(h) { diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 978479304..2953fc34b 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -38,7 +38,6 @@ namespace rtengine { -extern const Settings* settings; namespace { diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 8e4c05ac8..2e8846412 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -32,8 +32,6 @@ namespace rtengine { -extern const Settings* settings; - template void freeArray (T** a, int H) { for (int i = 0; i < H; i++) { diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index 5182cd825..91394e18d 100644 --- a/rtgui/adjuster.cc +++ b/rtgui/adjuster.cc @@ -20,7 +20,7 @@ #include #include #include "multilangmgr.h" -#include "../rtengine/rtengine.h" +#include "../rtengine/rt_math.h" #include "options.h" #include "guiutils.h" #include "rtimage.h" diff --git a/rtgui/cacheimagedata.cc b/rtgui/cacheimagedata.cc index d31b6c7a5..114508a95 100644 --- a/rtgui/cacheimagedata.cc +++ b/rtgui/cacheimagedata.cc @@ -23,6 +23,7 @@ #include #include "../rtengine/procparams.h" +#include "../rtengine/settings.h" CacheImageData::CacheImageData() : supported(false), @@ -223,11 +224,11 @@ int CacheImageData::load (const Glib::ustring& fname) return 0; } } catch (Glib::Error &err) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("CacheImageData::load / Error code %d while reading values from \"%s\":\n%s\n", err.code(), fname.c_str(), err.what().c_str()); } } catch (...) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("CacheImageData::load / Unknown exception while trying to load \"%s\"!\n", fname.c_str()); } } @@ -305,11 +306,11 @@ int CacheImageData::save (const Glib::ustring& fname) keyData = keyFile.to_data (); } catch (Glib::Error &err) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("CacheImageData::save / Error code %d while reading values from \"%s\":\n%s\n", err.code(), fname.c_str(), err.what().c_str()); } } catch (...) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("CacheImageData::save / Unknown exception while trying to save \"%s\"!\n", fname.c_str()); } } @@ -321,7 +322,7 @@ int CacheImageData::save (const Glib::ustring& fname) FILE *f = g_fopen (fname.c_str (), "wt"); if (!f) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("CacheImageData::save / Error: unable to open file \"%s\" with write access!\n", fname.c_str()); } diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index 419538656..9f6e111e5 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -32,8 +32,8 @@ #include "guiutils.h" #include "options.h" -#include "procparamchangers.h" #include "thumbnail.h" +#include "procparamchangers.h" namespace { @@ -64,7 +64,7 @@ void CacheManager::init () } } - if (error != 0 && options.rtSettings.verbose) { + if (error != 0 && rtengine::settings->verbose) { std::cerr << "Failed to create all cache directories: " << g_strerror(errno) << std::endl; } } @@ -191,7 +191,7 @@ void CacheManager::renameEntry (const std::string& oldfilename, const std::strin 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 ()); - if (error != 0 && options.rtSettings.verbose) { + if (error != 0 && rtengine::settings->verbose) { std::cerr << "Failed to rename all files for cache entry '" << oldfilename << "': " << g_strerror(errno) << std::endl; } @@ -263,7 +263,7 @@ void CacheManager::deleteDir (const Glib::ustring& dirName) const error |= g_remove (Glib::build_filename (baseDir, dirName, *entry).c_str ()); } - if (error != 0 && options.rtSettings.verbose) { + if (error != 0 && rtengine::settings->verbose) { std::cerr << "Failed to delete all entries in cache directory '" << dirName << "': " << g_strerror(errno) << std::endl; } @@ -288,7 +288,7 @@ void CacheManager::deleteFiles (const Glib::ustring& fname, const std::string& m error |= g_remove (getCacheFileName ("profiles", fname, paramFileExtension, md5).c_str ()); } - if (error != 0 && options.rtSettings.verbose) { + if (error != 0 && rtengine::settings->verbose) { std::cerr << "Failed to delete all files for cache entry '" << fname << "': " << g_strerror(errno) << std::endl; } } diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 0d155e97b..450589fe9 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -22,6 +22,7 @@ #include "guiutils.h" #include "options.h" +#include "rtimage.h" #include "../rtengine/color.h" #include "../rtengine/procparams.h" diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 32361d5c5..669528ac1 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -63,7 +63,7 @@ std::vector listSubDirs (const Glib::RefPtr& dir, bool subDirs.push_back (file->get_name ()); } catch (const Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << exception.what().c_str() << std::endl; } @@ -72,7 +72,7 @@ std::vector listSubDirs (const Glib::RefPtr& dir, bool } catch (const Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << "Failed to list subdirectories of \"" << dir->get_parse_name() << "\": " << exception.what () << std::endl; } diff --git a/rtgui/dynamicprofilepanel.cc b/rtgui/dynamicprofilepanel.cc index 6acad07f9..d7ed8ee97 100644 --- a/rtgui/dynamicprofilepanel.cc +++ b/rtgui/dynamicprofilepanel.cc @@ -18,11 +18,11 @@ */ #include "dynamicprofilepanel.h" -#include "options.h" #include "multilangmgr.h" #include "../rtengine/profilestore.h" #include "../rtengine/rtengine.h" #include "../rtengine/dynamicprofile.h" +#include "../rtengine/settings.h" #include #include @@ -616,7 +616,7 @@ void DynamicProfilePanel::save() if (!ProfileStore::getInstance()->storeRules()) { printf ("Error in saving dynamic profile rules\n"); - } else if (options.rtSettings.verbose) { + } else if (rtengine::settings->verbose) { printf ("Saved %d dynamic profile rules\n", int (rules.size())); } } diff --git a/rtgui/editwindow.h b/rtgui/editwindow.h index 8a2ade6ba..04999d149 100644 --- a/rtgui/editwindow.h +++ b/rtgui/editwindow.h @@ -20,6 +20,7 @@ #include #include "filepanel.h" #include "editorpanel.h" +#include "rtimage.h" #include class EditWindow : public Gtk::Window diff --git a/rtgui/extprog.cc b/rtgui/extprog.cc index a17bcdc6a..a7a757c1b 100644 --- a/rtgui/extprog.cc +++ b/rtgui/extprog.cc @@ -213,7 +213,7 @@ bool ExtProgStore::spawnCommandAsync (const Glib::ustring& cmd) } catch (const Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << "Failed to execute \"" << cmd << "\": " << exception.what() << std::endl; } @@ -232,7 +232,7 @@ bool ExtProgStore::spawnCommandSync (const Glib::ustring& cmd) } catch (const Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << "Failed to execute \"" << cmd << "\": " << exception.what() << std::endl; } diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index a0baf3531..89a1e9e30 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -23,6 +23,7 @@ #include "fattaltonemap.h" #include "eventmapper.h" +#include "rtimage.h" #include "../rtengine/procparams.h" diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 674501322..8e8bcc216 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -602,7 +602,7 @@ std::vector FileCatalog::getFileList() names.push_back(Glib::build_filename(selectedDirectory, fname)); } catch (Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << exception.what() << std::endl; } } @@ -610,7 +610,7 @@ std::vector FileCatalog::getFileList() } catch (Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << "Failed to list directory \"" << selectedDirectory << "\": " << exception.what() << std::endl; } diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index b09e20abb..038131b9b 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -28,13 +28,23 @@ #include "../rtengine/coord.h" #include "../rtengine/noncopyable.h" -#include "../rtengine/rtengine.h" -#include "rtimage.h" +#include "threadutils.h" // for convenience... #include "pathutils.h" +namespace rtengine { +namespace procparams +{ + +class ProcParams; + +struct CropParams; +} +} + +class RTImage; Glib::ustring escapeHtmlChars(const Glib::ustring &src); bool removeIfThere (Gtk::Container* cont, Gtk::Widget* w, bool increference = true); diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 0ac0b79f3..e3e1eadb4 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -29,13 +29,6 @@ #include #endif -namespace rtengine -{ - -extern const Settings* settings; - -} - const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) diff --git a/rtgui/inspector.cc b/rtgui/inspector.cc index ad2e424ec..50fa933e1 100644 --- a/rtgui/inspector.cc +++ b/rtgui/inspector.cc @@ -22,6 +22,7 @@ #include "cursormanager.h" #include "guiutils.h" #include "options.h" +#include "rtscalable.h" #include "../rtengine/previewimage.h" InspectorBuffer::InspectorBuffer(const Glib::ustring &imagePath) : currTransform(0), fromRaw(false) diff --git a/rtgui/inspector.h b/rtgui/inspector.h index 681b90aa3..6b3b2350b 100644 --- a/rtgui/inspector.h +++ b/rtgui/inspector.h @@ -22,6 +22,8 @@ #include #include "guiutils.h" #include "../rtengine/coord.h" +#include "../rtengine/coord2d.h" +#include "../rtengine/rt_math.h" class InspectorBuffer { diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index b6393f6f5..fa452815e 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -39,6 +39,7 @@ #include "labgrid.h" #include "options.h" +#include "rtimage.h" using rtengine::Color; diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index a6694287f..e2cdb5649 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -587,7 +587,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) LensProfilePanel::LFDbHelper::LFDbHelper() { #ifdef _OPENMP -#pragma omp parallel sections if (!options.rtSettings.verbose) +#pragma omp parallel sections if (!settings->verbose) #endif { #ifdef _OPENMP @@ -609,7 +609,7 @@ LensProfilePanel::LFDbHelper::LFDbHelper() void LensProfilePanel::LFDbHelper::fillLensfunCameras() { - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "LENSFUN, scanning cameras:" << std::endl; } @@ -619,7 +619,7 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() for (const auto& c : camlist) { camnames[c.getMake()].insert(c.getModel()); - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << " found: " << c.getDisplayString().c_str() << std::endl; } } @@ -639,7 +639,7 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() void LensProfilePanel::LFDbHelper::fillLensfunLenses() { - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << "LENSFUN, scanning lenses:" << std::endl; } @@ -651,7 +651,7 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() const auto& make = l.getMake(); lenses[make].insert(name); - if (options.rtSettings.verbose) { + if (settings->verbose) { std::cout << " found: " << l.getDisplayString().c_str() << std::endl; } } diff --git a/rtgui/main.cc b/rtgui/main.cc index 997f20732..58fdd12dc 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -218,7 +218,7 @@ bool init_rt() extProgStore->init(); SoundManager::init(); - if ( !options.rtSettings.verbose ) { + if (!rtengine::settings->verbose) { TIFFSetWarningHandler (nullptr); // avoid annoying message boxes } diff --git a/rtgui/mycurve.cc b/rtgui/mycurve.cc index 6c00e3f56..7401570c8 100644 --- a/rtgui/mycurve.cc +++ b/rtgui/mycurve.cc @@ -20,6 +20,7 @@ #include "../rtengine/curves.h" #include #include +#include "rtscalable.h" MyCurve::MyCurve () : pipetteR(-1.f), diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index b5577e8dd..73f16d227 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -53,6 +53,7 @@ enum SnapToType { class MyCurveIdleHelper; class CurveEditor; +class EditDataProvider; class MyCurve : public Gtk::DrawingArea, public BackBuffer, public ColorCaller, public CoordinateProvider, public rtengine::NonCopyable { diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index d393c7200..9aa52c67e 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -23,6 +23,7 @@ #include "mydiagonalcurve.h" #include "editcallbacks.h" +#include "rtscalable.h" #include "../rtengine/curves.h" diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index ec46908ce..f01fb0066 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -23,6 +23,7 @@ #include "myflatcurve.h" #include "editcallbacks.h" +#include "rtscalable.h" #include "../rtengine/curves.h" diff --git a/rtgui/options.cc b/rtgui/options.cc index 8d8d52c83..164637eb2 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -28,6 +28,7 @@ #include "version.h" #include "../rtengine/procparams.h" +#include "../rtengine/rtengine.h" #ifdef _OPENMP #include diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index c5717d523..1efafe10b 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -27,9 +27,10 @@ #include "partialpastedlg.h" #include "guiutils.h" #include "profilestorecombobox.h" -#include "rtimage.h" #include "../rtengine/noncopyable.h" +class RTImage; + class ProfilePanel : public Gtk::Grid, public PParamsChangeListener, public ProfileStoreListener, public rtengine::NonCopyable { diff --git a/rtgui/rtimage.cc b/rtgui/rtimage.cc index ff27dbbd3..44078ed3b 100644 --- a/rtgui/rtimage.cc +++ b/rtgui/rtimage.cc @@ -23,7 +23,7 @@ #include #include -#include "options.h" +#include "../rtengine/settings.h" namespace { @@ -215,7 +215,7 @@ Cairo::RefPtr RTImage::createImgSurfFromFile (const Glib::u } */ } catch (const Glib::Exception& exception) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { std::cerr << "Failed to load image \"" << fileName << "\": " << exception.what() << std::endl; } } diff --git a/rtgui/rtscalable.cc b/rtgui/rtscalable.cc index b803ab270..a48a95fd2 100644 --- a/rtgui/rtscalable.cc +++ b/rtgui/rtscalable.cc @@ -23,9 +23,9 @@ #include #include #include -#include "options.h" #include "../rtengine/rt_math.h" +#include "options.h" double RTScalable::dpi = 0.; int RTScalable::scale = 0; @@ -102,7 +102,7 @@ void RTScalable::deleteDir(const Glib::ustring& path) error |= g_remove (Glib::build_filename (path, *entry).c_str()); } - if (error != 0 && options.rtSettings.verbose) { + if (error != 0 && rtengine::settings->verbose) { std::cerr << "Failed to delete all entries in '" << path << "': " << g_strerror(errno) << std::endl; } diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index fc9be32f7..3654e8af6 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -19,12 +19,12 @@ #include #include "rtwindow.h" -#include "options.h" #include "preferences.h" #include "iccprofilecreator.h" #include "cursormanager.h" #include "rtimage.h" #include "whitebalance.h" +#include "../rtengine/settings.h" float fontScale = 1.f; Glib::RefPtr cssForced; @@ -170,7 +170,7 @@ RTWindow::RTWindow () if (options.pseudoHiDPISupport) { fontScale = options.fontSize / (float)RTScalable::baseFontSize; } - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("\"Non-Default\" font size(%d) * scale(%d) / fontScale(%.3f)\n", options.fontSize, (int)initialGdkScale, fontScale); } } else { @@ -200,14 +200,14 @@ RTWindow::RTWindow () } if ((int)initialGdkScale > 1 || pt != RTScalable::baseFontSize) { css = Glib::ustring::compose ("* { font-size: %1pt}", pt * (int)initialGdkScale); - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("\"Default\" font size(%d) * scale(%d) / fontScale(%.3f)\n", pt, (int)initialGdkScale, fontScale); } } } } if (!css.empty()) { - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("CSS:\n%s\n\n", css.c_str()); } try { diff --git a/rtgui/shcselector.cc b/rtgui/shcselector.cc index 6137c3ec8..e8aca4071 100644 --- a/rtgui/shcselector.cc +++ b/rtgui/shcselector.cc @@ -17,9 +17,12 @@ * along with RawTherapee. If not, see . */ +#include + #include "shcselector.h" #include "multilangmgr.h" #include "mycurve.h" +#include "rtscalable.h" SHCSelector::SHCSelector() : movingPosition(-1), tmpX(0.0), tmpPos(0.0), wslider(0.0), cl(nullptr), coloredBar(RTO_Left2Right) { diff --git a/rtgui/thresholdselector.cc b/rtgui/thresholdselector.cc index b44425be4..35d08279c 100644 --- a/rtgui/thresholdselector.cc +++ b/rtgui/thresholdselector.cc @@ -24,6 +24,7 @@ #include "multilangmgr.h" #include "mycurve.h" +#include "rtscalable.h" #include "../rtengine/procparams.h" diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 531529d5c..09ffd11f7 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -19,7 +19,6 @@ #include "thumbnail.h" #include #include -#include "options.h" #include "../rtengine/mytime.h" #include #include @@ -29,6 +28,7 @@ #include #include "../rtengine/dynamicprofile.h" +#include "../rtengine/settings.h" #include "guiutils.h" #include "batchqueue.h" #include "extprog.h" @@ -299,7 +299,7 @@ rtengine::procparams::ProcParams* Thumbnail::createProcParamsForUpdate(bool retu // For the filename etc. do NOT use streams, since they are not UTF8 safe Glib::ustring cmdLine = options.CPBPath + Glib::ustring(" \"") + tmpFileName + Glib::ustring("\""); - if (options.rtSettings.verbose) { + if (rtengine::settings->verbose) { printf("Custom profile builder's command line: %s\n", Glib::ustring(cmdLine).c_str()); } diff --git a/rtgui/toolbar.cc b/rtgui/toolbar.cc index b8e0d64dc..38ade6566 100644 --- a/rtgui/toolbar.cc +++ b/rtgui/toolbar.cc @@ -20,6 +20,7 @@ #include "toolbar.h" #include "multilangmgr.h" #include "guiutils.h" +#include "rtimage.h" ToolBar::ToolBar () : showColPickers(true), listener (nullptr), pickerListener(nullptr) { diff --git a/rtgui/toolbar.h b/rtgui/toolbar.h index 52f4dcbd4..958aa80be 100644 --- a/rtgui/toolbar.h +++ b/rtgui/toolbar.h @@ -21,9 +21,10 @@ #include #include "toolenum.h" -#include "rtimage.h" #include "lockablecolorpicker.h" +class RTImage; + class ToolBarListener { diff --git a/rtgui/toolpanel.cc b/rtgui/toolpanel.cc index 27f68767e..b1282f523 100644 --- a/rtgui/toolpanel.cc +++ b/rtgui/toolpanel.cc @@ -19,6 +19,7 @@ #include "toolpanel.h" #include "toolpanelcoord.h" #include "guiutils.h" +#include "rtimage.h" #include "../rtengine/procparams.h" diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index deea489fe..1da43f6c0 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -19,6 +19,7 @@ #include "multilangmgr.h" #include "toolpanelcoord.h" #include "options.h" +#include "rtimage.h" #include "../rtengine/imagesource.h" #include "../rtengine/dfmanager.h" #include "../rtengine/ffmanager.h" From aacea7046c38c03282347c0d8774b93a473bd394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Thu, 31 Oct 2019 08:56:38 +0100 Subject: [PATCH 41/66] Fix Clang warnings plus some cleanups --- rtengine/gamutwarning.cc | 4 ++-- rtengine/gamutwarning.h | 3 ++- rtengine/guidedfilter.cc | 13 ++++++++----- rtengine/guidedfilter.h | 3 ++- rtengine/histmatching.cc | 26 ++++++++++++++------------ rtengine/ipdehaze.cc | 8 ++++---- rtengine/iplabregions.cc | 3 ++- rtengine/iplocalcontrast.cc | 3 ++- rtengine/ipshadowshighlights.cc | 3 ++- rtengine/pdaflinesfilter.cc | 16 +++++++--------- rtengine/pdaflinesfilter.h | 8 +++++--- rtengine/refreshmap.cc | 3 ++- rtengine/refreshmap.h | 9 ++++----- rtengine/rescale.h | 4 ++-- rtengine/rtlensfun.cc | 12 ++++++------ rtengine/rtlensfun.h | 4 +++- rtengine/tmo_fattal02.cc | 21 ++++++++++----------- rtgui/cropwindow.h | 26 ++++++++++++++------------ rtgui/guiutils.h | 17 ++++++++--------- 19 files changed, 99 insertions(+), 87 deletions(-) diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index 290800f90..569ea3066 100644 --- a/rtengine/gamutwarning.cc +++ b/rtengine/gamutwarning.cc @@ -29,7 +29,8 @@ #include "iccstore.h" #include "image8.h" -namespace rtengine { +namespace rtengine +{ GamutWarning::GamutWarning(cmsHPROFILE iprof, cmsHPROFILE gamutprof, RenderingIntent intent, bool gamutbpc): lab2ref(nullptr), @@ -129,5 +130,4 @@ inline void GamutWarning::mark(Image8 *image, int y, int x) image->b(y, x) = 255; } - } // namespace rtengine diff --git a/rtengine/gamutwarning.h b/rtengine/gamutwarning.h index 4e34ed431..b940b911f 100644 --- a/rtengine/gamutwarning.h +++ b/rtengine/gamutwarning.h @@ -29,7 +29,8 @@ #include "noncopyable.h" -namespace rtengine { +namespace rtengine +{ class Image8; diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index 70807424a..6b2adb773 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -29,15 +29,19 @@ * available at https://arxiv.org/abs/1505.00996 */ -#include "guidedfilter.h" #include "boxblur.h" -#include "rescale.h" +#include "guidedfilter.h" #include "imagefloat.h" +#include "rescale.h" + #define BENCHMARK #include "StopWatch.h" -namespace rtengine { -namespace { +namespace rtengine +{ + +namespace +{ int calculate_subsampling(int w, int h, int r) { @@ -60,7 +64,6 @@ int calculate_subsampling(int w, int h, int r) } // namespace - void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling) { enum Op {MUL, DIVEPSILON, SUBMUL}; diff --git a/rtengine/guidedfilter.h b/rtengine/guidedfilter.h index af8ed0901..d66396c6a 100644 --- a/rtengine/guidedfilter.h +++ b/rtengine/guidedfilter.h @@ -22,7 +22,8 @@ #include "array2D.h" -namespace rtengine { +namespace rtengine +{ void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling=0); diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index e85f5ee13..622933149 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -18,22 +18,24 @@ * along with RawTherapee. If not, see . */ -#include "rawimagesource.h" -#include "rtthumbnail.h" -#include "curves.h" -#include "color.h" -#include "rt_math.h" -#include "procparams.h" -#include "../rtgui/mydiagonalcurve.h" -#include "improcfun.h" -//#define BENCHMARK -#include "StopWatch.h" #include +#include "color.h" +#include "curves.h" +#include "improcfun.h" +#include "procparams.h" +#include "rawimagesource.h" +#include "rt_math.h" +#include "rtthumbnail.h" +#include "settings.h" -namespace rtengine { +//#define BENCHMARK +#include "StopWatch.h" -extern const Settings *settings; +#include "../rtgui/mydiagonalcurve.h" + +namespace rtengine +{ namespace { diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index 729282dbe..c9579cf05 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -42,9 +42,11 @@ #include "../rtgui/options.h" -namespace rtengine { +namespace rtengine +{ -namespace { +namespace +{ float normalize(Imagefloat *rgb, bool multithread) { @@ -271,7 +273,6 @@ void extract_channels(Imagefloat *img, array2D &r, array2D &g, arr } // namespace - void ImProcFunctions::dehaze(Imagefloat *img) { if (!params->dehaze.enabled || params->dehaze.strength == 0.0) { @@ -431,5 +432,4 @@ void ImProcFunctions::dehaze(Imagefloat *img) } } - } // namespace rtengine diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 932b7e18d..cea23bc6b 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -56,7 +56,8 @@ void fastlin2log(float *x, float factor, float base, int w) } -namespace rtengine { +namespace rtengine +{ void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) { diff --git a/rtengine/iplocalcontrast.cc b/rtengine/iplocalcontrast.cc index 4e6c32e7e..d6f3ebb5b 100644 --- a/rtengine/iplocalcontrast.cc +++ b/rtengine/iplocalcontrast.cc @@ -32,7 +32,8 @@ #include "improcfun.h" #include "procparams.h" -namespace rtengine { +namespace rtengine +{ void ImProcFunctions::localContrast(LabImage *lab) { diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index a1e91c4ab..0eceb5a3b 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -30,7 +30,8 @@ #include "sleef.c" -namespace rtengine { +namespace rtengine +{ void ImProcFunctions::shadowsHighlights(LabImage *lab) { diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index 350c6f758..e788c6c83 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -18,18 +18,18 @@ * along with RawTherapee. If not, see . */ +#include + +#include "camconst.h" #include "pdaflinesfilter.h" #include "rawimage.h" #include "settings.h" -#include -#include "camconst.h" -namespace rtengine { +namespace rtengine +{ -extern const Settings *settings; - - -namespace { +namespace +{ class PDAFGreenEqulibrateThreshold: public RawImageSource::GreenEqulibrateThreshold { static constexpr float BASE_THRESHOLD = 0.5f; @@ -167,8 +167,6 @@ private: } // namespace - - PDAFLinesFilter::PDAFLinesFilter(RawImage *ri): ri_(ri), W_(ri->get_width()), diff --git a/rtengine/pdaflinesfilter.h b/rtengine/pdaflinesfilter.h index e2904716e..c3d8b47f4 100644 --- a/rtengine/pdaflinesfilter.h +++ b/rtengine/pdaflinesfilter.h @@ -21,10 +21,12 @@ #pragma once #include -#include "rawimagesource.h" -#include "noncopyable.h" -namespace rtengine { +#include "noncopyable.h" +#include "rawimagesource.h" + +namespace rtengine +{ class RawImage; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 6917d856e..b77eac29c 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -526,7 +526,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = { }; -namespace rtengine { +namespace rtengine +{ RefreshMapper::RefreshMapper(): next_event_(rtengine::NUMOFEVENTS) diff --git a/rtengine/refreshmap.h b/rtengine/refreshmap.h index 3f4831329..0f3e5ee90 100644 --- a/rtengine/refreshmap.h +++ b/rtengine/refreshmap.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __REFRESHMAP__ -#define __REFRESHMAP__ +#pragma once #include + #include "procevents.h" // Use M_VOID if you wish to update the proc params without updating the preview at all ! @@ -80,7 +80,8 @@ extern int refreshmap[]; -namespace rtengine { +namespace rtengine +{ class RefreshMapper { public: @@ -97,5 +98,3 @@ private: }; } // namespace rtengine - -#endif diff --git a/rtengine/rescale.h b/rtengine/rescale.h index 8e1f99271..70974aa48 100644 --- a/rtengine/rescale.h +++ b/rtengine/rescale.h @@ -23,7 +23,8 @@ #include "array2D.h" #include "rt_math.h" -namespace rtengine { +namespace rtengine +{ inline float getBilinearValue(const array2D &src, float x, float y) { @@ -96,5 +97,4 @@ inline void rescaleNearest(const array2D &src, array2D &dst, bool } } - } // namespace rtengine diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 1fcb5ec26..665fbd199 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -18,15 +18,15 @@ * along with RawTherapee. If not, see . */ -#include "rtlensfun.h" -#include "imagedata.h" -#include "procparams.h" -#include "settings.h" #include -namespace rtengine { +#include "imagedata.h" +#include "procparams.h" +#include "rtlensfun.h" +#include "settings.h" -extern const Settings *settings; +namespace rtengine +{ //----------------------------------------------------------------------------- // LFModifier diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index 9c95ca3aa..7dcd96007 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -30,7 +30,8 @@ #include "lcp.h" #include "noncopyable.h" -namespace rtengine { +namespace rtengine +{ class FramesMetaData; @@ -39,6 +40,7 @@ namespace procparams struct CoarseTransformParams; struct LensProfParams; + } class LFModifier final : diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index 31671bd0c..d28606edb 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -50,32 +50,32 @@ * $Id: tmo_fattal02.cpp,v 1.3 2008/11/04 23:43:08 rafm Exp $ */ - #ifdef _OPENMP #include #endif + +#include #include #include #include -#include -#include #include +#include -#include #include #include +#include #include "array2D.h" +#include "iccstore.h" #include "imagefloat.h" #include "improcfun.h" -#include "settings.h" -#include "iccstore.h" -#include "StopWatch.h" -#include "sleef.c" #include "opthelper.h" -#include "rt_algo.h" -#include "rescale.h" #include "procparams.h" +#include "rescale.h" +#include "rt_algo.h" +#include "settings.h" +#include "sleef.c" +#include "StopWatch.h" namespace rtengine { @@ -84,7 +84,6 @@ namespace rtengine * RT code ******************************************************************************/ -extern const Settings *settings; extern MyMutex *fftwMutex; using namespace std; diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h index be07db5c9..db44a2508 100644 --- a/rtgui/cropwindow.h +++ b/rtgui/cropwindow.h @@ -16,27 +16,31 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CROPWINDOW_ -#define _CROPWINDOW_ +#pragma once + +#include #include -#include "lwbutton.h" -#include "lwbuttonset.h" -#include "editenums.h" -#include "crophandler.h" -#include + #include "cropguilistener.h" -#include "pointermotionlistener.h" +#include "crophandler.h" #include "cursormanager.h" #include "editbuffer.h" #include "editcoordsys.h" +#include "editenums.h" +#include "lwbutton.h" +#include "lwbuttonset.h" +#include "pointermotionlistener.h" + #include "../rtengine/noncopyable.h" -namespace rtengine { +namespace rtengine +{ -class Coord; +struct Coord; } + class CropWindow; class CropWindowListener @@ -243,5 +247,3 @@ public: ImageArea* getImageArea(); }; - -#endif diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 038131b9b..18b650b82 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __GUI_UTILS_ -#define __GUI_UTILS_ +#pragma once #include #include @@ -26,22 +25,24 @@ #include +#include "pathutils.h" +#include "threadutils.h" + #include "../rtengine/coord.h" #include "../rtengine/noncopyable.h" -#include "threadutils.h" +namespace rtengine +{ -// for convenience... -#include "pathutils.h" - -namespace rtengine { namespace procparams { class ProcParams; struct CropParams; + } + } class RTImage; @@ -654,5 +655,3 @@ inline Gtk::Window& getToplevelWindow (Gtk::Widget* widget) { return *static_cast (widget->get_toplevel ()); } - -#endif From add5c790d68b4ad1df9c06226c7a7971ba29a3a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Thu, 31 Oct 2019 10:20:50 +0100 Subject: [PATCH 42/66] `#pragma once` for our headers plus drive-by formatting --- rtengine/LUT.h | 7 +- rtengine/alignedbuffer.h | 5 +- rtengine/array2D.h | 5 +- rtengine/calc_distort.h | 5 +- rtengine/camconst.h | 5 +- rtengine/ciecam02.h | 6 +- rtengine/coord.h | 5 +- rtengine/coord2d.h | 5 +- rtengine/dcraw.h | 6 +- rtengine/dynamicprofile.h | 5 +- rtengine/gauss.h | 5 +- rtengine/iccmatrices.h | 4 +- rtengine/iimage.h | 16 ++-- rtengine/imagedata.h | 13 +-- rtengine/imageformat.h | 5 +- rtengine/imageio.h | 35 +++++---- rtengine/improccoordinator.h | 5 +- rtengine/improcfun.h | 15 ++-- rtengine/iptcpairs.h | 7 +- rtengine/jpeg.h | 6 +- rtengine/myfile.h | 11 ++- rtengine/previewimage.h | 6 +- rtengine/processingjob.h | 7 +- rtengine/procevents.h | 20 ++--- rtengine/profilestore.h | 10 +-- rtengine/rawimagesource_i.h | 6 +- rtengine/rawmetadatalocation.h | 6 +- rtengine/rtthumbnail.h | 13 ++- rtengine/shmap.h | 6 +- rtengine/simpleprocess.h | 17 +--- rtengine/stdimagesource.h | 5 +- rtexif/rtexif.h | 5 +- rtgui/addsetids.h | 6 +- rtgui/adjuster.h | 6 +- rtgui/batchqueue.h | 9 +-- rtgui/batchqueuebuttonset.h | 8 +- rtgui/batchqueueentry.h | 13 ++- rtgui/batchqueuepanel.h | 8 +- rtgui/batchtoolpanelcoord.h | 14 ++-- rtgui/bayerpreprocess.h | 6 +- rtgui/bayerprocess.h | 14 ++-- rtgui/bayerrawexposure.h | 28 +++---- rtgui/blackwhite.h | 12 ++- rtgui/bqentryupdater.h | 8 +- rtgui/browserfilter.h | 6 +- rtgui/cacheimagedata.h | 12 +-- rtgui/cachemanager.h | 12 +-- rtgui/cacorrection.h | 11 +-- rtgui/checkbox.h | 6 +- rtgui/chmixer.h | 11 +-- rtgui/clipboard.h | 5 +- rtgui/coarsepanel.h | 10 +-- rtgui/colorappearance.h | 24 +++--- rtgui/coloredbar.h | 5 +- rtgui/colorprovider.h | 8 +- rtgui/colortoning.h | 15 ++-- rtgui/coordinateadjuster.h | 6 +- rtgui/crop.h | 11 ++- rtgui/cropguilistener.h | 5 +- rtgui/crophandler.h | 11 +-- rtgui/cursormanager.h | 6 +- rtgui/curveeditor.h | 12 +-- rtgui/curveeditorgroup.h | 13 ++- rtgui/curvelistener.h | 5 +- rtgui/darkframe.h | 17 ++-- rtgui/defringe.h | 19 +++-- rtgui/diagonalcurveeditorsubgroup.h | 13 +-- rtgui/dirbrowser.h | 6 +- rtgui/dirpyrdenoise.h | 10 +-- rtgui/dirpyrequalizer.h | 21 ++--- rtgui/distortion.h | 17 ++-- rtgui/dynamicprofilepanel.h | 12 +-- rtgui/editedstate.h | 6 +- rtgui/editenums.h | 5 +- rtgui/editid.h | 6 +- rtgui/editorpanel.h | 30 ++++--- rtgui/editwindow.h | 18 ++--- rtgui/epd.h | 11 +-- rtgui/exiffiltersettings.h | 6 +- rtgui/exifpanel.h | 9 +-- rtgui/exportpanel.h | 8 +- rtgui/extprog.h | 10 +-- rtgui/favoritbrowser.h | 16 ++-- rtgui/filebrowser.h | 22 +++--- rtgui/filebrowserentry.h | 10 +-- rtgui/filecatalog.h | 24 +++--- rtgui/filepanel.h | 22 +++--- rtgui/fileselectionchangelistener.h | 6 +- rtgui/fileselectionlistener.h | 8 +- rtgui/filethumbnailbuttonset.h | 12 +-- rtgui/filmsimulation.h | 21 ++--- rtgui/filterpanel.h | 6 +- rtgui/flatcurveeditorsubgroup.h | 11 +-- rtgui/flatfield.h | 12 +-- rtgui/gradient.h | 14 ++-- rtgui/histogrampanel.h | 20 ++--- rtgui/history.h | 11 ++- rtgui/hsvequalizer.h | 20 ++--- rtgui/icmpanel.h | 11 ++- rtgui/ilabel.h | 9 +-- rtgui/imagearea.h | 27 ++++--- rtgui/imageareapanel.h | 9 +-- rtgui/imageareatoollistener.h | 10 +-- rtgui/impulsedenoise.h | 11 +-- rtgui/indclippedpanel.h | 12 +-- rtgui/inspector.h | 7 +- rtgui/iptcpanel.h | 9 +-- rtgui/labcurve.h | 17 ++-- rtgui/lensgeom.h | 14 ++-- rtgui/lensgeomlistener.h | 5 +- rtgui/lockablecolorpicker.h | 8 +- rtgui/lwbutton.h | 6 +- rtgui/multilangmgr.h | 5 +- rtgui/mycurve.h | 14 ++-- rtgui/mydiagonalcurve.h | 17 ++-- rtgui/myflatcurve.h | 11 ++- rtgui/navigator.h | 16 ++-- rtgui/partialpastedlg.h | 7 +- rtgui/pcvignette.h | 11 +-- rtgui/perspective.h | 11 +-- rtgui/placesbrowser.h | 12 ++- rtgui/pointermotionlistener.h | 7 +- rtgui/popupbutton.h | 10 +-- rtgui/popupcommon.h | 9 ++- rtgui/popuptogglebutton.h | 10 +-- rtgui/pparamschangelistener.h | 12 ++- rtgui/preferences.h | 24 +++--- rtgui/preprocess.h | 14 ++-- rtgui/previewhandler.h | 9 +-- rtgui/previewloader.h | 10 +-- rtgui/previewmodepanel.h | 12 +-- rtgui/previewwindow.h | 19 ++--- rtgui/profilechangelistener.h | 6 +- rtgui/profilepanel.h | 22 +++--- rtgui/profilestorecombobox.h | 15 ++-- rtgui/progressconnector.h | 11 +-- rtgui/prsharpening.h | 12 +-- rtgui/rawcacorrection.h | 12 +-- rtgui/rawexposure.h | 11 +-- rtgui/recentbrowser.h | 15 ++-- rtgui/renamedlg.h | 10 +-- rtgui/resize.h | 8 +- rtgui/retinex.h | 22 +++--- rtgui/rgbcurves.h | 16 ++-- rtgui/rotate.h | 17 ++-- rtgui/rtwindow.h | 28 ++++--- rtgui/saveasdlg.h | 11 ++- rtgui/saveformatpanel.h | 7 +- rtgui/sensorbayer.h | 10 +-- rtgui/sensorxtrans.h | 10 +-- rtgui/shadowshighlights.h | 11 +-- rtgui/sharpenedge.h | 11 +-- rtgui/sharpening.h | 12 +-- rtgui/sharpenmicro.h | 11 +-- rtgui/shcselector.h | 7 +- rtgui/soundman.h | 8 +- rtgui/splash.h | 8 +- rtgui/threadutils.h | 5 +- rtgui/thresholdadjuster.h | 6 +- rtgui/thresholdselector.h | 14 ++-- rtgui/thumbbrowserbase.h | 19 ++--- rtgui/thumbimageupdater.h | 9 +-- rtgui/thumbnail.h | 16 ++-- rtgui/thumbnailbrowser.h | 8 +- rtgui/thumbnaillistener.h | 6 +- rtgui/tonecurve.h | 17 ++-- rtgui/toolbar.h | 8 +- rtgui/toolenum.h | 5 +- rtgui/toolpanel.h | 26 +++--- rtgui/toolpanelcoord.h | 118 ++++++++++++++-------------- rtgui/vibrance.h | 18 +++-- rtgui/vignetting.h | 11 +-- rtgui/wbprovider.h | 6 +- rtgui/whitebalance.h | 9 +-- rtgui/xtransprocess.h | 14 ++-- rtgui/xtransrawexposure.h | 11 +-- rtgui/zoompanel.h | 10 +-- 177 files changed, 946 insertions(+), 1158 deletions(-) diff --git a/rtengine/LUT.h b/rtengine/LUT.h index f1090eefa..d1ed67c2b 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -56,8 +56,7 @@ * LUTuc stands for LUT */ -#ifndef LUT_H_ -#define LUT_H_ +#pragma once #include #include @@ -67,9 +66,9 @@ #include #endif +#include "noncopyable.h" #include "opthelper.h" #include "rt_math.h" -#include "noncopyable.h" // Bit representations of flags enum { @@ -628,5 +627,3 @@ public: }; - -#endif /* LUT_H_ */ diff --git a/rtengine/alignedbuffer.h b/rtengine/alignedbuffer.h index b2c720bd8..05a965766 100644 --- a/rtengine/alignedbuffer.h +++ b/rtengine/alignedbuffer.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ALIGNEDBUFFER_ -#define _ALIGNEDBUFFER_ +#pragma once #include #include @@ -142,5 +141,3 @@ public: return unitSize ? allocatedSize / unitSize : 0; } }; - -#endif diff --git a/rtengine/array2D.h b/rtengine/array2D.h index d25e20a83..208dab1aa 100644 --- a/rtengine/array2D.h +++ b/rtengine/array2D.h @@ -52,8 +52,8 @@ * * !! locked arrays cannot be resized and cannot be unlocked again !! */ -#ifndef ARRAY2D_H_ -#define ARRAY2D_H_ +#pragma once + #include // for raise() #include @@ -313,4 +313,3 @@ public: return list[index]; } }; -#endif /* array2D_H_ */ diff --git a/rtengine/calc_distort.h b/rtengine/calc_distort.h index 711bf9515..7d0c5ef54 100644 --- a/rtengine/calc_distort.h +++ b/rtengine/calc_distort.h @@ -1,4 +1,3 @@ -#ifndef CALC_DISTORTION__H -#define CALC_DISTORTION__H +#pragma once + int calcDistortion (unsigned char* img1, unsigned char* img2, int ncols, int nrows, int nfactor, double &distortion); -#endif diff --git a/rtengine/camconst.h b/rtengine/camconst.h index 89180fbb5..1096e1767 100644 --- a/rtengine/camconst.h +++ b/rtengine/camconst.h @@ -1,8 +1,7 @@ /* * This file is part of RawTherapee. */ -#ifndef __CAMCONST__ -#define __CAMCONST__ +#pragma once #include #include @@ -73,5 +72,3 @@ public: }; } - -#endif diff --git a/rtengine/ciecam02.h b/rtengine/ciecam02.h index fea35ab12..68252f2f6 100644 --- a/rtengine/ciecam02.h +++ b/rtengine/ciecam02.h @@ -16,9 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CIECAM02_ -#define _CIECAM02_ +#pragma once + #include + #include "LUT.h" #include "opthelper.h" @@ -106,4 +107,3 @@ public: }; } -#endif diff --git a/rtengine/coord.h b/rtengine/coord.h index 5f16cf606..6a7decdda 100644 --- a/rtengine/coord.h +++ b/rtengine/coord.h @@ -17,8 +17,7 @@ * along with RawTherapee. If not, see . */ -#ifndef __COORD__ -#define __COORD__ +#pragma once namespace rtengine { @@ -253,5 +252,3 @@ inline const PolarCoord operator* (const double lhs, const PolarCoord& rhs) } } - -#endif diff --git a/rtengine/coord2d.h b/rtengine/coord2d.h index 252219e47..9f0784b9a 100644 --- a/rtengine/coord2d.h +++ b/rtengine/coord2d.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __COORD2D__ -#define __COORD2D__ +#pragma once namespace rtengine { @@ -35,5 +34,5 @@ public: y = y_; } }; + } -#endif diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index fdebda0cc..eaf1fe35e 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -17,8 +17,7 @@ * along with RawTherapee. If not, see . */ -#ifndef DCRAW_H -#define DCRAW_H +#pragma once #include "myfile.h" #include @@ -529,6 +528,3 @@ void shiftXtransMatrix( const int offsy, const int offsx) { void nikon_14bit_load_raw(); // ported from LibRaw }; - - -#endif //DCRAW_H diff --git a/rtengine/dynamicprofile.h b/rtengine/dynamicprofile.h index e23c57b49..9b893fae2 100644 --- a/rtengine/dynamicprofile.h +++ b/rtengine/dynamicprofile.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DYNAMICPROFILE_H_ -#define _DYNAMICPROFILE_H_ +#pragma once #include #include @@ -76,5 +75,3 @@ public: const std::vector &getRules(); void setRules (const std::vector &r); }; - -#endif // _DYNAMICPROFILE_H_ diff --git a/rtengine/gauss.h b/rtengine/gauss.h index f78762df3..e226bbc13 100644 --- a/rtengine/gauss.h +++ b/rtengine/gauss.h @@ -16,11 +16,8 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _GAUSS_H_ -#define _GAUSS_H_ +#pragma once enum eGaussType {GAUSS_STANDARD, GAUSS_MULT, GAUSS_DIV}; void gaussianBlur(float** src, float** dst, const int W, const int H, const double sigma, bool useBoxBlur = false, eGaussType gausstype = GAUSS_STANDARD, float** buffer2 = nullptr); - -#endif \ No newline at end of file diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index 3e0d0b5d6..5b9883421 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ICCMATRICES_ -#define _ICCMATRICES_ +#pragma once // Bradford transform between illuminants constexpr double d65_d50[3][3] = { @@ -296,4 +295,3 @@ constexpr double d50_best[3][3] = { {-0.253000840399762, 0.0215532098817316,1.22569552576991} }; */ -#endif diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 11eb3e482..3c39b7659 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -16,17 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IIMAGE_ -#define _IIMAGE_ +#pragma once + +#include #include -#include -#include "rt_math.h" + #include "alignedbuffer.h" +#include "color.h" +#include "coord2d.h" #include "imagedimensions.h" #include "LUT.h" -#include "coord2d.h" -#include "color.h" +#include "rt_math.h" + #include "../rtgui/threadutils.h" #define TR_NONE 0 @@ -1808,5 +1810,3 @@ public: }; } - -#endif diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 66c4285b9..0b75e263b 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -16,17 +16,21 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __IMAGEDATA_H__ -#define __IMAGEDATA_H__ +#pragma once #include #include #include +#include + #include -#include "imageio.h" -#include "../rtexif/rtexif.h" + #include +#include "imageio.h" + +#include "../rtexif/rtexif.h" + namespace rtengine { @@ -132,4 +136,3 @@ public: } -#endif diff --git a/rtengine/imageformat.h b/rtengine/imageformat.h index dc40cf147..f8fee4c59 100644 --- a/rtengine/imageformat.h +++ b/rtengine/imageformat.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMAGEFORMAT_ -#define _IMAGEFORMAT_ +#pragma once namespace rtengine { @@ -51,5 +50,3 @@ typedef enum SensorType { } eSensorType; } - -#endif diff --git a/rtengine/imageio.h b/rtengine/imageio.h index c74756614..251187547 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -16,27 +16,31 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMAGEIO_ -#define _IMAGEIO_ - -#define IMIO_SUCCESS 0 -#define IMIO_CANNOTREADFILE 1 -#define IMIO_INVALIDHEADER 2 -#define IMIO_HEADERERROR 3 -#define IMIO_READERROR 4 -#define IMIO_VARIANTNOTSUPPORTED 5 -#define IMIO_FILETYPENOTSUPPORTED 6 -#define IMIO_CANNOTWRITEFILE 7 +#pragma once #include #include + #include -#include "rtengine.h" -#include "imageformat.h" -#include "../rtexif/rtexif.h" -#include "imagedimensions.h" + #include "iimage.h" +#include "imagedimensions.h" +#include "imageformat.h" +#include "rtengine.h" + +#include "../rtexif/rtexif.h" + +enum { + IMIO_SUCCESS, + IMIO_CANNOTREADFILE, + IMIO_INVALIDHEADER, + IMIO_HEADERERROR, + IMIO_READERROR, + IMIO_VARIANTNOTSUPPORTED, + IMIO_FILETYPENOTSUPPORTED, + IMIO_CANNOTWRITEFILE +}; namespace rtengine { @@ -111,4 +115,3 @@ public: }; } -#endif diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 71bca1d8a..c416ebe67 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMPROCCOORDINATOR_H_ -#define _IMPROCCOORDINATOR_H_ +#pragma once #include @@ -410,5 +409,5 @@ public: } denoiseInfoStore; }; + } -#endif diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index a47ba2980..a8c3ededb 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -16,16 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMPROCFUN_H_ -#define _IMPROCFUN_H_ +#pragma once -#include "shmap.h" -#include "coord2d.h" #include "color.h" -#include "LUT.h" -#include "lcp.h" -#include "pipettebuffer.h" +#include "coord2d.h" #include "gamutwarning.h" +#include "lcp.h" +#include "LUT.h" +#include "pipettebuffer.h" +#include "shmap.h" template class multi_array2D; @@ -272,5 +271,5 @@ public: void rgb2lab(const Imagefloat &src, LabImage &dst, const Glib::ustring &workingSpace); void lab2rgb(const LabImage &src, Imagefloat &dst, const Glib::ustring &workingSpace); }; + } -#endif diff --git a/rtengine/iptcpairs.h b/rtengine/iptcpairs.h index 21099735a..af45d7d38 100644 --- a/rtengine/iptcpairs.h +++ b/rtengine/iptcpairs.h @@ -16,9 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IPTCPAIRS_ -#define _IPTCPAIRS_ - +#pragma once struct IptcPair { IptcTag tag; @@ -44,6 +42,3 @@ const IptcPair strTags[] = { {IPTC_TAG_ORIG_TRANS_REF, 32, "TransReference"}, {IPTC_TAG_DATE_CREATED, 8, "DateCreated"} }; - -#endif - diff --git a/rtengine/jpeg.h b/rtengine/jpeg.h index 99baecc5a..9b1f45f1d 100644 --- a/rtengine/jpeg.h +++ b/rtengine/jpeg.h @@ -1,5 +1,4 @@ -#ifndef _RT_JPEG_H -#define _RT_JPEG_H +#pragma once #include @@ -29,6 +28,3 @@ typedef struct { #ifdef __cplusplus } #endif - - -#endif diff --git a/rtengine/myfile.h b/rtengine/myfile.h index f2ed4150c..69e226b8b 100644 --- a/rtengine/myfile.h +++ b/rtengine/myfile.h @@ -16,13 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _MYFILE_ -#define _MYFILE_ +#pragma once -#include #include #include + +#include + #include "rtengine.h" + struct IMFILE { int fd; ssize_t pos; @@ -134,6 +136,3 @@ inline unsigned char* fdata(int offset, IMFILE* f) int fscanf (IMFILE* f, const char* s ...); char* fgets (char* s, int n, IMFILE* f); - -#endif - diff --git a/rtengine/previewimage.h b/rtengine/previewimage.h index aac5eabe5..e6c3ea070 100644 --- a/rtengine/previewimage.h +++ b/rtengine/previewimage.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PREVIEWIMAGE_ -#define _PREVIEWIMAGE_ +#pragma once #include + #include namespace rtengine @@ -52,5 +52,3 @@ public: }; } - -#endif diff --git a/rtengine/processingjob.h b/rtengine/processingjob.h index 004eb006f..6cdc6bd7c 100644 --- a/rtengine/processingjob.h +++ b/rtengine/processingjob.h @@ -16,11 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PROCESSINGJOB_ -#define _PROCESSINGJOB_ +#pragma once -#include "rtengine.h" #include "procparams.h" +#include "rtengine.h" namespace rtengine { @@ -55,5 +54,3 @@ public: }; } - -#endif diff --git a/rtengine/procevents.h b/rtengine/procevents.h index ca098f216..1b00d4218 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -16,15 +16,11 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __PROCEVENT__ -#define __PROCEVENT__ +#pragma once namespace rtengine { - - - // Aligned so the first entry starts on line 30 enum ProcEventCode { EvPhotoLoaded = 0, @@ -540,13 +536,11 @@ private: }; -inline bool operator==(ProcEvent a, ProcEvent b) { return int(a) == int(b); } -inline bool operator==(ProcEvent a, ProcEventCode b) { return int(a) == int(b); } -inline bool operator==(ProcEventCode a, ProcEvent b) { return int(a) == int(b); } -inline bool operator!=(ProcEvent a, ProcEvent b) { return int(a) != int(b); } -inline bool operator!=(ProcEvent a, ProcEventCode b) { return int(a) != int(b); } -inline bool operator!=(ProcEventCode a, ProcEvent b) { return int(a) != int(b); } +inline bool operator ==(ProcEvent a, ProcEvent b) { return int(a) == int(b); } +inline bool operator ==(ProcEvent a, ProcEventCode b) { return int(a) == int(b); } +inline bool operator ==(ProcEventCode a, ProcEvent b) { return int(a) == int(b); } +inline bool operator !=(ProcEvent a, ProcEvent b) { return int(a) != int(b); } +inline bool operator !=(ProcEvent a, ProcEventCode b) { return int(a) != int(b); } +inline bool operator !=(ProcEventCode a, ProcEvent b) { return int(a) != int(b); } } -#endif - diff --git a/rtengine/profilestore.h b/rtengine/profilestore.h index 3b7bc7f9d..08afc88f3 100644 --- a/rtengine/profilestore.h +++ b/rtengine/profilestore.h @@ -16,16 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PROFILESTORE_ -#define _PROFILESTORE_ +#pragma once #include #include + #include -#include "rtengine.h" -#include "noncopyable.h" #include "dynamicprofile.h" +#include "noncopyable.h" +#include "rtengine.h" // forward decl namespace rtengine @@ -211,5 +211,3 @@ public: void dumpFolderList(); }; - -#endif diff --git a/rtengine/rawimagesource_i.h b/rtengine/rawimagesource_i.h index 485205d9d..47c6b5bab 100644 --- a/rtengine/rawimagesource_i.h +++ b/rtengine/rawimagesource_i.h @@ -16,9 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ - -#ifndef RAWIMAGESOURCE_I_H_INCLUDED -#define RAWIMAGESOURCE_I_H_INCLUDED +#pragma once #include "rawimagesource.h" @@ -184,5 +182,3 @@ inline void RawImageSource::interpolate_row_rb_mul_pp (const array2D &raw } } - -#endif diff --git a/rtengine/rawmetadatalocation.h b/rtengine/rawmetadatalocation.h index 559815a4f..894bc6bd2 100644 --- a/rtengine/rawmetadatalocation.h +++ b/rtengine/rawmetadatalocation.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RAWMETADATALOCATION_ -#define _RAWMETADATALOCATION_ +#pragma once namespace rtengine { @@ -36,6 +35,3 @@ public: }; } - -#endif - diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index a1df25224..473c74e7c 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -16,15 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THUMBPROCESSINGPARAMETERS_ -#define _THUMBPROCESSINGPARAMETERS_ +#pragma once -#include "rawmetadatalocation.h" #include + #include -#include "image8.h" + #include "image16.h" +#include "image8.h" #include "imagefloat.h" +#include "rawmetadatalocation.h" + #include "../rtgui/threadutils.h" namespace rtengine @@ -160,6 +162,3 @@ public: } }; } - -#endif - diff --git a/rtengine/shmap.h b/rtengine/shmap.h index f07759a2c..b40e872bb 100644 --- a/rtengine/shmap.h +++ b/rtengine/shmap.h @@ -16,14 +16,14 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __SHMAP__ -#define __SHMAP__ +#pragma once #include "LUT.h" #include "noncopyable.h" namespace rtengine { + class Imagefloat; class SHMap : @@ -49,5 +49,5 @@ private: void dirpyr_shmap(float ** data_fine, float ** data_coarse, int width, int height, LUTf & rangefn, int level, int scale); }; + } -#endif diff --git a/rtengine/simpleprocess.h b/rtengine/simpleprocess.h index d6efe802d..9b41b4643 100644 --- a/rtengine/simpleprocess.h +++ b/rtengine/simpleprocess.h @@ -4,24 +4,11 @@ * * Created on September 18, 2010, 8:31 PM */ +#pragma once -#ifndef SIMPLEPROCESS_H -#define SIMPLEPROCESS_H - -#ifdef __cplusplus -extern "C" { -#endif - - - - -#ifdef __cplusplus -} -#endif namespace rtengine { extern Glib::Thread *batchThread; -} -#endif /* SIMPLEPROCESS_H */ +} diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index b70c6554b..b95328c80 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _STDIMAGESOURCE_ -#define _STDIMAGESOURCE_ +#pragma once #include "colortemp.h" #include "imagesource.h" @@ -118,5 +117,5 @@ public: void flushRGB () override; void captureSharpening(const procparams::CaptureSharpeningParams &sharpeningParams, bool showMask, double &conrastThreshold, double &radius) override {}; }; + } -#endif diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index e89260932..515c7569d 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _MEXIF3_ -#define _MEXIF3_ +#pragma once #include #include @@ -687,5 +686,5 @@ extern const TagAttrib kodakIfdAttribs[]; void parseKodakIfdTextualInfo (Tag *textualInfo, Tag* exif); extern const TagAttrib panasonicAttribs[]; extern const TagAttrib panasonicRawAttribs[]; + } -#endif diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 6a4ea83d3..46cf19ed5 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -1,6 +1,4 @@ -#ifndef _ADDSETIDS_ -#define _ADDSETIDS_ - +#pragma once // UPDATE THE DEFAULT VALUE IN OPTIONS.CC int babehav[] TOO !!! @@ -146,5 +144,3 @@ enum { ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!! }; - -#endif diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index 52857a3d2..1583bab69 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ADJUSTER_H_ -#define _ADJUSTER_H_ +#pragma once #include + #include "editedstate.h" #include "guiutils.h" @@ -130,5 +130,3 @@ public: void trimValue (int &val) const; void setLogScale(double base, double pivot, bool anchorMiddle = false); }; - -#endif diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index 7248ac793..a0c04abee 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -15,19 +15,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BATCHQUEUE_ -#define _BATCHQUEUE_ +#pragma once #include #include -#include "../rtengine/rtengine.h" - #include "batchqueueentry.h" #include "lwbuttonset.h" #include "threadutils.h" #include "thumbbrowserbase.h" + +#include "../rtengine/rtengine.h" #include "../rtengine/noncopyable.h" class BatchQueueListener @@ -123,5 +122,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/batchqueuebuttonset.h b/rtgui/batchqueuebuttonset.h index 19479ccc1..17f582168 100644 --- a/rtgui/batchqueuebuttonset.h +++ b/rtgui/batchqueuebuttonset.h @@ -16,12 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BATCHQUEUEBUTTONSET_ -#define _BATCHQUEUEBUTTONSET_ +#pragma once + +#include #include "lwbuttonset.h" #include "rtsurface.h" -#include class BatchQueueEntry; class BatchQueueButtonSet : public LWButtonSet @@ -40,5 +40,3 @@ public: explicit BatchQueueButtonSet (BatchQueueEntry* myEntry); }; - -#endif diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index 03097e55e..d56c0e340 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -16,17 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BATCHQUEUEENTRY_ -#define _BATCHQUEUEENTRY_ +#pragma once #include #include -#include "../rtengine/rtengine.h" + +#include "bqentryupdater.h" #include "thumbbrowserentrybase.h" #include "thumbnail.h" -#include "bqentryupdater.h" + #include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" class BatchQueueEntry; struct BatchQueueEntryIdleHelper { @@ -77,7 +78,3 @@ public: void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview) override; void _updateImage (guint8* img, int w, int h); // inside gtk thread }; - - - -#endif diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 2f8e27057..590ec2347 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -16,15 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BATCHQUEUEPANEL_ -#define _BATCHQUEUEPANEL_ +#pragma once #include #include + #include "batchqueue.h" -#include "saveformatpanel.h" #include "guiutils.h" +#include "saveformatpanel.h" class RTWindow; class FileCatalog; @@ -83,5 +83,3 @@ private: void formatChanged(const Glib::ustring& format) override; void updateTab (int qsize, int forceOrientation = 0); // forceOrientation=0: base on options / 1: horizontal / 2: vertical }; -#endif - diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index 53741be49..6c64e15ea 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -16,16 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __BATCHTOOLPANELCCORD__ -#define __BATCHTOOLPANELCCORD__ +#pragma once -#include "thumbnail.h" -#include "toolpanelcoord.h" #include "fileselectionchangelistener.h" -#include "../rtengine/procparams.h" -#include "../rtengine/procevents.h" #include "paramsedited.h" +#include "thumbnail.h" #include "thumbnaillistener.h" +#include "toolpanelcoord.h" + +#include "../rtengine/procevents.h" +#include "../rtengine/procparams.h" class FilePanel; class BatchToolPanelCoordinator : @@ -85,5 +85,3 @@ public: void optionsChanged (); }; - -#endif diff --git a/rtgui/bayerpreprocess.h b/rtgui/bayerpreprocess.h index 9114c37d4..c07bbcba4 100644 --- a/rtgui/bayerpreprocess.h +++ b/rtgui/bayerpreprocess.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BAYERPREPROCESS_H_ -#define _BAYERPREPROCESS_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" @@ -53,5 +53,3 @@ public: void lineDenoiseDirectionChanged(); void pdafLinesFilterChanged(); }; - -#endif diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h index 893010e65..04985dc66 100644 --- a/rtgui/bayerprocess.h +++ b/rtgui/bayerprocess.h @@ -16,16 +16,22 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BAYERPROCESS_H_ -#define _BAYERPROCESS_H_ +#pragma once #include + #include "adjuster.h" #include "checkbox.h" #include "guiutils.h" #include "toolpanel.h" -class BayerProcess : public ToolParamBlock, public AdjusterListener, public CheckBoxListener, public FoldableToolPanel, public rtengine::FrameCountListener, public rtengine::AutoContrastListener +class BayerProcess : + public ToolParamBlock, + public AdjusterListener, + public CheckBoxListener, + public FoldableToolPanel, + public rtengine::FrameCountListener, + public rtengine::AutoContrastListener { protected: @@ -89,5 +95,3 @@ public: void autoContrastChanged (double autoContrast) override; void FrameCountChanged(int n, int frameNum) override; }; - -#endif diff --git a/rtgui/bayerrawexposure.h b/rtgui/bayerrawexposure.h index 5825383be..247bf6ff0 100644 --- a/rtgui/bayerrawexposure.h +++ b/rtgui/bayerrawexposure.h @@ -16,26 +16,21 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BAYERRAWEXPOSURE_H_ -#define _BAYERRAWEXPOSURE_H_ +#pragma once #include + #include "adjuster.h" #include "checkbox.h" #include "toolpanel.h" -class BayerRAWExposure : public ToolParamBlock, public AdjusterListener, public CheckBoxListener, public FoldableToolPanel +class BayerRAWExposure : + public ToolParamBlock, + public AdjusterListener, + public CheckBoxListener, + public FoldableToolPanel { - -protected: - Adjuster* PexBlack0; - Adjuster* PexBlack1; - Adjuster* PexBlack2; - Adjuster* PexBlack3; - CheckBox* PextwoGreen; - public: - BayerRAWExposure (); void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; @@ -46,6 +41,11 @@ public: void checkBoxToggled (CheckBox* c, CheckValue newval) override; void setAdjusterBehavior (bool pexblackadd); void trimValues (rtengine::procparams::ProcParams* pp) override; -}; -#endif +protected: + Adjuster* PexBlack0; + Adjuster* PexBlack1; + Adjuster* PexBlack2; + Adjuster* PexBlack3; + CheckBox* PextwoGreen; +}; diff --git a/rtgui/blackwhite.h b/rtgui/blackwhite.h index 36234cda5..9f504fd4f 100644 --- a/rtgui/blackwhite.h +++ b/rtgui/blackwhite.h @@ -16,17 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BLACKWHITE_H_ -#define _BLACKWHITE_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" -#include "guiutils.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" +#include "guiutils.h" #include "mycurve.h" -#include "colorprovider.h" +#include "toolpanel.h" class EditDataProvider; @@ -144,5 +144,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/bqentryupdater.h b/rtgui/bqentryupdater.h index 9e3e09a51..6dbb4bedf 100644 --- a/rtgui/bqentryupdater.h +++ b/rtgui/bqentryupdater.h @@ -16,15 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BQENTRYUPDATER_ -#define _BQENTRYUPDATER_ +#pragma once #include -#include "../rtengine/rtengine.h" #include "threadutils.h" #include "thumbnail.h" +#include "../rtengine/rtengine.h" + class BQEntryUpdateListener { @@ -62,5 +62,3 @@ public: }; extern BatchQueueEntryUpdater batchQueueEntryUpdater; - -#endif diff --git a/rtgui/browserfilter.h b/rtgui/browserfilter.h index 11bfd9920..df9a94c11 100644 --- a/rtgui/browserfilter.h +++ b/rtgui/browserfilter.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _BROWSERFILTER_ -#define _BROWSERFILTER_ +#pragma once #include @@ -25,7 +24,6 @@ class BrowserFilter { - public: bool showRanked[6]; bool showCLabeled[6]; @@ -42,5 +40,3 @@ public: BrowserFilter (); }; - -#endif diff --git a/rtgui/cacheimagedata.h b/rtgui/cacheimagedata.h index 56b4ad434..caab1de5b 100644 --- a/rtgui/cacheimagedata.h +++ b/rtgui/cacheimagedata.h @@ -16,17 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CACHEIMAGEDATA_ -#define _CACHEIMAGEDATA_ +#pragma once #include + #include "options.h" -#include "../rtengine/rtengine.h" + #include "../rtengine/imageformat.h" +#include "../rtengine/rtengine.h" -class CacheImageData: public rtengine::FramesMetaData +class CacheImageData : + public rtengine::FramesMetaData { - public: // basic information @@ -115,4 +116,3 @@ public: std::string getImageType (unsigned int frame) const override { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; } rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override { return sampleFormat; } }; -#endif diff --git a/rtgui/cachemanager.h b/rtgui/cachemanager.h index 3e987866d..56370e966 100644 --- a/rtgui/cachemanager.h +++ b/rtgui/cachemanager.h @@ -16,18 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CACHEMANAGER_ -#define _CACHEMANAGER_ +#pragma once -#include #include +#include #include -#include "../rtengine/noncopyable.h" - #include "threadutils.h" +#include "../rtengine/noncopyable.h" + class Thumbnail; class CacheManager : @@ -70,6 +69,3 @@ public: }; #define cacheMgr CacheManager::getInstance() - -#endif - diff --git a/rtgui/cacorrection.h b/rtgui/cacorrection.h index f6e1f89e3..6e1667a00 100644 --- a/rtgui/cacorrection.h +++ b/rtgui/cacorrection.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CACORRECTION_H_ -#define _CACORRECTION_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class CACorrection : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class CACorrection : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -43,5 +46,3 @@ public: void setAdjusterBehavior (bool badd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/checkbox.h b/rtgui/checkbox.h index 48324d4c8..45433300c 100644 --- a/rtgui/checkbox.h +++ b/rtgui/checkbox.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CHECKBOX_H_ -#define _CHECKBOX_H_ +#pragma once #include + #include "editedstate.h" #include "guiutils.h" @@ -72,5 +72,3 @@ public: void set_tooltip_markup (const Glib::ustring& tooltip); */ }; - -#endif diff --git a/rtgui/chmixer.h b/rtgui/chmixer.h index 94f54ed3d..fb028cf14 100644 --- a/rtgui/chmixer.h +++ b/rtgui/chmixer.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CHMIXER_H_ -#define _CHMIXER_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class ChMixer : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class ChMixer : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -46,5 +49,3 @@ public: void trimValues (rtengine::procparams::ProcParams* pp) override; void enabledChanged() override; }; - -#endif diff --git a/rtgui/clipboard.h b/rtgui/clipboard.h index 4c0ec452f..d142808e9 100644 --- a/rtgui/clipboard.h +++ b/rtgui/clipboard.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CLIPBOARD_ -#define _CLIPBOARD_ +#pragma once #include #include @@ -80,5 +79,3 @@ private: }; extern Clipboard clipboard; - -#endif diff --git a/rtgui/coarsepanel.h b/rtgui/coarsepanel.h index 2da56b904..c028bbcad 100644 --- a/rtgui/coarsepanel.h +++ b/rtgui/coarsepanel.h @@ -16,13 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __COARSEPANEL__ -#define __COARSEPANEL__ +#pragma once #include + #include "toolpanel.h" -class CoarsePanel : public Gtk::HBox, public ToolPanel +class CoarsePanel : + public Gtk::HBox, + public ToolPanel { protected: @@ -46,5 +48,3 @@ public: void flipHorizontal (); void flipVertical (); }; - -#endif diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h index da2e3c8b9..1f8fdef84 100644 --- a/rtgui/colorappearance.h +++ b/rtgui/colorappearance.h @@ -16,25 +16,25 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _COLORAPPEARANCE_H_ -#define _COLORAPPEARANCE_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "mycurve.h" #include "guiutils.h" -#include "colorprovider.h" +#include "mycurve.h" +#include "toolpanel.h" class ColorAppearance final : - public ToolParamBlock, - public AdjusterListener, - public FoldableToolPanel, - public rtengine::AutoCamListener, - public CurveListener, - public ColorProvider + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel, + public rtengine::AutoCamListener, + public CurveListener, + public ColorProvider { public: ColorAppearance (); @@ -173,5 +173,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/coloredbar.h b/rtgui/coloredbar.h index 089dfa8cd..6cc121cd5 100644 --- a/rtgui/coloredbar.h +++ b/rtgui/coloredbar.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _COLOREDBAR_ -#define _COLOREDBAR_ +#pragma once #include "colorprovider.h" #include "guiutils.h" @@ -62,5 +61,3 @@ public: BackBuffer::setDirty(isDirty); } }; - -#endif diff --git a/rtgui/colorprovider.h b/rtgui/colorprovider.h index feea792b6..a84b1be27 100644 --- a/rtgui/colorprovider.h +++ b/rtgui/colorprovider.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _COLORPROVIDER_ -#define _COLORPROVIDER_ +#pragma once #include @@ -61,10 +60,7 @@ public: */ class ColorProvider { - public: - virtual ~ColorProvider() {}; + virtual ~ColorProvider() = default; virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) {}; }; - -#endif diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index faba1e383..9c7a54488 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -1,18 +1,19 @@ /* * This file is part of RawTherapee. */ -#ifndef _COLORTONING_H_ -#define _COLORTONING_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" -#include "guiutils.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "thresholdadjuster.h" -#include "colorprovider.h" +#include "guiutils.h" #include "labgrid.h" +#include "thresholdadjuster.h" +#include "toolpanel.h" + #include "../rtengine/procparams.h" class ColorToning final : @@ -166,5 +167,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/coordinateadjuster.h b/rtgui/coordinateadjuster.h index d705915ab..70fe42233 100644 --- a/rtgui/coordinateadjuster.h +++ b/rtgui/coordinateadjuster.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _COORDINATEADJUSTER_ -#define _COORDINATEADJUSTER_ +#pragma once #include @@ -160,6 +159,3 @@ public: void stopNumericalAdjustment(); }; - - -#endif diff --git a/rtgui/crop.h b/rtgui/crop.h index 1bbad548d..b9221a803 100644 --- a/rtgui/crop.h +++ b/rtgui/crop.h @@ -16,14 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CROP_H_ -#define _CROP_H_ +#pragma once + +#include #include + #include "cropguilistener.h" -#include "toolpanel.h" #include "guiutils.h" -#include +#include "toolpanel.h" class CropPanelListener { @@ -129,5 +130,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/cropguilistener.h b/rtgui/cropguilistener.h index c20d6556a..a7e18683a 100644 --- a/rtgui/cropguilistener.h +++ b/rtgui/cropguilistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __CROPGUILISTENER__ -#define __CROPGUILISTENER__ +#pragma once class CropGUIListener { @@ -39,5 +38,3 @@ public: virtual bool inImageArea(int x, int y) = 0; virtual double getRatio() const = 0; }; - -#endif diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index 77355b868..d5da1cf6e 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -16,21 +16,20 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __CROPHANDLER__ -#define __CROPHANDLER__ +#pragma once #include -#include #include +#include #include -#include "../rtengine/rtengine.h" #include "editbuffer.h" - #include "lockablecolorpicker.h" #include "threadutils.h" +#include "../rtengine/rtengine.h" + class EditSubscriber; class CropDisplayHandler @@ -139,5 +138,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/cursormanager.h b/rtgui/cursormanager.h index aec5110d1..38f198e32 100644 --- a/rtgui/cursormanager.h +++ b/rtgui/cursormanager.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CURSORMANAGER_ -#define _CURSORMANAGER_ +#pragma once #include @@ -89,6 +88,3 @@ public: extern CursorManager mainWindowCursorManager; extern CursorManager editWindowCursorManager; - -#endif - diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index bdd6d6b48..dd61bc910 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -16,21 +16,20 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CURVEEDITOR_ -#define _CURVEEDITOR_ +#pragma once -#include "popuptogglebutton.h" -#include "../rtengine/LUT.h" #include "coloredbar.h" #include "editcallbacks.h" #include "mydiagonalcurve.h" #include "myflatcurve.h" +#include "popuptogglebutton.h" + +#include "../rtengine/LUT.h" #include "../rtengine/noncopyable.h" class CurveEditorGroup; class CurveEditorSubGroup; - /* *********************** Curve Editor *********************** */ @@ -182,7 +181,6 @@ public: class FlatCurveEditor : public CurveEditor { - friend class FlatCurveEditorSubGroup; protected: @@ -207,5 +205,3 @@ public: // set the reset curve for a given curve type. This is optional; all curve type have a default reset curve void setResetCurve(FlatCurveType cType, const std::vector &resetCurve); }; - -#endif diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index 6f7b98d9b..7c39ab186 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -16,18 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CURVEEDITORGROUP_ -#define _CURVEEDITORGROUP_ +#pragma once -#include #include #include + +#include + +#include "adjuster.h" #include "guiutils.h" #include "mycurve.h" -#include "myflatcurve.h" #include "mydiagonalcurve.h" +#include "myflatcurve.h" #include "shcselector.h" -#include "adjuster.h" class CurveEditor; class DiagonalCurveEditorSubGroup; @@ -169,5 +170,3 @@ protected: virtual const std::vector getCurveFromGUI (int type) = 0; }; - -#endif diff --git a/rtgui/curvelistener.h b/rtgui/curvelistener.h index 05a9a4e99..d99167a98 100644 --- a/rtgui/curvelistener.h +++ b/rtgui/curvelistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _CURVELISTENER_ -#define _CURVELISTENER_ +#pragma once #include @@ -86,5 +85,3 @@ public: return retVal; } }; - -#endif diff --git a/rtgui/darkframe.h b/rtgui/darkframe.h index c576712a8..58ac904ff 100644 --- a/rtgui/darkframe.h +++ b/rtgui/darkframe.h @@ -16,24 +16,29 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DARKFRAME_H_ -#define _DARKFRAME_H_ +#pragma once #include + #include -#include "toolpanel.h" -#include "../rtengine/rawimage.h" + #include "guiutils.h" +#include "toolpanel.h" + +#include "../rtengine/rawimage.h" class DFProvider { public: + virtual ~DFProvider() = default; virtual rtengine::RawImage* getDF() = 0; virtual Glib::ustring GetCurrentImageFilePath() = 0; // add other info here }; -class DarkFrame : public ToolParamBlock, public FoldableToolPanel +class DarkFrame : + public ToolParamBlock, + public FoldableToolPanel { protected: @@ -66,5 +71,3 @@ public: dfp = p; }; }; - -#endif diff --git a/rtgui/defringe.h b/rtgui/defringe.h index 8a6eb0753..5dd17b547 100644 --- a/rtgui/defringe.h +++ b/rtgui/defringe.h @@ -16,18 +16,23 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DEFRINGE_H_ -#define _DEFRINGE_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" -#include "guiutils.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "colorprovider.h" +#include "guiutils.h" +#include "toolpanel.h" -class Defringe : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public CurveListener, public ColorProvider +class Defringe : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel, + public CurveListener, + public ColorProvider { protected: @@ -54,5 +59,3 @@ public: void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; }; - -#endif diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index 077ef590e..21784578e 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -16,16 +16,21 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DIAGONALCURVEEDITORSUBGROUP_ -#define _DIAGONALCURVEEDITORSUBGROUP_ +#pragma once #include + #include "curveeditorgroup.h" + #include "../rtengine/noncopyable.h" class DiagonalCurveEditor; -class DiagonalCurveEditorSubGroup : public CurveEditorSubGroup, public SHCListener, public AdjusterListener, public rtengine::NonCopyable +class DiagonalCurveEditorSubGroup : + public CurveEditorSubGroup, + public SHCListener, + public AdjusterListener, + public rtengine::NonCopyable { friend class DiagonalCurveEditor; @@ -111,5 +116,3 @@ protected: void setSubGroupRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4); void setSubGroupBottomBarBgGradient(); }; - -#endif diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h index 68422f8be..fa526c3a6 100644 --- a/rtgui/dirbrowser.h +++ b/rtgui/dirbrowser.h @@ -16,13 +16,13 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DIRBROWSER_ -#define _DIRBROWSER_ +#pragma once #include #include #include "guiutils.h" + #ifdef WIN32 #include "windows.h" #endif @@ -110,5 +110,3 @@ inline DirBrowser::DirSelectionSignal DirBrowser::dirSelected () const { return dirSelectionSignal; } - -#endif diff --git a/rtgui/dirpyrdenoise.h b/rtgui/dirpyrdenoise.h index 05304e4f7..424104314 100644 --- a/rtgui/dirpyrdenoise.h +++ b/rtgui/dirpyrdenoise.h @@ -16,16 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DIRPYRDENOISE_H_ -#define _DIRPYRDENOISE_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "colorprovider.h" #include "guiutils.h" +#include "toolpanel.h" class EditDataProvider; @@ -137,5 +137,3 @@ private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/dirpyrequalizer.h b/rtgui/dirpyrequalizer.h index e236dc29b..ff08f36bc 100644 --- a/rtgui/dirpyrequalizer.h +++ b/rtgui/dirpyrequalizer.h @@ -16,17 +16,20 @@ * * (C) 2010 Emil Martinec */ - -#ifndef DIRPYREQUALIZER_H_INCLUDED -#define DIRPYREQUALIZER_H_INCLUDED +#pragma once #include -#include "adjuster.h" -#include "toolpanel.h" -#include "thresholdadjuster.h" -#include "colorprovider.h" -class DirPyrEqualizer : public ToolParamBlock, public ThresholdAdjusterListener, public AdjusterListener, public FoldableToolPanel +#include "adjuster.h" +#include "colorprovider.h" +#include "thresholdadjuster.h" +#include "toolpanel.h" + +class DirPyrEqualizer : + public ToolParamBlock, + public ThresholdAdjusterListener, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -77,5 +80,3 @@ public: void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; }; - -#endif diff --git a/rtgui/distortion.h b/rtgui/distortion.h index 5e1cf6a6b..dab20bbd9 100644 --- a/rtgui/distortion.h +++ b/rtgui/distortion.h @@ -16,15 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DISTORTION_H_ -#define _DISTORTION_H_ +#pragma once #include -#include "adjuster.h" -#include "toolpanel.h" -#include "lensgeomlistener.h" -class Distortion : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +#include "adjuster.h" +#include "lensgeomlistener.h" +#include "toolpanel.h" + +class Distortion : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -51,5 +54,3 @@ public: rlistener = l; } }; - -#endif diff --git a/rtgui/dynamicprofilepanel.h b/rtgui/dynamicprofilepanel.h index fd4a6e80e..5796c9c85 100644 --- a/rtgui/dynamicprofilepanel.h +++ b/rtgui/dynamicprofilepanel.h @@ -16,14 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _DYNAMICPROFILEPANEL_H_ -#define _DYNAMICPROFILEPANEL_H_ +#pragma once #include -#include "../rtengine/dynamicprofile.h" + #include "profilestorecombobox.h" -class DynamicProfilePanel: public Gtk::VBox +#include "../rtengine/dynamicprofile.h" + +class DynamicProfilePanel : + public Gtk::VBox { public: DynamicProfilePanel(); @@ -133,5 +135,3 @@ private: Gtk::Button button_edit_; Gtk::Button button_delete_; }; - -#endif // _DYNAMICPROFILEPANEL_H_ diff --git a/rtgui/editedstate.h b/rtgui/editedstate.h index 2cee07eb9..c34aaf539 100644 --- a/rtgui/editedstate.h +++ b/rtgui/editedstate.h @@ -16,10 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EDITEDSTATE_ -#define _EDITEDSTATE_ +#pragma once enum EditedState { UnEdited = 0, Edited = 1, Irrelevant = 2 }; - -#endif - diff --git a/rtgui/editenums.h b/rtgui/editenums.h index 8fc28e922..f1ade8bfc 100644 --- a/rtgui/editenums.h +++ b/rtgui/editenums.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EDITENUMS_ -#define _EDITENUMS_ +#pragma once enum ImgEditState {SNormal, SCropMove, SHandMove, SResizeW1, SResizeW2, SResizeH1, SResizeH2, SResizeTL, SResizeTR, SResizeBL, SResizeBR, SCropSelecting, SRotateSelecting, SCropWinMove, SCropFrameMove, SCropImgMove, SCropWinResize, SObservedMove, @@ -26,5 +25,3 @@ enum ImgEditState {SNormal, SCropMove, SHandMove, SResizeW1, SResizeW2, SResizeH enum CursorArea {CropWinButtons, CropToolBar, CropImage, ColorPicker, CropBorder, CropTop, CropTopLeft, CropTopRight, CropBottom, CropBottomLeft, CropBottomRight, CropLeft, CropRight, CropInside, CropResize, CropObserved }; - -#endif diff --git a/rtgui/editid.h b/rtgui/editid.h index 88d77f859..39dc2bf7c 100644 --- a/rtgui/editid.h +++ b/rtgui/editid.h @@ -16,9 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EDITID_H_ -#define _EDITID_H_ - +#pragma once /// @brief List of pipette editing operation enum EditUniqueID : int { @@ -67,5 +65,3 @@ enum ObjectMode { OM_255, /// less or equal than 255 objects OM_65535 /// less or equal than 65535 objects }; - -#endif diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index c4349f693..ec59563e0 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -17,24 +17,25 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EDITORPANEL_ -#define _EDITORPANEL_ +#pragma once #include -#include "imageareapanel.h" -#include "toolpanelcoord.h" -#include "profilepanel.h" -#include "../rtengine/rtengine.h" -#include "history.h" -#include "histogrampanel.h" -#include "thumbnail.h" -#include "saveasdlg.h" + #include "batchqueueentry.h" -#include "thumbnaillistener.h" -#include "navigator.h" -#include "progressconnector.h" #include "filepanel.h" +#include "histogrampanel.h" +#include "history.h" +#include "imageareapanel.h" +#include "navigator.h" +#include "profilepanel.h" +#include "progressconnector.h" +#include "saveasdlg.h" +#include "thumbnail.h" +#include "thumbnaillistener.h" +#include "toolpanelcoord.h" + #include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" class EditorPanel; class MyProgressBar; @@ -259,6 +260,3 @@ private: IdleRegister idle_register; }; - -#endif - diff --git a/rtgui/editwindow.h b/rtgui/editwindow.h index 04999d149..08e8c0199 100644 --- a/rtgui/editwindow.h +++ b/rtgui/editwindow.h @@ -14,16 +14,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EDITWINDOW_ -#define _EDITWINDOW_ +#pragma once -#include -#include "filepanel.h" -#include "editorpanel.h" -#include "rtimage.h" #include -class EditWindow : public Gtk::Window +#include + +#include "editorpanel.h" +#include "filepanel.h" +#include "rtimage.h" + +class EditWindow : + public Gtk::Window { private: @@ -67,5 +69,3 @@ public: void set_title_decorated(Glib::ustring fname); void on_realize () override; }; - -#endif diff --git a/rtgui/epd.h b/rtgui/epd.h index d8781ef27..410004d89 100644 --- a/rtgui/epd.h +++ b/rtgui/epd.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EPD_H_ -#define _EPD_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class EdgePreservingDecompositionUI : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class EdgePreservingDecompositionUI : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: Adjuster *strength; @@ -45,5 +48,3 @@ public: void enabledChanged () override; void setAdjusterBehavior (bool stAdd, bool gAdd, bool esAdd, bool scAdd, bool rAdd); }; - -#endif diff --git a/rtgui/exiffiltersettings.h b/rtgui/exiffiltersettings.h index e820a2cac..5a25af6ad 100644 --- a/rtgui/exiffiltersettings.h +++ b/rtgui/exiffiltersettings.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EXIFFILTERSETTINGS_ -#define _EXIFFILTERSETTINGS_ +#pragma once #include #include @@ -51,6 +50,3 @@ public: ExifFilterSettings (); void clear (); }; - -#endif - diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h index f054f37c7..2b173c884 100644 --- a/rtgui/exifpanel.h +++ b/rtgui/exifpanel.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EXIFPANEL_ -#define _EXIFPANEL_ +#pragma once #include @@ -25,7 +24,9 @@ #include "toolpanel.h" -class ExifPanel : public Gtk::VBox, public ToolPanel +class ExifPanel : + public Gtk::VBox, + public ToolPanel { private: @@ -114,5 +115,3 @@ public: void notifyListener(); }; - -#endif diff --git a/rtgui/exportpanel.h b/rtgui/exportpanel.h index d13ca08ad..f70e47386 100644 --- a/rtgui/exportpanel.h +++ b/rtgui/exportpanel.h @@ -17,12 +17,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _EXPORTPANEL_ -#define _EXPORTPANEL_ +#pragma once #include -#include "guiutils.h" + #include "adjuster.h" +#include "guiutils.h" class ExportPanelListener { @@ -122,5 +122,3 @@ public: listener = l; } }; - -#endif diff --git a/rtgui/extprog.h b/rtgui/extprog.h index ea2749a61..c5e00bb1b 100644 --- a/rtgui/extprog.h +++ b/rtgui/extprog.h @@ -16,14 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ - -#ifndef _EXTPROG_ -#define _EXTPROG_ - -#include +#pragma once #include +#include + #include "threadutils.h" struct ExtProgAction @@ -74,5 +72,3 @@ inline const std::vector& ExtProgStore::getActions () const { return actions; } - -#endif diff --git a/rtgui/favoritbrowser.h b/rtgui/favoritbrowser.h index 292f17de6..7a73b98af 100644 --- a/rtgui/favoritbrowser.h +++ b/rtgui/favoritbrowser.h @@ -16,17 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FAVORITBROWSER_ -#define _FAVORITBROWSER_ +#pragma once #include + #include "dirbrowserremoteinterface.h" #include "dirselectionlistener.h" -class FavoritBrowser : public Gtk::VBox, public DirSelectionListener +class FavoritBrowser : + public Gtk::VBox, + public DirSelectionListener { - - class FavoritColumns : public Gtk::TreeModel::ColumnRecord + class FavoritColumns : + public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn > icon; @@ -61,7 +63,3 @@ public: void delPressed (); void selectionChanged (); }; - -#endif - - diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 6911a944f..74b491957 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -16,25 +16,27 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILEBROWSER_ -#define _FILEBROWSER_ +#pragma once + +#include #include -#include -#include "thumbbrowserbase.h" -#include "exiffiltersettings.h" -#include "filebrowserentry.h" + #include "browserfilter.h" -#include "pparamschangelistener.h" -#include "partialpastedlg.h" +#include "exiffiltersettings.h" #include "exportpanel.h" #include "extprog.h" +#include "filebrowserentry.h" +#include "partialpastedlg.h" +#include "pparamschangelistener.h" #include "profilestorecombobox.h" +#include "thumbbrowserbase.h" + #include "../rtengine/noncopyable.h" -class ProfileStoreLabel; class FileBrowser; class FileBrowserEntry; +class ProfileStoreLabel; class FileBrowserListener { @@ -210,5 +212,3 @@ public: type_trash_changed trash_changed(); }; - -#endif diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h index 646e8e67e..c7eebcd44 100644 --- a/rtgui/filebrowserentry.h +++ b/rtgui/filebrowserentry.h @@ -16,16 +16,13 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILEBROWSERENTRY_ -#define _FILEBROWSERENTRY_ +#pragma once #include #include #include -#include "../rtengine/rtengine.h" - #include "crophandler.h" #include "editenums.h" #include "filethumbnailbuttonset.h" @@ -34,8 +31,9 @@ #include "thumbimageupdater.h" #include "thumbnail.h" #include "thumbnaillistener.h" -#include "../rtengine/noncopyable.h" +#include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" class FileBrowserEntry; struct FileBrowserEntryIdleHelper { @@ -109,5 +107,3 @@ public: bool pressNotify (int button, int type, int bstate, int x, int y) override; bool releaseNotify (int button, int type, int bstate, int x, int y) override; }; - -#endif diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index 09e2cc1ed..c71658cca 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -16,22 +16,24 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILECATALOG_ -#define _FILECATALOG_ +#pragma once -#include "filebrowser.h" -#include "exiffiltersettings.h" -#include -#include "fileselectionlistener.h" #include -#include "fileselectionchangelistener.h" + +#include + #include "coarsepanel.h" -#include "toolbar.h" -#include "filterpanel.h" +#include "exiffiltersettings.h" #include "exportpanel.h" -#include "previewloader.h" +#include "filebrowser.h" +#include "fileselectionchangelistener.h" +#include "fileselectionlistener.h" +#include "filterpanel.h" #include "multilangmgr.h" +#include "previewloader.h" #include "threadutils.h" +#include "toolbar.h" + #include "../rtengine/noncopyable.h" class FilePanel; @@ -288,5 +290,3 @@ inline void FileCatalog::setDirSelector (const FileCatalog::DirSelectionSlot& se { this->selectDir = selectDir; } - -#endif diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h index bdeb266f4..9ae91be4d 100644 --- a/rtgui/filepanel.h +++ b/rtgui/filepanel.h @@ -16,21 +16,22 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILEPANEL_ -#define _FILEPANEL_ +#pragma once #include + #include "batchtoolpanelcoord.h" -#include "filecatalog.h" #include "dirbrowser.h" -#include "fileselectionlistener.h" -#include "placesbrowser.h" -#include "recentbrowser.h" -#include "pparamschangelistener.h" -#include "history.h" -#include "filterpanel.h" #include "exportpanel.h" +#include "filecatalog.h" +#include "fileselectionlistener.h" +#include "filterpanel.h" +#include "history.h" +#include "placesbrowser.h" +#include "pparamschangelistener.h" #include "progressconnector.h" +#include "recentbrowser.h" + #include "../rtengine/noncopyable.h" class RTWindow; @@ -108,6 +109,3 @@ private: IdleRegister idle_register; }; - -#endif - diff --git a/rtgui/fileselectionchangelistener.h b/rtgui/fileselectionchangelistener.h index 1f3b8e612..64251c1bd 100644 --- a/rtgui/fileselectionchangelistener.h +++ b/rtgui/fileselectionchangelistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILESELECTIONCHANGELISTENER_ -#define _FILESELECTIONCHANGELISTENER_ +#pragma once class Thumbnail; @@ -27,6 +26,3 @@ public: virtual ~FileSelectionChangeListener() = default; virtual void selectionChanged(const std::vector& selected) = 0; }; - -#endif - diff --git a/rtgui/fileselectionlistener.h b/rtgui/fileselectionlistener.h index a7f7fb284..394a35f51 100644 --- a/rtgui/fileselectionlistener.h +++ b/rtgui/fileselectionlistener.h @@ -16,11 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILESELECTIONLISTENER_ -#define _FILESELECTIONLISTENER_ +#pragma once -class Thumbnail; class BatchQueueEntry; +class Thumbnail; class FileSelectionListener { @@ -29,6 +28,3 @@ public: virtual bool fileSelected(Thumbnail* thm) = 0; virtual bool addBatchQueueJobs(const std::vector& entries) = 0; }; - -#endif - diff --git a/rtgui/filethumbnailbuttonset.h b/rtgui/filethumbnailbuttonset.h index 102b573c8..f4fbc97ed 100644 --- a/rtgui/filethumbnailbuttonset.h +++ b/rtgui/filethumbnailbuttonset.h @@ -16,18 +16,20 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILETHUMBNAILBUTTONSET_ -#define _FILETHUMBNAILBUTTONSET_ +#pragma once #include -#include "lwbuttonset.h" #include + #include "filebrowserentry.h" +#include "lwbuttonset.h" #include "rtsurface.h" class FileBrowserEntry; -class FileThumbnailButtonSet : public LWButtonSet + +class FileThumbnailButtonSet : + public LWButtonSet { static bool iconsLoaded; @@ -55,5 +57,3 @@ public: void setInTrash (bool inTrash); }; - -#endif diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h index 6eb0fd024..fc9e804e1 100644 --- a/rtgui/filmsimulation.h +++ b/rtgui/filmsimulation.h @@ -1,14 +1,17 @@ -#ifndef FILM_SIMULATION_INCLUDED -#define FILM_SIMULATION_INCLUDED +#pragma once + +#include #include -#include -#include -#include "toolpanel.h" -#include "guiutils.h" -#include "adjuster.h" -class ClutComboBox : public MyComboBox +#include + +#include "adjuster.h" +#include "guiutils.h" +#include "toolpanel.h" + +class ClutComboBox : + public MyComboBox { public: explicit ClutComboBox(const Glib::ustring &path); @@ -74,5 +77,3 @@ private: Adjuster *m_strength; }; - -#endif diff --git a/rtgui/filterpanel.h b/rtgui/filterpanel.h index e6e41a416..25a368b27 100644 --- a/rtgui/filterpanel.h +++ b/rtgui/filterpanel.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FILTERPANEL_ -#define _FILTERPANEL_ +#pragma once #include + #include "exiffiltersettings.h" class FilterPanelListener @@ -79,5 +79,3 @@ public: enabled->set_active(enabledState); } }; - -#endif diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index e9253cd08..5b14f752a 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -16,16 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FLATCURVEEDITORSUBGROUP_ -#define _FLATCURVEEDITORSUBGROUP_ +#pragma once #include + #include "curveeditorgroup.h" + #include "../rtengine/noncopyable.h" class FlatCurveEditor; -class FlatCurveEditorSubGroup: public CurveEditorSubGroup, public rtengine::NonCopyable +class FlatCurveEditorSubGroup: + public CurveEditorSubGroup, + public rtengine::NonCopyable { friend class FlatCurveEditor; @@ -76,5 +79,3 @@ protected: void editPointToggled(Gtk::ToggleButton *button); void editToggled (Gtk::ToggleButton *button); }; - -#endif diff --git a/rtgui/flatfield.h b/rtgui/flatfield.h index b9997f65e..02cc9963f 100644 --- a/rtgui/flatfield.h +++ b/rtgui/flatfield.h @@ -16,15 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _FLATFIELD_H_ -#define _FLATFIELD_H_ +#pragma once #include + #include + #include "adjuster.h" -#include "toolpanel.h" -#include "../rtengine/rawimage.h" #include "guiutils.h" +#include "toolpanel.h" + +#include "../rtengine/rawimage.h" class FFProvider { @@ -84,5 +86,3 @@ public: }; void flatFieldAutoClipValueChanged(int n = 0) override; }; - -#endif diff --git a/rtgui/gradient.h b/rtgui/gradient.h index 05a267a0d..834f08670 100644 --- a/rtgui/gradient.h +++ b/rtgui/gradient.h @@ -1,16 +1,20 @@ /* * This file is part of RawTherapee. */ -#ifndef _GRADIENT_H_ -#define _GRADIENT_H_ +#pragma once #include + #include "adjuster.h" #include "editcallbacks.h" -#include "toolpanel.h" #include "guiutils.h" +#include "toolpanel.h" -class Gradient : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public EditSubscriber +class Gradient : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel, + public EditSubscriber { private: @@ -58,5 +62,3 @@ public: bool drag1(int modifierKey) override; void switchOffEditMode () override; }; - -#endif diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h index ef8d9368d..92d0dc7b4 100644 --- a/rtgui/histogrampanel.h +++ b/rtgui/histogrampanel.h @@ -16,21 +16,23 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _HISTOGRAMPANEL_ -#define _HISTOGRAMPANEL_ - +#pragma once #include -#include -#include -#include "../rtengine/LUT.h" -#include "../rtengine/improccoordinator.h" -#include "guiutils.h" +#include + +#include + +#include "guiutils.h" #include "pointermotionlistener.h" + +#include "../rtengine/improccoordinator.h" +#include "../rtengine/LUT.h" #include "../rtengine/noncopyable.h" class HistogramArea; + struct HistogramAreaIdleHelper { HistogramArea* harea; bool destroyed; @@ -252,5 +254,3 @@ public: // drawModeListener interface void toggleButtonMode () override; }; - -#endif diff --git a/rtgui/history.h b/rtgui/history.h index abf0d1ba5..faebe4765 100644 --- a/rtgui/history.h +++ b/rtgui/history.h @@ -16,14 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _HISTORY_ -#define _HISTORY_ +#pragma once #include -#include "../rtengine/rtengine.h" + +#include "paramsedited.h" #include "pparamschangelistener.h" #include "profilechangelistener.h" -#include "paramsedited.h" + +#include "../rtengine/rtengine.h" class HistoryBeforeLineListener { @@ -135,5 +136,3 @@ public: bmnum = 1; }; }; - -#endif diff --git a/rtgui/hsvequalizer.h b/rtgui/hsvequalizer.h index 2ffa9fa0f..7d313cc76 100644 --- a/rtgui/hsvequalizer.h +++ b/rtgui/hsvequalizer.h @@ -16,20 +16,22 @@ * * 2010 Ilya Popov */ - -#ifndef HSVEQUALIZER_H_INCLUDED -#define HSVEQUALIZER_H_INCLUDED +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" -#include "guiutils.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "colorprovider.h" +#include "guiutils.h" +#include "toolpanel.h" - -class HSVEqualizer : public ToolParamBlock, public FoldableToolPanel, public CurveListener, public ColorProvider +class HSVEqualizer : + public ToolParamBlock, + public FoldableToolPanel, + public CurveListener, + public ColorProvider { protected: @@ -56,5 +58,3 @@ public: //void adjusterChanged (Adjuster* a, double newval); void enabledChanged() override; }; - -#endif diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h index 9b4706ecd..5573bacb8 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -16,16 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ICMPANEL_ -#define _ICMPANEL_ +#pragma once #include + #include + #include "adjuster.h" #include "guiutils.h" - -#include "toolpanel.h" #include "popupbutton.h" +#include "toolpanel.h" + #include "../rtengine/imagedata.h" class ICMPanelListener @@ -148,5 +149,3 @@ public: icmplistener = ipl; } }; - -#endif diff --git a/rtgui/ilabel.h b/rtgui/ilabel.h index 06da470b1..cb9ca00be 100644 --- a/rtgui/ilabel.h +++ b/rtgui/ilabel.h @@ -16,12 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ILABEL_ -#define _ILABEL_ +#pragma once #include -class ILabel : public Gtk::DrawingArea +class ILabel : + public Gtk::DrawingArea { Glib::ustring label; @@ -32,6 +32,3 @@ public: void on_realize() override; void on_style_updated () override; }; - -#endif - diff --git a/rtgui/imagearea.h b/rtgui/imagearea.h index 375e3a536..28b52dcd2 100644 --- a/rtgui/imagearea.h +++ b/rtgui/imagearea.h @@ -16,24 +16,29 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __IMAGEAREA_H__ -#define __IMAGEAREA_H__ +#pragma once #include + #include "cropguilistener.h" -#include "imageareapanel.h" -#include "editenums.h" -#include "toolbar.h" -#include "previewhandler.h" -#include "imageareatoollistener.h" #include "cropwindow.h" #include "editcallbacks.h" -#include "zoompanel.h" +#include "editenums.h" +#include "imageareapanel.h" +#include "imageareatoollistener.h" #include "indclippedpanel.h" +#include "previewhandler.h" #include "previewmodepanel.h" +#include "toolbar.h" +#include "zoompanel.h" class ImageAreaPanel; -class ImageArea : public Gtk::DrawingArea, public CropWindowListener, public EditDataProvider, public LockablePickerToolListener + +class ImageArea : + public Gtk::DrawingArea, + public CropWindowListener, + public EditDataProvider, + public LockablePickerToolListener { friend class ZoomPanel; @@ -158,7 +163,3 @@ public: return mainCropWindow; } }; - - - -#endif diff --git a/rtgui/imageareapanel.h b/rtgui/imageareapanel.h index 4ec3ffcf3..831371dbb 100644 --- a/rtgui/imageareapanel.h +++ b/rtgui/imageareapanel.h @@ -16,13 +16,14 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMAGEAREAPANEL_ -#define _IMAGEAREAPANEL_ +#pragma once #include "imagearea.h" class ImageArea; -class ImageAreaPanel : public Gtk::VBox + +class ImageAreaPanel : + public Gtk::VBox { protected: @@ -42,5 +43,3 @@ public: void setBeforeAfterViews (ImageAreaPanel* bef, ImageAreaPanel* aft); void syncBeforeAfterViews(); }; - -#endif diff --git a/rtgui/imageareatoollistener.h b/rtgui/imageareatoollistener.h index d387b595c..86fdca6a2 100644 --- a/rtgui/imageareatoollistener.h +++ b/rtgui/imageareatoollistener.h @@ -16,12 +16,11 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMAGEAREATOOLLISTENER_ -#define _IMAGEAREATOOLLISTENER_ +#pragma once -#include "toolbar.h" -#include "thumbnail.h" #include "cropguilistener.h" +#include "thumbnail.h" +#include "toolbar.h" class ImageAreaToolListener { @@ -36,6 +35,3 @@ public: virtual ToolBar* getToolBar() const = 0; virtual CropGUIListener* startCropEditing(Thumbnail* thm = nullptr) = 0; }; - -#endif - diff --git a/rtgui/impulsedenoise.h b/rtgui/impulsedenoise.h index 1ebdc430b..e3cfc619a 100644 --- a/rtgui/impulsedenoise.h +++ b/rtgui/impulsedenoise.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IMPULSEDENOISE_H_ -#define _IMPULSEDENOISE_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class ImpulseDenoise : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class ImpulseDenoise : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -45,5 +48,3 @@ public: void setAdjusterBehavior (bool threshadd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/indclippedpanel.h b/rtgui/indclippedpanel.h index 54476af10..1017b58f1 100644 --- a/rtgui/indclippedpanel.h +++ b/rtgui/indclippedpanel.h @@ -15,14 +15,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _INDCLIPPEDPANEL_ -#define _INDCLIPPEDPANEL_ +#pragma once -#include #include +#include + class ImageArea; -class IndicateClippedPanel : public Gtk::HBox + +class IndicateClippedPanel : + public Gtk::HBox { protected: @@ -59,5 +61,3 @@ public: return indClippedH->get_active(); } }; - -#endif diff --git a/rtgui/inspector.h b/rtgui/inspector.h index 6b3b2350b..bb144834a 100644 --- a/rtgui/inspector.h +++ b/rtgui/inspector.h @@ -16,11 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _INSPECTOR_ -#define _INSPECTOR_ +#pragma once #include + #include "guiutils.h" + #include "../rtengine/coord.h" #include "../rtengine/coord2d.h" #include "../rtengine/rt_math.h" @@ -101,5 +102,3 @@ public: void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; - -#endif diff --git a/rtgui/iptcpanel.h b/rtgui/iptcpanel.h index 0317314a1..15d117f87 100644 --- a/rtgui/iptcpanel.h +++ b/rtgui/iptcpanel.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _IPTCPANEL_ -#define _IPTCPANEL_ +#pragma once #include @@ -26,7 +25,9 @@ #include "guiutils.h" #include "toolpanel.h" -class IPTCPanel : public Gtk::VBox, public ToolPanel +class IPTCPanel : + public Gtk::VBox, + public ToolPanel { private: @@ -92,5 +93,3 @@ public: void copyClicked (); void pasteClicked (); }; - -#endif diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h index 51ba0fdd6..46f506d68 100644 --- a/rtgui/labcurve.h +++ b/rtgui/labcurve.h @@ -16,19 +16,24 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LABCURVE_H_ -#define _LABCURVE_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "colorprovider.h" +#include "toolpanel.h" class EditDataProvider; -class LCurve : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public CurveListener, public ColorProvider +class LCurve : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel, + public CurveListener, + public ColorProvider { protected: @@ -97,5 +102,3 @@ public: void enabledChanged() override; }; - -#endif diff --git a/rtgui/lensgeom.h b/rtgui/lensgeom.h index 06b8e5689..e3352a506 100644 --- a/rtgui/lensgeom.h +++ b/rtgui/lensgeom.h @@ -16,14 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LENSGEOM_H_ -#define _LENSGEOM_H_ +#pragma once #include -#include "toolpanel.h" -#include "lensgeomlistener.h" -class LensGeometry : public ToolParamBlock, public FoldableToolPanel +#include "lensgeomlistener.h" +#include "toolpanel.h" + +class LensGeometry : + public ToolParamBlock, + public FoldableToolPanel { protected: @@ -58,5 +60,3 @@ public: private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/lensgeomlistener.h b/rtgui/lensgeomlistener.h index dbe58f1fa..7bfa0fb45 100644 --- a/rtgui/lensgeomlistener.h +++ b/rtgui/lensgeomlistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LENSGEOMLISTENER_H_ -#define _LENSGEOMLISTENER_H_ +#pragma once class LensGeomListener { @@ -27,5 +26,3 @@ public: virtual void autoCropRequested () = 0; virtual double autoDistorRequested () = 0; }; - -#endif diff --git a/rtgui/lockablecolorpicker.h b/rtgui/lockablecolorpicker.h index f1a63d533..eadf71773 100644 --- a/rtgui/lockablecolorpicker.h +++ b/rtgui/lockablecolorpicker.h @@ -16,13 +16,11 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#pragma once -#ifndef __COLORPICKER__ -#define __COLORPICKER__ - +#include "guiutils.h" #include "../rtengine/coord.h" -#include "guiutils.h" class CropWindow; @@ -93,5 +91,3 @@ public: bool cycleRGB (); bool cycleHSV (); }; - -#endif diff --git a/rtgui/lwbutton.h b/rtgui/lwbutton.h index 16e53a875..7a784e693 100644 --- a/rtgui/lwbutton.h +++ b/rtgui/lwbutton.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LWBUTTON_ -#define _LWBUTTON_ +#pragma once #include + #include "rtsurface.h" class LWButton; @@ -78,5 +78,3 @@ public: void redraw (Cairo::RefPtr context); }; - -#endif diff --git a/rtgui/multilangmgr.h b/rtgui/multilangmgr.h index 0c76b4c01..902161eb2 100644 --- a/rtgui/multilangmgr.h +++ b/rtgui/multilangmgr.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _MULTILANGMGR_ -#define _MULTILANGMGR_ +#pragma once #include #include @@ -45,5 +44,3 @@ inline Glib::ustring M (const std::string& key) { return langMgr.getStr (key); } - -#endif diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index 73f16d227..6bdfe4b66 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -16,15 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _MYCURVE_ -#define _MYCURVE_ +#pragma once + +#include #include -#include -#include "curvelistener.h" -#include "cursormanager.h" + #include "coloredbar.h" #include "coordinateadjuster.h" +#include "cursormanager.h" +#include "curvelistener.h" + #include "../rtengine/LUT.h" #include "../rtengine/noncopyable.h" @@ -151,5 +153,3 @@ public: myCurve->setDirty(true); } }; - -#endif diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index 33fac6090..058c11e5a 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -16,16 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _MYDIAGONALCURVE_ -#define _MYDIAGONALCURVE_ +#pragma once + +#include #include -#include -#include "curvelistener.h" -#include "cursormanager.h" -#include "mycurve.h" -#include "../rtengine/LUT.h" +#include "cursormanager.h" +#include "curvelistener.h" +#include "mycurve.h" + +#include "../rtengine/LUT.h" // For compatibility and simplicity reason, order shouldn't change, and must be identical to the order specified in the curveType widget enum DiagonalCurveType { @@ -101,5 +102,3 @@ public: void setPos(double pos, int chanIdx) override; void stopNumericalAdjustment() override; }; - -#endif diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index fa4466b8d..c4cbfa291 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -16,13 +16,14 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _MYFLATCURVE_ -#define _MYFLATCURVE_ +#pragma once + +#include #include -#include -#include "curvelistener.h" + #include "cursormanager.h" +#include "curvelistener.h" #include "mycurve.h" // For compatibility and simplicity reason, order shouldn't change, and must be identical to the order specified in the curveType widget @@ -138,5 +139,3 @@ public: void setPos(double pos, int chanIdx) override; void stopNumericalAdjustment() override; }; - -#endif diff --git a/rtgui/navigator.h b/rtgui/navigator.h index 32ad68175..953a0a44b 100644 --- a/rtgui/navigator.h +++ b/rtgui/navigator.h @@ -16,15 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _NAVIGATOR_ -#define _NAVIGATOR_ +#pragma once #include -#include "previewwindow.h" -#include "pointermotionlistener.h" -#include "options.h" -class Navigator : public Gtk::Frame, public PointerMotionListener +#include "options.h" +#include "pointermotionlistener.h" +#include "previewwindow.h" + +class Navigator : + public Gtk::Frame, + public PointerMotionListener { typedef const double (*TMatrix)[3]; @@ -62,5 +64,3 @@ public: void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB) override; }; - -#endif diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index eebb08705..6c4228061 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PARTIALPASTEDLG_ -#define _PARTIALPASTEDLG_ +#pragma once #include + #include "../rtengine/rtengine.h" struct ParamsEdited; @@ -159,6 +159,3 @@ public: void rawToggled (); void advancedToggled (); }; - -#endif - diff --git a/rtgui/pcvignette.h b/rtgui/pcvignette.h index ce41ab75f..da0e02dc6 100644 --- a/rtgui/pcvignette.h +++ b/rtgui/pcvignette.h @@ -1,14 +1,17 @@ /* * This file is part of RawTherapee. */ -#ifndef _PCVIGNETTE_H_ -#define _PCVIGNETTE_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class PCVignette : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class PCVignette : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -30,5 +33,3 @@ public: void setAdjusterBehavior (bool strengthadd, bool featheradd, bool roundnessadd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/perspective.h b/rtgui/perspective.h index 9b36ed24d..618ad32cf 100644 --- a/rtgui/perspective.h +++ b/rtgui/perspective.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PERSPECTIVE_PANEL_H_ -#define _PERSPECTIVE_PANEL_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class PerspCorrection : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class PerspCorrection : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -43,5 +46,3 @@ public: void setAdjusterBehavior (bool badd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/placesbrowser.h b/rtgui/placesbrowser.h index 6325bdb45..78c94969f 100644 --- a/rtgui/placesbrowser.h +++ b/rtgui/placesbrowser.h @@ -16,14 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PLACESBROWSER_ -#define _PLACESBROWSER_ +#pragma once #include + #include + #include "multilangmgr.h" -class PlacesBrowser : public Gtk::VBox +class PlacesBrowser : + public Gtk::VBox { public: typedef sigc::slot DirSelectionSlot; @@ -84,7 +86,3 @@ inline void PlacesBrowser::setDirSelector (const PlacesBrowser::DirSelectionSlot { this->selectDir = selectDir; } - -#endif - - diff --git a/rtgui/pointermotionlistener.h b/rtgui/pointermotionlistener.h index 0a2931262..26ca994b0 100644 --- a/rtgui/pointermotionlistener.h +++ b/rtgui/pointermotionlistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _POINTERMOTIONLISTENER_ -#define _POINTERMOTIONLISTENER_ +#pragma once class PointerMotionListener { @@ -26,7 +25,7 @@ protected: sigc::signal sig_cycle_hsv; public: - virtual ~PointerMotionListener() {} + virtual ~PointerMotionListener() = default; virtual void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false) = 0; virtual void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false) { sR = "--"; sG = "--"; sB = "--"; } virtual void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV) { sH = "--"; sS = "--"; sV = "--"; } @@ -41,5 +40,3 @@ public: return sig_cycle_hsv; } }; - -#endif diff --git a/rtgui/popupbutton.h b/rtgui/popupbutton.h index fb0b66e0d..87b1b73a6 100644 --- a/rtgui/popupbutton.h +++ b/rtgui/popupbutton.h @@ -18,13 +18,15 @@ * * Class created by Jean-Christophe FRISCH, aka 'Hombre' */ -#ifndef _POPUPBUTTON_ -#define _POPUPBUTTON_ +#pragma once #include + #include "popupcommon.h" -class PopUpButton : public Gtk::Button, public PopUpCommon +class PopUpButton : + public Gtk::Button, + public PopUpCommon { public: @@ -40,5 +42,3 @@ private: bool nextOnClicked; }; - -#endif diff --git a/rtgui/popupcommon.h b/rtgui/popupcommon.h index 44ad0886a..b4cf4d7e0 100644 --- a/rtgui/popupcommon.h +++ b/rtgui/popupcommon.h @@ -18,19 +18,22 @@ * * Class created by Jean-Christophe FRISCH, aka 'Hombre' */ -#ifndef _POPUPCOMMON_ -#define _POPUPCOMMON_ +#pragma once #include + #include + #include namespace Gtk { + class Grid; class Menu; class Button; class ImageMenuItem; + } typedef struct _GdkEventButton GdkEventButton; @@ -101,5 +104,3 @@ inline int PopUpCommon::getSelected () const { return posToIndex(selected); } - -#endif diff --git a/rtgui/popuptogglebutton.h b/rtgui/popuptogglebutton.h index b2949a0b8..a97c75fa2 100644 --- a/rtgui/popuptogglebutton.h +++ b/rtgui/popuptogglebutton.h @@ -18,13 +18,15 @@ * * Class created by Jean-Christophe FRISCH, aka 'Hombre' */ -#ifndef _POPUPTOGGLEBUTTON_ -#define _POPUPTOGGLEBUTTON_ +#pragma once #include + #include "popupcommon.h" -class PopUpToggleButton : public Gtk::ToggleButton, public PopUpCommon +class PopUpToggleButton : + public Gtk::ToggleButton, + public PopUpCommon { public: @@ -32,5 +34,3 @@ public: void show (); void set_tooltip_text (const Glib::ustring &text); }; - -#endif diff --git a/rtgui/pparamschangelistener.h b/rtgui/pparamschangelistener.h index bc3a5600b..de590dd9f 100644 --- a/rtgui/pparamschangelistener.h +++ b/rtgui/pparamschangelistener.h @@ -16,12 +16,13 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PPARAMSCHANGELISTENER_ -#define _PPARAMSCHANGELISTENER_ +#pragma once + +#include + +#include "paramsedited.h" #include "../rtengine/rtengine.h" -#include -#include "paramsedited.h" class PParamsChangeListener { @@ -43,6 +44,3 @@ public: virtual void beginBatchPParamsChange(int numberOfEntries) = 0; virtual void endBatchPParamsChange() = 0; }; - -#endif - diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 6ca302fe8..62f7c53c1 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -16,20 +16,24 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __PREFERENCES_H__ -#define __PREFERENCES_H__ +#pragma once + +#include #include -#include "adjuster.h" -#include "options.h" -#include -#include "rtwindow.h" -#include "dynamicprofilepanel.h" -class Preferences : public Gtk::Dialog, public ProfileStoreListener +#include "adjuster.h" +#include "dynamicprofilepanel.h" +#include "options.h" +#include "rtwindow.h" + +class Preferences : + public Gtk::Dialog, + public ProfileStoreListener { - class ExtensionColumns : public Gtk::TreeModel::ColumnRecord + class ExtensionColumns : + public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn enabled; @@ -303,5 +307,3 @@ public: // void selectICCProfileDir (); // void selectMonitorProfile (); }; - -#endif diff --git a/rtgui/preprocess.h b/rtgui/preprocess.h index cf4cc8857..3b337a450 100644 --- a/rtgui/preprocess.h +++ b/rtgui/preprocess.h @@ -16,16 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PREPROCESS_H_ -#define _PREPROCESS_H_ +#pragma once #include -//#include "adjuster.h" -#include "toolpanel.h" + #include "adjuster.h" #include "guiutils.h" +#include "toolpanel.h" -class PreProcess : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class PreProcess : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -53,5 +55,3 @@ public: //void setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd); //void trimValues (rtengine::procparams::ProcParams* pp); }; - -#endif diff --git a/rtgui/previewhandler.h b/rtgui/previewhandler.h index 7fe7b96f4..d9c91f6ad 100644 --- a/rtgui/previewhandler.h +++ b/rtgui/previewhandler.h @@ -16,19 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PREVIEWHANDLER_ -#define _PREVIEWHANDLER_ +#pragma once #include #include #include -#include "threadutils.h" #include "guiutils.h" +#include "threadutils.h" -#include "../rtengine/rtengine.h" #include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" class PreviewListener { @@ -86,5 +85,3 @@ public: Glib::RefPtr getRoughImage (int desiredW, int desiredH, double& zoom); rtengine::procparams::CropParams getCropParams (); }; - -#endif diff --git a/rtgui/previewloader.h b/rtgui/previewloader.h index ede509c0a..3712dc3ff 100644 --- a/rtgui/previewloader.h +++ b/rtgui/previewloader.h @@ -16,16 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PREVIEWLOADER_ -#define _PREVIEWLOADER_ +#pragma once #include + #include -#include "../rtengine/noncopyable.h" - #include "filebrowserentry.h" +#include "../rtengine/noncopyable.h" + class PreviewLoaderListener { public: @@ -94,5 +94,3 @@ private: * To use: \c previewLoader->start() , */ #define previewLoader PreviewLoader::getInstance() - -#endif diff --git a/rtgui/previewmodepanel.h b/rtgui/previewmodepanel.h index b43e8484c..98160a5e3 100644 --- a/rtgui/previewmodepanel.h +++ b/rtgui/previewmodepanel.h @@ -15,14 +15,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PREVIEWMODEPANEL_ -#define _PREVIEWMODEPANEL_ +#pragma once #include -#include "adjuster.h"//dev + +#include "adjuster.h" class ImageArea; -class PreviewModePanel : public Gtk::HBox + +class PreviewModePanel : + public Gtk::HBox { protected: @@ -83,5 +85,3 @@ public: int GetbackColor(); }; - -#endif diff --git a/rtgui/previewwindow.h b/rtgui/previewwindow.h index 64aa84afd..245f4a394 100644 --- a/rtgui/previewwindow.h +++ b/rtgui/previewwindow.h @@ -16,16 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PREVIEWWINDOW_ -#define _PREVIEWWINDOW_ +#pragma once #include -#include "previewhandler.h" -#include "cropwindow.h" -#include "guiutils.h" -#include "cursormanager.h" -class PreviewWindow : public Gtk::DrawingArea, public PreviewListener, public CropWindowListener +#include "cropwindow.h" +#include "cursormanager.h" +#include "guiutils.h" +#include "previewhandler.h" + +class PreviewWindow : + public Gtk::DrawingArea, + public PreviewListener, + public CropWindowListener { private: @@ -71,5 +74,3 @@ public: void cropZoomChanged(CropWindow* w) override; void initialImageArrived() override; }; - -#endif diff --git a/rtgui/profilechangelistener.h b/rtgui/profilechangelistener.h index fa7e1b877..c2e3f2654 100644 --- a/rtgui/profilechangelistener.h +++ b/rtgui/profilechangelistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PROFILECHANGELISTENER_ -#define _PROFILECHANGELISTENER_ +#pragma once #include @@ -48,6 +47,3 @@ public: ) = 0; virtual void setDefaults(const rtengine::procparams::ProcParams* defparams) = 0; }; - -#endif - diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index 1efafe10b..378b2a984 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -16,22 +16,28 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PROFILEPANEL_ -#define _PROFILEPANEL_ +#pragma once + +#include #include -#include -#include "../rtengine/rtengine.h" + +#include "guiutils.h" +#include "partialpastedlg.h" #include "pparamschangelistener.h" #include "profilechangelistener.h" -#include "partialpastedlg.h" -#include "guiutils.h" #include "profilestorecombobox.h" + #include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" class RTImage; -class ProfilePanel : public Gtk::Grid, public PParamsChangeListener, public ProfileStoreListener, public rtengine::NonCopyable +class ProfilePanel : + public Gtk::Grid, + public PParamsChangeListener, + public ProfileStoreListener, + public rtengine::NonCopyable { private: @@ -107,5 +113,3 @@ public: void selection_changed (); void writeOptions(); }; - -#endif diff --git a/rtgui/profilestorecombobox.h b/rtgui/profilestorecombobox.h index cec67d188..447d2e157 100644 --- a/rtgui/profilestorecombobox.h +++ b/rtgui/profilestorecombobox.h @@ -16,20 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PROFILESTORECOMBOBOX_ -#define _PROFILESTORECOMBOBOX_ +#pragma once #include #include + #include -#include "../rtengine/rtengine.h" -#include "../rtengine/profilestore.h" - -#include "threadutils.h" -#include "paramsedited.h" #include "guiutils.h" +#include "paramsedited.h" +#include "threadutils.h" +#include "../rtengine/profilestore.h" +#include "../rtengine/rtengine.h" /** * @brief subclass of Gtk::Label with extra fields for Combobox and Menu, to link with a ProfileStoreEntry @@ -92,5 +91,3 @@ public: Gtk::TreeIter addRow (const ProfileStoreEntry *profileStoreEntry); void deleteRow (const ProfileStoreEntry *profileStoreEntry); }; - -#endif diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h index 012039ba6..32a48473f 100644 --- a/rtgui/progressconnector.h +++ b/rtgui/progressconnector.h @@ -16,14 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PROGRESSCONNECTOR_ -#define _PROGRESSCONNECTOR_ +#pragma once + +#include #include -#include -#include "../rtengine/rtengine.h" + #include "guiutils.h" +#include "../rtengine/rtengine.h" + #undef THREAD_PRIORITY_NORMAL class PLDBridge : @@ -109,4 +111,3 @@ public: return retval; } }; -#endif diff --git a/rtgui/prsharpening.h b/rtgui/prsharpening.h index 9d37fa8ba..54f2f8063 100644 --- a/rtgui/prsharpening.h +++ b/rtgui/prsharpening.h @@ -16,15 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _PRSHARPENING_H_ -#define _PRSHARPENING_H_ +#pragma once #include + #include "adjuster.h" #include "thresholdadjuster.h" #include "toolpanel.h" -class PrSharpening : public ToolParamBlock, public ThresholdAdjusterListener, public AdjusterListener, public FoldableToolPanel +class PrSharpening : + public ToolParamBlock, + public ThresholdAdjusterListener, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -79,5 +83,3 @@ public: void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/rawcacorrection.h b/rtgui/rawcacorrection.h index d3874d9f9..60c705b19 100644 --- a/rtgui/rawcacorrection.h +++ b/rtgui/rawcacorrection.h @@ -16,15 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RAWCACORRECTION_H_ -#define _RAWCACORRECTION_H_ +#pragma once #include + #include "adjuster.h" #include "checkbox.h" #include "toolpanel.h" -class RAWCACorr : public ToolParamBlock, public AdjusterListener, public CheckBoxListener, public FoldableToolPanel +class RAWCACorr : + public ToolParamBlock, + public AdjusterListener, + public CheckBoxListener, + public FoldableToolPanel { protected: @@ -52,5 +56,3 @@ public: void adjusterChanged (Adjuster* a, double newval) override; void checkBoxToggled (CheckBox* c, CheckValue newval) override; }; - -#endif diff --git a/rtgui/rawexposure.h b/rtgui/rawexposure.h index 339a054c9..75b3a9330 100644 --- a/rtgui/rawexposure.h +++ b/rtgui/rawexposure.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RAWEXPOSURE_H_ -#define _RAWEXPOSURE_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class RAWExposure : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class RAWExposure : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -43,5 +46,3 @@ public: void setAdjusterBehavior (bool pexposadd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/recentbrowser.h b/rtgui/recentbrowser.h index 1ba2c17f4..68a7962f9 100644 --- a/rtgui/recentbrowser.h +++ b/rtgui/recentbrowser.h @@ -16,14 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RECENTBROWSER_ -#define _RECENTBROWSER_ +#pragma once #include -#include "multilangmgr.h" -#include "guiutils.h" -class RecentBrowser : public Gtk::VBox +#include "guiutils.h" +#include "multilangmgr.h" + +class RecentBrowser : + public Gtk::VBox { public: typedef sigc::slot DirSelectionSlot; @@ -47,7 +48,3 @@ inline void RecentBrowser::setDirSelector (const RecentBrowser::DirSelectionSlot { this->selectDir = selectDir; } - -#endif - - diff --git a/rtgui/renamedlg.h b/rtgui/renamedlg.h index a3e16ad0a..23f69391f 100644 --- a/rtgui/renamedlg.h +++ b/rtgui/renamedlg.h @@ -16,16 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RENAMEDLG_ -#define _RENAMEDLG_ +#pragma once #include + #include "cacheimagedata.h" #include "guiutils.h" #define RESPONSE_ALL 100 -class RenameDialog : public Gtk::Dialog +class RenameDialog : + public Gtk::Dialog { protected: @@ -43,6 +44,3 @@ public: Glib::ustring getNewName (); }; - -#endif - diff --git a/rtgui/resize.h b/rtgui/resize.h index 1d38ae674..41b54509e 100644 --- a/rtgui/resize.h +++ b/rtgui/resize.h @@ -16,14 +16,14 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RESIZE_H_ -#define _RESIZE_H_ +#pragma once #include + #include "adjuster.h" #include "guiutils.h" -#include "toolpanel.h" #include "guiutils.h" +#include "toolpanel.h" class Resize final : public ToolParamBlock, @@ -86,5 +86,3 @@ private: static constexpr int MAX_SCALE = 16; // 16 to match the main preview max scale of 1600% }; - -#endif diff --git a/rtgui/retinex.h b/rtgui/retinex.h index 1be511cb3..c82c01d3e 100644 --- a/rtgui/retinex.h +++ b/rtgui/retinex.h @@ -1,21 +1,25 @@ /* * This file is part of RawTherapee. */ -#ifndef _RETINEX_H_ -#define _RETINEX_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" -#include "guiutils.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" +#include "guiutils.h" #include "thresholdadjuster.h" -#include "colorprovider.h" - -class Retinex : public ToolParamBlock, public FoldableToolPanel, public rtengine::RetinexListener, public CurveListener, - public AdjusterListener, public ColorProvider +#include "toolpanel.h" +class Retinex : + public ToolParamBlock, + public FoldableToolPanel, + public rtengine::RetinexListener, + public CurveListener, + public AdjusterListener, + public ColorProvider { private: IdleRegister idle_register; @@ -141,5 +145,3 @@ private: void foldAllButMe (GdkEventButton* event, MyExpander *expander); }; - -#endif diff --git a/rtgui/rgbcurves.h b/rtgui/rgbcurves.h index e62fdd7c7..b73aa22b7 100644 --- a/rtgui/rgbcurves.h +++ b/rtgui/rgbcurves.h @@ -16,17 +16,21 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RGBCURVES_H_ -#define _RGBCURVES_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" +#include "colorprovider.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "colorprovider.h" +#include "toolpanel.h" -class RGBCurves : public ToolParamBlock, public FoldableToolPanel, public CurveListener, public ColorProvider +class RGBCurves : + public ToolParamBlock, + public FoldableToolPanel, + public CurveListener, + public ColorProvider { protected: @@ -66,5 +70,3 @@ public: void lumamodeChanged (); void enabledChanged() override; }; - -#endif diff --git a/rtgui/rotate.h b/rtgui/rotate.h index bd0613609..5730fd481 100644 --- a/rtgui/rotate.h +++ b/rtgui/rotate.h @@ -16,15 +16,18 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ROTATE_H_ -#define _ROTATE_H_ +#pragma once #include -#include "adjuster.h" -#include "toolpanel.h" -#include "lensgeomlistener.h" -class Rotate : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +#include "adjuster.h" +#include "lensgeomlistener.h" +#include "toolpanel.h" + +class Rotate : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -52,5 +55,3 @@ public: rlistener = l; } }; - -#endif diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index 93e1c31b9..05d0cc231 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -15,23 +15,29 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _RTWINDOW_ -#define _RTWINDOW_ +#pragma once + +#include #include -#include "filepanel.h" -#include "editorpanel.h" -#include "batchqueuepanel.h" -#include -#include "progressconnector.h" -#include "editwindow.h" -#include "splash.h" + #if defined(__APPLE__) #include #endif + +#include "batchqueuepanel.h" +#include "editorpanel.h" +#include "editwindow.h" +#include "filepanel.h" +#include "progressconnector.h" +#include "splash.h" + #include "../rtengine/noncopyable.h" -class RTWindow : public Gtk::Window, public rtengine::ProgressListener, public rtengine::NonCopyable +class RTWindow : + public Gtk::Window, + public rtengine::ProgressListener, + public rtengine::NonCopyable { private: @@ -125,5 +131,3 @@ public: void writeToolExpandedStatus (std::vector &tpOpen); }; - -#endif diff --git a/rtgui/saveasdlg.h b/rtgui/saveasdlg.h index 4097a3ae9..e4567f69b 100644 --- a/rtgui/saveasdlg.h +++ b/rtgui/saveasdlg.h @@ -16,14 +16,16 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SAVEASDLG_ -#define _SAVEASDLG_ +#pragma once #include + #include "adjuster.h" #include "saveformatpanel.h" -class SaveAsDialog : public Gtk::Dialog, public FormatChangeListener +class SaveAsDialog : + public Gtk::Dialog, + public FormatChangeListener { protected: @@ -64,6 +66,3 @@ public: void formatChanged(const Glib::ustring& format) override; bool keyPressed (GdkEventKey* event); }; - - -#endif diff --git a/rtgui/saveformatpanel.h b/rtgui/saveformatpanel.h index ab5ffef3e..af9baa58a 100644 --- a/rtgui/saveformatpanel.h +++ b/rtgui/saveformatpanel.h @@ -16,13 +16,14 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __SAVEFORMATPANEL_H__ -#define __SAVEFORMATPANEL_H__ +#pragma once #include + #include "adjuster.h" #include "guiutils.h" #include "options.h" + #include "../rtengine/noncopyable.h" class FormatChangeListener @@ -62,5 +63,3 @@ public: void formatChanged (); void adjusterChanged (Adjuster* a, double newval) override; }; - -#endif diff --git a/rtgui/sensorbayer.h b/rtgui/sensorbayer.h index 2d68411ce..3d6018181 100644 --- a/rtgui/sensorbayer.h +++ b/rtgui/sensorbayer.h @@ -16,13 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SENSORBAYER_H_ -#define _SENSORBAYER_H_ +#pragma once #include + #include "toolpanel.h" -class SensorBayer : public ToolParamBlock, public FoldableToolPanel +class SensorBayer : + public ToolParamBlock, + public FoldableToolPanel { protected: @@ -37,5 +39,3 @@ public: return packBox; } }; - -#endif diff --git a/rtgui/sensorxtrans.h b/rtgui/sensorxtrans.h index fbf71b401..c1cacb2f4 100644 --- a/rtgui/sensorxtrans.h +++ b/rtgui/sensorxtrans.h @@ -16,13 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SENSORXTRANS_H_ -#define _SENSORXTRANS_H_ +#pragma once #include + #include "toolpanel.h" -class SensorXTrans : public ToolParamBlock, public FoldableToolPanel +class SensorXTrans : + public ToolParamBlock, + public FoldableToolPanel { protected: @@ -37,5 +39,3 @@ public: return packBox; } }; - -#endif diff --git a/rtgui/shadowshighlights.h b/rtgui/shadowshighlights.h index d675f40d6..4f3ee7577 100644 --- a/rtgui/shadowshighlights.h +++ b/rtgui/shadowshighlights.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SHADOWSHIGHLIGHTS_H_ -#define _SHADOWSHIGHLIGHTS_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class ShadowsHighlights : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class ShadowsHighlights : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -53,5 +56,3 @@ public: void colorspaceChanged(); }; - -#endif diff --git a/rtgui/sharpenedge.h b/rtgui/sharpenedge.h index b136d8e5e..46a528153 100644 --- a/rtgui/sharpenedge.h +++ b/rtgui/sharpenedge.h @@ -21,14 +21,17 @@ * * */ -#ifndef _SHARPENEDGE_H_ -#define _SHARPENEDGE_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class SharpenEdge : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class SharpenEdge : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -56,5 +59,3 @@ public: void chanthree_toggled (); }; - -#endif diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h index ac846a2b6..e922e82c7 100644 --- a/rtgui/sharpening.h +++ b/rtgui/sharpening.h @@ -16,15 +16,19 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SHARPENING_H_ -#define _SHARPENING_H_ +#pragma once #include + #include "adjuster.h" #include "thresholdadjuster.h" #include "toolpanel.h" -class Sharpening : public ToolParamBlock, public ThresholdAdjusterListener, public AdjusterListener, public FoldableToolPanel +class Sharpening : + public ToolParamBlock, + public ThresholdAdjusterListener, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -82,5 +86,3 @@ public: void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/sharpenmicro.h b/rtgui/sharpenmicro.h index 7c292413b..3120e6e7b 100644 --- a/rtgui/sharpenmicro.h +++ b/rtgui/sharpenmicro.h @@ -21,14 +21,17 @@ * * */ -#ifndef _SHARPENMICRO_H_ -#define _SHARPENMICRO_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class SharpenMicro : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class SharpenMicro : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -60,5 +63,3 @@ public: }; - -#endif diff --git a/rtgui/shcselector.h b/rtgui/shcselector.h index d3ef2adb8..5c4421e0a 100644 --- a/rtgui/shcselector.h +++ b/rtgui/shcselector.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _SHCSELECTOR_ -#define _SHCSELECTOR_ +#pragma once #include + #include "coloredbar.h" class SHCListener @@ -82,6 +82,3 @@ public: bool reset (); void refresh(); }; - -#endif - diff --git a/rtgui/soundman.h b/rtgui/soundman.h index 6d065c87a..5eb6883e0 100644 --- a/rtgui/soundman.h +++ b/rtgui/soundman.h @@ -17,13 +17,13 @@ * along with RawTherapee. If not, see . * */ - -#ifndef _SOUNDMAN_ -#define _SOUNDMAN_ +#pragma once namespace Glib { + class ustring; + } class SoundManager @@ -32,5 +32,3 @@ public: static void init(); static void playSoundAsync(const Glib::ustring &sound); }; - -#endif diff --git a/rtgui/splash.h b/rtgui/splash.h index 29dbb62cf..363c51489 100644 --- a/rtgui/splash.h +++ b/rtgui/splash.h @@ -16,12 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __SPLASH__ -#define __SPLASH__ +#pragma once #include -class SplashImage : public Gtk::DrawingArea +class SplashImage : + public Gtk::DrawingArea { private: @@ -59,5 +59,3 @@ public: //virtual bool on_button_release_event (GdkEventButton* event); void closePressed(); }; - -#endif diff --git a/rtgui/threadutils.h b/rtgui/threadutils.h index f8107d74c..eae4a9ad2 100644 --- a/rtgui/threadutils.h +++ b/rtgui/threadutils.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THREADUTILS_ -#define _THREADUTILS_ +#pragma once // Uncomment this if you want to bypass the CMakeList options and force the values, but do not commit! //#undef TRACE_MYRWMUTEX @@ -307,5 +306,3 @@ inline MyWriterLock::~MyWriterLock () #define MYREADERLOCK_RELEASE(ln) ln.release(); #define MYWRITERLOCK_RELEASE(ln) ln.release(); #endif - -#endif /* _THREADUTILS_ */ diff --git a/rtgui/thresholdadjuster.h b/rtgui/thresholdadjuster.h index ea3822875..b28f68dee 100644 --- a/rtgui/thresholdadjuster.h +++ b/rtgui/thresholdadjuster.h @@ -16,10 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THRESHOLDADJUSTER_H_ -#define _THRESHOLDADJUSTER_H_ +#pragma once #include + #include "editedstate.h" #include "guiutils.h" #include "thresholdselector.h" @@ -160,5 +160,3 @@ public: // this set_tooltip_text method is to set_tooltip_markup, and text can contain markups void set_tooltip_text(const Glib::ustring& text); }; - -#endif diff --git a/rtgui/thresholdselector.h b/rtgui/thresholdselector.h index 6b9dda3d0..f948b56ad 100644 --- a/rtgui/thresholdselector.h +++ b/rtgui/thresholdselector.h @@ -16,14 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THRESHOLDSELECTOR_ -#define _THRESHOLDSELECTOR_ +#pragma once -#include "guiutils.h" -#include "../rtengine/procparams.h" -#include "coloredbar.h" #include +#include "coloredbar.h" +#include "guiutils.h" + +#include "../rtengine/procparams.h" + class ThresholdSelector; /* @@ -245,6 +246,3 @@ inline void ThresholdSelector::getPositions (Glib::ustring& botto bottomRight = Glib::ustring::format(std::fixed, std::setprecision(precisionBottom), shapePositionValue(TS_BOTTOMRIGHT)); topRight = Glib::ustring::format(std::fixed, std::setprecision(precisionTop), shapePositionValue(TS_TOPRIGHT)); } - -#endif - diff --git a/rtgui/thumbbrowserbase.h b/rtgui/thumbbrowserbase.h index 890c37c87..a5c51cf5f 100644 --- a/rtgui/thumbbrowserbase.h +++ b/rtgui/thumbbrowserbase.h @@ -16,23 +16,26 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THUMBNAILBROWSERBASE_ -#define _THUMBNAILBROWSERBASE_ +#pragma once + +#include #include -#include "thumbbrowserentrybase.h" -#include -#include "options.h" + #include "guiutils.h" #include "inspector.h" +#include "options.h" +#include "thumbbrowserentrybase.h" /* * Class handling the list of ThumbBrowserEntry objects and their position in it's allocated space */ -class ThumbBrowserBase : public Gtk::Grid +class ThumbBrowserBase : + public Gtk::Grid { - class Internal : public Gtk::DrawingArea + class Internal : + public Gtk::DrawingArea { //Cairo::RefPtr cc; int ofsX, ofsY; @@ -253,5 +256,3 @@ public: } }; - -#endif diff --git a/rtgui/thumbimageupdater.h b/rtgui/thumbimageupdater.h index 81636103e..6c4171a87 100644 --- a/rtgui/thumbimageupdater.h +++ b/rtgui/thumbimageupdater.h @@ -16,16 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THUMBIMAGEUPDATER_ -#define _THUMBIMAGEUPDATER_ +#pragma once #include +#include "thumbbrowserentrybase.h" + #include "../rtengine/rtengine.h" #include "../rtengine/noncopyable.h" -#include "thumbbrowserentrybase.h" - class ThumbImageUpdateListener { public: @@ -100,5 +99,3 @@ private: * To use: \c thumbImageUpdater->start() , */ #define thumbImageUpdater ThumbImageUpdater::getInstance() - -#endif diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index cacffbd58..1a0f68409 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -16,21 +16,23 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THUMBNAIL_ -#define _THUMBNAIL_ +#pragma once #include #include #include + +#include "cacheimagedata.h" #include "cachemanager.h" +#include "threadutils.h" +#include "thumbnaillistener.h" + #include "../rtengine/rtengine.h" #include "../rtengine/rtthumbnail.h" -#include "cacheimagedata.h" -#include "thumbnaillistener.h" -#include "threadutils.h" class CacheManager; + struct ParamsEdited; class Thumbnail @@ -184,7 +186,3 @@ public: bool openDefaultViewer(int destination); bool imageLoad(bool loading); }; - - -#endif - diff --git a/rtgui/thumbnailbrowser.h b/rtgui/thumbnailbrowser.h index 9d40d1f7d..ef953c0e9 100644 --- a/rtgui/thumbnailbrowser.h +++ b/rtgui/thumbnailbrowser.h @@ -16,12 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THUMBNAILBROWSER_ -#define _THUMBNAILBROWSER_ +#pragma once #include -#include "thumbnail.h" + #include "filecatalog.h" +#include "thumbnail.h" class ThumbBrowserEntry { @@ -97,5 +97,3 @@ public: void redraw (); void styleChanged (const Glib::RefPtr& style); }; - -#endif diff --git a/rtgui/thumbnaillistener.h b/rtgui/thumbnaillistener.h index 97503c420..18ac99dce 100644 --- a/rtgui/thumbnaillistener.h +++ b/rtgui/thumbnaillistener.h @@ -16,8 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _THUMBNAILLISTENER_ -#define _THUMBNAILLISTENER_ +#pragma once class Thumbnail; @@ -27,6 +26,3 @@ public: virtual ~ThumbnailListener() = default; virtual void procParamsChanged(Thumbnail* thm, int whoChangedIt) = 0; }; - -#endif - diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h index fb08c02c2..b44a7ccab 100644 --- a/rtgui/tonecurve.h +++ b/rtgui/tonecurve.h @@ -16,20 +16,25 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _TONECURVE_H_ -#define _TONECURVE_H_ +#pragma once #include + #include "adjuster.h" -#include "toolpanel.h" #include "curveeditor.h" #include "curveeditorgroup.h" -#include "mycurve.h" #include "guiutils.h" +#include "mycurve.h" +#include "toolpanel.h" class EditDataProvider; -class ToneCurve : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public rtengine::AutoExpListener, public CurveListener +class ToneCurve : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel, + public rtengine::AutoExpListener, + public CurveListener { private: IdleRegister idle_register; @@ -141,5 +146,3 @@ public: void methodChanged (); void clampOOGChanged(); }; - -#endif diff --git a/rtgui/toolbar.h b/rtgui/toolbar.h index 958aa80be..9f0a2818b 100644 --- a/rtgui/toolbar.h +++ b/rtgui/toolbar.h @@ -16,12 +16,12 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __TOOLBAR_H__ -#define __TOOLBAR_H__ +#pragma once #include -#include "toolenum.h" + #include "lockablecolorpicker.h" +#include "toolenum.h" class RTImage; @@ -100,5 +100,3 @@ public: bool handleShortcutKey (GdkEventKey* event); void setBatchMode(); }; - -#endif diff --git a/rtgui/toolenum.h b/rtgui/toolenum.h index e90a0f685..c3bc873f1 100644 --- a/rtgui/toolenum.h +++ b/rtgui/toolenum.h @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _TOOLENUM_ -#define _TOOLENUM_ +#pragma once enum ToolMode {TMNone = -1, TMHand = 0, TMSpotWB = 1, TMCropSelect = 2, TMStraighten = 3, TMColorPicker = 4}; - -#endif diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 2c787d937..aeb0f60a6 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -16,20 +16,22 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __TOOLPANEL__ -#define __TOOLPANEL__ +#pragma once #include + #include -#include "../rtengine/rtengine.h" + #include "editbuffer.h" #include "guiutils.h" #include "multilangmgr.h" #include "paramsedited.h" -#include "../rtengine/noncopyable.h" -class ToolPanel; +#include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" + class FoldableToolPanel; +class ToolPanel; class ToolPanelListener { @@ -39,20 +41,23 @@ public: }; /// @brief This class control the space around the group of tools inside a tab, as well as the space separating each tool. */ -class ToolVBox : public Gtk::VBox +class ToolVBox : + public Gtk::VBox { public: ToolVBox(); }; /// @brief This class control the space around a tool's block of parameter. */ -class ToolParamBlock : public Gtk::VBox +class ToolParamBlock : + public Gtk::VBox { public: ToolParamBlock(); }; -class ToolPanel : public rtengine::NonCopyable +class ToolPanel : + public rtengine::NonCopyable { protected: @@ -136,7 +141,8 @@ public: } }; -class FoldableToolPanel : public ToolPanel +class FoldableToolPanel : + public ToolPanel { protected: @@ -218,5 +224,3 @@ public: return exp->signal_enabled_toggled(); } }; - -#endif diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 3a4ddc05f..7b6e23937 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -16,75 +16,77 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef __TOOLPANELCCORD__ -#define __TOOLPANELCCORD__ +#pragma once -#include "../rtengine/rtengine.h" -#include "toolpanel.h" #include -#include "pparamschangelistener.h" -#include "profilechangelistener.h" -#include "imageareatoollistener.h" + #include -#include "whitebalance.h" -#include "coarsepanel.h" -#include "tonecurve.h" -#include "vibrance.h" -#include "colorappearance.h" -#include "shadowshighlights.h" -#include "impulsedenoise.h" -#include "defringe.h" -#include "dirpyrdenoise.h" -#include "epd.h" -#include "sharpening.h" -#include "labcurve.h" -#include "metadatapanel.h" -#include "crop.h" -#include "icmpanel.h" -#include "resize.h" -#include "chmixer.h" -#include "blackwhite.h" -#include "cacorrection.h" -#include "lensprofile.h" -#include "distortion.h" -#include "perspective.h" -#include "rotate.h" -#include "vignetting.h" -#include "retinex.h" -#include "gradient.h" -#include "pcvignette.h" -#include "toolbar.h" -#include "lensgeom.h" -#include "lensgeomlistener.h" -#include "wavelet.h" -#include "dirpyrequalizer.h" -#include "hsvequalizer.h" -#include "preprocess.h" + #include "bayerpreprocess.h" #include "bayerprocess.h" -#include "xtransprocess.h" +#include "bayerrawexposure.h" +#include "blackwhite.h" +#include "cacorrection.h" +#include "chmixer.h" +#include "coarsepanel.h" +#include "colorappearance.h" +#include "colortoning.h" +#include "crop.h" #include "darkframe.h" +#include "defringe.h" +#include "dehaze.h" +#include "dirpyrdenoise.h" +#include "dirpyrequalizer.h" +#include "distortion.h" +#include "epd.h" +#include "fattaltonemap.h" +#include "filmnegative.h" +#include "filmsimulation.h" #include "flatfield.h" -#include "sensorbayer.h" -#include "sensorxtrans.h" +#include "gradient.h" +#include "guiutils.h" +#include "hsvequalizer.h" +#include "icmpanel.h" +#include "imageareatoollistener.h" +#include "impulsedenoise.h" +#include "labcurve.h" +#include "lensgeom.h" +#include "lensgeomlistener.h" +#include "lensprofile.h" +#include "localcontrast.h" +#include "metadatapanel.h" +#include "pcvignette.h" +#include "pdsharpening.h" +#include "perspective.h" +#include "pparamschangelistener.h" +#include "preprocess.h" +#include "profilechangelistener.h" +#include "prsharpening.h" #include "rawcacorrection.h" #include "rawexposure.h" -#include "bayerrawexposure.h" -#include "xtransrawexposure.h" -#include "sharpenmicro.h" -#include "sharpenedge.h" +#include "resize.h" +#include "retinex.h" #include "rgbcurves.h" -#include "colortoning.h" -#include "filmsimulation.h" -#include "prsharpening.h" -#include "pdsharpening.h" -#include "fattaltonemap.h" -#include "localcontrast.h" +#include "rotate.h" +#include "sensorbayer.h" +#include "sensorxtrans.h" +#include "shadowshighlights.h" +#include "sharpenedge.h" +#include "sharpening.h" +#include "sharpenmicro.h" #include "softlight.h" -#include "dehaze.h" -#include "guiutils.h" -#include "filmnegative.h" +#include "tonecurve.h" +#include "toolbar.h" +#include "toolpanel.h" +#include "vibrance.h" +#include "vignetting.h" +#include "wavelet.h" +#include "whitebalance.h" +#include "xtransprocess.h" +#include "xtransrawexposure.h" + #include "../rtengine/noncopyable.h" +#include "../rtengine/rtengine.h" class ImageEditorCoordinator; @@ -331,5 +333,3 @@ public: private: IdleRegister idle_register; }; - -#endif diff --git a/rtgui/vibrance.h b/rtgui/vibrance.h index 606bfa80a..211f631f9 100644 --- a/rtgui/vibrance.h +++ b/rtgui/vibrance.h @@ -16,18 +16,23 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _VIBRANCE_ -#define _VIBRANCE_ +#pragma once #include + #include "adjuster.h" -#include "thresholdadjuster.h" #include "curveeditor.h" #include "curveeditorgroup.h" +#include "thresholdadjuster.h" #include "toolpanel.h" -class Vibrance : public ToolParamBlock, public AdjusterListener, public ThresholdCurveProvider, public ThresholdAdjusterListener, - public FoldableToolPanel, public CurveListener +class Vibrance : + public ToolParamBlock, + public AdjusterListener, + public ThresholdCurveProvider, + public ThresholdAdjusterListener, + public FoldableToolPanel, + public CurveListener { protected: @@ -76,6 +81,3 @@ public: void pastsattog_toggled (); std::vector getCurvePoints(ThresholdSelector* tAdjuster) const override; }; - - -#endif diff --git a/rtgui/vignetting.h b/rtgui/vignetting.h index 094869f67..8cc8c498b 100644 --- a/rtgui/vignetting.h +++ b/rtgui/vignetting.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _VIGNETTING_H_ -#define _VIGNETTING_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class Vignetting : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class Vignetting : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -46,5 +49,3 @@ public: void setAdjusterBehavior (bool amountadd, bool radiusadd, bool strengthadd, bool centeradd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/wbprovider.h b/rtgui/wbprovider.h index 31ba8331a..a56d93cd3 100644 --- a/rtgui/wbprovider.h +++ b/rtgui/wbprovider.h @@ -16,9 +16,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _WBPROVIDER_ -#define _WBPROVIDER_ - +#pragma once class WBProvider { @@ -29,5 +27,3 @@ public: virtual void getCamWB (double& temp, double& green) {} virtual void spotWBRequested (int size) {} }; - -#endif diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index fd7efe7ce..5c0500b92 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -16,14 +16,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _WB_H_ -#define _WB_H_ +#pragma once #include -#include "toolpanel.h" + #include "adjuster.h" #include "guiutils.h" +#include "toolpanel.h" #include "wbprovider.h" + #include "../rtengine/procparams.h" class SpotWBListener @@ -123,5 +124,3 @@ public: void trimValues (rtengine::procparams::ProcParams* pp) override; void enabledChanged() override; }; - -#endif diff --git a/rtgui/xtransprocess.h b/rtgui/xtransprocess.h index dae93822f..b17b56b07 100644 --- a/rtgui/xtransprocess.h +++ b/rtgui/xtransprocess.h @@ -16,17 +16,21 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _XTRANSPROCESS_H_ -#define _XTRANSPROCESS_H_ +#pragma once #include + #include "adjuster.h" #include "checkbox.h" #include "guiutils.h" #include "toolpanel.h" - -class XTransProcess : public ToolParamBlock, public AdjusterListener, public CheckBoxListener, public FoldableToolPanel, public rtengine::AutoContrastListener +class XTransProcess : + public ToolParamBlock, + public AdjusterListener, + public CheckBoxListener, + public FoldableToolPanel, + public rtengine::AutoContrastListener { protected: @@ -64,5 +68,3 @@ public: void checkBoxToggled(CheckBox* c, CheckValue newval) override; void adjusterAutoToggled(Adjuster* a, bool newval) override; }; - -#endif diff --git a/rtgui/xtransrawexposure.h b/rtgui/xtransrawexposure.h index 4211e3e0c..46c418f2f 100644 --- a/rtgui/xtransrawexposure.h +++ b/rtgui/xtransrawexposure.h @@ -16,14 +16,17 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _XTRANSRAWEXPOSURE_H_ -#define _XTRANSRAWEXPOSURE_H_ +#pragma once #include + #include "adjuster.h" #include "toolpanel.h" -class XTransRAWExposure : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class XTransRAWExposure : + public ToolParamBlock, + public AdjusterListener, + public FoldableToolPanel { protected: @@ -45,5 +48,3 @@ public: void setAdjusterBehavior (bool pexblackadd); void trimValues (rtengine::procparams::ProcParams* pp) override; }; - -#endif diff --git a/rtgui/zoompanel.h b/rtgui/zoompanel.h index e1cb651e3..49e1e848d 100644 --- a/rtgui/zoompanel.h +++ b/rtgui/zoompanel.h @@ -16,13 +16,14 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _ZOOMPANEL_ -#define _ZOOMPANEL_ +#pragma once #include class ImageArea; -class ZoomPanel : public Gtk::Grid + +class ZoomPanel : + public Gtk::Grid { protected: @@ -48,6 +49,3 @@ public: void newCropClicked (); void refreshZoomLabel (); }; - -#endif - From c44e9dfa4448e9c9b89d9b8f5b32b57101be8737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Thu, 31 Oct 2019 12:55:12 +0100 Subject: [PATCH 43/66] Add missing includes for latest GCC 9 --- rtengine/lcp.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index 0b73f6960..b42950eb4 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -18,6 +18,7 @@ */ #include +#include #include #include @@ -32,6 +33,7 @@ #include "lcp.h" #include "procparams.h" +#include "rt_math.h" #include "settings.h" #include "utils.h" From 284fe57159da24663c1899e30e4494d132d7985d Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 31 Oct 2019 13:29:12 +0100 Subject: [PATCH 44/66] Further reduction of include dependencies --- rtengine/FTblockDN.cc | 1 - rtengine/ahd_demosaic_RT.cc | 2 -- rtengine/amaze_demosaic_RT.cc | 1 - rtengine/dcraw.cc | 3 ++- rtengine/dcrop.cc | 1 - rtengine/demosaic_algos.cc | 1 - rtengine/dfmanager.cc | 18 +++++++++++++----- rtengine/dfmanager.h | 10 ++-------- rtengine/eahd_demosaic.cc | 2 -- rtengine/fast_demo.cc | 1 - rtengine/hphd_demosaic_RT.cc | 2 -- rtengine/iccstore.cc | 1 - rtengine/myfile.cc | 2 +- rtengine/myfile.h | 8 +++++++- rtengine/rawimage.cc | 1 + rtengine/rawimage.h | 1 + rtengine/rawimagesource.cc | 1 - rtengine/rcd_demosaic.cc | 1 - rtengine/vng4_demosaic_RT.cc | 1 - rtgui/darkframe.cc | 1 + rtgui/darkframe.h | 5 ++++- rtgui/flatfield.cc | 1 + rtgui/flatfield.h | 5 ++++- 23 files changed, 37 insertions(+), 33 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 02164aded..b6245fbce 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -41,7 +41,6 @@ #include "opthelper.h" #include "procparams.h" #include "rt_math.h" -#include "rtengine.h" #include "sleef.c" #include "../rtgui/threadutils.h" diff --git a/rtengine/ahd_demosaic_RT.cc b/rtengine/ahd_demosaic_RT.cc index 77e342c18..88ab0bf56 100644 --- a/rtengine/ahd_demosaic_RT.cc +++ b/rtengine/ahd_demosaic_RT.cc @@ -24,11 +24,9 @@ // #include -#include "colortemp.h" #include "rtengine.h" #include "rawimagesource.h" #include "rt_math.h" -#include "procparams.h" #include "../rtgui/multilangmgr.h" #include "median.h" //#define BENCHMARK diff --git a/rtengine/amaze_demosaic_RT.cc b/rtengine/amaze_demosaic_RT.cc index 43aef0f71..41c60d4ed 100644 --- a/rtengine/amaze_demosaic_RT.cc +++ b/rtengine/amaze_demosaic_RT.cc @@ -33,7 +33,6 @@ #include "sleef.c" #include "opthelper.h" #include "median.h" -#include "procparams.h" #include "StopWatch.h" namespace rtengine diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index eb206a15f..ae6f60cd1 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -26,12 +26,13 @@ /*RT*/#include /*RT*/#endif +#include #include #include #include "opthelper.h" //#define BENCHMARK #include "StopWatch.h" - +#include "utils.h" #include #include diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 06c9d59bd..fd3c42f6e 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -19,7 +19,6 @@ */ #include "cieimage.h" -#include "colortemp.h" #include "curves.h" #include "dcp.h" #include "dcrop.h" diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 823260129..4058534da 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -25,7 +25,6 @@ #include "rt_math.h" #include "color.h" #include "../rtgui/multilangmgr.h" -#include "procparams.h" #include "sleef.c" #include "opthelper.h" #include "median.h" diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc index f5a7686e6..798836edf 100644 --- a/rtengine/dfmanager.cc +++ b/rtengine/dfmanager.cc @@ -16,20 +16,28 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#include "dfmanager.h" -#include "../rtgui/options.h" -#include -#include "rawimage.h" + #include #include #include -#include "imagedata.h" +#include #include +#include "dfmanager.h" +#include "../rtgui/options.h" +#include "rawimage.h" +#include "imagedata.h" + namespace rtengine { // *********************** class dfInfo ************************************** +dfInfo::~dfInfo() +{ + if( ri ) { + delete ri; + } +} inline dfInfo& dfInfo::operator =(const dfInfo &o) { diff --git a/rtengine/dfmanager.h b/rtengine/dfmanager.h index e1fa38f77..216dcfc53 100644 --- a/rtengine/dfmanager.h +++ b/rtengine/dfmanager.h @@ -19,13 +19,13 @@ #pragma once #include +#include #include #include #include #include "pixelsmap.h" -#include "rawimage.h" namespace rtengine { @@ -49,13 +49,7 @@ public: dfInfo( const dfInfo &o) : pathname(o.pathname), maker(o.maker), model(o.model), iso(o.iso), shutter(o.shutter), timestamp(o.timestamp), ri(nullptr) {} - ~dfInfo() - { - if( ri ) { - delete ri; - } - } - + ~dfInfo(); dfInfo &operator =(const dfInfo &o); bool operator <(const dfInfo &e2) const; diff --git a/rtengine/eahd_demosaic.cc b/rtengine/eahd_demosaic.cc index b87c0771d..c470eb297 100644 --- a/rtengine/eahd_demosaic.cc +++ b/rtengine/eahd_demosaic.cc @@ -24,11 +24,9 @@ #include "rawimagesource.h" #include "rawimagesource_i.h" #include "jaggedarray.h" -#include "rawimage.h" #include "iccmatrices.h" #include "rt_math.h" #include "../rtgui/multilangmgr.h" -#include "procparams.h" //#define BENCHMARK #include "StopWatch.h" diff --git a/rtengine/fast_demo.cc b/rtengine/fast_demo.cc index a40f107af..82176e59c 100644 --- a/rtengine/fast_demo.cc +++ b/rtengine/fast_demo.cc @@ -25,7 +25,6 @@ #include #include "rawimagesource.h" #include "../rtgui/multilangmgr.h" -#include "procparams.h" #include "opthelper.h" using namespace std; diff --git a/rtengine/hphd_demosaic_RT.cc b/rtengine/hphd_demosaic_RT.cc index 342cd2b6b..2b61bbe07 100644 --- a/rtengine/hphd_demosaic_RT.cc +++ b/rtengine/hphd_demosaic_RT.cc @@ -22,9 +22,7 @@ #include "rawimagesource.h" #include "rawimagesource_i.h" #include "jaggedarray.h" -#include "rawimage.h" #include "rt_math.h" -#include "procparams.h" #include "../rtgui/multilangmgr.h" #include "opthelper.h" //#define BENCHMARK diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 02fe4c16d..aea03664e 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -36,7 +36,6 @@ #include "iccmatrices.h" #include "utils.h" -#include "../rtgui/guiutils.h" #include "../rtgui/options.h" #include "../rtgui/threadutils.h" #include "lcms2_plugin.h" diff --git a/rtengine/myfile.cc b/rtengine/myfile.cc index aab45448a..842766dcf 100644 --- a/rtengine/myfile.cc +++ b/rtengine/myfile.cc @@ -18,7 +18,7 @@ */ #include "myfile.h" #include - +#include "rtengine.h" // get mmap() sorted out #ifdef MYFILE_MMAP diff --git a/rtengine/myfile.h b/rtengine/myfile.h index 69e226b8b..88b9fa62a 100644 --- a/rtengine/myfile.h +++ b/rtengine/myfile.h @@ -23,7 +23,13 @@ #include -#include "rtengine.h" +#include "opthelper.h" + +namespace rtengine { + +class ProgressListener; + +} struct IMFILE { int fd; diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index a69a97ab7..4421e4af4 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -15,6 +15,7 @@ #include "settings.h" #include "camconst.h" #include "utils.h" +#include "rtengine.h" namespace rtengine { diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index 4537fdcab..09aaed7ad 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -21,6 +21,7 @@ #include #include #include +#include #include "dcraw.h" #include "imageformat.h" diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 0836a3832..0a36bdee8 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -34,7 +34,6 @@ #include "pdaflinesfilter.h" #include "procparams.h" #include "rawimage.h" -#include "rawimage.h" #include "rawimagesource_i.h" #include "rawimagesource.h" #include "rt_math.h" diff --git a/rtengine/rcd_demosaic.cc b/rtengine/rcd_demosaic.cc index 48c3ad334..63b5989ab 100644 --- a/rtengine/rcd_demosaic.cc +++ b/rtengine/rcd_demosaic.cc @@ -20,7 +20,6 @@ #include "rawimagesource.h" #include "rt_math.h" -#include "procparams.h" #include "../rtgui/multilangmgr.h" #include "opthelper.h" #include "StopWatch.h" diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index aaaa1b9a6..95fa58cef 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -23,7 +23,6 @@ #include "rtengine.h" #include "rawimage.h" #include "rawimagesource.h" -#include "procparams.h" #include "../rtgui/multilangmgr.h" //#define BENCHMARK #include "StopWatch.h" diff --git a/rtgui/darkframe.cc b/rtgui/darkframe.cc index af7ffeace..74ef1384a 100644 --- a/rtgui/darkframe.cc +++ b/rtgui/darkframe.cc @@ -25,6 +25,7 @@ #include "rtimage.h" #include "../rtengine/procparams.h" +#include "../rtengine/rawimage.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/darkframe.h b/rtgui/darkframe.h index 58ac904ff..7bb6ed507 100644 --- a/rtgui/darkframe.h +++ b/rtgui/darkframe.h @@ -25,8 +25,11 @@ #include "guiutils.h" #include "toolpanel.h" -#include "../rtengine/rawimage.h" +namespace rtengine { +class RawImage; + +} class DFProvider { public: diff --git a/rtgui/flatfield.cc b/rtgui/flatfield.cc index 03204c037..932ec641c 100644 --- a/rtgui/flatfield.cc +++ b/rtgui/flatfield.cc @@ -25,6 +25,7 @@ #include "rtimage.h" #include "../rtengine/procparams.h" +#include "../rtengine/rawimage.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/flatfield.h b/rtgui/flatfield.h index 02cc9963f..8b04a7948 100644 --- a/rtgui/flatfield.h +++ b/rtgui/flatfield.h @@ -26,8 +26,11 @@ #include "guiutils.h" #include "toolpanel.h" -#include "../rtengine/rawimage.h" +namespace rtengine { +class RawImage; + +} class FFProvider { public: From cac2eb53eff29a59793db4c2689693020d80fca8 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Thu, 31 Oct 2019 20:41:08 +0100 Subject: [PATCH 45/66] Further reduction of include dependencies --- rtengine/PF_correct_RT.cc | 2 +- rtengine/curves.h | 5 ++--- rtengine/dcp.cc | 3 +++ rtengine/dfmanager.cc | 5 ++--- rtengine/diagonalcurvetypes.h | 31 +++++++++++++++++++++++++++++ rtengine/dynamicprofile.cc | 1 + rtengine/ffmanager.cc | 4 +--- rtengine/flatcurvetypes.h | 29 +++++++++++++++++++++++++++ rtengine/histmatching.cc | 2 -- rtengine/imagedata.cc | 1 + rtengine/imageio.cc | 1 + rtengine/improccoordinator.cc | 1 + rtengine/improccoordinator.h | 5 +++++ rtengine/ipvibrance.cc | 1 - rtengine/myfile.h | 3 ++- rtengine/procparams.cc | 4 ++++ rtengine/rtengine.h | 1 - rtengine/rtthumbnail.cc | 2 ++ rtengine/simpleprocess.cc | 1 + rtengine/stdimagesource.cc | 1 + rtexif/rtexif.cc | 1 + rtexif/rtexif.h | 5 ++++- rtgui/adjuster.cc | 10 +++++----- rtgui/adjuster.h | 2 -- rtgui/batchqueue.cc | 1 + rtgui/bayerprocess.cc | 1 + rtgui/blackwhite.cc | 1 + rtgui/cacheimagedata.cc | 1 + rtgui/clipboard.h | 4 ++-- rtgui/colorappearance.cc | 1 + rtgui/colorprovider.h | 2 -- rtgui/curveeditor.h | 4 ++-- rtgui/curveeditorgroup.cc | 1 + rtgui/curveeditorgroup.h | 5 +++-- rtgui/darkframe.h | 4 +++- rtgui/diagonalcurveeditorsubgroup.h | 1 + rtgui/editorpanel.cc | 1 + rtgui/filecatalog.cc | 1 + rtgui/flatcurveeditorsubgroup.h | 1 + rtgui/flatfield.h | 4 +++- rtgui/guiutils.h | 1 - rtgui/iccprofilecreator.cc | 1 + rtgui/icmpanel.cc | 1 + rtgui/inspector.cc | 1 + rtgui/lockablecolorpicker.cc | 1 + rtgui/mydiagonalcurve.h | 12 +---------- rtgui/myflatcurve.h | 11 +--------- rtgui/options.cc | 2 ++ rtgui/options.h | 4 +++- rtgui/profilepanel.cc | 1 + rtgui/saveasdlg.cc | 1 + rtgui/thumbnail.cc | 1 + rtgui/tonecurve.cc | 1 + rtgui/whitebalance.h | 1 + 54 files changed, 137 insertions(+), 56 deletions(-) create mode 100644 rtengine/diagonalcurvetypes.h create mode 100644 rtengine/flatcurvetypes.h diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index 40b4933ae..e1d6ef808 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -33,7 +33,7 @@ #include "curves.h" #include "labimage.h" #include "sleef.c" -#include "../rtgui/myflatcurve.h" +#include "curves.h" #include "rt_math.h" #include "opthelper.h" #include "median.h" diff --git a/rtengine/curves.h b/rtengine/curves.h index ef25ff8d7..4d38e9cce 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -25,10 +25,9 @@ #include #include "rt_math.h" -#include "../rtgui/mycurve.h" -#include "../rtgui/myflatcurve.h" -#include "../rtgui/mydiagonalcurve.h" #include "color.h" +#include "flatcurvetypes.h" +#include "diagonalcurvetypes.h" #include "pipettebuffer.h" #include "noncopyable.h" #include "LUT.h" diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index ea4e40514..f15ae902f 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include "dcp.h" @@ -31,6 +33,7 @@ #include "imagefloat.h" #include "rawimagesource.h" #include "rt_math.h" +#include "utils.h" #include "../rtgui/options.h" using namespace rtengine; diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc index 798836edf..1fb1d2e1b 100644 --- a/rtengine/dfmanager.cc +++ b/rtengine/dfmanager.cc @@ -27,6 +27,7 @@ #include "../rtgui/options.h" #include "rawimage.h" #include "imagedata.h" +#include "utils.h" namespace rtengine { @@ -34,9 +35,7 @@ namespace rtengine // *********************** class dfInfo ************************************** dfInfo::~dfInfo() { - if( ri ) { - delete ri; - } + delete ri; } inline dfInfo& dfInfo::operator =(const dfInfo &o) diff --git a/rtengine/diagonalcurvetypes.h b/rtengine/diagonalcurvetypes.h new file mode 100644 index 000000000..0d304957a --- /dev/null +++ b/rtengine/diagonalcurvetypes.h @@ -0,0 +1,31 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2004-2019 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 . +*/ +#pragma once + +// For compatibility and simplicity reason, order shouldn't change, and must be identical to the order specified in the curveType widget +enum DiagonalCurveType { + DCT_Empty = -1, // Also used for identity curves + DCT_Linear, // 0 + DCT_Spline, // 1 + DCT_Parametric, // 2 + DCT_NURBS, // 3 + DCT_CatumullRom, // 4 + // Insert new curve type above this line + DCT_Unchanged // Must remain the last of the enum +}; diff --git a/rtengine/dynamicprofile.cc b/rtengine/dynamicprofile.cc index 402610ed1..0e3d75b43 100644 --- a/rtengine/dynamicprofile.cc +++ b/rtengine/dynamicprofile.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include "../rtgui/options.h" diff --git a/rtengine/ffmanager.cc b/rtengine/ffmanager.cc index d8b082dd1..ce60277e1 100644 --- a/rtengine/ffmanager.cc +++ b/rtengine/ffmanager.cc @@ -54,9 +54,7 @@ inline ffInfo& ffInfo::operator =(const ffInfo &o) ffInfo::~ffInfo() { - if( ri ) { - delete ri; - } + delete ri; } bool ffInfo::operator <(const ffInfo &e2) const diff --git a/rtengine/flatcurvetypes.h b/rtengine/flatcurvetypes.h new file mode 100644 index 000000000..9efe0d259 --- /dev/null +++ b/rtengine/flatcurvetypes.h @@ -0,0 +1,29 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2004-2019 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 . +*/ +#pragma once + +// For compatibility and simplicity reason, order shouldn't change, and must be identical to the order specified in the curveType widget +enum FlatCurveType { + FCT_Empty = -1, // Also used for identity curves + FCT_Linear, // 0 + FCT_MinMaxCPoints, // 1 + //FCT_Parametric, // 2 + // Insert new curve type above this line + FCT_Unchanged // Must remain the last of the enum +}; diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index 622933149..f5d16866e 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -32,8 +32,6 @@ //#define BENCHMARK #include "StopWatch.h" -#include "../rtgui/mydiagonalcurve.h" - namespace rtengine { diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 184e288e9..d952dc8ba 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -31,6 +31,7 @@ #include "iptcpairs.h" #include "procparams.h" #include "rt_math.h" +#include "utils.h" #pragma GCC diagnostic warning "-Wextra" #define PRINT_HDR_PS_DETECTION 0 diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index c586aabaf..5927a23be 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -27,6 +27,7 @@ #include #include "rt_math.h" #include "procparams.h" +#include "utils.h" #include "../rtgui/options.h" #include "../rtgui/version.h" diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index c61b37341..729682b0f 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include "improccoordinator.h" diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index c416ebe67..c27cfe76e 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -32,6 +32,11 @@ #include "../rtgui/threadutils.h" +namespace Glib +{ +class Thread; +} + namespace rtengine { diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index 365dff587..1c5c6c4d5 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -25,7 +25,6 @@ #include "iccstore.h" #include "labimage.h" #include "mytime.h" -#include "../rtgui/thresholdselector.h" #include "curves.h" #include "color.h" #include "procparams.h" diff --git a/rtengine/myfile.h b/rtengine/myfile.h index 88b9fa62a..7c498e556 100644 --- a/rtengine/myfile.h +++ b/rtengine/myfile.h @@ -25,7 +25,8 @@ #include "opthelper.h" -namespace rtengine { +namespace rtengine +{ class ProgressListener; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 8de7e2b55..df5ac40a9 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -22,9 +22,13 @@ #include #include +#include +#include +#include #include "curves.h" #include "procparams.h" +#include "utils.h" #include "../rtgui/multilangmgr.h" #include "../rtgui/options.h" diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 389fe8355..d1300f023 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -33,7 +33,6 @@ #include "rawmetadatalocation.h" #include "rt_math.h" #include "settings.h" -#include "utils.h" #include "../rtexif/rtexif.h" diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 3b6046b4e..d6ff53750 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -23,6 +23,8 @@ #include #include +#include +#include #include "cieimage.h" #include "colortemp.h" diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 2953fc34b..3c89fe48d 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -30,6 +30,7 @@ #include "processingjob.h" #include "procparams.h" #include +#include #include "../rtgui/options.h" #include "rawimagesource.h" #include "../rtgui/multilangmgr.h" diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 2e8846412..1cb11e94d 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -26,6 +26,7 @@ #include "imageio.h" #include "mytime.h" #include "procparams.h" +#include "utils.h" #undef THREAD_PRIORITY_NORMAL diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index 4e3be8486..b2edc2842 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -29,6 +29,7 @@ #include #include +#include #include "rtexif.h" diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index 515c7569d..4c5a6cafe 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -29,12 +29,15 @@ #include #include -#include #include #include "../rtengine/noncopyable.h" #include "../rtengine/rawmetadatalocation.h" +namespace Glib +{ + class KeyFile; +} namespace rtengine { diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index 91394e18d..302a2de00 100644 --- a/rtgui/adjuster.cc +++ b/rtgui/adjuster.cc @@ -17,14 +17,14 @@ * along with RawTherapee. If not, see . */ #include "adjuster.h" + #include #include -#include "multilangmgr.h" -#include "../rtengine/rt_math.h" -#include "options.h" -#include "guiutils.h" -#include "rtimage.h" +#include "multilangmgr.h" +#include "options.h" +#include "rtimage.h" +#include "../rtengine/rt_math.h" namespace { diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index 1583bab69..9800dbac8 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -18,8 +18,6 @@ */ #pragma once -#include - #include "editedstate.h" #include "guiutils.h" diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index ed9861ad6..9fcaa28d1 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -34,6 +34,7 @@ #include "filecatalog.h" #include "batchqueuebuttonset.h" #include "guiutils.h" +#include "pathutils.h" #include "rtimage.h" #include diff --git a/rtgui/bayerprocess.cc b/rtgui/bayerprocess.cc index aa09067e4..4a57177e1 100644 --- a/rtgui/bayerprocess.cc +++ b/rtgui/bayerprocess.cc @@ -23,6 +23,7 @@ #include "options.h" #include "../rtengine/procparams.h" +#include "../rtengine/utils.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/blackwhite.cc b/rtgui/blackwhite.cc index 482bf437f..b3ebea28a 100644 --- a/rtgui/blackwhite.cc +++ b/rtgui/blackwhite.cc @@ -27,6 +27,7 @@ #include "../rtengine/color.h" #include "../rtengine/procparams.h" +#include "../rtengine/utils.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/cacheimagedata.cc b/rtgui/cacheimagedata.cc index 114508a95..d44ca28ec 100644 --- a/rtgui/cacheimagedata.cc +++ b/rtgui/cacheimagedata.cc @@ -19,6 +19,7 @@ #include "cacheimagedata.h" #include #include +#include #include "version.h" #include diff --git a/rtgui/clipboard.h b/rtgui/clipboard.h index d142808e9..7d25dd0d5 100644 --- a/rtgui/clipboard.h +++ b/rtgui/clipboard.h @@ -21,10 +21,10 @@ #include #include -#include "mydiagonalcurve.h" -#include "myflatcurve.h" #include "paramsedited.h" +#include "../rtengine/diagonalcurvetypes.h" +#include "../rtengine/flatcurvetypes.h" #include "../rtengine/rtengine.h" namespace rtengine diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 450589fe9..094ffec2f 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -26,6 +26,7 @@ #include "../rtengine/color.h" #include "../rtengine/procparams.h" +#include "../rtengine/utils.h" #define MINTEMP0 2000 //1200 #define MAXTEMP0 12000 //12000 diff --git a/rtgui/colorprovider.h b/rtgui/colorprovider.h index a84b1be27..988b080bd 100644 --- a/rtgui/colorprovider.h +++ b/rtgui/colorprovider.h @@ -18,8 +18,6 @@ */ #pragma once -#include - class ColorProvider; /* diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index dd61bc910..535c1a86d 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -20,10 +20,10 @@ #include "coloredbar.h" #include "editcallbacks.h" -#include "mydiagonalcurve.h" -#include "myflatcurve.h" #include "popuptogglebutton.h" +#include "../rtengine/diagonalcurvetypes.h" +#include "../rtengine/flatcurvetypes.h" #include "../rtengine/LUT.h" #include "../rtengine/noncopyable.h" diff --git a/rtgui/curveeditorgroup.cc b/rtgui/curveeditorgroup.cc index edad0349d..06def0a8e 100644 --- a/rtgui/curveeditorgroup.cc +++ b/rtgui/curveeditorgroup.cc @@ -26,6 +26,7 @@ #include "multilangmgr.h" #include "rtimage.h" #include "options.h" +#include "pathutils.h" CurveEditorGroup::CurveEditorGroup (Glib::ustring& curveDir, Glib::ustring groupLabel) : curveDir(curveDir), line(0), curve_reset(nullptr), displayedCurve(nullptr), flatSubGroup(nullptr), diagonalSubGroup(nullptr), cl(nullptr), numberOfPackedCurve(0) diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index 7c39ab186..e3412546f 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -26,10 +26,11 @@ #include "adjuster.h" #include "guiutils.h" #include "mycurve.h" -#include "mydiagonalcurve.h" -#include "myflatcurve.h" #include "shcselector.h" +#include "../rtengine/diagonalcurvetypes.h" +#include "../rtengine/flatcurvetypes.h" + class CurveEditor; class DiagonalCurveEditorSubGroup; class FlatCurveEditorSubGroup; diff --git a/rtgui/darkframe.h b/rtgui/darkframe.h index 7bb6ed507..779caf16f 100644 --- a/rtgui/darkframe.h +++ b/rtgui/darkframe.h @@ -25,11 +25,13 @@ #include "guiutils.h" #include "toolpanel.h" -namespace rtengine { +namespace rtengine +{ class RawImage; } + class DFProvider { public: diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index 21784578e..184fa576f 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -25,6 +25,7 @@ #include "../rtengine/noncopyable.h" class DiagonalCurveEditor; +class MyDiagonalCurve; class DiagonalCurveEditorSubGroup : public CurveEditorSubGroup, diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 6aab153a1..3c5182938 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -32,6 +32,7 @@ #include "progressconnector.h" #include "procparamchangers.h" #include "placesbrowser.h" +#include "pathutils.h" using namespace rtengine::procparams; diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 8e8bcc216..fb8bd4923 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -36,6 +36,7 @@ #include "thumbimageupdater.h" #include "batchqueue.h" #include "placesbrowser.h" +#include "pathutils.h" using namespace std; diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index 5b14f752a..c358dde3b 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -25,6 +25,7 @@ #include "../rtengine/noncopyable.h" class FlatCurveEditor; +class MyFlatCurve; class FlatCurveEditorSubGroup: public CurveEditorSubGroup, diff --git a/rtgui/flatfield.h b/rtgui/flatfield.h index 8b04a7948..4308e938a 100644 --- a/rtgui/flatfield.h +++ b/rtgui/flatfield.h @@ -26,11 +26,13 @@ #include "guiutils.h" #include "toolpanel.h" -namespace rtengine { +namespace rtengine +{ class RawImage; } + class FFProvider { public: diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 18b650b82..8764f4c6a 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -25,7 +25,6 @@ #include -#include "pathutils.h" #include "threadutils.h" #include "../rtengine/coord.h" diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index e3e1eadb4..d7f9499f6 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -24,6 +24,7 @@ #include "cachemanager.h" #include "addsetids.h" #include "../rtengine/color.h" +#include "pathutils.h" #include "rtimage.h" #ifdef _OPENMP #include diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 99bd6cfca..3e3c0508c 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -23,6 +23,7 @@ #include "eventmapper.h" #include "guiutils.h" #include "options.h" +#include "pathutils.h" #include "rtimage.h" #include "../rtengine/dcp.h" diff --git a/rtgui/inspector.cc b/rtgui/inspector.cc index 50fa933e1..d38239cde 100644 --- a/rtgui/inspector.cc +++ b/rtgui/inspector.cc @@ -22,6 +22,7 @@ #include "cursormanager.h" #include "guiutils.h" #include "options.h" +#include "pathutils.h" #include "rtscalable.h" #include "../rtengine/previewimage.h" diff --git a/rtgui/lockablecolorpicker.cc b/rtgui/lockablecolorpicker.cc index a4f3dbdab..cb334c7e4 100644 --- a/rtgui/lockablecolorpicker.cc +++ b/rtgui/lockablecolorpicker.cc @@ -21,6 +21,7 @@ #include "options.h" #include "../rtengine/color.h" #include "../rtengine/rt_math.h" +#include "../rtengine/utils.h" #include "imagearea.h" #include "multilangmgr.h" #include "navigator.h" diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index 058c11e5a..d9f2518fb 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -27,18 +27,8 @@ #include "mycurve.h" #include "../rtengine/LUT.h" +#include "../rtengine/diagonalcurvetypes.h" -// For compatibility and simplicity reason, order shouldn't change, and must be identical to the order specified in the curveType widget -enum DiagonalCurveType { - DCT_Empty = -1, // Also used for identity curves - DCT_Linear, // 0 - DCT_Spline, // 1 - DCT_Parametric, // 2 - DCT_NURBS, // 3 - DCT_CatumullRom, // 4 - // Insert new curve type above this line - DCT_Unchanged // Must remain the last of the enum -}; class DiagonalCurveDescr { diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index c4cbfa291..88d651a05 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -25,16 +25,7 @@ #include "cursormanager.h" #include "curvelistener.h" #include "mycurve.h" - -// For compatibility and simplicity reason, order shouldn't change, and must be identical to the order specified in the curveType widget -enum FlatCurveType { - FCT_Empty = -1, // Also used for identity curves - FCT_Linear, // 0 - FCT_MinMaxCPoints, // 1 - //FCT_Parametric, // 2 - // Insert new curve type above this line - FCT_Unchanged // Must remain the last of the enum -}; +#include "../rtengine/flatcurvetypes.h" enum MouseOverAreas { FCT_Area_None = 1 << 0, // over a zone that don't have any diff --git a/rtgui/options.cc b/rtgui/options.cc index 164637eb2..f5b6b5b60 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -25,10 +25,12 @@ #include "multilangmgr.h" #include "addsetids.h" #include "guiutils.h" +#include "pathutils.h" #include "version.h" #include "../rtengine/procparams.h" #include "../rtengine/rtengine.h" +#include "../rtengine/utils.h" #ifdef _OPENMP #include diff --git a/rtgui/options.h b/rtgui/options.h index 33d6b6f90..c0ed2138b 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -103,11 +103,13 @@ enum PPLoadLocation {PLL_Cache = 0, PLL_Input = 1}; enum CPBKeyType {CPBKT_TID = 0, CPBKT_NAME = 1, CPBKT_TID_NAME = 2}; enum prevdemo_t {PD_Sidecar = 1, PD_Fast = 0}; -namespace Glib { +namespace Glib +{ class KeyFile; } + class Options { public: diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index fc418e5b7..723bbfd61 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -22,6 +22,7 @@ #include "multilangmgr.h" #include "options.h" #include "profilestorecombobox.h" +#include "pathutils.h" #include "rtimage.h" #include "../rtengine/procparams.h" diff --git a/rtgui/saveasdlg.cc b/rtgui/saveasdlg.cc index 5516bdf7c..ebf2f5b4a 100644 --- a/rtgui/saveasdlg.cc +++ b/rtgui/saveasdlg.cc @@ -22,6 +22,7 @@ #include "guiutils.h" #include "multilangmgr.h" +#include "pathutils.h" #include "rtimage.h" #include "../rtengine/utils.h" diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 09ffd11f7..7464244f7 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -32,6 +32,7 @@ #include "guiutils.h" #include "batchqueue.h" #include "extprog.h" +#include "pathutils.h" #include "profilestorecombobox.h" #include "procparamchangers.h" diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index 1f660f72a..68f3ee4de 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -28,6 +28,7 @@ #include "options.h" #include "../rtengine/procparams.h" +#include "../rtengine/utils.h" #include "editcallbacks.h" using namespace rtengine; diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index 5c0500b92..528c81d17 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -26,6 +26,7 @@ #include "wbprovider.h" #include "../rtengine/procparams.h" +#include "../rtengine/utils.h" class SpotWBListener { From 785273e7bfa2a079125946d646a4a07fa6177e48 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 01:03:30 +0100 Subject: [PATCH 46/66] Further reduction of include dependencies --- rtengine/curves.cc | 2 +- rtengine/curves.h | 2 +- rtengine/dynamicprofile.cc | 1 + rtengine/dynamicprofile.h | 6 +++++- rtengine/profilestore.h | 3 ++- rtgui/batchqueueentry.h | 7 ++++++- rtgui/bqentryupdater.h | 10 +++++++++- rtgui/clipboard.h | 2 +- rtgui/main-cli.cc | 1 + rtgui/paramsedited.h | 14 +++++++++++++- rtgui/partialpastedlg.h | 12 +++++++++++- rtgui/pparamschangelistener.h | 15 ++++++++++++++- rtgui/profilechangelistener.h | 3 ++- rtgui/profilepanel.cc | 1 + rtgui/profilepanel.h | 16 +++++++++++++++- rtgui/profilestorecombobox.h | 1 - rtgui/thumbimageupdater.h | 13 ++++++++++++- rtgui/toolpanel.h | 13 +++++++++++++ rtgui/whitebalance.cc | 2 +- 19 files changed, 109 insertions(+), 15 deletions(-) diff --git a/rtengine/curves.cc b/rtengine/curves.cc index a7e3337c8..eb6cc57c3 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -514,7 +514,7 @@ void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, dou double shcompr, double br, double contr, const std::vector& curvePoints, const std::vector& curvePoints2, - LUTu & histogram, + const LUTu & histogram, LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTu & outBeforeCCurveHistogram, ToneCurve & customToneCurve1, diff --git a/rtengine/curves.h b/rtengine/curves.h index 4d38e9cce..9c5a84eac 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -352,7 +352,7 @@ public: public: static void complexCurve (double ecomp, double black, double hlcompr, double hlcomprthresh, double shcompr, double br, double contr, const std::vector& curvePoints, const std::vector& curvePoints2, - LUTu & histogram, LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTu & outBeforeCCurveHistogram, ToneCurve & outToneCurve, ToneCurve & outToneCurve2, + const LUTu & histogram, LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTu & outBeforeCCurveHistogram, ToneCurve & outToneCurve, ToneCurve & outToneCurve2, int skip = 1); static void curveBW (const std::vector& curvePointsbw, const std::vector& curvePointsbw2, const LUTu & histogrambw, LUTu & outBeforeCCurveHistogrambw, diff --git a/rtengine/dynamicprofile.cc b/rtengine/dynamicprofile.cc index 0e3d75b43..617ec2747 100644 --- a/rtengine/dynamicprofile.cc +++ b/rtengine/dynamicprofile.cc @@ -24,6 +24,7 @@ #include #include +#include "rtengine.h" #include "../rtgui/options.h" using namespace rtengine; diff --git a/rtengine/dynamicprofile.h b/rtengine/dynamicprofile.h index 9b893fae2..d91b91aee 100644 --- a/rtengine/dynamicprofile.h +++ b/rtengine/dynamicprofile.h @@ -20,7 +20,11 @@ #include #include -#include "../rtengine/rtengine.h" + +namespace rtengine +{ + class FramesMetaData; +} class DynamicProfileRule { diff --git a/rtengine/profilestore.h b/rtengine/profilestore.h index 08afc88f3..ee913947f 100644 --- a/rtengine/profilestore.h +++ b/rtengine/profilestore.h @@ -25,7 +25,8 @@ #include "dynamicprofile.h" #include "noncopyable.h" -#include "rtengine.h" +#include "procparams.h" +#include "../rtgui/threadutils.h" // forward decl namespace rtengine diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index d56c0e340..bc93949e0 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -27,7 +27,12 @@ #include "thumbnail.h" #include "../rtengine/noncopyable.h" -#include "../rtengine/rtengine.h" +#include "../rtengine/procparams.h" + +namespace rtengine +{ + class ProcessingJob; +} class BatchQueueEntry; struct BatchQueueEntryIdleHelper { diff --git a/rtgui/bqentryupdater.h b/rtgui/bqentryupdater.h index 6dbb4bedf..1e71c0fc0 100644 --- a/rtgui/bqentryupdater.h +++ b/rtgui/bqentryupdater.h @@ -23,8 +23,16 @@ #include "threadutils.h" #include "thumbnail.h" -#include "../rtengine/rtengine.h" +namespace rtengine +{ +namespace procparams +{ +class ProcParams; + +} + +} class BQEntryUpdateListener { diff --git a/rtgui/clipboard.h b/rtgui/clipboard.h index 7d25dd0d5..5e0c4b67d 100644 --- a/rtgui/clipboard.h +++ b/rtgui/clipboard.h @@ -25,7 +25,6 @@ #include "../rtengine/diagonalcurvetypes.h" #include "../rtengine/flatcurvetypes.h" -#include "../rtengine/rtengine.h" namespace rtengine { @@ -34,6 +33,7 @@ namespace procparams { class PartialProfile; +class IPTCPairs; } diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc index 8310867df..c60cba070 100644 --- a/rtgui/main-cli.cc +++ b/rtgui/main-cli.cc @@ -33,6 +33,7 @@ #include #include "../rtengine/procparams.h" #include "../rtengine/profilestore.h" +#include "../rtengine/rtengine.h" #include "options.h" #include "soundman.h" #include "rtimage.h" diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index e435e2291..ec83e82cd 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -20,7 +20,19 @@ #include -#include "../rtengine/rtengine.h" +namespace rtengine +{ + +namespace procparams +{ + +class ProcParams; + +struct PartialProfile; + +} + +} struct GeneralParamsEdited { bool rank; diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 6c4228061..da6c9251a 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -20,7 +20,17 @@ #include -#include "../rtengine/rtengine.h" +namespace rtengine +{ +namespace procparams +{ + +class ProcParams; + + +} + +} struct ParamsEdited; diff --git a/rtgui/pparamschangelistener.h b/rtgui/pparamschangelistener.h index de590dd9f..5d457e882 100644 --- a/rtgui/pparamschangelistener.h +++ b/rtgui/pparamschangelistener.h @@ -22,7 +22,20 @@ #include "paramsedited.h" -#include "../rtengine/rtengine.h" +namespace rtengine +{ + +class ProcEvent; + +namespace procparams +{ + +class ProcParams; + + +} + +} class PParamsChangeListener { diff --git a/rtgui/profilechangelistener.h b/rtgui/profilechangelistener.h index c2e3f2654..58c565393 100644 --- a/rtgui/profilechangelistener.h +++ b/rtgui/profilechangelistener.h @@ -20,14 +20,15 @@ #include -#include "../rtengine/rtengine.h" namespace rtengine { +class ProcEvent; namespace procparams { +class ProcParams; class PartialProfile; } diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index 723bbfd61..53e1cd583 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -26,6 +26,7 @@ #include "rtimage.h" #include "../rtengine/procparams.h" +#include "../rtengine/procevents.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index 378b2a984..1e1a249bb 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -29,8 +29,22 @@ #include "profilestorecombobox.h" #include "../rtengine/noncopyable.h" -#include "../rtengine/rtengine.h" +namespace rtengine +{ + +class ProcEvent; + +namespace procparams +{ + +class ProcParams; + +struct PartialProfile; + +} + +} class RTImage; class ProfilePanel : diff --git a/rtgui/profilestorecombobox.h b/rtgui/profilestorecombobox.h index 447d2e157..6a74f8f71 100644 --- a/rtgui/profilestorecombobox.h +++ b/rtgui/profilestorecombobox.h @@ -28,7 +28,6 @@ #include "threadutils.h" #include "../rtengine/profilestore.h" -#include "../rtengine/rtengine.h" /** * @brief subclass of Gtk::Label with extra fields for Combobox and Menu, to link with a ProfileStoreEntry diff --git a/rtgui/thumbimageupdater.h b/rtgui/thumbimageupdater.h index 6c4171a87..cdf65bd62 100644 --- a/rtgui/thumbimageupdater.h +++ b/rtgui/thumbimageupdater.h @@ -22,9 +22,20 @@ #include "thumbbrowserentrybase.h" -#include "../rtengine/rtengine.h" #include "../rtengine/noncopyable.h" +namespace rtengine +{ + class IImage8; + +namespace procparams +{ + + struct CropParams; + +} + +} class ThumbImageUpdateListener { public: diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index aeb0f60a6..ee4f00e52 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -30,6 +30,19 @@ #include "../rtengine/noncopyable.h" #include "../rtengine/rtengine.h" +class ParamsEdited; + +namespace rtengine +{ + class ProcEvent; + +namespace procparams +{ + +class ProcParams; +} +} + class FoldableToolPanel; class ToolPanel; diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 109fb7502..2ab09c10a 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -55,7 +55,7 @@ void WhiteBalance::init () void WhiteBalance::cleanup () { - for (unsigned int i = 0; i < toUnderlying(WBEntry::Type::CUSTOM) + 1; i++) { + for (int i = 0; i < toUnderlying(WBEntry::Type::CUSTOM) + 1; i++) { wbPixbufs[i].reset(); } } From 962f81f6bcf6dd96b9362078bf605b5522cb5884 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 12:51:08 +0100 Subject: [PATCH 47/66] Further reduction of include dependencies --- rtgui/batchqueue.cc | 1 + rtgui/bqentryupdater.cc | 20 ++++++++++++-- rtgui/bqentryupdater.h | 4 +-- rtgui/guiutils.cc | 10 ------- rtgui/guiutils.h | 1 - rtgui/main.cc | 1 + rtgui/previewloader.cc | 2 ++ rtgui/previewloader.h | 4 +-- rtgui/previewwindow.cc | 2 +- rtgui/rtwindow.cc | 1 + rtgui/thumbnail.cc | 47 ++++++++++++++++++++++++++++++++ rtgui/thumbnail.h | 59 +++++++++++++---------------------------- 12 files changed, 93 insertions(+), 59 deletions(-) diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 9fcaa28d1..acb45c266 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -28,6 +28,7 @@ #include #include +#include "cachemanager.h" #include "thumbnail.h" #include "batchqueue.h" #include "multilangmgr.h" diff --git a/rtgui/bqentryupdater.cc b/rtgui/bqentryupdater.cc index 21a0f5ad0..8f5687b81 100644 --- a/rtgui/bqentryupdater.cc +++ b/rtgui/bqentryupdater.cc @@ -17,8 +17,24 @@ * along with RawTherapee. If not, see . */ #include "bqentryupdater.h" -#include + #include "guiutils.h" +#include "../rtengine/utils.h" + +namespace +{ + +void thumbInterp(const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh) +{ + + if (options.thumbInterp == 0) { + rtengine::nearestInterp (src, sw, sh, dst, dw, dh); + } else if (options.thumbInterp == 1) { + rtengine::bilinearInterp (src, sw, sh, dst, dw, dh); + } +} + +} BatchQueueEntryUpdater batchQueueEntryUpdater; @@ -27,7 +43,7 @@ BatchQueueEntryUpdater::BatchQueueEntryUpdater () { } -void BatchQueueEntryUpdater::process (guint8* oimg, int ow, int oh, int newh, BQEntryUpdateListener* listener, rtengine::ProcParams* pparams, Thumbnail* thumbnail) +void BatchQueueEntryUpdater::process (guint8* oimg, int ow, int oh, int newh, BQEntryUpdateListener* listener, rtengine::procparams::ProcParams* pparams, Thumbnail* thumbnail) { if (!oimg && (!pparams || !thumbnail)) { //printf("WARNING! !oimg && (!pparams || !thumbnail)\n"); diff --git a/rtgui/bqentryupdater.h b/rtgui/bqentryupdater.h index 1e71c0fc0..4cbbf6e59 100644 --- a/rtgui/bqentryupdater.h +++ b/rtgui/bqentryupdater.h @@ -48,7 +48,7 @@ class BatchQueueEntryUpdater guint8* oimg; int ow, oh, newh; BQEntryUpdateListener* listener; - rtengine::ProcParams* pparams; + rtengine::procparams::ProcParams* pparams; Thumbnail* thumbnail; }; @@ -62,7 +62,7 @@ protected: public: BatchQueueEntryUpdater (); - void process (guint8* oimg, int ow, int oh, int newh, BQEntryUpdateListener* listener, rtengine::ProcParams* pparams = nullptr, Thumbnail* thumbnail = nullptr); + void process (guint8* oimg, int ow, int oh, int newh, BQEntryUpdateListener* listener, rtengine::procparams::ProcParams* pparams = nullptr, Thumbnail* thumbnail = nullptr); void removeJobs (BQEntryUpdateListener* listener); void terminate (); diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 189cf6178..d6ede26da 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -217,16 +217,6 @@ bool removeIfThere (Gtk::Container* cont, Gtk::Widget* w, bool increference) } } -void thumbInterp (const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh) -{ - - if (options.thumbInterp == 0) { - rtengine::nearestInterp (src, sw, sh, dst, dw, dh); - } else if (options.thumbInterp == 1) { - rtengine::bilinearInterp (src, sw, sh, dst, dw, dh); - } -} - bool confirmOverwrite (Gtk::Window& parent, const std::string& filename) { bool safe = true; diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 8764f4c6a..97c72513b 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -48,7 +48,6 @@ class RTImage; Glib::ustring escapeHtmlChars(const Glib::ustring &src); bool removeIfThere (Gtk::Container* cont, Gtk::Widget* w, bool increference = true); -void thumbInterp (const unsigned char* src, int sw, int sh, unsigned char* dst, int dw, int dh); bool confirmOverwrite (Gtk::Window& parent, const std::string& filename); void writeFailed (Gtk::Window& parent, const std::string& filename); void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int imh, int startx, int starty, double scale, const rtengine::procparams::CropParams& cparams, bool drawGuide = true, bool useBgColor = true, bool fullImageVisible = true); diff --git a/rtgui/main.cc b/rtgui/main.cc index 58fdd12dc..1bb840e1e 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -33,6 +33,7 @@ #include #include #include +#include "cachemanager.h" #include "options.h" #include "soundman.h" #include "rtimage.h" diff --git a/rtgui/previewloader.cc b/rtgui/previewloader.cc index 67de50113..a808e1f71 100644 --- a/rtgui/previewloader.cc +++ b/rtgui/previewloader.cc @@ -18,6 +18,8 @@ */ #include +#include "cachemanager.h" +#include "filebrowserentry.h" #include "previewloader.h" #include "guiutils.h" #include "threadutils.h" diff --git a/rtgui/previewloader.h b/rtgui/previewloader.h index 3712dc3ff..9a74ee2eb 100644 --- a/rtgui/previewloader.h +++ b/rtgui/previewloader.h @@ -22,10 +22,10 @@ #include -#include "filebrowserentry.h" - #include "../rtengine/noncopyable.h" +class FileBrowserEntry; + class PreviewLoaderListener { public: diff --git a/rtgui/previewwindow.cc b/rtgui/previewwindow.cc index 54d785313..c813f04a2 100644 --- a/rtgui/previewwindow.cc +++ b/rtgui/previewwindow.cc @@ -88,7 +88,7 @@ void PreviewWindow::updatePreviewImage () cc->fill(); if (previewHandler->getCropParams().enabled) { - rtengine::CropParams cparams = previewHandler->getCropParams(); + rtengine::procparams::CropParams cparams = previewHandler->getCropParams(); switch (options.cropGuides) { case Options::CROP_GUIDE_NONE: cparams.guide = "None"; diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 3654e8af6..45d07c4af 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -19,6 +19,7 @@ #include #include "rtwindow.h" +#include "cachemanager.h" #include "preferences.h" #include "iccprofilecreator.h" #include "cursormanager.h" diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 7464244f7..bb911534a 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -15,6 +15,7 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include "cachemanager.h" #include "multilangmgr.h" #include "thumbnail.h" #include @@ -25,6 +26,7 @@ #include "../rtengine/colortemp.h" #include "../rtengine/imagedata.h" #include "../rtengine/procparams.h" +#include "../rtengine/rtthumbnail.h" #include #include "../rtengine/dynamicprofile.h" @@ -1151,3 +1153,48 @@ bool Thumbnail::imageLoad(bool loading) return false; } + +void Thumbnail::getCamWB(double& temp, double& green) const +{ + if (tpp) { + tpp->getCamWB (temp, green); + } else { + temp = green = -1.0; + } +} + +void Thumbnail::getSpotWB(int x, int y, int rect, double& temp, double& green) +{ + if (tpp) { + tpp->getSpotWB (getProcParams(), x, y, rect, temp, green); + } else { + temp = green = -1.0; + } +} + +void Thumbnail::applyAutoExp (rtengine::procparams::ProcParams& pparams) +{ + if (tpp) { + tpp->applyAutoExp (pparams); + } +} + +const CacheImageData* Thumbnail::getCacheImageData() +{ + return &cfs; +} + +std::string Thumbnail::getMD5() const +{ + return cfs.md5; +} + +bool Thumbnail::isQuick() const +{ + return cfs.thumbImgType == CacheImageData::QUICK_THUMBNAIL; +} + +bool Thumbnail::isPParamsValid() const +{ + return pparamsValid; +} diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index 1a0f68409..aee5ee0a6 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -24,13 +24,21 @@ #include #include "cacheimagedata.h" -#include "cachemanager.h" #include "threadutils.h" #include "thumbnaillistener.h" -#include "../rtengine/rtengine.h" -#include "../rtengine/rtthumbnail.h" +namespace rtengine +{ +class Thumbnail; +namespace procparams +{ + +class ProcParams; + +} + +} class CacheManager; struct ParamsEdited; @@ -98,14 +106,8 @@ public: void notifylisterners_procParamsChanged(int whoChangedIt); - bool isQuick() const - { - return cfs.thumbImgType == CacheImageData::QUICK_THUMBNAIL; - } - bool isPParamsValid() const - { - return pparamsValid; - } + bool isQuick() const; + bool isPParamsValid() const; bool isRecentlySaved () const; void imageDeveloped (); void imageEnqueued (); @@ -123,29 +125,10 @@ public: const Glib::ustring& getExifString () const; const Glib::ustring& getDateTimeString () const; - void getCamWB (double& temp, double& green) const - { - if (tpp) { - tpp->getCamWB (temp, green); - } else { - temp = green = -1.0; - } - } + void getCamWB (double& temp, double& green) const; void getAutoWB (double& temp, double& green, double equal, double tempBias); - void getSpotWB (int x, int y, int rect, double& temp, double& green) - { - if (tpp) { - tpp->getSpotWB (getProcParams(), x, y, rect, temp, green); - } else { - temp = green = -1.0; - } - } - void applyAutoExp (rtengine::procparams::ProcParams& pparams) - { - if (tpp) { - tpp->applyAutoExp (pparams); - } - } + void getSpotWB (int x, int y, int rect, double& temp, double& green); + void applyAutoExp (rtengine::procparams::ProcParams& pparams); ThFileType getType (); Glib::ustring getFileName () const @@ -156,14 +139,8 @@ public: bool isSupported (); - const CacheImageData* getCacheImageData() - { - return &cfs; - } - std::string getMD5 () const - { - return cfs.md5; - } + const CacheImageData* getCacheImageData(); + std::string getMD5 () const; int getRank () const; void setRank (int rank); From e682b364b51febfbe7e53f67658d65987b62acdd Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 14:51:33 +0100 Subject: [PATCH 48/66] Further reduction of include dependencies --- rtengine/bilateral2.h | 1 - rtengine/color.cc | 5 ++++- rtengine/imagefloat.cc | 1 - rtengine/improccoordinator.cc | 1 - rtengine/improcfun.cc | 5 ++++- rtengine/iptransform.cc | 1 - rtengine/ipvibrance.cc | 1 - rtengine/ipwavelet.cc | 1 - rtengine/profilestore.h | 3 ++- rtgui/batchqueueentry.h | 11 +++++++++-- rtgui/clipboard.cc | 1 + rtgui/clipboard.h | 6 +++--- rtgui/cropwindow.cc | 4 +++- rtgui/filebrowser.cc | 1 + rtgui/filebrowser.h | 2 +- rtgui/pparamschangelistener.h | 2 +- rtgui/profilepanel.cc | 1 + rtgui/profilepanel.h | 4 +++- rtgui/profilestorecombobox.h | 4 +--- rtgui/thumbbrowserbase.cc | 1 - rtgui/thumbbrowserentrybase.cc | 2 -- rtgui/thumbnail.cc | 8 ++++++-- rtgui/toolpanel.h | 2 -- 23 files changed, 40 insertions(+), 28 deletions(-) diff --git a/rtengine/bilateral2.h b/rtengine/bilateral2.h index a431bcecd..ecdcc7fe5 100644 --- a/rtengine/bilateral2.h +++ b/rtengine/bilateral2.h @@ -25,7 +25,6 @@ #include "array2D.h" #include "LUT.h" -#include "mytime.h" #include "rt_math.h" #ifdef _OPENMP diff --git a/rtengine/color.cc b/rtengine/color.cc index 20b2c7310..8437a36b1 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -20,11 +20,14 @@ #include "rtengine.h" #include "color.h" #include "iccmatrices.h" -#include "mytime.h" #include "sleef.c" #include "opthelper.h" #include "iccstore.h" +#ifdef _DEBUG +#include "mytime.h" +#endif + using namespace std; namespace rtengine diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 3e80b617b..1da91a4b4 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -25,7 +25,6 @@ #include "labimage.h" #include #include "rtengine.h" -#include "mytime.h" #include "iccstore.h" #include "alignedbuffer.h" #include "rt_math.h" diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 729682b0f..d5242f4df 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -33,7 +33,6 @@ #include "imagefloat.h" #include "improcfun.h" #include "labimage.h" -#include "mytime.h" #include "procparams.h" #include "refreshmap.h" diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 886e49567..b1bff49a0 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -30,7 +30,6 @@ #include "improcfun.h" #include "curves.h" #include "dcp.h" -#include "mytime.h" #include "iccstore.h" #include "imagesource.h" #include "rtthumbnail.h" @@ -48,6 +47,10 @@ #include "../rtgui/ppversion.h" #include "../rtgui/editcallbacks.h" +#ifdef _DEBUG +#include "mytime.h" +#endif + #undef CLIPD #define CLIPD(a) ((a)>0.0f?((a)<1.0f?(a):1.0f):0.0f) diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index b6338b8d3..640fab2a6 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -25,7 +25,6 @@ #include "imagefloat.h" #include "improcfun.h" -#include "mytime.h" #include "procparams.h" #include "rt_math.h" #include "rtengine.h" diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index 1c5c6c4d5..b46cfb413 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -24,7 +24,6 @@ #include "improcfun.h" #include "iccstore.h" #include "labimage.h" -#include "mytime.h" #include "curves.h" #include "color.h" #include "procparams.h" diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index d550664b9..78a4dd509 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -36,7 +36,6 @@ #include "labimage.h" #include "LUT.h" #include "median.h" -#include "mytime.h" #include "opthelper.h" #include "procparams.h" #include "rt_math.h" diff --git a/rtengine/profilestore.h b/rtengine/profilestore.h index ee913947f..460facb72 100644 --- a/rtengine/profilestore.h +++ b/rtengine/profilestore.h @@ -25,7 +25,6 @@ #include "dynamicprofile.h" #include "noncopyable.h" -#include "procparams.h" #include "../rtgui/threadutils.h" // forward decl @@ -35,6 +34,8 @@ namespace rtengine namespace procparams { +class ProcParams; + class AutoPartialProfile; class PartialProfile; diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index bc93949e0..3161bded4 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -27,11 +27,18 @@ #include "thumbnail.h" #include "../rtengine/noncopyable.h" -#include "../rtengine/procparams.h" namespace rtengine { - class ProcessingJob; +class ProcessingJob; + +namespace procparams +{ + +class ProcParams; + +} + } class BatchQueueEntry; diff --git a/rtgui/clipboard.cc b/rtgui/clipboard.cc index 4cd50f574..f64f2ed07 100644 --- a/rtgui/clipboard.cc +++ b/rtgui/clipboard.cc @@ -18,6 +18,7 @@ */ #include "clipboard.h" +#include "paramsedited.h" #include "../rtengine/procparams.h" Clipboard clipboard; diff --git a/rtgui/clipboard.h b/rtgui/clipboard.h index 5e0c4b67d..1faf0b4d3 100644 --- a/rtgui/clipboard.h +++ b/rtgui/clipboard.h @@ -21,17 +21,17 @@ #include #include -#include "paramsedited.h" - #include "../rtengine/diagonalcurvetypes.h" #include "../rtengine/flatcurvetypes.h" +class ParamsEdited; + namespace rtengine { namespace procparams { - +class ProcParams; class PartialProfile; class IPTCPairs; diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index ef682cf1f..f0f4cbcba 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -17,6 +17,9 @@ * along with RawTherapee. If not, see . */ #include +#ifdef WIN32 +#include +#endif #include "cropwindow.h" @@ -32,7 +35,6 @@ #include "editwidgets.h" #include "../rtengine/dcrop.h" -#include "../rtengine/mytime.h" #include "../rtengine/procparams.h" #include "../rtengine/rt_math.h" diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 5817222dd..bfd614ffd 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -29,6 +29,7 @@ #include "clipboard.h" #include "multilangmgr.h" #include "options.h" +#include "profilestorecombobox.h" #include "procparamchangers.h" #include "rtimage.h" #include "threadutils.h" diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 74b491957..dc671fe85 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -29,7 +29,7 @@ #include "filebrowserentry.h" #include "partialpastedlg.h" #include "pparamschangelistener.h" -#include "profilestorecombobox.h" +#include "../rtengine/profilestore.h" #include "thumbbrowserbase.h" #include "../rtengine/noncopyable.h" diff --git a/rtgui/pparamschangelistener.h b/rtgui/pparamschangelistener.h index 5d457e882..449ebfca5 100644 --- a/rtgui/pparamschangelistener.h +++ b/rtgui/pparamschangelistener.h @@ -20,7 +20,7 @@ #include -#include "paramsedited.h" +class ParamsEdited; namespace rtengine { diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index 53e1cd583..4c8e30e44 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -22,6 +22,7 @@ #include "multilangmgr.h" #include "options.h" #include "profilestorecombobox.h" +#include "paramsedited.h" #include "pathutils.h" #include "rtimage.h" diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index 1e1a249bb..73d3a1949 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -26,10 +26,12 @@ #include "partialpastedlg.h" #include "pparamschangelistener.h" #include "profilechangelistener.h" -#include "profilestorecombobox.h" +#include "../rtengine/profilestore.h" #include "../rtengine/noncopyable.h" +class ProfileStoreComboBox; + namespace rtengine { diff --git a/rtgui/profilestorecombobox.h b/rtgui/profilestorecombobox.h index 6a74f8f71..bfd713235 100644 --- a/rtgui/profilestorecombobox.h +++ b/rtgui/profilestorecombobox.h @@ -24,11 +24,9 @@ #include #include "guiutils.h" -#include "paramsedited.h" #include "threadutils.h" -#include "../rtengine/profilestore.h" - +class ProfileStoreEntry; /** * @brief subclass of Gtk::Label with extra fields for Combobox and Menu, to link with a ProfileStoreEntry */ diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index f5f4076bb..b660afc61 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -22,7 +22,6 @@ #include "options.h" #include "thumbbrowserbase.h" -#include "../rtengine/mytime.h" #include "../rtengine/rt_math.h" using namespace std; diff --git a/rtgui/thumbbrowserentrybase.cc b/rtgui/thumbbrowserentrybase.cc index 9d74fbd79..12059c72e 100644 --- a/rtgui/thumbbrowserentrybase.cc +++ b/rtgui/thumbbrowserentrybase.cc @@ -21,8 +21,6 @@ #include "options.h" #include "thumbbrowserbase.h" -#include "../rtengine/mytime.h" - namespace { diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index bb911534a..d5038bba5 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -15,12 +15,15 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#ifdef WIN32 +#include +#endif + #include "cachemanager.h" #include "multilangmgr.h" #include "thumbnail.h" #include #include -#include "../rtengine/mytime.h" #include #include #include "../rtengine/colortemp.h" @@ -30,12 +33,13 @@ #include #include "../rtengine/dynamicprofile.h" +#include "../rtengine/profilestore.h" #include "../rtengine/settings.h" #include "guiutils.h" #include "batchqueue.h" #include "extprog.h" #include "pathutils.h" -#include "profilestorecombobox.h" +#include "paramsedited.h" #include "procparamchangers.h" using namespace rtengine::procparams; diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index ee4f00e52..627200835 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -30,8 +30,6 @@ #include "../rtengine/noncopyable.h" #include "../rtengine/rtengine.h" -class ParamsEdited; - namespace rtengine { class ProcEvent; From d731e172c2bdb86c0fb6326cc2bf91856bbb8c56 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 16:15:59 +0100 Subject: [PATCH 49/66] Further reduction of include dependencies --- rtengine/EdgePreservingDecomposition.cc | 1 - rtengine/LUT.h | 1 - rtengine/dcp.cc | 1 + rtengine/imagedata.cc | 1 + rtengine/imagedata.h | 6 +++++- rtengine/imageio.cc | 1 + rtengine/imageio.h | 16 ++++++++++++++-- rtengine/improccoordinator.cc | 1 + rtengine/improcfun.h | 5 +++-- rtengine/lcp.cc | 1 + rtengine/lcp.h | 1 - rtengine/rtengine.h | 9 +++++++-- rtgui/exifpanel.h | 1 + rtgui/resize.cc | 3 +++ rtgui/thumbnail.cc | 1 + rtgui/toolpanelcoord.cc | 1 + rtgui/toolpanelcoord.h | 2 +- 17 files changed, 41 insertions(+), 11 deletions(-) diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index 85b7ce243..85770826e 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -5,7 +5,6 @@ #include #endif #include "sleef.c" -#include "opthelper.h" #define DIAGONALS 5 #define DIAGONALSP1 6 diff --git a/rtengine/LUT.h b/rtengine/LUT.h index d1ed67c2b..a80e5996d 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -66,7 +66,6 @@ #include #endif -#include "noncopyable.h" #include "opthelper.h" #include "rt_math.h" diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index f15ae902f..d3ab1b3f1 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -34,6 +34,7 @@ #include "rawimagesource.h" #include "rt_math.h" #include "utils.h" +#include "../rtexif/rtexif.h" #include "../rtgui/options.h" using namespace rtengine; diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index d952dc8ba..24cfefde9 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -32,6 +32,7 @@ #include "procparams.h" #include "rt_math.h" #include "utils.h" +#include "../rtexif/rtexif.h" #pragma GCC diagnostic warning "-Wextra" #define PRINT_HDR_PS_DETECTION 0 diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 0b75e263b..ff8ed4b86 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -29,7 +29,11 @@ #include "imageio.h" -#include "../rtexif/rtexif.h" +namespace rtexif +{ + +class TagDirectory; +} namespace rtengine { diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 5927a23be..fce181c3f 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -30,6 +30,7 @@ #include "utils.h" #include "../rtgui/options.h" #include "../rtgui/version.h" +#include "../rtexif/rtexif.h" #ifdef WIN32 #include diff --git a/rtengine/imageio.h b/rtengine/imageio.h index 251187547..d9afa926f 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -29,8 +29,6 @@ #include "imageformat.h" #include "rtengine.h" -#include "../rtexif/rtexif.h" - enum { IMIO_SUCCESS, IMIO_CANNOTREADFILE, @@ -42,6 +40,13 @@ enum { IMIO_CANNOTWRITEFILE }; +namespace rtexif +{ + +class TagDirectory; + +} + namespace rtengine { @@ -49,6 +54,13 @@ class ColorTemp; class ProgressListener; class Imagefloat; +namespace procparams +{ + +class ExifPairs; + +} + class ImageIO : virtual public ImageDatas { diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index d5242f4df..bed101e0d 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -33,6 +33,7 @@ #include "imagefloat.h" #include "improcfun.h" #include "labimage.h" +#include "lcp.h" #include "procparams.h" #include "refreshmap.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index a8c3ededb..2c4efbfe9 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -18,17 +18,17 @@ */ #pragma once +#include + #include "color.h" #include "coord2d.h" #include "gamutwarning.h" -#include "lcp.h" #include "LUT.h" #include "pipettebuffer.h" #include "shmap.h" template class multi_array2D; - namespace rtengine { @@ -38,6 +38,7 @@ class DCPProfile; class DCPProfileApplyState; class FlatCurve; class FramesMetaData; +class LensCorrection; class NoiseCurve; class OpacityCurve; class ToneCurve; diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index b42950eb4..57a87c1f1 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -32,6 +32,7 @@ #include "lcp.h" +#include "opthelper.h" #include "procparams.h" #include "rt_math.h" #include "settings.h" diff --git a/rtengine/lcp.h b/rtengine/lcp.h index 60df289e8..69fd43932 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -29,7 +29,6 @@ #include #include "cache.h" -#include "opthelper.h" namespace rtengine { diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index d1300f023..287759009 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -21,6 +21,7 @@ #include #include #include +#include #include @@ -34,8 +35,6 @@ #include "rt_math.h" #include "settings.h" -#include "../rtexif/rtexif.h" - #include "../rtgui/threadutils.h" /** @@ -45,6 +44,12 @@ */ class EditDataProvider; +namespace rtexif +{ + +class TagDirectory; + +} namespace rtengine { diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h index 2b173c884..0894c21ad 100644 --- a/rtgui/exifpanel.h +++ b/rtgui/exifpanel.h @@ -23,6 +23,7 @@ #include #include "toolpanel.h" +#include "../rtexif/rtexif.h" class ExifPanel : public Gtk::VBox, diff --git a/rtgui/resize.cc b/rtgui/resize.cc index 456b924ef..a65875426 100644 --- a/rtgui/resize.cc +++ b/rtgui/resize.cc @@ -16,6 +16,9 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include + #include "resize.h" #include "eventmapper.h" diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index d5038bba5..cd7470263 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -35,6 +35,7 @@ #include "../rtengine/dynamicprofile.h" #include "../rtengine/profilestore.h" #include "../rtengine/settings.h" +#include "../rtexif/rtexif.h" #include "guiutils.h" #include "batchqueue.h" #include "extprog.h" diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 1da43f6c0..e774e3d39 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -18,6 +18,7 @@ */ #include "multilangmgr.h" #include "toolpanelcoord.h" +#include "metadatapanel.h" #include "options.h" #include "rtimage.h" #include "../rtengine/imagesource.h" diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 7b6e23937..4313f6d12 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -54,7 +54,6 @@ #include "lensgeomlistener.h" #include "lensprofile.h" #include "localcontrast.h" -#include "metadatapanel.h" #include "pcvignette.h" #include "pdsharpening.h" #include "perspective.h" @@ -89,6 +88,7 @@ #include "../rtengine/rtengine.h" class ImageEditorCoordinator; +class MetaDataPanel; class ToolPanelCoordinator : public ToolPanelListener, From b58d38fc62787d2141597379ded7498c3f86a4d3 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 17:17:29 +0100 Subject: [PATCH 50/66] Fix clang warnings --- rtgui/clipboard.h | 2 +- rtgui/paramsedited.h | 2 +- rtgui/pparamschangelistener.h | 2 +- rtgui/profilepanel.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rtgui/clipboard.h b/rtgui/clipboard.h index 1faf0b4d3..0a1c8e2fa 100644 --- a/rtgui/clipboard.h +++ b/rtgui/clipboard.h @@ -24,7 +24,7 @@ #include "../rtengine/diagonalcurvetypes.h" #include "../rtengine/flatcurvetypes.h" -class ParamsEdited; +struct ParamsEdited; namespace rtengine { diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index ec83e82cd..86bffe48d 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -28,7 +28,7 @@ namespace procparams class ProcParams; -struct PartialProfile; +class PartialProfile; } diff --git a/rtgui/pparamschangelistener.h b/rtgui/pparamschangelistener.h index 449ebfca5..56ac5f605 100644 --- a/rtgui/pparamschangelistener.h +++ b/rtgui/pparamschangelistener.h @@ -20,7 +20,7 @@ #include -class ParamsEdited; +struct ParamsEdited; namespace rtengine { diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index 73d3a1949..b3c968682 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -42,7 +42,7 @@ namespace procparams class ProcParams; -struct PartialProfile; +class PartialProfile; } From c1f9120ef46c9398c68be3e023cce52edd8a5be1 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 21:20:52 +0100 Subject: [PATCH 51/66] Further reduction of include dependencies --- rtengine/bilateral2.h | 4 -- rtgui/batchqueueentry.cc | 2 + rtgui/batchqueueentry.h | 4 +- rtgui/batchtoolpanelcoord.cc | 1 + rtgui/batchtoolpanelcoord.h | 2 +- rtgui/bqentryupdater.cc | 2 + rtgui/bqentryupdater.h | 3 +- rtgui/colorappearance.h | 1 - rtgui/editorpanel.cc | 1 + rtgui/editorpanel.h | 2 +- rtgui/filebrowser.cc | 1 + rtgui/filebrowserentry.cc | 1 + rtgui/filebrowserentry.h | 3 +- rtgui/filecatalog.cc | 1 + rtgui/filepanel.cc | 1 + rtgui/histogrampanel.h | 1 - rtgui/imageareatoollistener.h | 2 +- rtgui/previewwindow.cc | 1 + rtgui/rtwindow.cc | 1 + rtgui/thumbbrowserentrybase.h | 4 +- rtgui/thumbimageupdater.cc | 1 + rtgui/thumbnailbrowser.h | 99 ----------------------------------- rtgui/tonecurve.h | 1 - 23 files changed, 26 insertions(+), 113 deletions(-) delete mode 100644 rtgui/thumbnailbrowser.h diff --git a/rtengine/bilateral2.h b/rtengine/bilateral2.h index ecdcc7fe5..53e18fb20 100644 --- a/rtengine/bilateral2.h +++ b/rtengine/bilateral2.h @@ -27,10 +27,6 @@ #include "LUT.h" #include "rt_math.h" -#ifdef _OPENMP -#include -#endif - using namespace rtengine; // This seems ugly, but way faster than any other solutions I tried diff --git a/rtgui/batchqueueentry.cc b/rtgui/batchqueueentry.cc index 424c8e486..90079b2cc 100644 --- a/rtgui/batchqueueentry.cc +++ b/rtgui/batchqueueentry.cc @@ -25,8 +25,10 @@ #include "rtimage.h" #include "multilangmgr.h" #include "thumbbrowserbase.h" +#include "thumbnail.h" #include "../rtengine/procparams.h" +#include "../rtengine/rtengine.h" bool BatchQueueEntry::iconsLoaded(false); Glib::RefPtr BatchQueueEntry::savedAsIcon; diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index 3161bded4..c4cd48615 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -23,11 +23,13 @@ #include #include "bqentryupdater.h" +#include "options.h" #include "thumbbrowserentrybase.h" -#include "thumbnail.h" #include "../rtengine/noncopyable.h" +class Thumbnail; + namespace rtengine { class ProcessingJob; diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 87320892e..760614d5e 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -22,6 +22,7 @@ #include "filepanel.h" #include "procparamchangers.h" #include "addsetids.h" +#include "thumbnail.h" using namespace rtengine::procparams; diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index 6c64e15ea..7a5fe77ed 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -20,7 +20,6 @@ #include "fileselectionchangelistener.h" #include "paramsedited.h" -#include "thumbnail.h" #include "thumbnaillistener.h" #include "toolpanelcoord.h" @@ -28,6 +27,7 @@ #include "../rtengine/procparams.h" class FilePanel; +class Thumbnail; class BatchToolPanelCoordinator : public ToolPanelCoordinator, public FileSelectionChangeListener, diff --git a/rtgui/bqentryupdater.cc b/rtgui/bqentryupdater.cc index 8f5687b81..61683e158 100644 --- a/rtgui/bqentryupdater.cc +++ b/rtgui/bqentryupdater.cc @@ -19,6 +19,8 @@ #include "bqentryupdater.h" #include "guiutils.h" +#include "options.h" +#include "thumbnail.h" #include "../rtengine/utils.h" namespace diff --git a/rtgui/bqentryupdater.h b/rtgui/bqentryupdater.h index 4cbbf6e59..dfd42aff1 100644 --- a/rtgui/bqentryupdater.h +++ b/rtgui/bqentryupdater.h @@ -21,7 +21,8 @@ #include #include "threadutils.h" -#include "thumbnail.h" + +class Thumbnail; namespace rtengine { diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h index 1f8fdef84..3d82ee831 100644 --- a/rtgui/colorappearance.h +++ b/rtgui/colorappearance.h @@ -25,7 +25,6 @@ #include "curveeditor.h" #include "curveeditorgroup.h" #include "guiutils.h" -#include "mycurve.h" #include "toolpanel.h" class ColorAppearance final : diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 3c5182938..c7d8436ef 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -33,6 +33,7 @@ #include "procparamchangers.h" #include "placesbrowser.h" #include "pathutils.h" +#include "thumbnail.h" using namespace rtengine::procparams; diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index ec59563e0..00f1a942e 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -30,7 +30,6 @@ #include "profilepanel.h" #include "progressconnector.h" #include "saveasdlg.h" -#include "thumbnail.h" #include "thumbnaillistener.h" #include "toolpanelcoord.h" @@ -39,6 +38,7 @@ class EditorPanel; class MyProgressBar; +class Thumbnail; struct EditorPanelIdleHelper { EditorPanel* epanel; diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index bfd614ffd..3dcb573ca 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -33,6 +33,7 @@ #include "procparamchangers.h" #include "rtimage.h" #include "threadutils.h" +#include "thumbnail.h" #include "../rtengine/dfmanager.h" #include "../rtengine/ffmanager.h" diff --git a/rtgui/filebrowserentry.cc b/rtgui/filebrowserentry.cc index 44146b990..4d31d625e 100644 --- a/rtgui/filebrowserentry.cc +++ b/rtgui/filebrowserentry.cc @@ -27,6 +27,7 @@ #include "rtimage.h" #include "threadutils.h" #include "thumbbrowserbase.h" +#include "thumbnail.h" #include "../rtengine/procparams.h" diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h index c7eebcd44..1bdbb2ecb 100644 --- a/rtgui/filebrowserentry.h +++ b/rtgui/filebrowserentry.h @@ -29,13 +29,14 @@ #include "imageareatoollistener.h" #include "thumbbrowserentrybase.h" #include "thumbimageupdater.h" -#include "thumbnail.h" #include "thumbnaillistener.h" #include "../rtengine/noncopyable.h" #include "../rtengine/rtengine.h" class FileBrowserEntry; +class Thumbnail; + struct FileBrowserEntryIdleHelper { FileBrowserEntry* fbentry; bool destroyed; diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index fb8bd4923..923a15e8d 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -37,6 +37,7 @@ #include "batchqueue.h" #include "placesbrowser.h" #include "pathutils.h" +#include "thumbnail.h" using namespace std; diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index 3e23cbc5d..0c401a701 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -21,6 +21,7 @@ #include "rtwindow.h" #include "inspector.h" #include "placesbrowser.h" +#include "thumbnail.h" FilePanel::FilePanel () : parent(nullptr), error(0) { diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h index 92d0dc7b4..23b065534 100644 --- a/rtgui/histogrampanel.h +++ b/rtgui/histogrampanel.h @@ -27,7 +27,6 @@ #include "guiutils.h" #include "pointermotionlistener.h" -#include "../rtengine/improccoordinator.h" #include "../rtengine/LUT.h" #include "../rtengine/noncopyable.h" diff --git a/rtgui/imageareatoollistener.h b/rtgui/imageareatoollistener.h index 86fdca6a2..3c753a5e0 100644 --- a/rtgui/imageareatoollistener.h +++ b/rtgui/imageareatoollistener.h @@ -19,9 +19,9 @@ #pragma once #include "cropguilistener.h" -#include "thumbnail.h" #include "toolbar.h" +class Thumbnail; class ImageAreaToolListener { diff --git a/rtgui/previewwindow.cc b/rtgui/previewwindow.cc index c813f04a2..3f787a16b 100644 --- a/rtgui/previewwindow.cc +++ b/rtgui/previewwindow.cc @@ -20,6 +20,7 @@ #include "guiutils.h" #include "imagearea.h" #include "cursormanager.h" +#include "options.h" #include "../rtengine/procparams.h" diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 45d07c4af..2db0ef192 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -24,6 +24,7 @@ #include "iccprofilecreator.h" #include "cursormanager.h" #include "rtimage.h" +#include "thumbnail.h" #include "whitebalance.h" #include "../rtengine/settings.h" diff --git a/rtgui/thumbbrowserentrybase.h b/rtgui/thumbbrowserentrybase.h index 5f018eefd..dbc6cf73e 100644 --- a/rtgui/thumbbrowserentrybase.h +++ b/rtgui/thumbbrowserentrybase.h @@ -26,8 +26,10 @@ #include "guiutils.h" #include "lwbuttonset.h" #include "threadutils.h" -#include "thumbnail.h" +#include "../rtengine/coord2d.h" + +class Thumbnail; class ThumbBrowserBase; class ThumbBrowserEntryBase { diff --git a/rtgui/thumbimageupdater.cc b/rtgui/thumbimageupdater.cc index 182eba704..bf230fe63 100644 --- a/rtgui/thumbimageupdater.cc +++ b/rtgui/thumbimageupdater.cc @@ -26,6 +26,7 @@ #include "guiutils.h" #include "threadutils.h" +#include "thumbnail.h" #include "../rtengine/procparams.h" diff --git a/rtgui/thumbnailbrowser.h b/rtgui/thumbnailbrowser.h deleted file mode 100644 index ef953c0e9..000000000 --- a/rtgui/thumbnailbrowser.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ -#pragma once - -#include - -#include "filecatalog.h" -#include "thumbnail.h" - -class ThumbBrowserEntry -{ - -public: -// set by arrangeFiles(): - int width; // minimal width - int height; // minimal height - int exp_width; // ararnged width - int startx; // x coord. in the widget - int starty; // y coord. in the widget -// thumbnail preview properties: - int prew; // width of the thumbnail - int preh; // height of the thumbnail - guint8* preview; -// file and directory attributes: - Glib::ustring filename; - Glib::ustring shortname; - Glib::ustring dirname; -// the associated thumbnail instance: - Thumbnail* thumbnail; - - ThumbBrowserEntry (Thumbnail* thm, Glib::ustring fname, Glib::ustring sname, Glib::ustring dname, int h) - : thumbnail(thm), filename(fname), shortname(sname), dirname(dname), preh(h) - { - preview = thumbnail ? (guint8*) thumbnail->getThumbnailImage (prew, preh) : NULL; - } - - bool operator< (FileDescr& other) - { - return shortname > other.shortname; - } -}; - -class ThumbBrowser : public Gtk::DrawingArea -{ - -protected: - int dx, dy, w, h; - - Gdk::RGBA black; - Gdk::RGBA white; - Gdk::RGBA blue; - Gdk::RGBA bluew; - - std::vector fd; - std::vector selected; - - int rowHeight; - int numOfRows; - - ThumbBrowserListener* tbl; - - void arrangeFiles (int rows); - -public: - - ThumbBrowser (); - - void addEntry (ThumbBrowserEntry* entry); - void setThumbBrowserListener (ThumbBrowserListener* l) - { - tbl = l; - } - - virtual void on_realize(); - virtual bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - virtual bool on_button_press_event (GdkEventButton* event); - virtual bool on_button_release_event (GdkEventButton* event); - virtual void previewReady (FileDescr* fdn); - - void resized (Gtk::Allocation& req); - void redraw (); - void styleChanged (const Glib::RefPtr& style); -}; diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h index b44a7ccab..cba810e15 100644 --- a/rtgui/tonecurve.h +++ b/rtgui/tonecurve.h @@ -24,7 +24,6 @@ #include "curveeditor.h" #include "curveeditorgroup.h" #include "guiutils.h" -#include "mycurve.h" #include "toolpanel.h" class EditDataProvider; From f02f5c4a69e5e74ebdd7f02d7c2aea1da09b2687 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Fri, 1 Nov 2019 22:57:20 +0100 Subject: [PATCH 52/66] Fix two lgtm issues --- rtgui/editorpanel.cc | 46 +++++++++++--------------------------------- rtgui/rtwindow.cc | 7 +++---- 2 files changed, 14 insertions(+), 39 deletions(-) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index c7d8436ef..9ae613ebd 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -891,41 +891,17 @@ EditorPanel::~EditorPanel () delete vboxright; //delete saveAsDialog; - if (catalogPane) { - delete catalogPane; - } - - if (iTopPanel_1_Show) { - delete iTopPanel_1_Show; - } - - if (iTopPanel_1_Hide) { - delete iTopPanel_1_Hide; - } - - if (iHistoryShow) { - delete iHistoryShow; - } - - if (iHistoryHide) { - delete iHistoryHide; - } - - if (iBeforeLockON) { - delete iBeforeLockON; - } - - if (iBeforeLockOFF) { - delete iBeforeLockOFF; - } - - if (iRightPanel_1_Show) { - delete iRightPanel_1_Show; - } - - if (iRightPanel_1_Hide) { - delete iRightPanel_1_Hide; - } + delete catalogPane; + delete iTopPanel_1_Show; + delete iTopPanel_1_Hide; + delete iHistoryShow; + delete iHistoryHide; + delete iBeforeLockON; + delete iBeforeLockOFF; + delete iRightPanel_1_Show; + delete iRightPanel_1_Hide; + delete iShowHideSidePanels_exit; + delete iShowHideSidePanels; } void EditorPanel::leftPaneButtonReleased (GdkEventButton *event) diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 2db0ef192..9f5357644 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -458,10 +458,9 @@ RTWindow::~RTWindow() g_object_unref (osxApp); #endif - if (fpanel) { - delete fpanel; - } - + delete fpanel; + delete iFullscreen; + delete iFullscreen_exit; RTImage::cleanup(); } From afeca7f5f9df5d92327e4cedd7116102a655eef1 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sat, 2 Nov 2019 00:18:48 +0100 Subject: [PATCH 53/66] Fix lgtm issues --- rtgui/editorpanel.cc | 12 ++++++------ rtgui/editorpanel.h | 2 +- rtgui/rtwindow.cc | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 9ae613ebd..3328dcd65 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -1108,7 +1108,7 @@ Glib::ustring EditorPanel::getShortName () } } -Glib::ustring EditorPanel::getFileName () +Glib::ustring EditorPanel::getFileName () const { if (openThm) { return openThm->getFileName (); @@ -2012,9 +2012,9 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector *p if (img) { // get file name base - Glib::ustring shortname = removeExtension (Glib::path_get_basename (fname)); - Glib::ustring dirname = Glib::get_tmp_dir (); - Glib::ustring fname = Glib::build_filename (dirname, shortname); + const Glib::ustring shortname = removeExtension (Glib::path_get_basename (fname)); + const Glib::ustring dirname = Glib::get_tmp_dir (); + const Glib::ustring lfname = Glib::build_filename (dirname, shortname); SaveFormat sf; sf.format = "tif"; @@ -2023,13 +2023,13 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector *p sf.tiffUncompressed = true; sf.saveParams = true; - Glib::ustring fileName = Glib::ustring::compose ("%1.%2", fname, sf.format); + Glib::ustring fileName = Glib::ustring::compose ("%1.%2", lfname, sf.format); // TODO: Just list all file with a suitable name instead of brute force... int tries = 1; while (Glib::file_test (fileName, Glib::FILE_TEST_EXISTS) && tries < 1000) { - fileName = Glib::ustring::compose ("%1-%2.%3", fname, tries, sf.format); + fileName = Glib::ustring::compose ("%1-%2.%3", lfname, tries, sf.format); tries++; } diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 00f1a942e..2f6c01a31 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -150,7 +150,7 @@ public: void saveProfile (); Glib::ustring getShortName (); - Glib::ustring getFileName (); + Glib::ustring getFileName () const; bool handleShortcutKey (GdkEventKey* event); bool getIsProcessing() const diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 9f5357644..ed1ae8d6c 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -653,8 +653,8 @@ void RTWindow::remEditorPanel (EditorPanel* ep) set_title_decorated (""); } else { - EditorPanel* ep = static_cast (mainNB->get_nth_page (mainNB->get_current_page())); - set_title_decorated (ep->getFileName()); + const EditorPanel* lep = static_cast (mainNB->get_nth_page (mainNB->get_current_page())); + set_title_decorated (lep->getFileName()); } // TODO: ask what to do: close & apply, close & apply selection, close & revert, cancel From b3b1008270d92fff3b29f1da7351623f836f5107 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sat, 2 Nov 2019 17:29:26 +0100 Subject: [PATCH 54/66] Further reduction of include dependencies --- CMakeLists.txt | 1 + rtgui/CMakeLists.txt | 1 - rtgui/batchqueue.h | 1 + rtgui/batchqueuebuttonset.cc | 2 + rtgui/batchqueuebuttonset.h | 3 +- rtgui/batchtoolpanelcoord.cc | 4 ++ rtgui/cropwindow.cc | 1 + rtgui/editbuffer.h | 4 -- rtgui/editorpanel.cc | 2 + rtgui/editorpanel.h | 2 +- rtgui/editwidgets.cc | 2 + rtgui/editwidgets.h | 4 +- rtgui/editwindow.cc | 1 + rtgui/filebrowser.h | 1 + rtgui/filecatalog.cc | 1 + rtgui/filepanel.cc | 2 + rtgui/filepanel.h | 2 +- rtgui/filethumbnailbuttonset.cc | 2 + rtgui/filethumbnailbuttonset.h | 2 +- rtgui/iccprofilecreator.cc | 10 +++-- rtgui/iccprofilecreator.h | 5 ++- rtgui/ilabel.cc | 66 --------------------------------- rtgui/ilabel.h | 34 ----------------- rtgui/imagearea.cc | 1 + rtgui/lwbutton.cc | 1 + rtgui/lwbutton.h | 2 - rtgui/lwbuttonset.cc | 2 + rtgui/lwbuttonset.h | 3 +- rtgui/main.cc | 4 ++ rtgui/preferences.cc | 2 + rtgui/preferences.h | 5 ++- rtgui/previewwindow.cc | 1 + rtgui/progressconnector.h | 2 +- rtgui/renamedlg.cc | 1 + rtgui/renamedlg.h | 3 +- rtgui/rtwindow.cc | 10 +++++ rtgui/rtwindow.h | 13 +++---- rtgui/thumbbrowserbase.cc | 1 + 38 files changed, 75 insertions(+), 129 deletions(-) delete mode 100644 rtgui/ilabel.cc delete mode 100644 rtgui/ilabel.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b5626512a..d7368f115 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PROC_FLAGS}") # Stop compilation on typos such as std:swap (missing colon will be detected as unused label): set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=unused-label") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=delete-incomplete") # Special treatment for x87 and x86-32 SSE (see GitHub issue #4324) include(FindX87Math) diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index edc2b8202..4b21ce421 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -79,7 +79,6 @@ set(NONCLISOURCEFILES hsvequalizer.cc iccprofilecreator.cc icmpanel.cc - ilabel.cc imagearea.cc imageareapanel.cc impulsedenoise.cc diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index a0c04abee..9ae615965 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -22,6 +22,7 @@ #include #include "batchqueueentry.h" +#include "lwbutton.h" #include "lwbuttonset.h" #include "threadutils.h" #include "thumbbrowserbase.h" diff --git a/rtgui/batchqueuebuttonset.cc b/rtgui/batchqueuebuttonset.cc index a8be9eedf..969a55079 100644 --- a/rtgui/batchqueuebuttonset.cc +++ b/rtgui/batchqueuebuttonset.cc @@ -18,8 +18,10 @@ */ #include "batchqueuebuttonset.h" +#include "lwbutton.h" #include "multilangmgr.h" #include "rtimage.h" +#include "rtsurface.h" bool BatchQueueButtonSet::iconsLoaded = false; diff --git a/rtgui/batchqueuebuttonset.h b/rtgui/batchqueuebuttonset.h index 17f582168..fb45df518 100644 --- a/rtgui/batchqueuebuttonset.h +++ b/rtgui/batchqueuebuttonset.h @@ -21,9 +21,10 @@ #include #include "lwbuttonset.h" -#include "rtsurface.h" class BatchQueueEntry; +class RTSurface; + class BatchQueueButtonSet : public LWButtonSet { diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 760614d5e..8aed3e96f 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -16,6 +16,10 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include "bayerpreprocess.h" +#include "bayerprocess.h" + #include "multilangmgr.h" #include "batchtoolpanelcoord.h" #include "options.h" diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index f0f4cbcba..f44e78a56 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -33,6 +33,7 @@ #include "editcallbacks.h" #include "editbuffer.h" #include "editwidgets.h" +#include "rtsurface.h" #include "../rtengine/dcrop.h" #include "../rtengine/procparams.h" diff --git a/rtgui/editbuffer.h b/rtgui/editbuffer.h index 77afb6449..046ab7364 100644 --- a/rtgui/editbuffer.h +++ b/rtgui/editbuffer.h @@ -22,10 +22,6 @@ #include "../rtengine/coord.h" #include -#ifdef GUIVERSION -#include "rtsurface.h" -#endif - class EditDataProvider; class EditSubscriber; diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 3328dcd65..108b11ea3 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -23,6 +23,7 @@ #include "../rtengine/imagesource.h" #include "../rtengine/iccstore.h" +#include "batchqueue.h" #include "soundman.h" #include "rtimage.h" #include "rtwindow.h" @@ -34,6 +35,7 @@ #include "placesbrowser.h" #include "pathutils.h" #include "thumbnail.h" +#include "toolpanelcoord.h" using namespace rtengine::procparams; diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 2f6c01a31..b577b858f 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -31,7 +31,6 @@ #include "progressconnector.h" #include "saveasdlg.h" #include "thumbnaillistener.h" -#include "toolpanelcoord.h" #include "../rtengine/noncopyable.h" #include "../rtengine/rtengine.h" @@ -39,6 +38,7 @@ class EditorPanel; class MyProgressBar; class Thumbnail; +class ToolPanelCoordinator; struct EditorPanelIdleHelper { EditorPanel* epanel; diff --git a/rtgui/editwidgets.cc b/rtgui/editwidgets.cc index a7996ee42..f7c748744 100644 --- a/rtgui/editwidgets.cc +++ b/rtgui/editwidgets.cc @@ -18,8 +18,10 @@ */ #include "editwidgets.h" + #include "editbuffer.h" #include "editcallbacks.h" +#include "rtsurface.h" #include "../rtengine/rt_math.h" RGBColor Geometry::getInnerLineColor () diff --git a/rtgui/editwidgets.h b/rtgui/editwidgets.h index 9154db31f..d31451ecb 100644 --- a/rtgui/editwidgets.h +++ b/rtgui/editwidgets.h @@ -20,12 +20,14 @@ #ifdef GUIVERSION -#include "rtsurface.h" +#include + #include "editbuffer.h" #include "editcoordsys.h" #include "../rtengine/coord.h" class ObjectMOBuffer; +class RTSurface; /** @file * diff --git a/rtgui/editwindow.cc b/rtgui/editwindow.cc index 50a1484cf..11c0be4e2 100644 --- a/rtgui/editwindow.cc +++ b/rtgui/editwindow.cc @@ -16,6 +16,7 @@ */ #include "editwindow.h" +#include "../rtengine/procparams.h" #include "options.h" #include "preferences.h" #include "cursormanager.h" diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index dc671fe85..b941ea9df 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -27,6 +27,7 @@ #include "exportpanel.h" #include "extprog.h" #include "filebrowserentry.h" +#include "lwbutton.h" #include "partialpastedlg.h" #include "pparamschangelistener.h" #include "../rtengine/profilestore.h" diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 923a15e8d..5e93631e5 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -25,6 +25,7 @@ #include #include "../rtengine/rt_math.h" +#include "../rtengine/procparams.h" #include "guiutils.h" #include "options.h" diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index 0c401a701..8f45343de 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -18,6 +18,8 @@ */ #include "filepanel.h" +#include "batchtoolpanelcoord.h" +#include "editorpanel.h" #include "rtwindow.h" #include "inspector.h" #include "placesbrowser.h" diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h index 9ae91be4d..9db9d99b7 100644 --- a/rtgui/filepanel.h +++ b/rtgui/filepanel.h @@ -20,7 +20,6 @@ #include -#include "batchtoolpanelcoord.h" #include "dirbrowser.h" #include "exportpanel.h" #include "filecatalog.h" @@ -34,6 +33,7 @@ #include "../rtengine/noncopyable.h" +class BatchToolPanelCoordinator; class RTWindow; class FilePanel final : diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc index ef497a535..bb64675a1 100644 --- a/rtgui/filethumbnailbuttonset.cc +++ b/rtgui/filethumbnailbuttonset.cc @@ -20,6 +20,8 @@ #include "rtimage.h" #include "multilangmgr.h" +#include "lwbutton.h" +#include "rtsurface.h" bool FileThumbnailButtonSet::iconsLoaded = false; diff --git a/rtgui/filethumbnailbuttonset.h b/rtgui/filethumbnailbuttonset.h index f4fbc97ed..66d5b5f67 100644 --- a/rtgui/filethumbnailbuttonset.h +++ b/rtgui/filethumbnailbuttonset.h @@ -24,9 +24,9 @@ #include "filebrowserentry.h" #include "lwbuttonset.h" -#include "rtsurface.h" class FileBrowserEntry; +class RTSurface; class FileThumbnailButtonSet : public LWButtonSet diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index d7f9499f6..a8f9be007 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -17,18 +17,20 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ + +#include +#include + #include #include "iccprofilecreator.h" #include "../rtengine/iccstore.h" #include "multilangmgr.h" #include "cachemanager.h" -#include "addsetids.h" #include "../rtengine/color.h" +#include "options.h" #include "pathutils.h" #include "rtimage.h" -#ifdef _OPENMP -#include -#endif +#include "rtwindow.h" const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 950fcc01f..2cd19e14f 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -19,10 +19,13 @@ */ #pragma once +#include + #include #include "adjuster.h" #include -#include "rtwindow.h" + +class RTWindow; class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener { diff --git a/rtgui/ilabel.cc b/rtgui/ilabel.cc deleted file mode 100644 index 9dfd50b89..000000000 --- a/rtgui/ilabel.cc +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ -#include "ilabel.h" - -ILabel::ILabel (const Glib::ustring &lab) : label(lab) {} - -void ILabel::on_realize() -{ - - Gtk::DrawingArea::on_realize(); - add_events(Gdk::EXPOSURE_MASK); - - Glib::RefPtr fn = create_pango_layout(label); - fn->set_markup (label); - int labw, labh; - fn->get_pixel_size (labw, labh); - set_size_request (2 + labw, 2 + labh); -} - -bool ILabel::on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) -{ - - Glib::RefPtr style = get_style_context (); - - Gtk::StateFlags state = get_state_flags(); - Gdk::RGBA c = style->get_background_color(state); - cr->set_source_rgb (c.get_red(), c.get_green(), c.get_blue()); - cr->rectangle (0, 0, get_width (), get_height()); - cr->fill (); - - Glib::RefPtr fn = create_pango_layout (label); - fn->set_markup (label); - cr->move_to(1., 1.); - fn->add_to_cairo_context(cr); - c = style->get_color (state); - cr->set_source_rgb (c.get_red(), c.get_green(), c.get_blue()); - cr->fill(); - - return true; -} - -void ILabel::on_style_updated () -{ - - Glib::RefPtr fn = create_pango_layout(label); - fn->set_markup (label); - int labw, labh; - fn->get_pixel_size (labw, labh); - set_size_request (2 + labw, 2 + labh); -} diff --git a/rtgui/ilabel.h b/rtgui/ilabel.h deleted file mode 100644 index cb9ca00be..000000000 --- a/rtgui/ilabel.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ -#pragma once - -#include - -class ILabel : - public Gtk::DrawingArea -{ - - Glib::ustring label; - -public: - explicit ILabel (const Glib::ustring &lab); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; - void on_realize() override; - void on_style_updated () override; -}; diff --git a/rtgui/imagearea.cc b/rtgui/imagearea.cc index b086f8baf..0be6982f9 100644 --- a/rtgui/imagearea.cc +++ b/rtgui/imagearea.cc @@ -25,6 +25,7 @@ #include "../rtengine/refreshmap.h" #include "../rtengine/procparams.h" #include "options.h" +#include "rtscalable.h" ImageArea::ImageArea (ImageAreaPanel* p) : parent(p), fullImageWidth(0), fullImageHeight(0) { diff --git a/rtgui/lwbutton.cc b/rtgui/lwbutton.cc index b5c10c532..c6c75584d 100644 --- a/rtgui/lwbutton.cc +++ b/rtgui/lwbutton.cc @@ -18,6 +18,7 @@ */ #include "lwbutton.h" #include "guiutils.h" +#include "rtsurface.h" LWButton::LWButton (Cairo::RefPtr i, int aCode, void* aData, Alignment ha, Alignment va, Glib::ustring* tooltip) : xpos(0), ypos(0), halign(ha), valign(va), icon(i), bgr(0.0), bgg(0.0), bgb(0.0), fgr(0.0), fgg(0.0), fgb(0.0), state(Normal), listener(nullptr), actionCode(aCode), actionData(aData), toolTip(tooltip) diff --git a/rtgui/lwbutton.h b/rtgui/lwbutton.h index 7a784e693..a98f1fe46 100644 --- a/rtgui/lwbutton.h +++ b/rtgui/lwbutton.h @@ -19,9 +19,7 @@ #pragma once #include - #include "rtsurface.h" - class LWButton; class LWButtonListener diff --git a/rtgui/lwbuttonset.cc b/rtgui/lwbuttonset.cc index a03b3064b..f475cf0b3 100644 --- a/rtgui/lwbuttonset.cc +++ b/rtgui/lwbuttonset.cc @@ -17,6 +17,8 @@ * along with RawTherapee. If not, see . */ #include "lwbuttonset.h" +#include "lwbutton.h" +#include "rtscalable.h" LWButtonSet::LWButtonSet () : aw(0), ah(0), ax(-1), ay(-1) { diff --git a/rtgui/lwbuttonset.h b/rtgui/lwbuttonset.h index 07d17a135..63bc5a01b 100644 --- a/rtgui/lwbuttonset.h +++ b/rtgui/lwbuttonset.h @@ -19,9 +19,10 @@ #pragma once #include -#include "lwbutton.h" #include +class LWButton; +class LWButtonListener; class LWButtonSet { diff --git a/rtgui/main.cc b/rtgui/main.cc index 1bb840e1e..ae34fc8d0 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -34,12 +34,16 @@ #include #include #include "cachemanager.h" +#include "editorpanel.h" +#include "filecatalog.h" +#include "filepanel.h" #include "options.h" #include "soundman.h" #include "rtimage.h" #include "version.h" #include "extprog.h" #include "../rtengine/dynamicprofile.h" +#include "../rtengine/procparams.h" #ifndef WIN32 #include diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 2676e0940..0bce37af2 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -25,8 +25,10 @@ #include "../rtengine/dfmanager.h" #include "../rtengine/ffmanager.h" #include "../rtengine/iccstore.h" +#include "../rtengine/procparams.h" #include #include "rtimage.h" +#include "rtwindow.h" #ifdef _OPENMP #include #endif diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 62f7c53c1..b4b90e669 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -25,7 +25,10 @@ #include "adjuster.h" #include "dynamicprofilepanel.h" #include "options.h" -#include "rtwindow.h" +#include "../rtengine/profilestore.h" + +class RTWindow; +class Splash; class Preferences : public Gtk::Dialog, diff --git a/rtgui/previewwindow.cc b/rtgui/previewwindow.cc index 3f787a16b..6268fe3d2 100644 --- a/rtgui/previewwindow.cc +++ b/rtgui/previewwindow.cc @@ -21,6 +21,7 @@ #include "imagearea.h" #include "cursormanager.h" #include "options.h" +#include "rtscalable.h" #include "../rtengine/procparams.h" diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h index 32a48473f..eb6eb3a66 100644 --- a/rtgui/progressconnector.h +++ b/rtgui/progressconnector.h @@ -23,7 +23,7 @@ #include #include "guiutils.h" - +#include "multilangmgr.h" #include "../rtengine/rtengine.h" #undef THREAD_PRIORITY_NORMAL diff --git a/rtgui/renamedlg.cc b/rtgui/renamedlg.cc index 81bcd86e5..8908d3419 100644 --- a/rtgui/renamedlg.cc +++ b/rtgui/renamedlg.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include "renamedlg.h" +#include "cacheimagedata.h" #include "multilangmgr.h" #include "rtimage.h" diff --git a/rtgui/renamedlg.h b/rtgui/renamedlg.h index 23f69391f..f9447fbac 100644 --- a/rtgui/renamedlg.h +++ b/rtgui/renamedlg.h @@ -20,11 +20,12 @@ #include -#include "cacheimagedata.h" #include "guiutils.h" #define RESPONSE_ALL 100 +class CacheImageData; + class RenameDialog : public Gtk::Dialog { diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index ed1ae8d6c..c3d735e8f 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -23,10 +23,15 @@ #include "preferences.h" #include "iccprofilecreator.h" #include "cursormanager.h" +#include "editwindow.h" #include "rtimage.h" #include "thumbnail.h" #include "whitebalance.h" #include "../rtengine/settings.h" +#include "batchqueuepanel.h" +#include "editorpanel.h" +#include "filepanel.h" +#include "filmsimulation.h" float fontScale = 1.f; Glib::RefPtr cssForced; @@ -1163,3 +1168,8 @@ void RTWindow::createSetmEditor() mainNB->append_page (*epanel, *editorLabelGrid); } + +bool RTWindow::isSingleTabMode() const +{ + return !options.tabbedUI && ! (options.multiDisplayMode > 0); +} diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index 05d0cc231..39e1581e3 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -25,15 +25,15 @@ #include #endif -#include "batchqueuepanel.h" -#include "editorpanel.h" -#include "editwindow.h" -#include "filepanel.h" #include "progressconnector.h" #include "splash.h" #include "../rtengine/noncopyable.h" +class BatchQueueEntry; +class BatchQueuePanel; +class EditorPanel; +class FilePanel; class RTWindow : public Gtk::Window, public rtengine::ProgressListener, @@ -55,10 +55,7 @@ private: Gtk::Image *iFullscreen, *iFullscreen_exit; - bool isSingleTabMode() - { - return !options.tabbedUI && ! (options.multiDisplayMode > 0); - }; + bool isSingleTabMode() const; bool on_expose_event_epanel (GdkEventExpose* event); bool on_expose_event_fpanel (GdkEventExpose* event); diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index b660afc61..9832b5730 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -20,6 +20,7 @@ #include "multilangmgr.h" #include "options.h" +#include "rtscalable.h" #include "thumbbrowserbase.h" #include "../rtengine/rt_math.h" From 6335b68a809f31cf20cbed9982dd87eabda0e02d Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 3 Nov 2019 14:52:42 +0100 Subject: [PATCH 55/66] Further reduction of include dependencies --- rtengine/FTblockDN.cc | 1 + rtengine/PF_correct_RT.cc | 1 + rtengine/ciecam02.h | 7 ++- rtengine/curves.h | 46 +------------------ rtengine/dcp.cc | 1 + rtengine/dirpyr_equalizer.cc | 2 + rtengine/dual_demosaic_RT.cc | 1 + rtengine/filmnegativeproc.cc | 2 +- rtengine/filmnegativethumb.cc | 2 + rtengine/iccstore.h | 2 - rtengine/iimage.cc | 4 ++ rtengine/iimage.h | 27 +++++------ rtengine/imagesource.h | 5 +++ rtengine/improcfun.cc | 1 + rtengine/improcfun.h | 8 +++- rtengine/init.cc | 1 + rtengine/ipdehaze.cc | 1 + rtengine/iplabregions.cc | 1 + rtengine/ipretinex.cc | 1 + rtengine/ipshadowshighlights.cc | 1 + rtengine/ipsoftlight.cc | 1 + rtengine/ipwavelet.cc | 1 + rtengine/pixelshift.cc | 2 +- rtengine/previewimage.cc | 1 + rtengine/procparams.cc | 1 + rtengine/rawimagesource.h | 1 - rtengine/rtengine.h | 6 ++- rtengine/rtthumbnail.cc | 1 + rtengine/rtthumbnail.h | 1 + rtengine/satandvalueblendingcurve.h | 70 +++++++++++++++++++++++++++++ rtengine/shmap.cc | 1 + rtengine/shmap.h | 6 ++- rtengine/tmo_fattal02.cc | 1 + rtengine/xtrans_demosaic.cc | 1 + rtgui/bayerexposre.h | 0 rtgui/bayerexposure.h | 0 rtgui/colortoning.cc | 1 + rtgui/defringe.cc | 1 + rtgui/dirpyrdenoise.cc | 1 + rtgui/dirpyrequalizer.cc | 2 + rtgui/labcurve.cc | 1 + rtgui/labgrid.cc | 1 + rtgui/mydiagonalcurve.h | 5 ++- rtgui/retinex.cc | 1 + rtgui/wavelet.cc | 1 + 45 files changed, 154 insertions(+), 69 deletions(-) create mode 100644 rtengine/satandvalueblendingcurve.h create mode 100644 rtgui/bayerexposre.h create mode 100644 rtgui/bayerexposure.h diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index b6245fbce..6e1ddf8b4 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -29,6 +29,7 @@ #include "array2D.h" #include "boxblur.h" #include "cplx_wavelet_dec.h" +#include "color.h" #include "curves.h" #include "iccmatrices.h" #include "iccstore.h" diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index e1d6ef808..c851d3d09 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -30,6 +30,7 @@ #include "gauss.h" #include "improcfun.h" #include "cieimage.h" +#include "color.h" #include "curves.h" #include "labimage.h" #include "sleef.c" diff --git a/rtengine/ciecam02.h b/rtengine/ciecam02.h index 68252f2f6..5f5dd9bca 100644 --- a/rtengine/ciecam02.h +++ b/rtengine/ciecam02.h @@ -20,9 +20,14 @@ #include -#include "LUT.h" #include "opthelper.h" +template +class LUT; + +using LUTu = LUT; +using LUTf = LUT; + namespace rtengine { diff --git a/rtengine/curves.h b/rtengine/curves.h index 9c5a84eac..b8b72d0eb 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -25,13 +25,12 @@ #include #include "rt_math.h" -#include "color.h" #include "flatcurvetypes.h" #include "diagonalcurvetypes.h" #include "pipettebuffer.h" #include "noncopyable.h" #include "LUT.h" - +#include "sleef.c" #define CURVES_MIN_POLY_POINTS 1000 #include "rt_math.h" @@ -894,12 +893,6 @@ public: float *r, float *g, float *b) const; }; -class SatAndValueBlendingToneCurve : public ToneCurve -{ -public: - void Apply(float& r, float& g, float& b) const; -}; - class WeightedStdToneCurve : public ToneCurve { private: @@ -1269,43 +1262,6 @@ inline void WeightedStdToneCurve::BatchApply(const size_t start, const size_t en #endif } -// Tone curve modifying the value channel only, preserving hue and saturation -// values in 0xffff space -inline void SatAndValueBlendingToneCurve::Apply (float& ir, float& ig, float& ib) const -{ - - assert (lutToneCurve); - - float r = CLIP(ir); - float g = CLIP(ig); - float b = CLIP(ib); - - const float lum = (r + g + b) / 3.f; - const float newLum = lutToneCurve[lum]; - - if (newLum == lum) { - return; - } - - float h, s, v; - Color::rgb2hsvtc(r, g, b, h, s, v); - - float dV; - if (newLum > lum) { - // Linearly targeting Value = 1 and Saturation = 0 - const float coef = (newLum - lum) / (65535.f - lum); - dV = (1.f - v) * coef; - s *= 1.f - coef; - } else { - // Linearly targeting Value = 0 - const float coef = (newLum - lum) / lum ; - dV = v * coef; - } - Color::hsv2rgbdcp(h, s, v + dV, r, g, b); - - setUnlessOOG(ir, ig, ib, r, g, b); -} - } #undef CLIPI diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index d3ab1b3f1..11fe306b8 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -28,6 +28,7 @@ #include "dcp.h" #include "cJSON.h" +#include "color.h" #include "iccmatrices.h" #include "iccstore.h" #include "imagefloat.h" diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index 6fd4f002c..1f62badcb 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -24,7 +24,9 @@ #include "array2D.h" #include "cieimage.h" +#include "color.h" #include "improcfun.h" +#include "LUT.h" #include "opthelper.h" #include "rt_math.h" #include "settings.h" diff --git a/rtengine/dual_demosaic_RT.cc b/rtengine/dual_demosaic_RT.cc index 8a3564279..b5839ee8b 100644 --- a/rtengine/dual_demosaic_RT.cc +++ b/rtengine/dual_demosaic_RT.cc @@ -23,6 +23,7 @@ // //////////////////////////////////////////////////////////////// +#include "color.h" #include "jaggedarray.h" #include "procparams.h" #include "rawimagesource.h" diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index f373f8c14..73156d1e3 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -32,7 +32,7 @@ #include "procparams.h" #include "rt_algo.h" #include "rtengine.h" - +#include "sleef.c" //#define BENCHMARK #include "StopWatch.h" diff --git a/rtengine/filmnegativethumb.cc b/rtengine/filmnegativethumb.cc index 1e52300d4..fa50e93bf 100644 --- a/rtengine/filmnegativethumb.cc +++ b/rtengine/filmnegativethumb.cc @@ -18,9 +18,11 @@ */ #include +#include "LUT.h" #include "rtengine.h" #include "rtthumbnail.h" #include "opthelper.h" +#include "sleef.c" #include "rt_algo.h" #include "settings.h" #include "procparams.h" diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h index cc67c6152..731a155bb 100644 --- a/rtengine/iccstore.h +++ b/rtengine/iccstore.h @@ -27,8 +27,6 @@ #include -#include "color.h" - namespace rtengine { diff --git a/rtengine/iimage.cc b/rtengine/iimage.cc index a1ec979a1..a8bcf9368 100644 --- a/rtengine/iimage.cc +++ b/rtengine/iimage.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ +#include "color.h" #include "procparams.h" #include "rtengine.h" @@ -45,3 +46,6 @@ int rtengine::getCoarseBitMask( const procparams::CoarseTransformParams &coarse) return tr; } +int rtengine::igammasrgb(float in) { + return Color::igamma_srgb(in); +} diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 3c39b7659..73e38b45f 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -21,9 +21,9 @@ #include #include +#include #include "alignedbuffer.h" -#include "color.h" #include "coord2d.h" #include "imagedimensions.h" #include "LUT.h" @@ -59,6 +59,7 @@ extern const char sImage16[]; extern const char sImagefloat[]; int getCoarseBitMask(const procparams::CoarseTransformParams& coarse); +int igammasrgb(float in); enum TypeInterpolation { TI_Nearest, TI_Bilinear }; @@ -964,9 +965,9 @@ public: convertTo(r(i, j), r_); convertTo(g(i, j), g_); convertTo(b(i, j), b_); - histogram[(int)Color::igamma_srgb (r_) >> histcompr]++; - histogram[(int)Color::igamma_srgb (g_) >> histcompr]++; - histogram[(int)Color::igamma_srgb (b_) >> histcompr]++; + histogram[igammasrgb (r_) >> histcompr]++; + histogram[igammasrgb (g_) >> histcompr]++; + histogram[igammasrgb (b_) >> histcompr]++; } } @@ -982,9 +983,9 @@ public: convertTo(r(i, j), r_); convertTo(g(i, j), g_); convertTo(b(i, j), b_); - int rtemp = Color::igamma_srgb (r_); - int gtemp = Color::igamma_srgb (g_); - int btemp = Color::igamma_srgb (b_); + int rtemp = igammasrgb (r_); + int gtemp = igammasrgb (g_); + int btemp = igammasrgb (b_); histogram[rtemp >> compression]++; histogram[gtemp >> compression] += 2; @@ -1573,9 +1574,9 @@ public: convertTo(r(i, j), r_); convertTo(g(i, j), g_); convertTo(b(i, j), b_); - histogram[(int)Color::igamma_srgb (r_) >> histcompr]++; - histogram[(int)Color::igamma_srgb (g_) >> histcompr]++; - histogram[(int)Color::igamma_srgb (b_) >> histcompr]++; + histogram[igammasrgb (r_) >> histcompr]++; + histogram[igammasrgb (g_) >> histcompr]++; + histogram[igammasrgb (b_) >> histcompr]++; } } @@ -1591,9 +1592,9 @@ public: convertTo(r(i, j), r_); convertTo(g(i, j), g_); convertTo(b(i, j), b_); - int rtemp = Color::igamma_srgb (r_); - int gtemp = Color::igamma_srgb (g_); - int btemp = Color::igamma_srgb (b_); + int rtemp = igammasrgb (r_); + int gtemp = igammasrgb (g_); + int btemp = igammasrgb (b_); histogram[rtemp >> compression]++; histogram[gtemp >> compression] += 2; diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index 6b5a22b63..e0c26aa9f 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -28,6 +28,11 @@ #include "LUT.h" #include "rtengine.h" +template +class LUT; + +using LUTf = LUT; + template class multi_array2D; diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index b1bff49a0..b58c60780 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -42,6 +42,7 @@ #include "improccoordinator.h" #include "clutstore.h" #include "ciecam02.h" +#include "satandvalueblendingcurve.h" #include "StopWatch.h" #include "procparams.h" #include "../rtgui/ppversion.h" diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 2c4efbfe9..2229987a1 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -20,13 +20,17 @@ #include -#include "color.h" #include "coord2d.h" #include "gamutwarning.h" -#include "LUT.h" #include "pipettebuffer.h" #include "shmap.h" +template +class LUT; + +using LUTu = LUT; +using LUTf = LUT; + template class multi_array2D; namespace rtengine diff --git a/rtengine/init.cc b/rtengine/init.cc index 453374e3a..1a00f7ff6 100644 --- a/rtengine/init.cc +++ b/rtengine/init.cc @@ -18,6 +18,7 @@ */ #include #include "../rtgui/profilestorecombobox.h" +#include "color.h" #include "rtengine.h" #include "iccstore.h" #include "dcp.h" diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc index c9579cf05..28a0f2d57 100644 --- a/rtengine/ipdehaze.cc +++ b/rtengine/ipdehaze.cc @@ -32,6 +32,7 @@ #include #include +#include "color.h" #include "guidedfilter.h" #include "iccstore.h" #include "imagefloat.h" diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index cea23bc6b..305a449ee 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -22,6 +22,7 @@ #include #endif +#include "color.h" #include "curves.h" #include "guidedfilter.h" #include "iccstore.h" diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index ab3a632da..b5d504a99 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -41,6 +41,7 @@ #include #include +#include "color.h" #include "curves.h" #include "gauss.h" #include "improcfun.h" diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index 0eceb5a3b..45031da53 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -20,6 +20,7 @@ #include "improcfun.h" +#include "color.h" #include "curves.h" #include "gauss.h" #include "guidedfilter.h" diff --git a/rtengine/ipsoftlight.cc b/rtengine/ipsoftlight.cc index ab2e7c8b1..41d0d48bf 100644 --- a/rtengine/ipsoftlight.cc +++ b/rtengine/ipsoftlight.cc @@ -19,6 +19,7 @@ * along with RawTherapee. If not, see . */ +#include "color.h" #include "iccstore.h" #include "improcfun.h" #include "labimage.h" diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 78a4dd509..08b317e4c 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -29,6 +29,7 @@ #include "../rtgui/threadutils.h" #include "array2D.h" +#include "color.h" #include "curves.h" #include "EdgePreservingDecomposition.h" #include "iccstore.h" diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index 9cb5844c2..7a6b6db41 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -28,7 +28,7 @@ #include "median.h" #include "procparams.h" #include "rawimagesource.h" - +#include "sleef.c" #include "../rtgui/multilangmgr.h" #include "../rtgui/options.h" diff --git a/rtengine/previewimage.cc b/rtengine/previewimage.cc index 7216e6a34..de1603f1c 100644 --- a/rtengine/previewimage.cc +++ b/rtengine/previewimage.cc @@ -19,6 +19,7 @@ #include "previewimage.h" +#include "color.h" #include "iimage.h" #include "iimage.h" #include "procparams.h" diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index df5ac40a9..c09da1e84 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -26,6 +26,7 @@ #include #include +#include "color.h" #include "curves.h" #include "procparams.h" #include "utils.h" diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 82e842ad3..f876fecb4 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -23,7 +23,6 @@ #include #include "array2D.h" -#include "color.h" #include "colortemp.h" #include "iimage.h" #include "imagesource.h" diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 287759009..0473622c4 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -29,7 +29,6 @@ #include "iimage.h" #include "imageformat.h" -#include "LUT.h" #include "procevents.h" #include "rawmetadatalocation.h" #include "rt_math.h" @@ -43,6 +42,11 @@ * */ +template +class LUT; + +using LUTu = LUT; + class EditDataProvider; namespace rtexif { diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index d6ff53750..b1953bb3d 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -27,6 +27,7 @@ #include #include "cieimage.h" +#include "color.h" #include "colortemp.h" #include "curves.h" #include "dcp.h" diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 473c74e7c..dcc9596f6 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -25,6 +25,7 @@ #include "image16.h" #include "image8.h" #include "imagefloat.h" +#include "LUT.h" #include "rawmetadatalocation.h" #include "../rtgui/threadutils.h" diff --git a/rtengine/satandvalueblendingcurve.h b/rtengine/satandvalueblendingcurve.h new file mode 100644 index 000000000..c610652b4 --- /dev/null +++ b/rtengine/satandvalueblendingcurve.h @@ -0,0 +1,70 @@ +/* + * 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 . + */ +#pragma once + +#include "color.h" +#include "curves.h" + +namespace rtengine +{ + +class SatAndValueBlendingToneCurve : public ToneCurve +{ +public: + void Apply(float& r, float& g, float& b) const; +}; + +// Tone curve modifying the value channel only, preserving hue and saturation +// values in 0xffff space +inline void SatAndValueBlendingToneCurve::Apply (float& ir, float& ig, float& ib) const +{ + + assert (lutToneCurve); + + float r = CLIP(ir); + float g = CLIP(ig); + float b = CLIP(ib); + + const float lum = (r + g + b) / 3.f; + const float newLum = lutToneCurve[lum]; + + if (newLum == lum) { + return; + } + + float h, s, v; + Color::rgb2hsvtc(r, g, b, h, s, v); + + float dV; + if (newLum > lum) { + // Linearly targeting Value = 1 and Saturation = 0 + const float coef = (newLum - lum) / (65535.f - lum); + dV = (1.f - v) * coef; + s *= 1.f - coef; + } else { + // Linearly targeting Value = 0 + const float coef = (newLum - lum) / lum ; + dV = v * coef; + } + Color::hsv2rgbdcp(h, s, v + dV, r, g, b); + + setUnlessOOG(ir, ig, ib, r, g, b); +} + +} diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index 36582df39..d0c34e925 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -22,6 +22,7 @@ #include "rtengine.h" #include "rt_math.h" #include "rawimagesource.h" +#include "sleef.c" #include "jaggedarray.h" #undef THREAD_PRIORITY_NORMAL #include "opthelper.h" diff --git a/rtengine/shmap.h b/rtengine/shmap.h index b40e872bb..5373b8302 100644 --- a/rtengine/shmap.h +++ b/rtengine/shmap.h @@ -18,9 +18,13 @@ */ #pragma once -#include "LUT.h" #include "noncopyable.h" +template +class LUT; + +using LUTf = LUT; + namespace rtengine { diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index d28606edb..173171e0e 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -66,6 +66,7 @@ #include #include "array2D.h" +#include "color.h" #include "iccstore.h" #include "imagefloat.h" #include "improcfun.h" diff --git a/rtengine/xtrans_demosaic.cc b/rtengine/xtrans_demosaic.cc index 418d369b8..c1a526535 100644 --- a/rtengine/xtrans_demosaic.cc +++ b/rtengine/xtrans_demosaic.cc @@ -19,6 +19,7 @@ // //////////////////////////////////////////////////////////////// +#include "color.h" #include "rtengine.h" #include "rawimage.h" #include "rawimagesource.h" diff --git a/rtgui/bayerexposre.h b/rtgui/bayerexposre.h new file mode 100644 index 000000000..e69de29bb diff --git a/rtgui/bayerexposure.h b/rtgui/bayerexposure.h new file mode 100644 index 000000000..e69de29bb diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index f177602a3..1a6a9b918 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -7,6 +7,7 @@ #include "eventmapper.h" #include "labgrid.h" #include "options.h" +#include "../rtengine/color.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/defringe.cc b/rtgui/defringe.cc index 8aa79dddd..7114f9a52 100644 --- a/rtgui/defringe.cc +++ b/rtgui/defringe.cc @@ -22,6 +22,7 @@ #include "defringe.h" #include "options.h" +#include "../rtengine/color.h" #include "../rtengine/procparams.h" using namespace rtengine; diff --git a/rtgui/dirpyrdenoise.cc b/rtgui/dirpyrdenoise.cc index dd695eecf..b429dfc9f 100644 --- a/rtgui/dirpyrdenoise.cc +++ b/rtgui/dirpyrdenoise.cc @@ -25,6 +25,7 @@ #include "guiutils.h" #include "options.h" +#include "../rtengine/color.h" #include "../rtengine/procparams.h" using namespace rtengine; diff --git a/rtgui/dirpyrequalizer.cc b/rtgui/dirpyrequalizer.cc index fc03c83ad..fd0268efa 100644 --- a/rtgui/dirpyrequalizer.cc +++ b/rtgui/dirpyrequalizer.cc @@ -19,6 +19,8 @@ #include "dirpyrequalizer.h" +#include "../rtengine/color.h" + using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index fd1065269..bd4b27f14 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -22,6 +22,7 @@ #include "options.h" +#include "../rtengine/color.h" #include "../rtengine/improcfun.h" #include "../rtengine/procparams.h" #include "editcallbacks.h" diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index fa452815e..516dbb825 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -38,6 +38,7 @@ #include "labgrid.h" +#include "../rtengine/color.h" #include "options.h" #include "rtimage.h" diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index d9f2518fb..a71c0565c 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -26,9 +26,12 @@ #include "curvelistener.h" #include "mycurve.h" -#include "../rtengine/LUT.h" #include "../rtengine/diagonalcurvetypes.h" +template +class LUT; + +using LUTf = LUT; class DiagonalCurveDescr { diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index dddf1da20..33f1c2f6a 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -5,6 +5,7 @@ #include "mycurve.h" #include "rtimage.h" #include "options.h" +#include "../rtengine/color.h" using namespace rtengine; using namespace rtengine::procparams; diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 6e49d36b9..4fd3a7b8f 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -24,6 +24,7 @@ #include "guiutils.h" #include "rtimage.h" #include "options.h" +#include "../rtengine/color.h" using namespace rtengine; using namespace rtengine::procparams; From e66ed090a71a3c420944d112d4ff94628eb6282b Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 3 Nov 2019 14:53:57 +0100 Subject: [PATCH 56/66] remove two accidently committed files --- rtgui/bayerexposre.h | 0 rtgui/bayerexposure.h | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rtgui/bayerexposre.h delete mode 100644 rtgui/bayerexposure.h diff --git a/rtgui/bayerexposre.h b/rtgui/bayerexposre.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/rtgui/bayerexposure.h b/rtgui/bayerexposure.h deleted file mode 100644 index e69de29bb..000000000 From ee6dd7d0d1f88d06ee825f1454bdc4715f226159 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 3 Nov 2019 16:14:16 +0100 Subject: [PATCH 57/66] reduce dependencies --- rtengine/capturesharpening.cc | 3 --- rtengine/curves.cc | 3 --- rtengine/filmnegativeproc.cc | 4 ---- rtengine/iplabregions.cc | 4 ---- rtengine/iplocalcontrast.cc | 4 ---- rtengine/iptransform.cc | 4 ---- rtengine/ipvibrance.cc | 4 ---- 7 files changed, 26 deletions(-) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index bbc0be50b..80693c8b7 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -29,9 +29,6 @@ #include "rt_algo.h" //#define BENCHMARK #include "StopWatch.h" -#ifdef _OPENMP -#include -#endif #include "opthelper.h" #include "../rtgui/multilangmgr.h" diff --git a/rtengine/curves.cc b/rtengine/curves.cc index eb6cc57c3..b2105a091 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -23,9 +23,6 @@ #include #include #include -#ifdef _OPENMP -#include -#endif #include "rt_math.h" diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 73156d1e3..1ceff7e20 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -19,10 +19,6 @@ #include #include -#ifdef _OPENMP -#include -#endif - #include "rawimage.h" #include "rawimagesource.h" diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index 305a449ee..e3755f0fc 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -18,10 +18,6 @@ * along with RawTherapee. If not, see . */ -#ifdef _OPENMP -#include -#endif - #include "color.h" #include "curves.h" #include "guidedfilter.h" diff --git a/rtengine/iplocalcontrast.cc b/rtengine/iplocalcontrast.cc index d6f3ebb5b..daeb142dd 100644 --- a/rtengine/iplocalcontrast.cc +++ b/rtengine/iplocalcontrast.cc @@ -22,10 +22,6 @@ * along with RawTherapee. If not, see . */ -#ifdef _OPENMP -#include -#endif - #include "array2D.h" #include "gauss.h" #include "labimage.h" diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index 640fab2a6..b6ffcec1c 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -18,10 +18,6 @@ */ #include -#ifdef _OPENMP -#include -#endif - #include "imagefloat.h" #include "improcfun.h" diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index b46cfb413..14e5f3c44 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -28,10 +28,6 @@ #include "color.h" #include "procparams.h" #include "StopWatch.h" -#ifdef _OPENMP -#include -#endif - using namespace std; From ec3ba6d9b8764b8fd728b01ce679bb639862a778 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 3 Nov 2019 17:03:40 +0100 Subject: [PATCH 58/66] renamed sleef.c to sleef.h --- rtengine/EdgePreservingDecomposition.cc | 2 +- rtengine/FTblockDN.cc | 2 +- rtengine/PF_correct_RT.cc | 2 +- rtengine/amaze_demosaic_RT.cc | 2 +- rtengine/ciecam02.cc | 2 +- rtengine/color.cc | 2 +- rtengine/color.h | 2 +- rtengine/colortemp.cc | 2 +- rtengine/curves.h | 2 +- rtengine/demosaic_algos.cc | 2 +- rtengine/filmnegativeproc.cc | 2 +- rtengine/filmnegativethumb.cc | 2 +- rtengine/impulse_denoise.cc | 2 +- rtengine/iplabregions.cc | 3 +-- rtengine/ipresize.cc | 2 +- rtengine/ipshadowshighlights.cc | 3 +-- rtengine/ipsharpen.cc | 2 +- rtengine/iptransform.cc | 2 +- rtengine/ipwavelet.cc | 2 +- rtengine/pixelshift.cc | 2 +- rtengine/rt_algo.cc | 2 +- rtengine/shmap.cc | 2 +- rtengine/{sleef.c => sleef.h} | 6 +----- rtengine/tmo_fattal02.cc | 2 +- 24 files changed, 24 insertions(+), 30 deletions(-) rename rtengine/{sleef.c => sleef.h} (99%) diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index 85770826e..700181e1d 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -4,7 +4,7 @@ #ifdef _OPENMP #include #endif -#include "sleef.c" +#include "sleef.h" #define DIAGONALS 5 #define DIAGONALSP1 6 diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 6e1ddf8b4..ea0565b21 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -42,7 +42,7 @@ #include "opthelper.h" #include "procparams.h" #include "rt_math.h" -#include "sleef.c" +#include "sleef.h" #include "../rtgui/threadutils.h" #include "../rtgui/options.h" diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index c851d3d09..9a95b8e2f 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -33,7 +33,7 @@ #include "color.h" #include "curves.h" #include "labimage.h" -#include "sleef.c" +#include "sleef.h" #include "curves.h" #include "rt_math.h" #include "opthelper.h" diff --git a/rtengine/amaze_demosaic_RT.cc b/rtengine/amaze_demosaic_RT.cc index 41c60d4ed..11ff1f5a0 100644 --- a/rtengine/amaze_demosaic_RT.cc +++ b/rtengine/amaze_demosaic_RT.cc @@ -30,7 +30,7 @@ #include "rawimagesource.h" #include "rt_math.h" #include "../rtgui/multilangmgr.h" -#include "sleef.c" +#include "sleef.h" #include "opthelper.h" #include "median.h" #include "StopWatch.h" diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index 0553c129e..8314e5e8f 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -20,7 +20,7 @@ #include "rt_math.h" #include "curves.h" #include -#include "sleef.c" +#include "sleef.h" #ifdef _DEBUG #include "settings.h" diff --git a/rtengine/color.cc b/rtengine/color.cc index 8437a36b1..8d20fb9ba 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -20,7 +20,7 @@ #include "rtengine.h" #include "color.h" #include "iccmatrices.h" -#include "sleef.c" +#include "sleef.h" #include "opthelper.h" #include "iccstore.h" diff --git a/rtengine/color.h b/rtengine/color.h index abe67d906..a89778157 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -26,7 +26,7 @@ #include "LUT.h" #include "iccmatrices.h" #include "lcms2.h" -#include "sleef.c" +#include "sleef.h" #define SAT(a,b,c) ((float)max(a,b,c)-(float)min(a,b,c))/(float)max(a,b,c) diff --git a/rtengine/colortemp.cc b/rtengine/colortemp.cc index 413880d49..02d3e0e6d 100644 --- a/rtengine/colortemp.cc +++ b/rtengine/colortemp.cc @@ -25,7 +25,7 @@ #include #include #include -#include "sleef.c" +#include "sleef.h" #include "settings.h" namespace rtengine diff --git a/rtengine/curves.h b/rtengine/curves.h index b8b72d0eb..bc8193b76 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -30,7 +30,7 @@ #include "pipettebuffer.h" #include "noncopyable.h" #include "LUT.h" -#include "sleef.c" +#include "sleef.h" #define CURVES_MIN_POLY_POINTS 1000 #include "rt_math.h" diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 4058534da..45779fc9c 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -25,7 +25,7 @@ #include "rt_math.h" #include "color.h" #include "../rtgui/multilangmgr.h" -#include "sleef.c" +#include "sleef.h" #include "opthelper.h" #include "median.h" //#define BENCHMARK diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 1ceff7e20..86bad00f7 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -28,7 +28,7 @@ #include "procparams.h" #include "rt_algo.h" #include "rtengine.h" -#include "sleef.c" +#include "sleef.h" //#define BENCHMARK #include "StopWatch.h" diff --git a/rtengine/filmnegativethumb.cc b/rtengine/filmnegativethumb.cc index fa50e93bf..b31432a55 100644 --- a/rtengine/filmnegativethumb.cc +++ b/rtengine/filmnegativethumb.cc @@ -22,7 +22,7 @@ #include "rtengine.h" #include "rtthumbnail.h" #include "opthelper.h" -#include "sleef.c" +#include "sleef.h" #include "rt_algo.h" #include "settings.h" #include "procparams.h" diff --git a/rtengine/impulse_denoise.cc b/rtengine/impulse_denoise.cc index c08f55700..20229e714 100644 --- a/rtengine/impulse_denoise.cc +++ b/rtengine/impulse_denoise.cc @@ -22,7 +22,7 @@ #include "labimage.h" #include "improcfun.h" #include "cieimage.h" -#include "sleef.c" +#include "sleef.h" #include "opthelper.h" #include "gauss.h" diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc index e3755f0fc..1768101c8 100644 --- a/rtengine/iplabregions.cc +++ b/rtengine/iplabregions.cc @@ -25,8 +25,7 @@ #include "improcfun.h" #include "labimage.h" #include "procparams.h" - -#include "sleef.c" +#include "sleef.h" //#define BENCHMARK #include "StopWatch.h" diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index b31fcf864..b9e234b63 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -25,7 +25,7 @@ #include "opthelper.h" #include "rt_math.h" #include "procparams.h" -#include "sleef.c" +#include "sleef.h" //#define PROFILE diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index 45031da53..a602c5460 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -28,8 +28,7 @@ #include "labimage.h" #include "opthelper.h" #include "procparams.h" - -#include "sleef.c" +#include "sleef.h" namespace rtengine { diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 0758011bb..a35476d3a 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -28,7 +28,7 @@ #include "rt_algo.h" #include "rt_math.h" #include "settings.h" -#include "sleef.c" +#include "sleef.h" //#define BENCHMARK #include "StopWatch.h" diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index b6ffcec1c..a4f304413 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -25,7 +25,7 @@ #include "rt_math.h" #include "rtengine.h" #include "rtlensfun.h" -#include "sleef.c" +#include "sleef.h" using namespace std; diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 08b317e4c..91c7d6c44 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -41,7 +41,7 @@ #include "procparams.h" #include "rt_math.h" #include "rtengine.h" -#include "sleef.c" +#include "sleef.h" #include "../rtgui/options.h" #ifdef _OPENMP diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index 7a6b6db41..0d83d7af3 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -28,7 +28,7 @@ #include "median.h" #include "procparams.h" #include "rawimagesource.h" -#include "sleef.c" +#include "sleef.h" #include "../rtgui/multilangmgr.h" #include "../rtgui/options.h" diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index aadbac7f7..b02e75461 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -31,7 +31,7 @@ #include "opthelper.h" #include "rt_algo.h" #include "rt_math.h" -#include "sleef.c" +#include "sleef.h" namespace { float calcBlendFactor(float val, float threshold) { diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index d0c34e925..44096d965 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -22,7 +22,7 @@ #include "rtengine.h" #include "rt_math.h" #include "rawimagesource.h" -#include "sleef.c" +#include "sleef.h" #include "jaggedarray.h" #undef THREAD_PRIORITY_NORMAL #include "opthelper.h" diff --git a/rtengine/sleef.c b/rtengine/sleef.h similarity index 99% rename from rtengine/sleef.c rename to rtengine/sleef.h index a01aef5b9..30c059010 100644 --- a/rtengine/sleef.c +++ b/rtengine/sleef.h @@ -6,9 +6,7 @@ // This version contains modifications made by Ingo Weyrich // //////////////////////////////////////////////////////////////// - -#ifndef _SLEEFC_ -#define _SLEEFC_ +#pragma once #include #include @@ -1275,5 +1273,3 @@ __inline float xlog2lin(float x, float base) constexpr float one(1); return (pow_F(base, x) - one) / (base - one); } - -#endif diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index 173171e0e..feba5c95f 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -75,7 +75,7 @@ #include "rescale.h" #include "rt_algo.h" #include "settings.h" -#include "sleef.c" +#include "sleef.h" #include "StopWatch.h" namespace rtengine From 9f3251eb561d750692149d6d0a7f691b7d08e36f Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sun, 3 Nov 2019 23:30:34 +0100 Subject: [PATCH 59/66] fix lgtm issue --- rtengine/rawflatfield.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/rawflatfield.cc b/rtengine/rawflatfield.cc index 04012debf..05b3be408 100644 --- a/rtengine/rawflatfield.cc +++ b/rtengine/rawflatfield.cc @@ -33,7 +33,7 @@ namespace { void cfaboxblur(const float* const * riFlatFile, float* cfablur, int boxH, int boxW, int H, int W) { if (boxW < 0 || boxH < 0 || (boxW == 0 && boxH == 0)) { // nothing to blur or negative values - memcpy(cfablur, riFlatFile[0], W * H * sizeof(float)); + memcpy(cfablur, riFlatFile[0], static_cast(W) * H * sizeof(float)); return; } From 7ef19b51264191b919da76fb11718ac193b9da32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Mon, 4 Nov 2019 14:48:06 +0100 Subject: [PATCH 60/66] Fix GCC 9.2.1 build --- rtengine/ciecam02.h | 1 + 1 file changed, 1 insertion(+) diff --git a/rtengine/ciecam02.h b/rtengine/ciecam02.h index 5f5dd9bca..8b532fba0 100644 --- a/rtengine/ciecam02.h +++ b/rtengine/ciecam02.h @@ -19,6 +19,7 @@ #pragma once #include +#include #include "opthelper.h" From 0544d15b16a1dd9fa4d1ee4eb160e021b77d8f86 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 4 Nov 2019 15:10:28 +0100 Subject: [PATCH 61/66] Fix slowdown when creating thumb from non-raw file --- rtengine/iimage.cc | 7 ++-- rtengine/iimage.h | 95 +++++++++++++++++++++++++++++++++------------- 2 files changed, 73 insertions(+), 29 deletions(-) diff --git a/rtengine/iimage.cc b/rtengine/iimage.cc index a8bcf9368..f4a2a6523 100644 --- a/rtengine/iimage.cc +++ b/rtengine/iimage.cc @@ -46,6 +46,7 @@ int rtengine::getCoarseBitMask( const procparams::CoarseTransformParams &coarse) return tr; } -int rtengine::igammasrgb(float in) { - return Color::igamma_srgb(in); -} + +const LUTf& rtengine::getigammatab() { + return Color::igammatab_srgb; +} \ No newline at end of file diff --git a/rtengine/iimage.h b/rtengine/iimage.h index 73e38b45f..7309dd91f 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -59,7 +59,7 @@ extern const char sImage16[]; extern const char sImagefloat[]; int getCoarseBitMask(const procparams::CoarseTransformParams& coarse); -int igammasrgb(float in); +const LUTf& getigammatab(); enum TypeInterpolation { TI_Nearest, TI_Bilinear }; @@ -958,17 +958,35 @@ public: histogram(65536 >> histcompr); histogram.clear(); + const LUTf& igammatab = getigammatab(); - for (int i = 0; i < height; i++) - for (int j = 0; j < width; j++) { - float r_, g_, b_; - convertTo(r(i, j), r_); - convertTo(g(i, j), g_); - convertTo(b(i, j), b_); - histogram[igammasrgb (r_) >> histcompr]++; - histogram[igammasrgb (g_) >> histcompr]++; - histogram[igammasrgb (b_) >> histcompr]++; +#ifdef _OPENMP + #pragma omp parallel +#endif + { + LUTu histThr(histogram.getSize()); + histThr.clear(); +#ifdef _OPENMP + #pragma omp for schedule(dynamic,16) nowait +#endif + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + float r_, g_, b_; + convertTo(r(i, j), r_); + convertTo(g(i, j), g_); + convertTo(b(i, j), b_); + histThr[static_cast(igammatab[r_]) >> histcompr]++; + histThr[static_cast(igammatab[g_]) >> histcompr]++; + histThr[static_cast(igammatab[b_]) >> histcompr]++; + } } +#ifdef _OPENMP + #pragma omp critical +#endif + { + histogram += histThr; + } + } } void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override @@ -976,16 +994,16 @@ public: histogram.clear(); avg_r = avg_g = avg_b = 0.; n = 0; - + const LUTf& igammatab = getigammatab(); for (unsigned int i = 0; i < (unsigned int)(height); i++) for (unsigned int j = 0; j < (unsigned int)(width); j++) { float r_, g_, b_; convertTo(r(i, j), r_); convertTo(g(i, j), g_); convertTo(b(i, j), b_); - int rtemp = igammasrgb (r_); - int gtemp = igammasrgb (g_); - int btemp = igammasrgb (b_); + int rtemp = igammatab[r_]; + int gtemp = igammatab[g_]; + int btemp = igammatab[b_]; histogram[rtemp >> compression]++; histogram[gtemp >> compression] += 2; @@ -1012,6 +1030,9 @@ public: int n = 0; //int p = 6; +#ifdef _OPENMP + #pragma omp parallel for reduction(+:avg_r,avg_g,avg_b,n) schedule(dynamic,16) +#endif for (unsigned int i = 0; i < (unsigned int)(height); i++) for (unsigned int j = 0; j < (unsigned int)(width); j++) { float r_, g_, b_; @@ -1567,17 +1588,35 @@ public: histogram(65536 >> histcompr); histogram.clear(); + const LUTf& igammatab = getigammatab(); - for (int i = 0; i < height; i++) - for (int j = 0; j < width; j++) { - float r_, g_, b_; - convertTo(r(i, j), r_); - convertTo(g(i, j), g_); - convertTo(b(i, j), b_); - histogram[igammasrgb (r_) >> histcompr]++; - histogram[igammasrgb (g_) >> histcompr]++; - histogram[igammasrgb (b_) >> histcompr]++; +#ifdef _OPENMP + #pragma omp parallel +#endif + { + LUTu histThr(histogram.getSize()); + histThr.clear(); +#ifdef _OPENMP + #pragma omp for schedule(dynamic,16) nowait +#endif + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + float r_, g_, b_; + convertTo(r(i, j), r_); + convertTo(g(i, j), g_); + convertTo(b(i, j), b_); + histThr[static_cast(igammatab[r_]) >> histcompr]++; + histThr[static_cast(igammatab[g_]) >> histcompr]++; + histThr[static_cast(igammatab[b_]) >> histcompr]++; + } } +#ifdef _OPENMP + #pragma omp critical +#endif + { + histogram += histThr; + } + } } void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override @@ -1585,6 +1624,7 @@ public: histogram.clear(); avg_r = avg_g = avg_b = 0.; n = 0; + const LUTf& igammatab = getigammatab(); for (unsigned int i = 0; i < (unsigned int)(height); i++) for (unsigned int j = 0; j < (unsigned int)(width); j++) { @@ -1592,9 +1632,9 @@ public: convertTo(r(i, j), r_); convertTo(g(i, j), g_); convertTo(b(i, j), b_); - int rtemp = igammasrgb (r_); - int gtemp = igammasrgb (g_); - int btemp = igammasrgb (b_); + int rtemp = igammatab[r_]; + int gtemp = igammatab[g_]; + int btemp = igammatab[b_]; histogram[rtemp >> compression]++; histogram[gtemp >> compression] += 2; @@ -1621,6 +1661,9 @@ public: int n = 0; //int p = 6; +#ifdef _OPENMP + #pragma omp parallel for reduction(+:avg_r,avg_g,avg_b,n) schedule(dynamic,16) +#endif for (unsigned int i = 0; i < (unsigned int)(height); i++) for (unsigned int j = 0; j < (unsigned int)(width); j++) { float r_, g_, b_; From 14ef271a3608870cb927bedb2685ee73a67f63e1 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Mon, 4 Nov 2019 15:11:49 +0100 Subject: [PATCH 62/66] Add missing line ending --- rtengine/iimage.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/iimage.cc b/rtengine/iimage.cc index f4a2a6523..7548fc8bf 100644 --- a/rtengine/iimage.cc +++ b/rtengine/iimage.cc @@ -49,4 +49,4 @@ int rtengine::getCoarseBitMask( const procparams::CoarseTransformParams &coarse) const LUTf& rtengine::getigammatab() { return Color::igammatab_srgb; -} \ No newline at end of file +} From d3e7f6a59177fd46af2aeeabd55b6def814e44a4 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 5 Nov 2019 19:06:08 +0100 Subject: [PATCH 63/66] Capture sharpening: some cleanups --- rtengine/capturesharpening.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rtengine/capturesharpening.cc b/rtengine/capturesharpening.cc index 80693c8b7..f574fa45f 100644 --- a/rtengine/capturesharpening.cc +++ b/rtengine/capturesharpening.cc @@ -25,7 +25,6 @@ #include "rt_math.h" #include "procparams.h" #include "color.h" -#include "gauss.h" #include "rt_algo.h" //#define BENCHMARK #include "StopWatch.h" @@ -510,6 +509,7 @@ float calcRadiusXtrans(const float * const *rawData, int W, int H, float lowerLi } return std::sqrt((1.f / (std::log(1.f / maxRatio))) / -2.f); } + void CaptureDeconvSharpening (float** luminance, float** oldLuminance, const float * const * blend, int W, int H, double sigma, double sigmaCornerOffset, int iterations, rtengine::ProgressListener* plistener, double startVal, double endVal) { BENCHFUN @@ -651,13 +651,13 @@ BENCHFUN const float clipVal = (ri->get_white(1) - ri->get_cblack(1)) * scale_mul[1]; - array2D& redVals = redCache ? *redCache : red; - array2D& greenVals = greenCache ? *greenCache : green; - array2D& blueVals = blueCache ? *blueCache : blue; + const array2D& redVals = redCache ? *redCache : red; + const array2D& greenVals = greenCache ? *greenCache : green; + const array2D& blueVals = blueCache ? *blueCache : blue; array2D clipMask(W, H); constexpr float clipLimit = 0.95f; - if (ri->getSensorType() == ST_BAYER) { + if (getSensorType() == ST_BAYER) { const float whites[2][2] = { {(ri->get_white(FC(0,0)) - c_black[FC(0,0)]) * scale_mul[FC(0,0)] * clipLimit, (ri->get_white(FC(0,1)) - c_black[FC(0,1)]) * scale_mul[FC(0,1)] * clipLimit}, {(ri->get_white(FC(1,0)) - c_black[FC(1,0)]) * scale_mul[FC(1,0)] * clipLimit, (ri->get_white(FC(1,1)) - c_black[FC(1,1)]) * scale_mul[FC(1,1)] * clipLimit} @@ -667,7 +667,7 @@ BENCHFUN if (sharpeningParams.autoRadius) { radius = std::min(calcRadiusBayer(rawData, W, H, 1000.f, clipVal, fc), 1.15f); } - } else if (ri->getSensorType() == ST_FUJI_XTRANS) { + } else if (getSensorType() == ST_FUJI_XTRANS) { float whites[6][6]; for (int i = 0; i < 6; ++i) { for (int j = 0; j < 6; ++j) { From 03c0d6c86cb0a3d83c241cdd77ccca85126473ac Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Tue, 5 Nov 2019 20:31:17 +0100 Subject: [PATCH 64/66] Some cleanups, also fix some fallouts from reduce_include_dependencies branch --- rtengine/CA_correct_RT.cc | 102 ++++++------ rtengine/ahd_demosaic_RT.cc | 15 +- rtengine/amaze_demosaic_RT.cc | 64 ++++---- rtengine/badpixels.cc | 10 +- rtengine/demosaic_algos.cc | 287 +--------------------------------- rtengine/fast_demo.cc | 40 +++-- rtengine/filmnegativeproc.cc | 1 + rtengine/hphd_demosaic_RT.cc | 2 +- rtengine/improccoordinator.cc | 1 - rtengine/improcfun.cc | 1 - rtengine/pdaflinesfilter.cc | 1 + rtengine/pixelshift.cc | 23 +-- rtengine/rawimagesource.h | 7 +- rtengine/rcd_demosaic.cc | 24 ++- rtengine/rtthumbnail.cc | 5 - rtengine/vng4_demosaic_RT.cc | 2 +- 16 files changed, 175 insertions(+), 410 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 36b2fa05f..4dc2019c1 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -29,6 +29,13 @@ #include "median.h" #include "StopWatch.h" +namespace +{ +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} +} + namespace { bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution) @@ -135,6 +142,7 @@ float* RawImageSource::CA_correct_RT( } // multithreaded and vectorized by Ingo Weyrich + const unsigned int cfa[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; constexpr int ts = 128; constexpr int tsh = ts / 2; constexpr int cb = 2; // 2 pixels border will be excluded from correction @@ -145,7 +153,7 @@ float* RawImageSource::CA_correct_RT( // Test for RGB cfa for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { - if (FC(i, j) == 3) { + if (fc(cfa, i, j) == 3) { std::cout << "CA correction supports only RGB Colour filter arrays" << std::endl; return buffer; } @@ -164,7 +172,7 @@ float* RawImageSource::CA_correct_RT( #pragma omp parallel for #endif for (int i = cb; i < H - cb; ++i) { - for (int j = cb + (FC(i, 0) & 1); j < W - cb; j += 2) { + for (int j = cb + (fc(cfa, i, 0) & 1); j < W - cb; j += 2) { (*oldraw)[i - cb][(j - cb) / 2] = rawData[i][j]; } } @@ -317,12 +325,12 @@ float* RawImageSource::CA_correct_RT( int cc = ccmin; int col = cc + left; #ifdef __SSE2__ - int c0 = FC(rr, cc); + int c0 = fc(cfa, rr, cc); if (c0 == 1) { rgb[c0][rr * ts + cc] = rawData[row][col] / 65535.f; cc++; col++; - c0 = FC(rr, cc); + c0 = fc(cfa, rr, cc); } int indx1 = rr * ts + cc; for (; cc < ccmax - 7; cc+=8, col+=8, indx1 += 8) { @@ -335,7 +343,7 @@ float* RawImageSource::CA_correct_RT( } #endif for (; cc < ccmax; cc++, col++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); int indx1 = rr * ts + cc; rgb[c][indx1 >> ((c & 1) ^ 1)] = rawData[row][col] / 65535.f; } @@ -345,7 +353,7 @@ float* RawImageSource::CA_correct_RT( if (rrmin > 0) { for (int rr = 0; rr < border; rr++) { for (int cc = ccmin; cc < ccmax; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][((border2 - rr) * ts + cc) >> ((c & 1) ^ 1)]; } } @@ -354,7 +362,7 @@ float* RawImageSource::CA_correct_RT( if (rrmax < rr1) { for (int rr = 0; rr < border; rr++) { for (int cc = ccmin; cc < ccmax; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][left + cc] / 65535.f; } } @@ -363,7 +371,7 @@ float* RawImageSource::CA_correct_RT( if (ccmin > 0) { for (int rr = rrmin; rr < rrmax; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][(rr * ts + border2 - cc) >> ((c & 1) ^ 1)]; } } @@ -372,7 +380,7 @@ float* RawImageSource::CA_correct_RT( if (ccmax < cc1) { for (int rr = rrmin; rr < rrmax; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(top + rr)][(width - cc - 2)] / 65535.f; } } @@ -382,7 +390,7 @@ float* RawImageSource::CA_correct_RT( if (rrmin > 0 && ccmin > 0) { for (int rr = 0; rr < border; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rawData[border2 - rr][border2 - cc] / 65535.f; } } @@ -391,7 +399,7 @@ float* RawImageSource::CA_correct_RT( if (rrmax < rr1 && ccmax < cc1) { for (int rr = 0; rr < border; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][((rrmax + rr)*ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][(width - cc - 2)] / 65535.f; } } @@ -400,7 +408,7 @@ float* RawImageSource::CA_correct_RT( if (rrmin > 0 && ccmax < cc1) { for (int rr = 0; rr < border; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(border2 - rr)][(width - cc - 2)] / 65535.f; } } @@ -409,7 +417,7 @@ float* RawImageSource::CA_correct_RT( if (rrmax < rr1 && ccmin > 0) { for (int rr = 0; rr < border; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][(border2 - cc)] / 65535.f; } } @@ -424,9 +432,9 @@ float* RawImageSource::CA_correct_RT( #endif for (int rr = 3; rr < rr1 - 3; rr++) { int row = rr + top; - int cc = 3 + (FC(rr,3) & 1); + int cc = 3 + (fc(cfa, rr,3) & 1); int indx = rr * ts + cc; - int c = FC(rr,cc); + int c = fc(cfa, rr,cc); #ifdef __SSE2__ for (; cc < cc1 - 9; cc+=8, indx+=8) { //compute directional weights using image gradients @@ -460,7 +468,7 @@ float* RawImageSource::CA_correct_RT( } if (row > -1 && row < height) { - int offset = (FC(row,max(left + 3, 0)) & 1); + int offset = (fc(cfa, row,max(left + 3, 0)) & 1); int col = max(left + 3, 0) + offset; int indx = rr * ts + 3 - (left < 0 ? (left+3) : 0) + offset; #ifdef __SSE2__ @@ -478,9 +486,9 @@ float* RawImageSource::CA_correct_RT( vfloat zd25v = F2V(0.25f); #endif for (int rr = 4; rr < rr1 - 4; rr++) { - int cc = 4 + (FC(rr, 2) & 1); + int cc = 4 + (fc(cfa, rr, 2) & 1); int indx = rr * ts + cc; - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); #ifdef __SSE2__ for (; cc < cc1 - 10; cc += 8, indx += 8) { vfloat rgb1v = LC2VFU(rgb[1][indx]); @@ -544,9 +552,9 @@ float* RawImageSource::CA_correct_RT( // along line segments, find the point along each segment that minimizes the colour variance // averaged over the tile; evaluate for up/down and left/right away from R/B grid point for (int rr = 8; rr < rr1 - 8; rr++) { - int cc = 8 + (FC(rr, 2) & 1); + int cc = 8 + (fc(cfa, rr, 2) & 1); int indx = rr * ts + cc; - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); #ifdef __SSE2__ vfloat coeff00v = ZEROV; vfloat coeff01v = ZEROV; @@ -868,14 +876,14 @@ float* RawImageSource::CA_correct_RT( int indx = row * width + col; int indx1 = rr * ts + cc; #ifdef __SSE2__ - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); if (c & 1) { rgb[1][indx1] = rawData[row][col] / 65535.f; indx++; indx1++; cc++; col++; - c = FC(rr, cc); + c = fc(cfa, rr, cc); } for (; cc < ccmax - 7; cc += 8, col += 8, indx += 8, indx1 += 8) { vfloat val1v = LVFU(rawData[row][col]) / c65535v; @@ -887,7 +895,7 @@ float* RawImageSource::CA_correct_RT( } #endif for (; cc < ccmax; cc++, col++, indx++, indx1++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][indx1 >> ((c & 1) ^ 1)] = rawData[row][col] / 65535.f; if ((c & 1) == 0) { @@ -900,7 +908,7 @@ float* RawImageSource::CA_correct_RT( if (rrmin > 0) { for (int rr = 0; rr < border; rr++) { for (int cc = ccmin; cc < ccmax; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][((border2 - rr) * ts + cc) >> ((c & 1) ^ 1)]; rgb[1][rr * ts + cc] = rgb[1][(border2 - rr) * ts + cc]; } @@ -910,7 +918,7 @@ float* RawImageSource::CA_correct_RT( if (rrmax < rr1) { for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++) { for (int cc = ccmin; cc < ccmax; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][left + cc]) / 65535.f; if ((c & 1) == 0) { rgb[1][(rrmax + rr)*ts + cc] = Gtmp[((height - rr - 2) * width + left + cc) >> 1]; @@ -922,7 +930,7 @@ float* RawImageSource::CA_correct_RT( if (ccmin > 0) { for (int rr = rrmin; rr < rrmax; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][(rr * ts + border2 - cc) >> ((c & 1) ^ 1)]; rgb[1][rr * ts + cc] = rgb[1][rr * ts + border2 - cc]; } @@ -932,7 +940,7 @@ float* RawImageSource::CA_correct_RT( if (ccmax < cc1) { for (int rr = rrmin; rr < rrmax; rr++) { for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(top + rr)][(width - cc - 2)]) / 65535.f; if ((c & 1) == 0) { rgb[1][rr * ts + ccmax + cc] = Gtmp[((top + rr) * width + (width - cc - 2)) >> 1]; @@ -945,7 +953,7 @@ float* RawImageSource::CA_correct_RT( if (rrmin > 0 && ccmin > 0) { for (int rr = 0; rr < border; rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = (rawData[border2 - rr][border2 - cc]) / 65535.f; if ((c & 1) == 0) { rgb[1][rr * ts + cc] = Gtmp[((border2 - rr) * width + border2 - cc) >> 1]; @@ -957,7 +965,7 @@ float* RawImageSource::CA_correct_RT( if (rrmax < rr1 && ccmax < cc1) { for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++) { for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][((rrmax + rr)*ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][(width - cc - 2)]) / 65535.f; if ((c & 1) == 0) { rgb[1][(rrmax + rr)*ts + ccmax + cc] = Gtmp[((height - rr - 2) * width + (width - cc - 2)) >> 1]; @@ -969,7 +977,7 @@ float* RawImageSource::CA_correct_RT( if (rrmin > 0 && ccmax < cc1) { for (int rr = 0; rr < border; rr++) { for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(border2 - rr)][(width - cc - 2)]) / 65535.f; if ((c & 1) == 0) { rgb[1][rr * ts + ccmax + cc] = Gtmp[((border2 - rr) * width + (width - cc - 2)) >> 1]; @@ -981,7 +989,7 @@ float* RawImageSource::CA_correct_RT( if (rrmax < rr1 && ccmin > 0) { for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++) { for (int cc = 0; cc < border; cc++) { - int c = FC(rr, cc); + int c = fc(cfa, rr, cc); rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][(border2 - cc)]) / 65535.f; if ((c & 1) == 0) { rgb[1][(rrmax + rr)*ts + cc] = Gtmp[((height - rr - 2) * width + (border2 - cc)) >> 1]; @@ -998,7 +1006,7 @@ float* RawImageSource::CA_correct_RT( #endif //manual CA correction; use red/blue slider values to set CA shift parameters for (int rr = 3; rr < rr1 - 3; rr++) { - int cc = 3 + FC(rr, 1), c = FC(rr,cc), indx = rr * ts + cc; + int cc = 3 + fc(cfa, rr, 1), c = fc(cfa, rr,cc), indx = rr * ts + cc; #ifdef __SSE2__ for (; cc < cc1 - 10; cc += 8, indx += 8) { //compute directional weights using image gradients @@ -1079,8 +1087,8 @@ float* RawImageSource::CA_correct_RT( } for (int rr = 4; rr < rr1 - 4; rr++) { - int cc = 4 + (FC(rr, 2) & 1); - int c = FC(rr, cc); + int cc = 4 + (fc(cfa, rr, 2) & 1); + int c = fc(cfa, rr, cc); int indx = (rr * ts + cc) >> 1; int indxfc = (rr + shiftvfloor[c]) * ts + cc + shifthceil[c]; int indxff = (rr + shiftvfloor[c]) * ts + cc + shifthfloor[c]; @@ -1129,8 +1137,8 @@ float* RawImageSource::CA_correct_RT( vfloat epsv = F2V(eps); #endif for (int rr = 8; rr < rr1 - 8; rr++) { - int cc = 8 + (FC(rr, 2) & 1); - int c = FC(rr, cc); + int cc = 8 + (fc(cfa, rr, 2) & 1); + int c = fc(cfa, rr, cc); int GRBdir0 = GRBdir[0][c]; int GRBdir1 = GRBdir[1][c]; #ifdef __SSE2__ @@ -1167,7 +1175,7 @@ float* RawImageSource::CA_correct_RT( STVFU(rgb[c][indx >> 1], RBint); } #endif - for (int c = FC(rr, cc), indx = rr * ts + cc; cc < cc1 - 8; cc += 2, indx += 2) { + for (int c = fc(cfa, rr, cc), indx = rr * ts + cc; cc < cc1 - 8; cc += 2, indx += 2) { float grbdiffold = rgb[1][indx] - rgb[c][indx >> 1]; //interpolate colour difference from optical R/B locations to grid locations @@ -1209,9 +1217,9 @@ float* RawImageSource::CA_correct_RT( // copy CA corrected results to temporary image matrix for (int rr = border; rr < rr1 - border; rr++) { - int c = FC(rr + top, left + border + (FC(rr + top, 2) & 1)); + int c = fc(cfa, rr + top, left + border + (fc(cfa, rr + top, 2) & 1)); int row = rr + top; - int cc = border + (FC(rr, 2) & 1); + int cc = border + (fc(cfa, rr, 2) & 1); int indx = (row * width + cc + left) >> 1; int indx1 = (rr * ts + cc) >> 1; #ifdef __SSE2__ @@ -1246,7 +1254,7 @@ float* RawImageSource::CA_correct_RT( #endif for (int row = cb; row < height - cb; row++) { - int col = cb + (FC(row, 0) & 1); + int col = cb + (fc(cfa, row, 0) & 1); int indx = (row * width + col) >> 1; #ifdef __SSE2__ for (; col < width - 7 - cb; col += 8, indx += 4) { @@ -1281,8 +1289,8 @@ float* RawImageSource::CA_correct_RT( #pragma omp for #endif for (int i = 0; i < H - 2 * cb; ++i) { - const int firstCol = FC(i, 0) & 1; - const int colour = FC(i, firstCol); + const int firstCol = fc(cfa, i, 0) & 1; + const int colour = fc(cfa, i, firstCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; int j = firstCol; #ifdef __SSE2__ @@ -1314,9 +1322,9 @@ float* RawImageSource::CA_correct_RT( if (W % 2) { // odd width => factors for one channel are not set in last column => use value of preceding column - const int ngRow = 1 - (FC(0, 0) & 1); - const int ngCol = FC(ngRow, 0) & 1; - const int colour = FC(ngRow, ngCol); + const int ngRow = 1 - (fc(cfa, 0, 0) & 1); + const int ngCol = fc(cfa, ngRow, 0) & 1; + const int colour = fc(cfa, ngRow, ngCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; for (int i = 0; i < (H + 1 - 2 * cb) / 2; ++i) { (*nonGreen)[i][(W - 2 * cb + 1) / 2 - 1] = (*nonGreen)[i][(W - 2* cb + 1) / 2 - 2]; @@ -1333,8 +1341,8 @@ float* RawImageSource::CA_correct_RT( #pragma omp for #endif for (int i = 0; i < H - 2 * cb; ++i) { - const int firstCol = FC(i, 0) & 1; - const int colour = FC(i, firstCol); + const int firstCol = fc(cfa, i, 0) & 1; + const int colour = fc(cfa, i, firstCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; for (int j = firstCol; j < W - 2 * cb; j += 2) { rawData[i + cb][j + cb] *= (*nonGreen)[i / 2][j / 2]; diff --git a/rtengine/ahd_demosaic_RT.cc b/rtengine/ahd_demosaic_RT.cc index 88ab0bf56..064dfd6e1 100644 --- a/rtengine/ahd_demosaic_RT.cc +++ b/rtengine/ahd_demosaic_RT.cc @@ -32,6 +32,12 @@ //#define BENCHMARK #include "StopWatch.h" +namespace +{ +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} +} namespace rtengine { #define TS 144 @@ -39,6 +45,7 @@ void RawImageSource::ahd_demosaic() { BENCHFUN + const unsigned int cfa[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; constexpr int dirs[4] = { -1, 1, -TS, TS }; float xyz_cam[3][3]; LUTf cbrt(65536); @@ -73,7 +80,7 @@ void RawImageSource::ahd_demosaic() } } } - border_interpolate2(W, H, 5, rawData, red, green, blue); + border_interpolate(W, H, 5, rawData, red, green, blue); #ifdef _OPENMP @@ -93,7 +100,7 @@ void RawImageSource::ahd_demosaic() for (int left = 2; left < width - 5; left += TS - 6) { // Interpolate green horizontally and vertically: for (int row = top; row < top + TS && row < height - 2; row++) { - for (int col = left + (FC(row, left) & 1); col < std::min(left + TS, width - 2); col += 2) { + for (int col = left + (fc(cfa, row, left) & 1); col < std::min(left + TS, width - 2); col += 2) { auto pix = &rawData[row][col]; float val0 = 0.25f * ((pix[-1] + pix[0] + pix[1]) * 2 - pix[-2] - pix[2]) ; @@ -107,12 +114,12 @@ void RawImageSource::ahd_demosaic() // Interpolate red and blue, and convert to CIELab: for (int d = 0; d < 2; d++) for (int row = top + 1; row < top + TS - 1 && row < height - 3; row++) { - int cng = FC(row + 1, FC(row + 1, 0) & 1); + int cng = fc(cfa, row + 1, fc(cfa, row + 1, 0) & 1); for (int col = left + 1; col < std::min(left + TS - 1, width - 3); col++) { auto pix = &rawData[row][col]; auto rix = &rgb[d][row - top][col - left]; auto lix = lab[d][row - top][col - left]; - if (FC(row, col) == 1) { + if (fc(cfa, row, col) == 1) { rix[0][2 - cng] = CLIP(pix[0] + (0.5f * (pix[-1] + pix[1] - rix[-1][1] - rix[1][1] ) )); rix[0][cng] = CLIP(pix[0] + (0.5f * (pix[-width] + pix[width] diff --git a/rtengine/amaze_demosaic_RT.cc b/rtengine/amaze_demosaic_RT.cc index 11ff1f5a0..24c463458 100644 --- a/rtengine/amaze_demosaic_RT.cc +++ b/rtengine/amaze_demosaic_RT.cc @@ -35,6 +35,13 @@ #include "median.h" #include "StopWatch.h" +namespace +{ +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} +} + namespace rtengine { @@ -55,6 +62,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c plistener->setProgress(progress); } + const unsigned int cfarray[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; const int width = winw, height = winh; const float clip_pt = 1.0 / initialGain; const float clip_pt8 = 0.8 / initialGain; @@ -73,8 +81,8 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c int ex, ey; //determine GRBG coset; (ey,ex) is the offset of the R subarray - if (FC(0, 0) == 1) { //first pixel is G - if (FC(0, 1) == 0) { + if (fc(cfarray, 0, 0) == 1) { //first pixel is G + if (fc(cfarray, 0, 1) == 0) { ey = 0; ex = 1; } else { @@ -82,7 +90,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c ex = 0; } } else {//first pixel is R or B - if (FC(0, 0) == 0) { + if (fc(cfarray, 0, 0) == 0) { ey = 0; ex = 0; } else { @@ -372,7 +380,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #ifdef __SSE2__ vfloat sgnv; - if( !(FC(4, 4) & 1) ) { + if( !(fc(cfarray, 4, 4) & 1) ) { sgnv = _mm_set_ps( 1.f, -1.f, 1.f, -1.f ); } else { sgnv = _mm_set_ps( -1.f, 1.f, -1.f, 1.f ); @@ -439,7 +447,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else for (int rr = 4; rr < rr1 - 4; rr++) { - bool fcswitch = FC(rr, 4) & 1; + bool fcswitch = fc(cfarray, rr, 4) & 1; for (int cc = 4, indx = rr * ts + cc; cc < cc1 - 4; cc++, indx++) { @@ -531,7 +539,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c vfloat clip_ptv = F2V( clip_pt ); vfloat sgn3v; - if( !(FC(4, 4) & 1) ) { + if( !(fc(cfarray, 4, 4) & 1) ) { sgnv = _mm_set_ps( 1.f, -1.f, 1.f, -1.f ); } else { sgnv = _mm_set_ps( -1.f, 1.f, -1.f, 1.f ); @@ -589,7 +597,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else for (int rr = 4; rr < rr1 - 4; rr++) { - for (int cc = 4, indx = rr * ts + cc, c = FC(rr, cc) & 1; cc < cc1 - 4; cc++, indx++) { + for (int cc = 4, indx = rr * ts + cc, c = fc(cfarray, rr, cc) & 1; cc < cc1 - 4; cc++, indx++) { float hcdvar = 3.f * (SQR(hcd[indx - 2]) + SQR(hcd[indx]) + SQR(hcd[indx + 2])) - SQR(hcd[indx - 2] + hcd[indx] + hcd[indx + 2]); float hcdaltvar = 3.f * (SQR(hcdalt[indx - 2]) + SQR(hcdalt[indx]) + SQR(hcdalt[indx + 2])) - SQR(hcdalt[indx - 2] + hcdalt[indx] + hcdalt[indx + 2]); float vcdvar = 3.f * (SQR(vcd[indx - v2]) + SQR(vcd[indx]) + SQR(vcd[indx + v2])) - SQR(vcd[indx - v2] + vcd[indx] + vcd[indx + v2]); @@ -685,7 +693,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c vfloat epssqv = F2V( epssq ); for (int rr = 6; rr < rr1 - 6; rr++) { - for (int indx = rr * ts + 6 + (FC(rr, 2) & 1); indx < rr * ts + cc1 - 6; indx += 8) { + for (int indx = rr * ts + 6 + (fc(cfarray, rr, 2) & 1); indx < rr * ts + cc1 - 6; indx += 8) { //compute colour difference variances in cardinal directions vfloat tempv = LC2VFU(vcd[indx]); vfloat uavev = tempv + LC2VFU(vcd[indx - v1]) + LC2VFU(vcd[indx - v2]) + LC2VFU(vcd[indx - v3]); @@ -731,7 +739,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else for (int rr = 6; rr < rr1 - 6; rr++) { - for (int cc = 6 + (FC(rr, 2) & 1), indx = rr * ts + cc; cc < cc1 - 6; cc += 2, indx += 2) { + for (int cc = 6 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc; cc < cc1 - 6; cc += 2, indx += 2) { //compute colour difference variances in cardinal directions @@ -793,7 +801,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c // precompute nyquist for (int rr = 6; rr < rr1 - 6; rr++) { - int cc = 6 + (FC(rr, 2) & 1); + int cc = 6 + (fc(cfarray, rr, 2) & 1); int indx = rr * ts + cc; #ifdef __SSE2__ @@ -856,7 +864,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c int nyendcol = 0; for (int rr = 6; rr < rr1 - 6; rr++) { - for (int cc = 6 + (FC(rr, 2) & 1), indx = rr * ts + cc; cc < cc1 - 6; cc += 2, indx += 2) { + for (int cc = 6 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc; cc < cc1 - 6; cc += 2, indx += 2) { //nyquist texture test: ask if difference of vcd compared to hcd is larger or smaller than RGGB gradients if(nyqutest[indx >> 1] > 0.f) { @@ -907,7 +915,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else - for (int indx = rr * ts + nystartcol + (FC(rr, 2) & 1); indx < rr * ts + nyendcol; indx += 2) { + for (int indx = rr * ts + nystartcol + (fc(cfarray, rr, 2) & 1); indx < rr * ts + nyendcol; indx += 2) { unsigned int nyquisttemp = (nyquist[(indx - v2) >> 1] + nyquist[(indx - m1) >> 1] + nyquist[(indx + p1) >> 1] + nyquist[(indx - 2) >> 1] + nyquist[(indx + 2) >> 1] + nyquist[(indx - p1) >> 1] + nyquist[(indx + m1) >> 1] + nyquist[(indx + v2) >> 1]); @@ -922,7 +930,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c // in areas of Nyquist texture, do area interpolation for (int rr = nystartrow; rr < nyendrow; rr++) - for (int indx = rr * ts + nystartcol + (FC(rr, 2) & 1); indx < rr * ts + nyendcol; indx += 2) { + for (int indx = rr * ts + nystartcol + (fc(cfarray, rr, 2) & 1); indx < rr * ts + nyendcol; indx += 2) { if (nyquist2[indx >> 1]) { // area interpolation @@ -962,7 +970,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c //populate G at R/B sites for (int rr = 8; rr < rr1 - 8; rr++) - for (int indx = rr * ts + 8 + (FC(rr, 2) & 1); indx < rr * ts + cc1 - 8; indx += 2) { + for (int indx = rr * ts + 8 + (fc(cfarray, rr, 2) & 1); indx < rr * ts + cc1 - 8; indx += 2) { //first ask if one gets more directional discrimination from nearby B/R sites float hvwtalt = xdivf(hvwt[(indx - m1) >> 1] + hvwt[(indx + p1) >> 1] + hvwt[(indx - p1) >> 1] + hvwt[(indx + m1) >> 1], 2); @@ -985,7 +993,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c // refine Nyquist areas using G curvatures if(doNyquist) { for (int rr = nystartrow; rr < nyendrow; rr++) - for (int indx = rr * ts + nystartcol + (FC(rr, 2) & 1); indx < rr * ts + nyendcol; indx += 2) { + for (int indx = rr * ts + nystartcol + (fc(cfarray, rr, 2) & 1); indx < rr * ts + nyendcol; indx += 2) { if (nyquist2[indx >> 1]) { //local averages (over Nyquist pixels only) of G curvature squared @@ -1008,7 +1016,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #ifdef __SSE2__ for (int rr = 6; rr < rr1 - 6; rr++) { - if((FC(rr, 2) & 1) == 0) { + if((fc(cfarray, rr, 2) & 1) == 0) { for (int cc = 6, indx = rr * ts + cc; cc < cc1 - 6; cc += 8, indx += 8) { vfloat tempv = LC2VFU(cfa[indx + 1]); vfloat Dgrbsq1pv = (SQRV(tempv - LC2VFU(cfa[indx + 1 - p1])) + SQRV(tempv - LC2VFU(cfa[indx + 1 + p1]))); @@ -1034,7 +1042,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else for (int rr = 6; rr < rr1 - 6; rr++) { - if((FC(rr, 2) & 1) == 0) { + if((fc(cfarray, rr, 2) & 1) == 0) { for (int cc = 6, indx = rr * ts + cc; cc < cc1 - 6; cc += 2, indx += 2) { delp[indx >> 1] = fabsf(cfa[indx + p1] - cfa[indx - p1]); delm[indx >> 1] = fabsf(cfa[indx + m1] - cfa[indx - m1]); @@ -1063,7 +1071,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c for (int rr = 8; rr < rr1 - 8; rr++) { #ifdef __SSE2__ - for (int indx = rr * ts + 8 + (FC(rr, 2) & 1), indx1 = indx >> 1; indx < rr * ts + cc1 - 8; indx += 8, indx1 += 4) { + for (int indx = rr * ts + 8 + (fc(cfarray, rr, 2) & 1), indx1 = indx >> 1; indx < rr * ts + cc1 - 8; indx += 8, indx1 += 4) { //diagonal colour ratios vfloat cfav = LC2VFU(cfa[indx]); @@ -1128,7 +1136,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else - for (int cc = 8 + (FC(rr, 2) & 1), indx = rr * ts + cc, indx1 = indx >> 1; cc < cc1 - 8; cc += 2, indx += 2, indx1++) { + for (int cc = 8 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc, indx1 = indx >> 1; cc < cc1 - 8; cc += 2, indx += 2, indx1++) { //diagonal colour ratios float crse = xmul2f(cfa[indx + m1]) / (eps + cfa[indx] + (cfa[indx + m2])); @@ -1218,7 +1226,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c for (int rr = 10; rr < rr1 - 10; rr++) #ifdef __SSE2__ - for (int indx = rr * ts + 10 + (FC(rr, 2) & 1), indx1 = indx >> 1; indx < rr * ts + cc1 - 10; indx += 8, indx1 += 4) { + for (int indx = rr * ts + 10 + (fc(cfarray, rr, 2) & 1), indx1 = indx >> 1; indx < rr * ts + cc1 - 10; indx += 8, indx1 += 4) { //first ask if one gets more directional discrimination from nearby B/R sites vfloat pmwtaltv = zd25v * (LVFU(pmwt[(indx - m1) >> 1]) + LVFU(pmwt[(indx + p1) >> 1]) + LVFU(pmwt[(indx - p1) >> 1]) + LVFU(pmwt[(indx + m1) >> 1])); @@ -1230,7 +1238,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else - for (int cc = 10 + (FC(rr, 2) & 1), indx = rr * ts + cc, indx1 = indx >> 1; cc < cc1 - 10; cc += 2, indx += 2, indx1++) { + for (int cc = 10 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc, indx1 = indx >> 1; cc < cc1 - 10; cc += 2, indx += 2, indx1++) { //first ask if one gets more directional discrimination from nearby B/R sites float pmwtalt = xdivf(pmwt[(indx - m1) >> 1] + pmwt[(indx + p1) >> 1] + pmwt[(indx - p1) >> 1] + pmwt[(indx + m1) >> 1], 2); @@ -1246,7 +1254,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c for (int rr = 12; rr < rr1 - 12; rr++) #ifdef __SSE2__ - for (int indx = rr * ts + 12 + (FC(rr, 2) & 1), indx1 = indx >> 1; indx < rr * ts + cc1 - 12; indx += 8, indx1 += 4) { + for (int indx = rr * ts + 12 + (fc(cfarray, rr, 2) & 1), indx1 = indx >> 1; indx < rr * ts + cc1 - 12; indx += 8, indx1 += 4) { vmask copymask = vmaskf_ge(vabsf(zd5v - LVFU(pmwt[indx1])), vabsf(zd5v - LVFU(hvwt[indx1]))); if(_mm_movemask_ps((vfloat)copymask)) { // if for any of the 4 pixels the condition is true, do the maths for all 4 pixels and mask the unused out at the end @@ -1301,7 +1309,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else - for (int cc = 12 + (FC(rr, 2) & 1), indx = rr * ts + cc, indx1 = indx >> 1; cc < cc1 - 12; cc += 2, indx += 2, indx1++) { + for (int cc = 12 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc, indx1 = indx >> 1; cc < cc1 - 12; cc += 2, indx += 2, indx1++) { if (fabsf(0.5f - pmwt[indx >> 1]) < fabsf(0.5f - hvwt[indx >> 1]) ) { continue; @@ -1399,7 +1407,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c for (int rr = 14; rr < rr1 - 14; rr++) #ifdef __SSE2__ - for (int cc = 14 + (FC(rr, 2) & 1), indx = rr * ts + cc, c = 1 - FC(rr, cc) / 2; cc < cc1 - 14; cc += 8, indx += 8) { + for (int cc = 14 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc, c = 1 - fc(cfarray, rr, cc) / 2; cc < cc1 - 14; cc += 8, indx += 8) { vfloat tempv = epsv + vabsf(LVFU(Dgrb[c][(indx - m1) >> 1]) - LVFU(Dgrb[c][(indx + m1) >> 1])); vfloat temp2v = epsv + vabsf(LVFU(Dgrb[c][(indx + p1) >> 1]) - LVFU(Dgrb[c][(indx - p1) >> 1])); vfloat wtnwv = onev / (tempv + vabsf(LVFU(Dgrb[c][(indx - m1) >> 1]) - LVFU(Dgrb[c][(indx - m3) >> 1])) + vabsf(LVFU(Dgrb[c][(indx + m1) >> 1]) - LVFU(Dgrb[c][(indx - m3) >> 1]))); @@ -1415,7 +1423,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else - for (int cc = 14 + (FC(rr, 2) & 1), indx = rr * ts + cc, c = 1 - FC(rr, cc) / 2; cc < cc1 - 14; cc += 2, indx += 2) { + for (int cc = 14 + (fc(cfarray, rr, 2) & 1), indx = rr * ts + cc, c = 1 - fc(cfarray, rr, cc) / 2; cc < cc1 - 14; cc += 2, indx += 2) { float wtnw = 1.f / (eps + fabsf(Dgrb[c][(indx - m1) >> 1] - Dgrb[c][(indx + m1) >> 1]) + fabsf(Dgrb[c][(indx - m1) >> 1] - Dgrb[c][(indx - m3) >> 1]) + fabsf(Dgrb[c][(indx + m1) >> 1] - Dgrb[c][(indx - m3) >> 1])); float wtne = 1.f / (eps + fabsf(Dgrb[c][(indx + p1) >> 1] - Dgrb[c][(indx - p1) >> 1]) + fabsf(Dgrb[c][(indx + p1) >> 1] - Dgrb[c][(indx + p3) >> 1]) + fabsf(Dgrb[c][(indx - p1) >> 1] - Dgrb[c][(indx + p3) >> 1])); float wtsw = 1.f / (eps + fabsf(Dgrb[c][(indx - p1) >> 1] - Dgrb[c][(indx + p1) >> 1]) + fabsf(Dgrb[c][(indx - p1) >> 1] - Dgrb[c][(indx + m3) >> 1]) + fabsf(Dgrb[c][(indx + p1) >> 1] - Dgrb[c][(indx - p3) >> 1])); @@ -1434,7 +1442,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c vfloat twov = F2V(2.f); vmask selmask; - if((FC(16, 2) & 1) == 1) { + if((fc(cfarray, 16, 2) & 1) == 1) { selmask = _mm_set_epi32(0xffffffff, 0, 0xffffffff, 0); offset = 1; } else { @@ -1509,7 +1517,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c #else - if((FC(rr, 2) & 1) == 1) { + if((fc(cfarray, rr, 2) & 1) == 1) { for (; indx < rr * ts + cc1 - 16 - (cc1 & 1); indx++, col++) { float temp = 1.f / (hvwt[(indx - v1) >> 1] + 2.f - hvwt[(indx + 1) >> 1] - hvwt[(indx - 1) >> 1] + hvwt[(indx + v1) >> 1]); red[row][col] = 65535.f * (rgbgreen[indx] - ((hvwt[(indx - v1) >> 1]) * Dgrb[0][(indx - v1) >> 1] + (1.f - hvwt[(indx + 1) >> 1]) * Dgrb[0][(indx + 1) >> 1] + (1.f - hvwt[(indx - 1) >> 1]) * Dgrb[0][(indx - 1) >> 1] + (hvwt[(indx + v1) >> 1]) * Dgrb[0][(indx + v1) >> 1]) * @@ -1591,7 +1599,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, c free(buffer); } if(border < 4) { - border_interpolate2(W, H, 3, rawData, red, green, blue); + border_interpolate(W, H, 3, rawData, red, green, blue); } if(plistener) { diff --git a/rtengine/badpixels.cc b/rtengine/badpixels.cc index 5f519f7c2..2710cb28d 100644 --- a/rtengine/badpixels.cc +++ b/rtengine/badpixels.cc @@ -23,6 +23,13 @@ #include "rawimage.h" #include "rawimagesource.h" +namespace +{ +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} +} + namespace rtengine { @@ -31,6 +38,7 @@ namespace rtengine */ int RawImageSource::interpolateBadPixelsBayer(const PixelsMap &bitmapBads, array2D &rawData) { + const unsigned int cfarray[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; constexpr float eps = 1.f; int counter = 0; @@ -54,7 +62,7 @@ int RawImageSource::interpolateBadPixelsBayer(const PixelsMap &bitmapBads, array float wtdsum = 0.f, norm = 0.f; // diagonal interpolation - if (FC(row, col) == 1) { + if (fc(cfarray, row, col) == 1) { // green channel. We can use closer pixels than for red or blue channel. Distance to center pixel is sqrt(2) => weighting is 0.70710678 // For green channel following pixels will be used for interpolation. Pixel to be interpolated is in center. // 1 means that pixel is used in this step, if itself and his counterpart are not marked bad diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 45779fc9c..d547d3431 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -55,158 +55,7 @@ namespace rtengine #define FORCC for (unsigned int c=0; c < colors; c++) -/* - Patterned Pixel Grouping Interpolation by Alain Desbiolles -*/ -void RawImageSource::ppg_demosaic() -{ - int width = W, height = H; - int dir[5] = { 1, width, -1, -width, 1 }; - int row, col, diff[2] = {}, guess[2], c, d, i; - float (*pix)[4]; - - float (*image)[4]; - - if (plistener) { - // looks like ppg isn't supported anymore - //plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::ppg))); - plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), M("GENERAL_NA"))); - plistener->setProgress (0.0); - } - - image = (float (*)[4]) calloc (static_cast(H) * W, sizeof * image); - - for (int ii = 0; ii < H; ii++) - for (int jj = 0; jj < W; jj++) { - image[ii * W + jj][fc(ii, jj)] = rawData[ii][jj]; - } - - border_interpolate(3, image); - - /* Fill in the green layer with gradients and pattern recognition: */ - for (row = 3; row < height - 3; row++) { - for (col = 3 + (FC(row, 3) & 1), c = FC(row, col); col < width - 3; col += 2) { - pix = image + row * width + col; - - for (i = 0; (d = dir[i]) > 0; i++) { - guess[i] = (pix[-d][1] + pix[0][c] + pix[d][1]) * 2 - - pix[-2 * d][c] - pix[2 * d][c]; - diff[i] = ( ABS(pix[-2 * d][c] - pix[ 0][c]) + - ABS(pix[ 2 * d][c] - pix[ 0][c]) + - ABS(pix[ -d][1] - pix[ d][1]) ) * 3 + - ( ABS(pix[ 3 * d][1] - pix[ d][1]) + - ABS(pix[-3 * d][1] - pix[-d][1]) ) * 2; - } - - d = dir[i = diff[0] > diff[1]]; - pix[0][1] = median(static_cast(guess[i] >> 2), pix[d][1], pix[-d][1]); - } - - if(plistener) { - plistener->setProgress(0.33 * row / (height - 3)); - } - } - - /* Calculate red and blue for each green pixel: */ - for (row = 1; row < height - 1; row++) { - for (col = 1 + (FC(row, 2) & 1), c = FC(row, col + 1); col < width - 1; col += 2) { - pix = image + row * width + col; - - for (i = 0; (d = dir[i]) > 0; c = 2 - c, i++) - pix[0][c] = CLIP(0.5 * (pix[-d][c] + pix[d][c] + 2 * pix[0][1] - - pix[-d][1] - pix[d][1]) ); - } - - if(plistener) { - plistener->setProgress(0.33 + 0.33 * row / (height - 1)); - } - } - - /* Calculate blue for red pixels and vice versa: */ - for (row = 1; row < height - 1; row++) { - for (col = 1 + (FC(row, 1) & 1), c = 2 - FC(row, col); col < width - 1; col += 2) { - pix = image + row * width + col; - - for (i = 0; (d = dir[i] + dir[i + 1]) > 0; i++) { - diff[i] = ABS(pix[-d][c] - pix[d][c]) + - ABS(pix[-d][1] - pix[0][1]) + - ABS(pix[ d][1] - pix[0][1]); - guess[i] = pix[-d][c] + pix[d][c] + 2 * pix[0][1] - - pix[-d][1] - pix[d][1]; - } - - if (diff[0] != diff[1]) { - pix[0][c] = CLIP(guess[diff[0] > diff[1]] / 2); - } else { - pix[0][c] = CLIP((guess[0] + guess[1]) / 4); - } - } - - if(plistener) { - plistener->setProgress(0.67 + 0.33 * row / (height - 1)); - } - } - - red(W, H); - - for (int i = 0; i < H; i++) - for (int j = 0; j < W; j++) { - red[i][j] = image[i * W + j][0]; - } - - green(W, H); - - for (int i = 0; i < H; i++) - for (int j = 0; j < W; j++) { - green[i][j] = image[i * W + j][1]; - } - - blue(W, H); - - for (int i = 0; i < H; i++) - for (int j = 0; j < W; j++) { - blue[i][j] = image[i * W + j][2]; - } - - free (image); -} - -void RawImageSource::border_interpolate(unsigned int border, float (*image)[4], unsigned int start, unsigned int end) -{ - unsigned row, col, y, x, f; - float sum[8]; - unsigned int width = W, height = H; - unsigned int colors = 3; - - if (end == 0 ) { - end = H; - } - - for (row = start; row < end; row++) - for (col = 0; col < width; col++) { - if (col == border && row >= border && row < height - border) { - col = width - border; - } - - memset (sum, 0, sizeof sum); - - for (y = row - 1; y != row + 2; y++) - for (x = col - 1; x != col + 2; x++) - if (y < height && x < width) { - f = fc(y, x); - sum[f] += image[y * width + x][f]; - sum[f + 4]++; - } - - f = fc(row, col); - - FORCC if (c != f && sum[c + 4]) { - image[row * width + col][c] = sum[c] / sum[c + 4]; - } - } -} - -void RawImageSource::border_interpolate2( int winw, int winh, int lborders, const array2D &rawData, array2D &red, array2D &green, array2D &blue) +void RawImageSource::border_interpolate( int winw, int winh, int lborders, const array2D &rawData, array2D &red, array2D &green, array2D &blue) { int bord = lborders; int width = winw; @@ -361,129 +210,6 @@ void RawImageSource::border_interpolate2( int winw, int winh, int lborders, cons } -// Joint Demosaicing and Denoising using High Order Interpolation Techniques -// Revision 0.9.1a - 09/02/2010 - Contact info: luis.sanz.rodriguez@gmail.com -// Copyright Luis Sanz Rodriguez 2010 -// Adapted to RawTherapee by Jacques Desmis 3/2013 - -void RawImageSource::jdl_interpolate_omp() // from "Lassus" -{ - int width = W, height = H; - int row, col, c, d, i, u = width, v = 2 * u, w = 3 * u, x = 4 * u, y = 5 * u, z = 6 * u, indx, (*dif)[2], (*chr)[2]; - float f[4], g[4]; - float (*image)[4]; - image = (float (*)[4]) calloc (static_cast(width) * height, sizeof * image); - dif = (int (*)[2]) calloc(static_cast(width) * height, sizeof * dif); - chr = (int (*)[2]) calloc(static_cast(width) * height, sizeof * chr); - - if (plistener) { - // this function seems to be unused - //plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::jdl))); - plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), M("GENERAL_NA"))); - plistener->setProgress (0.0); - } - -#ifdef _OPENMP - #pragma omp parallel shared(image,width,height,u,w,v,y,x,z,dif,chr) private(row,col,f,g,indx,c,d,i) -#endif - { -#ifdef _OPENMP - #pragma omp for -#endif - - for (int ii = 0; ii < height; ii++) - for (int jj = 0; jj < width; jj++) { - image[ii * width + jj][fc(ii, jj)] = rawData[ii][jj]; - } - - border_interpolate(6, image); - -#ifdef _OPENMP - #pragma omp for -#endif - - for (row = 5; row < height - 5; row++) - for (col = 5 + (FC(row, 1) & 1), indx = row * width + col, c = FC(row, col); col < u - 5; col += 2, indx += 2) { - f[0] = 1.f + abs(image[indx - u][1] - image[indx - w][1]) + abs(image[indx - u][1] - image[indx + u][1]) + abs(image[indx][c] - image[indx - v][c]) + abs(image[indx - v][c] - image[indx - x][c]); - f[1] = 1.f + abs(image[indx + 1][1] - image[indx + 3][1]) + abs(image[indx + 1][1] - image[indx - 1][1]) + abs(image[indx][c] - image[indx + 2][c]) + abs(image[indx + 2][c] - image[indx + 4][c]); - f[2] = 1.f + abs(image[indx - 1][1] - image[indx - 3][1]) + abs(image[indx - 1][1] - image[indx + 1][1]) + abs(image[indx][c] - image[indx - 2][c]) + abs(image[indx - 2][c] - image[indx - 4][c]); - f[3] = 1.f + abs(image[indx + u][1] - image[indx + w][1]) + abs(image[indx + u][1] - image[indx - u][1]) + abs(image[indx][c] - image[indx + v][c]) + abs(image[indx + v][c] - image[indx + x][c]); - g[0] = CLIP((22.f * image[indx - u][1] + 22.f * image[indx - w][1] + 2.f * image[indx - y][1] + 2.f * image[indx + u][1] + 40.f * image[indx][c] - 32.f * image[indx - v][c] - 8.f * image[indx - x][c]) / 48.f); - g[1] = CLIP((22.f * image[indx + 1][1] + 22.f * image[indx + 3][1] + 2.f * image[indx + 5][1] + 2.f * image[indx - 1][1] + 40.f * image[indx][c] - 32.f * image[indx + 2][c] - 8.f * image[indx + 4][c]) / 48.f); - g[2] = CLIP((22.f * image[indx - 1][1] + 22.f * image[indx - 3][1] + 2.f * image[indx - 5][1] + 2.f * image[indx + 1][1] + 40.f * image[indx][c] - 32.f * image[indx - 2][c] - 8.f * image[indx - 4][c]) / 48.f); - g[3] = CLIP((22.f * image[indx + u][1] + 22.f * image[indx + w][1] + 2.f * image[indx + y][1] + 2.f * image[indx - u][1] + 40.f * image[indx][c] - 32.f * image[indx + v][c] - 8.f * image[indx + x][c]) / 48.f); - dif[indx][0] = CLIP((f[3] * g[0] + f[0] * g[3]) / (f[0] + f[3])) - image[indx][c]; - dif[indx][1] = CLIP((f[2] * g[1] + f[1] * g[2]) / (f[1] + f[2])) - image[indx][c]; - } - -#ifdef _OPENMP - #pragma omp for -#endif - - for (row = 6; row < height - 6; row++) - for (col = 6 + (FC(row, 2) & 1), indx = row * width + col, c = FC(row, col) / 2; col < u - 6; col += 2, indx += 2) { - f[0] = 1.f + 78.f * SQR((float)dif[indx][0]) + 69.f * (SQR((float) dif[indx - v][0]) + SQR((float)dif[indx + v][0])) + 51.f * (SQR((float)dif[indx - x][0]) + SQR((float)dif[indx + x][0])) + 21.f * (SQR((float)dif[indx - z][0]) + SQR((float)dif[indx + z][0])) - 6.f * SQR((float)dif[indx - v][0] + dif[indx][0] + dif[indx + v][0]) - 10.f * (SQR((float)dif[indx - x][0] + dif[indx - v][0] + dif[indx][0]) + SQR((float)dif[indx][0] + dif[indx + v][0] + dif[indx + x][0])) - 7.f * (SQR((float)dif[indx - z][0] + dif[indx - x][0] + dif[indx - v][0]) + SQR((float)dif[indx + v][0] + dif[indx + x][0] + dif[indx + z][0])); - f[1] = 1.f + 78.f * SQR((float)dif[indx][1]) + 69.f * (SQR((float)dif[indx - 2][1]) + SQR((float)dif[indx + 2][1])) + 51.f * (SQR((float)dif[indx - 4][1]) + SQR((float)dif[indx + 4][1])) + 21.f * (SQR((float)dif[indx - 6][1]) + SQR((float)dif[indx + 6][1])) - 6.f * SQR((float)dif[indx - 2][1] + dif[indx][1] + dif[indx + 2][1]) - 10.f * (SQR((float)dif[indx - 4][1] + dif[indx - 2][1] + dif[indx][1]) + SQR((float)dif[indx][1] + dif[indx + 2][1] + dif[indx + 4][1])) - 7.f * (SQR((float)dif[indx - 6][1] + dif[indx - 4][1] + dif[indx - 2][1]) + SQR((float)dif[indx + 2][1] + dif[indx + 4][1] + dif[indx + 6][1])); - g[0] = median(0.725f * dif[indx][0] + 0.1375f * dif[indx - v][0] + 0.1375f * dif[indx + v][0], static_cast(dif[indx - v][0]), static_cast(dif[indx + v][0])); - g[1] = median(0.725f * dif[indx][1] + 0.1375f * dif[indx - 2][1] + 0.1375f * dif[indx + 2][1], static_cast(dif[indx - 2][1]), static_cast(dif[indx + 2][1])); - chr[indx][c] = (f[1] * g[0] + f[0] * g[1]) / (f[0] + f[1]); - } - -#ifdef _OPENMP - #pragma omp for -#endif - - for (row = 6; row < height - 6; row++) - for (col = 6 + (FC(row, 2) & 1), indx = row * width + col, c = 1 - FC(row, col) / 2, d = 2 * c; col < u - 6; col += 2, indx += 2) { - f[0] = 1.f / (float)(1.f + fabs((float)chr[indx - u - 1][c] - chr[indx + u + 1][c]) + fabs((float)chr[indx - u - 1][c] - chr[indx - w - 3][c]) + fabs((float)chr[indx + u + 1][c] - chr[indx - w - 3][c])); - f[1] = 1.f / (float)(1.f + fabs((float)chr[indx - u + 1][c] - chr[indx + u - 1][c]) + fabs((float)chr[indx - u + 1][c] - chr[indx - w + 3][c]) + fabs((float)chr[indx + u - 1][c] - chr[indx - w + 3][c])); - f[2] = 1.f / (float)(1.f + fabs((float)chr[indx + u - 1][c] - chr[indx - u + 1][c]) + fabs((float)chr[indx + u - 1][c] - chr[indx + w + 3][c]) + fabs((float)chr[indx - u + 1][c] - chr[indx + w - 3][c])); - f[3] = 1.f / (float)(1.f + fabs((float)chr[indx + u + 1][c] - chr[indx - u - 1][c]) + fabs((float)chr[indx + u + 1][c] - chr[indx + w - 3][c]) + fabs((float)chr[indx - u - 1][c] - chr[indx + w + 3][c])); - g[0] = median(chr[indx - u - 1][c], chr[indx - w - 1][c], chr[indx - u - 3][c]); - g[1] = median(chr[indx - u + 1][c], chr[indx - w + 1][c], chr[indx - u + 3][c]); - g[2] = median(chr[indx + u - 1][c], chr[indx + w - 1][c], chr[indx + u - 3][c]); - g[3] = median(chr[indx + u + 1][c], chr[indx + w + 1][c], chr[indx + u + 3][c]); - chr[indx][c] = (f[0] * g[0] + f[1] * g[1] + f[2] * g[2] + f[3] * g[3]) / (f[0] + f[1] + f[2] + f[3]); - image[indx][1] = CLIP(image[indx][2 - d] + chr[indx][1 - c]); - image[indx][d] = CLIP(image[indx][1] - chr[indx][c]); - } - -#ifdef _OPENMP - #pragma omp for -#endif - - for (row = 6; row < height - 6; row++) - for (col = 6 + (FC(row, 1) & 1), indx = row * width + col, c = FC(row, col + 1) / 2, d = 2 * c; col < u - 6; col += 2, indx += 2) - for(i = 0; i <= 1; c = 1 - c, d = 2 * c, i++) { - f[0] = 1.f / (float)(1.f + fabs((float)chr[indx - u][c] - chr[indx + u][c]) + fabs((float)chr[indx - u][c] - chr[indx - w][c]) + fabs((float)chr[indx + u][c] - chr[indx - w][c])); - f[1] = 1.f / (float)(1.f + fabs((float)chr[indx + 1][c] - chr[indx - 1][c]) + fabs((float)chr[indx + 1][c] - chr[indx + 3][c]) + fabs((float)chr[indx - 1][c] - chr[indx + 3][c])); - f[2] = 1.f / (float)(1.f + fabs((float)chr[indx - 1][c] - chr[indx + 1][c]) + fabs((float)chr[indx - 1][c] - chr[indx - 3][c]) + fabs((float)chr[indx + 1][c] - chr[indx - 3][c])); - f[3] = 1.f / (float)(1.f + fabs((float)chr[indx + u][c] - chr[indx - u][c]) + fabs((float)chr[indx + u][c] - chr[indx + w][c]) + fabs((float)chr[indx - u][c] - chr[indx + w][c])); - g[0] = 0.875f * chr[indx - u][c] + 0.125f * chr[indx - w][c]; - g[1] = 0.875f * chr[indx + 1][c] + 0.125f * chr[indx + 3][c]; - g[2] = 0.875f * chr[indx - 1][c] + 0.125f * chr[indx - 3][c]; - g[3] = 0.875f * chr[indx + u][c] + 0.125f * chr[indx + w][c]; - image[indx][d] = CLIP(image[indx][1] - (f[0] * g[0] + f[1] * g[1] + f[2] * g[2] + f[3] * g[3]) / (f[0] + f[1] + f[2] + f[3])); - } - -#ifdef _OPENMP - #pragma omp for -#endif - - for (int ii = 0; ii < height; ii++) { - for (int jj = 0; jj < width; jj++) { - red[ii][jj] = CLIP(image[ii * width + jj][0]); - green[ii][jj] = CLIP(image[ii * width + jj][1]); - blue[ii][jj] = CLIP(image[ii * width + jj][2]); - } - } - } // End of parallelization - free (image); - free(dif); - free(chr); - //RawImageSource::refinement_lassus(); -} - // LSMME demosaicing algorithm // L. Zhang and X. Wu, // Color demozaicing via directional Linear Minimum Mean Square-error Estimation, @@ -1503,7 +1229,7 @@ void RawImageSource::igv_interpolate(int winw, int winh) } } }// End of parallelization - border_interpolate2(winw, winh, 8, rawData, red, green, blue); + border_interpolate(winw, winh, 8, rawData, red, green, blue); if (plistener) { plistener->setProgress (1.0); @@ -1560,8 +1286,6 @@ void RawImageSource::igv_interpolate(int winw, int winh) rgb[c][indx] = CLIP(rawData[row][col]); //rawData = RT data } -// border_interpolate2(7, rgb); - #ifdef _OPENMP #pragma omp single #endif @@ -1736,9 +1460,6 @@ void RawImageSource::igv_interpolate(int winw, int winh) if (plistener) { plistener->setProgress (0.91); } - - //Interpolate borders -// border_interpolate2(7, rgb); } /* #ifdef _OPENMP @@ -1766,7 +1487,7 @@ void RawImageSource::igv_interpolate(int winw, int winh) blue [row][col] = CLIP(rgb[1][indx] - 65535.f * chr[1][indx]); } }// End of parallelization - border_interpolate2(winw, winh, 8, rawData, red, green, blue); + border_interpolate(winw, winh, 8, rawData, red, green, blue); if (plistener) { @@ -2809,7 +2530,7 @@ BENCHFUN free(buffer0); } - border_interpolate2(W, H, 1, rawData, red, green, blue); + border_interpolate(W, H, 1, rawData, red, green, blue); if(plistener) { plistener->setProgress (1.0); } diff --git a/rtengine/fast_demo.cc b/rtengine/fast_demo.cc index 82176e59c..aaa5ceb02 100644 --- a/rtengine/fast_demo.cc +++ b/rtengine/fast_demo.cc @@ -30,6 +30,13 @@ using namespace std; using namespace rtengine; +namespace +{ +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} +} + #define TS 224 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -66,6 +73,7 @@ void RawImageSource::fast_demosaic() } + const unsigned int cfarray[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; const int bord = 5; float clip_pt = 4 * 65535 * initialGain; @@ -116,12 +124,12 @@ void RawImageSource::fast_demosaic() for (int i1 = imin; i1 < imax; i1++) for (int j1 = jmin; j1 < j + 2; j1++) { - int c = FC(i1, j1); + int c = fc(cfarray, i1, j1); sum[c] += rawData[i1][j1]; sum[c + 3]++; } - int c = FC(i, j); + int c = fc(cfarray, i, j); if (c == 1) { red[i][j] = sum[0] / sum[3]; @@ -149,12 +157,12 @@ void RawImageSource::fast_demosaic() for (int i1 = imin; i1 < imax; i1++) for (int j1 = j - 1; j1 < jmax; j1++) { - int c = FC(i1, j1); + int c = fc(cfarray, i1, j1); sum[c] += rawData[i1][j1]; sum[c + 3]++; } - int c = FC(i, j); + int c = fc(cfarray, i, j); if (c == 1) { red[i][j] = sum[0] / sum[3]; @@ -192,12 +200,12 @@ void RawImageSource::fast_demosaic() for (int i1 = max(0, i - 1); i1 < i + 2; i1++) for (int j1 = j - 1; j1 < j + 2; j1++) { - int c = FC(i1, j1); + int c = fc(cfarray, i1, j1); sum[c] += rawData[i1][j1]; sum[c + 3]++; } - int c = FC(i, j); + int c = fc(cfarray, i, j); if (c == 1) { red[i][j] = sum[0] / sum[3]; @@ -223,12 +231,12 @@ void RawImageSource::fast_demosaic() for (int i1 = i - 1; i1 < min(i + 2, H); i1++) for (int j1 = j - 1; j1 < j + 2; j1++) { - int c = FC(i1, j1); + int c = fc(cfarray, i1, j1); sum[c] += rawData[i1][j1]; sum[c + 3]++; } - int c = FC(i, j); + int c = fc(cfarray, i, j); if (c == 1) { red[i][j] = sum[0] / sum[3]; @@ -281,7 +289,7 @@ void RawImageSource::fast_demosaic() vmask selmask; vmask andmask = _mm_set_epi32( 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff ); - if(FC(top, left) == 1) { + if(fc(cfarray, top, left) == 1) { selmask = _mm_set_epi32( 0, 0xffffffff, 0, 0xffffffff ); } else { selmask = _mm_set_epi32( 0xffffffff, 0, 0xffffffff, 0 ); @@ -311,7 +319,7 @@ void RawImageSource::fast_demosaic() for (; j < right; j++, cc++) { - if (FC(i, j) == 1) { + if (fc(cfarray, i, j) == 1) { greentile[rr * TS + cc] = rawData[i][j]; } else { @@ -332,7 +340,7 @@ void RawImageSource::fast_demosaic() #else for (int j = left, cc = 0; j < right; j++, cc++) { - if (FC(i, j) == 1) { + if (fc(cfarray, i, j) == 1) { greentile[rr * TS + cc] = rawData[i][j]; } else { //compute directional weights using image gradients @@ -358,7 +366,7 @@ void RawImageSource::fast_demosaic() #endif for (int i = top + 1, rr = 1; i < bottom - 1; i++, rr++) { - if (FC(i, left + (FC(i, 2) & 1) + 1) == 0) + if (fc(cfarray, i, left + (fc(cfarray, i, 2) & 1) + 1) == 0) #ifdef __SSE2__ for (int j = left + 1, cc = 1; j < right - 1; j += 4, cc += 4) { //interpolate B/R colors at R/B sites @@ -368,7 +376,7 @@ void RawImageSource::fast_demosaic() #else - for (int cc = (FC(i, 2) & 1) + 1, j = left + cc; j < right - 1; j += 2, cc += 2) { + for (int cc = (fc(cfarray, i, 2) & 1) + 1, j = left + cc; j < right - 1; j += 2, cc += 2) { //interpolate B/R colors at R/B sites bluetile[rr * TS + cc] = greentile[rr * TS + cc] - 0.25f * ((greentile[(rr - 1) * TS + (cc - 1)] + greentile[(rr - 1) * TS + (cc + 1)] + greentile[(rr + 1) * TS + cc + 1] + greentile[(rr + 1) * TS + cc - 1]) - min(clip_pt, rawData[i - 1][j - 1] + rawData[i - 1][j + 1] + rawData[i + 1][j + 1] + rawData[i + 1][j - 1])); @@ -385,7 +393,7 @@ void RawImageSource::fast_demosaic() #else - for (int cc = (FC(i, 2) & 1) + 1, j = left + cc; j < right - 1; j += 2, cc += 2) { + for (int cc = (fc(cfarray, i, 2) & 1) + 1, j = left + cc; j < right - 1; j += 2, cc += 2) { //interpolate B/R colors at R/B sites redtile[rr * TS + cc] = greentile[rr * TS + cc] - 0.25f * ((greentile[(rr - 1) * TS + cc - 1] + greentile[(rr - 1) * TS + cc + 1] + greentile[(rr + 1) * TS + cc + 1] + greentile[(rr + 1) * TS + cc - 1]) - min(clip_pt, rawData[i - 1][j - 1] + rawData[i - 1][j + 1] + rawData[i + 1][j + 1] + rawData[i + 1][j - 1])); @@ -404,7 +412,7 @@ void RawImageSource::fast_demosaic() for (int i = top + 2, rr = 2; i < bottom - 2; i++, rr++) { #ifdef __SSE2__ - for (int cc = 2 + (FC(i, 2) & 1), j = left + cc; j < right - 2; j += 4, cc += 4) { + for (int cc = 2 + (fc(cfarray, i, 2) & 1), j = left + cc; j < right - 2; j += 4, cc += 4) { // no need to take care about the borders of the tile. There's enough free space. //interpolate R and B colors at G sites greenv = LVFU(greentile[rr * TS + cc]); @@ -428,7 +436,7 @@ void RawImageSource::fast_demosaic() #else - for (int cc = 2 + (FC(i, 2) & 1), j = left + cc; j < right - 2; j += 2, cc += 2) { + for (int cc = 2 + (fc(cfarray, i, 2) & 1), j = left + cc; j < right - 2; j += 2, cc += 2) { //interpolate R and B colors at G sites redtile[rr * TS + cc] = greentile[rr * TS + cc] - 0.25f * ((greentile[(rr - 1) * TS + cc] - redtile[(rr - 1) * TS + cc]) + (greentile[(rr + 1) * TS + cc] - redtile[(rr + 1) * TS + cc]) + (greentile[rr * TS + cc - 1] - redtile[rr * TS + cc - 1]) + (greentile[rr * TS + cc + 1] - redtile[rr * TS + cc + 1])); diff --git a/rtengine/filmnegativeproc.cc b/rtengine/filmnegativeproc.cc index 86bad00f7..1f27983ed 100644 --- a/rtengine/filmnegativeproc.cc +++ b/rtengine/filmnegativeproc.cc @@ -25,6 +25,7 @@ #include "coord.h" #include "mytime.h" #include "opthelper.h" +#include "pixelsmap.h" #include "procparams.h" #include "rt_algo.h" #include "rtengine.h" diff --git a/rtengine/hphd_demosaic_RT.cc b/rtengine/hphd_demosaic_RT.cc index 2b61bbe07..5e05b128e 100644 --- a/rtengine/hphd_demosaic_RT.cc +++ b/rtengine/hphd_demosaic_RT.cc @@ -352,7 +352,7 @@ void RawImageSource::hphd_demosaic () interpolate_row_rb_mul_pp(rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1); } - border_interpolate2(W, H, 4, rawData, red, green, blue); + border_interpolate(W, H, 4, rawData, red, green, blue); if (plistener) { plistener->setProgress(1.0); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index bed101e0d..90d280117 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -38,7 +38,6 @@ #include "refreshmap.h" #include "../rtgui/options.h" -#include "../rtgui/ppversion.h" #ifdef _OPENMP #include diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index b58c60780..e10d7f690 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -45,7 +45,6 @@ #include "satandvalueblendingcurve.h" #include "StopWatch.h" #include "procparams.h" -#include "../rtgui/ppversion.h" #include "../rtgui/editcallbacks.h" #ifdef _DEBUG diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index e788c6c83..8ac0d3091 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -22,6 +22,7 @@ #include "camconst.h" #include "pdaflinesfilter.h" +#include "pixelsmap.h" #include "rawimage.h" #include "settings.h" diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index 0d83d7af3..ff529697b 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -38,6 +38,10 @@ namespace { +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} + float greenDiff(float a, float b, float stddevFactor, float eperIso, float nreadIso, float prnu) { // calculate the difference between two green samples @@ -323,6 +327,7 @@ BENCHFUN bayerParams.pixelShiftShowMotion = false; } + const unsigned int cfarray[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; const bool showMotion = bayerParams.pixelShiftShowMotion; const bool showOnlyMask = bayerParams.pixelShiftShowMotionMaskOnly && showMotion; const float smoothFactor = 1.0 - bayerParams.pixelShiftSmoothFactor; @@ -641,11 +646,11 @@ BENCHFUN for(int i = winy + 1; i < winh - 1; ++i) { int j = winx + 1; - int c = FC(i, j); + int c = fc(cfarray, i, j); - bool bluerow = (c + FC(i, j + 1)) == 3; + bool bluerow = (c + fc(cfarray, i, j + 1)) == 3; - for(int j = winx + 1, offset = FC(i, j) & 1; j < winw - 1; ++j, offset ^= 1) { + for(int j = winx + 1, offset = fc(cfarray, i, j) & 1; j < winw - 1; ++j, offset ^= 1) { (*histogreenThr[1 - offset])[(*rawDataFrames[1 - offset])[i - offset + 1][j]]++; (*histogreenThr[3 - offset])[(*rawDataFrames[3 - offset])[i + offset][j + 1]]++; @@ -726,9 +731,9 @@ BENCHFUN }; int ng = 0; int j = winx + 1; - int c = FC(i, j); + int c = fc(cfarray, i, j); - if((c + FC(i, j + 1)) == 3) { + if((c + fc(cfarray, i, j + 1)) == 3) { // row with blue pixels => swap destination pointers for non green pixels std::swap(nonGreenDest0, nonGreenDest1); ng ^= 1; @@ -783,7 +788,7 @@ BENCHFUN for(int i = winy + border - offsY; i < winh - (border + offsY); ++i) { // offset to keep the code short. It changes its value between 0 and 1 for each iteration of the loop - unsigned int offset = FC(i, winx + border - offsX) & 1; + unsigned int offset = fc(cfarray, i, winx + border - offsX) & 1; for(int j = winx + border - offsX; j < winw - (border + offsX); ++j, offset ^= 1) { psMask[i][j] = noMotion; @@ -919,7 +924,7 @@ BENCHFUN float *blueDest = blue[i + offsY]; // offset to keep the code short. It changes its value between 0 and 1 for each iteration of the loop - unsigned int offset = FC(i, winx + border - offsX) & 1; + unsigned int offset = fc(cfarray, i, winx + border - offsX) & 1; for(int j = winx + border - offsX; j < winw - (border + offsX); ++j, offset ^= 1) { if(showOnlyMask) { @@ -969,9 +974,9 @@ BENCHFUN float *nonGreenDest1 = blue[i]; int ng = 0; int j = winx + 1; - int c = FC(i, j); + int c = fc(cfarray, i, j); - if((c + FC(i, j + 1)) == 3) { + if((c + fc(cfarray, i, j + 1)) == 3) { // row with blue pixels => swap destination pointers for non green pixels std::swap(nonGreenDest0, nonGreenDest1); ng ^= 1; diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index 452ca8bfe..f7d905357 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -26,12 +26,12 @@ #include "colortemp.h" #include "iimage.h" #include "imagesource.h" -#include "pixelsmap.h" #define HR_SCALE 2 namespace rtengine { +class PixelsMap; class RawImage; class DiagonalCurve; class RetinextransmissionCurve; @@ -266,8 +266,6 @@ protected: void eahd_demosaic(); void hphd_demosaic(); void vng4_demosaic(const array2D &rawData, array2D &red, array2D &green, array2D &blue); - void ppg_demosaic(); - void jdl_interpolate_omp(); void igv_interpolate(int winw, int winh); void lmmse_interpolate_omp(int winw, int winh, array2D &rawData, array2D &red, array2D &green, array2D &blue, int iterations); void amaze_demosaic_RT(int winx, int winy, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, size_t chunkSize = 1, bool measure = false);//Emil's code for AMaZE @@ -276,8 +274,7 @@ protected: void dcb_demosaic(int iterations, bool dcb_enhance); void ahd_demosaic(); void rcd_demosaic(size_t chunkSize = 1, bool measure = false); - void border_interpolate(unsigned int border, float (*image)[4], unsigned int start = 0, unsigned int end = 0); - void border_interpolate2(int winw, int winh, int lborders, const array2D &rawData, array2D &red, array2D &green, array2D &blue); + void border_interpolate(int winw, int winh, int lborders, const array2D &rawData, array2D &red, array2D &green, array2D &blue); void dcb_initTileLimits(int &colMin, int &rowMin, int &colMax, int &rowMax, int x0, int y0, int border); void fill_raw( float (*cache )[3], int x0, int y0, float** rawData); void fill_border( float (*cache )[3], int border, int x0, int y0); diff --git a/rtengine/rcd_demosaic.cc b/rtengine/rcd_demosaic.cc index 63b5989ab..4ceb92b26 100644 --- a/rtengine/rcd_demosaic.cc +++ b/rtengine/rcd_demosaic.cc @@ -26,6 +26,13 @@ using namespace std; +namespace +{ +unsigned fc(const unsigned int cfa[2][2], int r, int c) { + return cfa[r & 1][c & 1]; +} +} + namespace rtengine { @@ -55,6 +62,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) plistener->setProgress(progress); } + const unsigned int cfarray[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}}; constexpr int rcdBorder = 9; constexpr int tileSize = 214; constexpr int tileSizeN = tileSize - 2 * rcdBorder; @@ -97,8 +105,8 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) for (int row = rowStart; row < rowEnd; row++) { int indx = (row - rowStart) * tileSize; - int c0 = FC(row, colStart); - int c1 = FC(row, colStart + 1); + int c0 = fc(cfarray, row, colStart); + int c1 = fc(cfarray, row, colStart + 1); int col = colStart; for (; col < colEnd - 1; col+=2, indx+=2) { @@ -131,7 +139,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) // Step 2.1: Low pass filter incorporating green, red and blue local samples from the raw data for (int row = 2; row < tileRows - 2; row++) { - for (int col = 2 + (FC(row, 0) & 1), indx = row * tileSize + col; col < tilecols - 2; col += 2, indx += 2) { + for (int col = 2 + (fc(cfarray, row, 0) & 1), indx = row * tileSize + col; col < tilecols - 2; col += 2, indx += 2) { lpf[indx>>1] = 0.25f * cfa[indx] + 0.125f * (cfa[indx - w1] + cfa[indx + w1] + cfa[indx - 1] + cfa[indx + 1]) + 0.0625f * (cfa[indx - w1 - 1] + cfa[indx - w1 + 1] + cfa[indx + w1 - 1] + cfa[indx + w1 + 1]); } } @@ -141,7 +149,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) */ // Step 3.1: Populate the green channel at blue and red CFA positions for (int row = 4; row < tileRows - 4; row++) { - for (int col = 4 + (FC(row, 0) & 1), indx = row * tileSize + col; col < tilecols - 4; col += 2, indx += 2) { + for (int col = 4 + (fc(cfarray, row, 0) & 1), indx = row * tileSize + col; col < tilecols - 4; col += 2, indx += 2) { // Refined vertical and horizontal local discrimination float VH_Central_Value = VH_Dir[indx]; @@ -176,7 +184,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) // Step 4.1: Calculate P/Q diagonal local discrimination for (int row = rcdBorder - 4; row < tileRows - rcdBorder + 4; row++) { - for (int col = rcdBorder - 4 + (FC(row, rcdBorder) & 1), indx = row * tileSize + col; col < tilecols - rcdBorder + 4; col += 2, indx += 2) { + for (int col = rcdBorder - 4 + (fc(cfarray, row, rcdBorder) & 1), indx = row * tileSize + col; col < tilecols - rcdBorder + 4; col += 2, indx += 2) { const float cfai = cfa[indx]; float P_Stat = max(epssq, - 18.f * cfai * (cfa[indx - w1 - 1] + cfa[indx + w1 + 1] + 2.f * (cfa[indx - w2 - 2] + cfa[indx + w2 + 2]) - cfa[indx - w3 - 3] - cfa[indx + w3 + 3]) - 2.f * cfai * (cfa[indx - w4 - 4] + cfa[indx + w4 + 4] - 19.f * cfai) - cfa[indx - w1 - 1] * (70.f * cfa[indx + w1 + 1] - 12.f * cfa[indx - w2 - 2] + 24.f * cfa[indx + w2 + 2] - 38.f * cfa[indx - w3 - 3] + 16.f * cfa[indx + w3 + 3] + 12.f * cfa[indx - w4 - 4] - 6.f * cfa[indx + w4 + 4] + 46.f * cfa[indx - w1 - 1]) + cfa[indx + w1 + 1] * (24.f * cfa[indx - w2 - 2] - 12.f * cfa[indx + w2 + 2] + 16.f * cfa[indx - w3 - 3] - 38.f * cfa[indx + w3 + 3] - 6.f * cfa[indx - w4 - 4] + 12.f * cfa[indx + w4 + 4] + 46.f * cfa[indx + w1 + 1]) + cfa[indx - w2 - 2] * (14.f * cfa[indx + w2 + 2] - 12.f * cfa[indx + w3 + 3] - 2.f * (cfa[indx - w4 - 4] - cfa[indx + w4 + 4]) + 11.f * cfa[indx - w2 - 2]) - cfa[indx + w2 + 2] * (12.f * cfa[indx - w3 - 3] + 2.f * (cfa[indx - w4 - 4] - cfa[indx + w4 + 4]) + 11.f * cfa[indx + w2 + 2]) + cfa[indx - w3 - 3] * (2.f * cfa[indx + w3 + 3] - 6.f * cfa[indx - w4 - 4] + 10.f * cfa[indx - w3 - 3]) - cfa[indx + w3 + 3] * (6.f * cfa[indx + w4 + 4] + 10.f * cfa[indx + w3 + 3]) + cfa[indx - w4 - 4] * cfa[indx - w4 - 4] + cfa[indx + w4 + 4] * cfa[indx + w4 + 4]); @@ -189,7 +197,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) // Step 4.2: Populate the red and blue channels at blue and red CFA positions for (int row = rcdBorder - 3; row < tileRows - rcdBorder + 3; row++) { - for (int col = rcdBorder - 3 + (FC(row, rcdBorder - 1) & 1), indx = row * tileSize + col, c = 2 - FC(row, col); col < tilecols - rcdBorder + 3; col += 2, indx += 2) { + for (int col = rcdBorder - 3 + (fc(cfarray, row, rcdBorder - 1) & 1), indx = row * tileSize + col, c = 2 - fc(cfarray, row, col); col < tilecols - rcdBorder + 3; col += 2, indx += 2) { // Refined P/Q diagonal local discrimination float PQ_Central_Value = PQ_Dir[indx]; @@ -221,7 +229,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) // Step 4.3: Populate the red and blue channels at green CFA positions for (int row = rcdBorder; row < tileRows - rcdBorder; row++) { - for (int col = rcdBorder + (FC(row, rcdBorder - 1) & 1), indx = row * tileSize + col; col < tilecols - rcdBorder; col += 2, indx += 2) { + for (int col = rcdBorder + (fc(cfarray, row, rcdBorder - 1) & 1), indx = row * tileSize + col; col < tilecols - rcdBorder; col += 2, indx += 2) { // Refined vertical and horizontal local discrimination float VH_Central_Value = VH_Dir[indx]; @@ -296,7 +304,7 @@ void RawImageSource::rcd_demosaic(size_t chunkSize, bool measure) free(PQ_Dir); } - border_interpolate2(W, H, rcdBorder, rawData, red, green, blue); + border_interpolate(W, H, rcdBorder, rawData, red, green, blue); if (plistener) { plistener->setProgress(1); diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index b1953bb3d..0cdcbf6ed 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -31,15 +31,12 @@ #include "colortemp.h" #include "curves.h" #include "dcp.h" -#include "iccmatrices.h" #include "iccstore.h" #include "image8.h" -#include "improccoordinator.h" #include "improcfun.h" #include "jpeg.h" #include "labimage.h" #include "median.h" -#include "mytime.h" #include "procparams.h" #include "rawimage.h" #include "rawimagesource.h" @@ -50,8 +47,6 @@ #include "StopWatch.h" #include "utils.h" -#include "../rtgui/ppversion.h" - namespace { diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 95fa58cef..47982b6da 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -384,7 +384,7 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D Date: Tue, 5 Nov 2019 23:06:45 +0100 Subject: [PATCH 65/66] Added FUJIFILM X-T2 dual-illuminant DCP, closes #5513 --- rtdata/dcpprofiles/FUJIFILM X-T2.dcp | Bin 0 -> 1102950 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rtdata/dcpprofiles/FUJIFILM X-T2.dcp diff --git a/rtdata/dcpprofiles/FUJIFILM X-T2.dcp b/rtdata/dcpprofiles/FUJIFILM X-T2.dcp new file mode 100644 index 0000000000000000000000000000000000000000..5a4e11688f02b386d134365929562b2617f628b3 GIT binary patch literal 1102950 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

  • wQoT|XZ>Wh%ptiYvJ7h%7>JuZ{ff?upX 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

    3q^#5x@rMqath_x$8Vz8^Al2~FY`j`2hT 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

    w}TB#VdX0ZIJof95>Pr>){gL0DOf`?T+ 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

    )kt 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 q>l*y+e;7 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

      21YY;cE0P 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 z

      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𝔞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∓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

      tcxIXVa$AI zOQy2m+IHdwYZVDkxN^FDyLj)L^|`M+1ocqV@BQ?I3T1omZG!C*vmZ)N&p^TU+lTt9 zHoyD@+XCxGs^NqD1lu|j6IBxYuGMUp=$WdP*Y^=@H+Z*IrCLEgX=t}U+g8<0=1q2k z9_?bPx={x8LqKo6ZLB(;=p+2<+Y|b#hVP(O6|{dd&{7?P{E_P4{*?|5R3{+k$u-b# zejBLLKe`H@V~o41{v>S>Jg*N7R~^Y%LrS1e!lWA2)6Y)i73hCCmqkaA9qm0yLk4-> zH9pDG4nf{!$U$#*#7%bG1@aKYLoK$f=eB+9{D>{wcUkmSo0K{~l6=9N7`r$s662uG zqZ8C24g9Kbg8i$tFpp!or=PM4&JUH}gy)~LLTP3R_c+~`90(3oKL50ZFqre5d@fnJ zy+;r+fU)$jm|W$j?oczjJ=FdBepwmO2I`i>eNHKOtn?ilBz)|X0q>N06>t_6+9T5I zslLqc7e02{O}O0{!KIj%vpX$bAJ`pKGa3LryGp-QHOf8mK1q_a-+$kFe8Lo$BO4?t^}$VW=9! zHj!tb-D^6j3M|)=a?q|nx2nQ*oyc3zi>^IU4Ru{fK7#(2b8ll9_y2(Uu&G|;#ma}W z{g4Nu8fqL2H*%J(g>~}}BQ}%VsQR*=@NS%&19b}0mfHq}`;u9mpiaS?6l)4O34g^x zj;Z%D#mNbNWU8SLNhms@n34$N?QK3}GO4F5_ycDdP30v1U`OR`$dfbv1^A+icFJO( z01_DLONMJLRaVyvBqL!i>}8L+i>t%<%_3*Bp&(<9CTiJ|6q`asWzOstW;D4kt5J9552BD1NE>@f?lnAQ&|mX zxdS<5W|W_l6|UJ# z(v)7Ldh{&W$oJl)O=E~hPwL4Q-iF$(OCa~r@@(56KRI~@d2yZd$Jut%@Fnl{yh;7S zBQ~}$w?pT76GfhscL3(qccepY$K1mF=h;w89b)=L`+F{a~C2p}g@;P+E@PSL+#FllH6H3*C<75m&n#rw;qPDfc45hDD+uJIj|11&;? zA9y5LD>dDN1>2>H@yaIqwh145DrmM+yUSL=)=o8B>HY=AcEF*}$%#ro@L}gcvqduH zgsG4l0QB{Kot4M;!P#rjLuxgY9P*Q^{lMMVX^Nnkn*`fN8=yDY7lH@8yM*D(fxns>zsR8kWD+>Nd@F%Tz)4~))sOoRvz^N|1wY( zvciWngtgm#MZawKbd(cwyUoOW%vsyviE@$z?@cRtnC%{zvnsmLHF%3&{lUI zVNGyXK}G?_s0OpaRg_Lp-TC!`%tS6^t%mJw(d}; zl7b$7Innl3SOBpDol!i;wssB7$AV7Z+R`=wYLZR_{W0&lO)psMnGX8sVhO3WPQm-(j0WgfmjmMcRlF_dUl^r zU~_8;1^sc2W};O20`9a(Dofu$=N1b1ZQ2h0%8g8pb^l{hCd^5=aBRH>$OBm zLC#;7>rvf6w_ zRDa?Ndheu_lwR^9p`cS2`%)JMd8$BL9|@zc;dhh*I;}j8I`x2>_Mlr_JwVmD@l>F5 zT4vL0@ZPu$y4`?$`n;JpDF@v*`Z7HWxz+1HOPwFm`I?(a6JV%wse;-jcoIv{Q+C$T z`n%o9FwhhIb);A$bzM8C7k0%&%F0yN#)O(cQdengUt}2LAd{A*trzV#SI?E~jIsSm zR)AzytFG1dznpJbUni#N$a(*QN)ilbK-HYz-f2uXStI8Q)mC%_oPAbv_Anhu-<1cD zF`(x^TSVU$AZODg4|)^UZ)ZUJQnrm&gg_lG(Cb{I>FxE%d0pduwBKyx?3R^DFVFzu z27R1{o}xOP0*D{z&)*AZH(2)!2fZNTAq`&WPvSuv6}_jkxBHP)&?~2DN)Fe3Ne<|d z6$X+Ccg z?d4=JXkD$bQd@H$G6VE!?-^3aXvk>|to|Hzkapiy*It8qg`1nO3UuG(lKrNR3v9dxUa zourN5{m5z1-NX7yyO#NpOQ2~3Dp`Dj+BKjP#*LG{obVOCqM`Fl>0TPtRsx141C~fP z_Cu{U(9T<(CEHZYk1>0Tm*fV0)U2AvY>_6ye34quyc;4JwU-N>VX#xWI2q~;K)dFy z7-{rI)OXg!OOHRQ>sk4dnlC4$d*|`H_?PqkH74}%8RYyXe*nER139a%Eu&Lmj$h3= z(kO(!c#nSLfoBp8I**)p_~p=_kb`;>^cmX!672->s@k6C${y2(PRRLDMirek9Xa>e z{)hG%9zfPYpO@h}(&3&^cOJCauqM*+X2|*OvsRL39dbSq(m{%bv$<-{iS|}fB&@?{ zsQW)1AZ0<_B(+ZtF|e29w(8sfP^&R^hV=5LIv)d^Z+LK}vPNxP?I9h7 zJw@t1mJPN@qpeVT4-1v5;p~aJ{r1F2X+}@fZ zG?#c^c;|v$ZT)I4IX8#8&!BBnETrffSjz@|#=MVIejjR5ftJs+mgztW?oYJ!>Akg+ai@Dpw2lKBKhq?J$K$t zX;vg^{l~G=dssJ7f3_qfQTkGaoD+jmq|#!jZw2jtex<@S(YNFUW=fIY(N|0=KP!EJ zbH`Gw`ukA-!_W3xU`a1D2^8aB{zMTU|KhW*cn@HB+69$1k zGo-cj?V-Qm9GurdDn98iIKQ&9lJ>zEQ_cCFZhxuV2RSQ#*hm|eBIkaSMoLd0--!Ad za=uTL=GmeCQ8ZgxFaY(=iL0eE9Z_2h@|IRA>Hxj`3H`>jN+sO_^C4=^3$Hz(mJsi$ zIe&G3PlF-GP(OQUxrWqaC~^+@t|#5rLC)ddno3$Xk@J?B};2iT~fK=ZZIhz|3={39))$b{dE~BKQe>v|UlchZ)kYUWmIa0sDsEgV! zlYDxiwj1gyxpYCDH`ia<*BEujUt6Us^-;fF7%nwyiaKj)q$I)Ig8Er5%Xdk?x}yGK zksy^wxWcsiWImZO%(Pi6_bE8K^^fuHnS96Yf`i3@=A?NzVzv(9!&#CQs#&R9W z8GNkTo_~57NwrzXdG7R<(tB8UQ~Ql$S?#33Yml?W8cXS?19D#RtB+(l7dh9h8X{>= zLe8dan6%9vnY1w)D<%E)&nsM~N`v}i`=&nFJ- zqn=R~C>b-<{;|Q5+d9;;BVp1YN95f2$aZND)M;1q54j&H8O%eUy#G~8ebR^| zsU&4Rx%T9LIWK?FiJp3b{<$!EG+omLIe%#8ODnE{&jg0MbrR?r@V)AIqj{&})EHtj zwLRBFU80}6Bj?+NPiZp)vg-kCqahhMX@?Y$r`p@8g0#ej_ZT?_>PQM9`O;_LfeJM9wj0gQb_VkV9M-D%p6W zK09ob)Fl)3Hp@wp5^`;-nS9rtEu94auhtf4mr1?<{_gfpT`Q&U!1hfKHc16A-=gjl zK|Q5GkMOgPp7=Y!9KUx6ZCe^3{6=-)D*6i8syQD!7e+gbN6y*@Q)qfy z)J%syt$$snV;=a!{HmN-y?aapP9SHEy_M8@2XZz^{Xw&wkh62o2GXt#$oc+q14%Cf zIX4(*ENOi}&Z(8AQsW`;J;F6j%{xjxHV2TIpacF`N)OKu2rVq#16`WG?I<{g?A?_eOLtNW~FJI`>TW{r`v#qMxw@B;GsK>y`rAFb00AW5J#r<|a_BLYZw z;Go~OkoJe)h1#Ac47*D+Q(^A|=%)K#(mU9N1*fr3C{2YREm zmelxjAQ=nV>V}>)yjc*L0-9DCN>Ya)!SLWKV`)uS)ZY_YNpbB_e=}<#a(LXQt zIGvn%hSEGPYXOAkWbZMCi5p81gmSK__tt*D_zP$yd5-n{=W+8$~dt99fm4Ji%I zx2kn@>jn~kjr=zZ(2;apQIkYH>EQ|Fd?(C6s`W+Aqih;WzTePqY;0;Iy}69>#+@{t#GEh$6T~?A`g-p6_^nBrdigdot+(efDaH z(2Wff1@n^!!s+?=crpOmGdy?F@{7C35YSc=V(8Xo(S(4mXcW(<9?MH7J%LGho;e-; z>!@IRZ(}>E>6s?{!;HH2v_o97@DCZV5BBWqJ!Clazdp7L9nvOVyzkl^wxCbH#|Rtl zvdxO_o*N}>IALZ_n%{A!xVMKUeP}D|?Ls%J=|@v`BLC5+2htofy#HHktZ9oo$lUAw zP^z7d%zsA7Xe-!zqkcv+BZ+3he3`JrQ^Tl!Q?zZT=62L{33A@-I)c7%L(UoXM$vxl zk@N9`*4VmgMhji_(95b(RXBSE?LE^H6{CkIk#V5!N&6HRt|kZ@ z*4H?o=n8vjW2Y3OP^d)<)S&2RVm6vQifIM9%&72Py0R#@ovh`zdz^ z<5>IRkQT~x*gL0YcW7U!V!}6^$6GMkT`|wfnG8Myd#?>P*qkg}MV^iR-|^t4n>~rc zQM|W~Q{t4J2|i2fhfb=s(YwSoV@{q{#edo@^kVzZs{TWgg|0me`8`&oqTbnyWzEkN zddsO%tX+d_p}i6pF^Bml$jCaF$IfwJ`xa-CpP)}CIIxzG&$;3!>|v;JVCUW?lEJ@V zPV&nV7Gxh!hC_SHWy@IOxERv97Uq9sE7~7!XFZpUO%0o(;@271jc-!@S~QS9WtmF!4AoCuN5{S*zl$WdB|{d6MD7 z+QYl`qnDi2F7ab}5R+Vhvk=3o{8{KCe=@QLuKB{BH7SSrv(GU0cl2d{?s$+Q*aM)i z@MQXZH<9L%;A4&4*wYke!Y|56o246><2pyO3ZC&_|7@9vDwFxuRqa8%_w_cCv~Muf^}>R*Hhv49DNdM=J$; zp|@A`8J@3T+27-YE?ul*9+%O!H(udv#bmUH*|*QLZ>#b5II7}t55}QU z2jrx|lQ%30a{EmLZBzW3c{zF#WdW>H3@c+d9&RFXc=p+`FWB0t>%@I(?s&)^w{Q~r zU(PQN&nBl%rjp}%ur76Qfoh6P8u`8f{HLN;HL>OpxiJLhC?c)dch^i}0&Cea)q2)> z%2Cou1Kv|Nqu7eo$A~Uy%{xcfy_g)LYzp)9Z7;G1>8HrR{&KRq!DBW*=QOOv$;p1N zS8T<}070e{MXf8Skt_&aHr(PAGDImfwcYhq*5`tJ08;yzw=R zne}&C^0ABYUDoG(5AOLJg-uzV=#&z!w_v5Q);Cjm7nf-X|oz>zx|JrlW=4GlO z8(x!^*)XOaW5dd`UJ_Gy#^}nOZ2FW^V*ksBxcIBsi!r6-J>*Y0xvhe|d{Rml!WwO8 zu{O^Re@Uix^&tbln(*Mco9N}6@~E><$hMo_WSONYcYa<(vQBxEqc2VP*Bq$r zc-)&b4>aHhnyAQm*k6^|us+u>JV_qIKIR#(zOoDLj*>y;um|*81zT|`P2BUrUay&+ z9WsBH`-Z&^Mdk+vzh~JA_#WBy?h9Ks6`B9M`;$#Rg8oD|33BA_LEHBD-jLh;z}Umm zxiPm`g73k|aJaWu$T|L^8IOQ{=4$57t2=S+P52%>t9&X7$p4}w=uD7j>f7Nmp`d@qY|JsVBTy8{F;3uzNJHSRx(xvONwHkL00kzci`G{|wk8`UJPFWoc{B zpIo{3iRnQcuC~cJT9s_{{AoLb2B97mC=lvy_LiM z-gB%ppfT-#RZd>OPAI-npT0f;u}8CB{Ka@(s+9tB8sjE#X;(wqWf!c8L!IJd8?|7} z0CRT%&V2bKsJ|I4C+7#P=HthICSwv|@8k_T~FzYL%Q66I-5` zctt!*RAeu1ID!c+yU>ZRnSDxV>y~Y}$J#8RHLtbccV-+C`uT=t{9J<+p(i*P^7rn@ z`PXed-ku}p(zaTB*%jnm^7%LWH5=cRZV6wQE5&zZ{RfrIza7RT{jR!U4 zP9bNfPfyql*xRpWKHRs2UAlvQBkx=pThsFIoO9U+*7gx{{;6oqA0NTk<6nEOzPFg= z?K7r5-pI-Cgr}^48d5VjM_T^SjGt|0KyMz0-|`VV?(kffKHLXqvSzQ~+gj>S!x)%P zcJSj{pK4Ln4p<+_3FPDV)T3vkfwzgW-JNbmZJZ8qDJ*dn{Tm1&L_Mr`I8@L&!?|+<#MxIYHH&`?F4el!3~YGvJ2~&%Lx(PcG19Fc z5xo5uE$X`k)~REn_}8p@^ji?@pXs!dkA3!;JOlm{*9P-0o65;FCMVx}Zswc1A?IeB zR`O;Skn`G6v-t5r$oaF*INrD#{YLKTVSM0m^cx>94&fu6k@Hlmew+_N&VJ3U_~D=U zPF&Hh12;`X&R2LV-n;-gH-p+z`^O>YL1lWpUTfrB>ePU*{f>U4k=<{$qs}DO;@+&W1arX*`>`6mRw;> z%U?kJ{JJ4uGS84cQNX-Yt&DqiHK5+fa?<|FT7I!cmyQgDxuCvbeA`eRy4qU~wNdu) zp$)X@OgC8TUzW^oDC$uY4;X9j+{+#6K9kU`a-#Yk!>6W~6LMQl9_9w~xL(NF+`xxt zA4ksht5Nd(Vo$LjFRRm~OMSr)EQ;eX!*uA}bx=33E}a+Z zYtwr0e$?!g#lM}aM}0v%z02gMOumo}{&M2EHibW^C?|71fd82k!?QXf=V7mdd7e9R zzW>FS+ipb8yL~qDl&dGjv&=cQoEy0u5qkBYIXuq=InU@Zp3ggsoUI#EJ{Hc+sh?fH zLw}y)f}FhvS@H?HkaMoFIj364`Rfi7J{xL$sQbs~81N>Wk#nxL7I)u?oOd7l#g2Xd z>o?kdWf6bZzP%^CV;vshx|P<1VrHFzw!L$91sj=;KE$Y9Z|-&Dznr^t$YMF2OlVy( z_}HR$yy1F7ntV)7mJ~1Iq`Lu4j)1+Pqr&)tdV2I8#F0yb4)BBaaE^VkoK&wk#XA{k z)1(=&*X2$=x4QuTc{+>%`<>yw{lCDL7+42?ca-ZlcqN{zMb$n&UjsSMt&Zj!Opx

      hR(?O!>*1z`7*{EcBL)3={)3orLr;i=z*Nu9@FA;-I4R+AGJ)|9Osl4PI=D^ zucJNJj4Nj6EzpO^(;2fJ`j>feG1HLHhkWQZkk9$_U(R}|O30UPLc<=&N&T@sxaBrO zIvnOwqA#t7)Tsv4E)Z<{)Gj{4K#!hS0eh1&v-y%~I&|t}u;J_Hd2DNK>Sre>4(qS* zdN=FQ)Dhsfmt5cj9lj9DFtF`)dEDW5xnP*M>o8wja9?O^vwb`___ENccVqZMGvs`E zNf_Vch4HhmUI1?&ikydh-@qFhA!piPF>fnJ&h|-@__R3W+&4zz`ZmaUVNO48Iuto~ zY15Ubxgh86zf8HyJ&d2n_if4(BQSnWoTbY*GmM`XZm!3-uSR=*)!;olz8X1a)hJkl zO5_|qJCV6T{H6X~q;|f<438sct93*8H9Z^~{`($0ZE}M>cQT>*MXaV(V8Q5w`Mm~2KtV0c8Y(Ajr9iH<|i@xhDCtVsmFwh?7Au4vQxVOV z)SVFeQFbsln}M8vpYY~SKOPkAZ(ptA=jS2k?1Gs*eLZrXG1Q({Lf$a-vu_R>%quVB z*ig!`;$fF?oU$Uj9Ut*0MDz*l-GV+!Ma%zkK6<8vCBAAz$KQpy)9+)r*GgU5 z7Urgk28Z*)-`cddC+rDao5hbNB`2Nh z$c+xL?{4X9zTv@pBHIW)lO z4%+bZ!TosWW@y7#^}FzNJ7jzKMr$4h`!LmPXO3vXeG<@CU03RI;*Sh#4%g?;JGzQK zuk-5hGhfyT{baoc&wuA6^sEd`Zr^N$&@b=ma@B?~S@YXExEKmB4vWqLTYa8gwUc{_y4*kAXOO3UIER`kgd=GHHth`&4i#}gj%c|{k*bUh_z8}F~ z7$e(E*M9t9A7tw_q9Y&dhHNW`oA5uSXsa=Ly1c|2ZL(*JU(D?4MsW`njoz`jot%a4 zHQ+hxw8T;9vkQvZ@J-8v*0;RJ8joBg^r6C=jP9H#^uL^4SG{Is&l}RHdvcPLvWRE; z)RJ=tZ52Qm2Iq6r`u)y+n8Sxzpd)Mpg6V528%zE55T$E@83M~!Y9%eIFG;AxL}_D zCo;7?_~F!M1;6ww$;2jdVmGTvLI2k!o*ij-?IAE z4QT_2H*PLn%=?yqCacn5zejo|PySv;jsfS~%;!AAyMjCg&a0olTM&kk=evN#FF=i(%jRJQW#uby! zyy2U((T0cl7ID{I7)!i=sNex&0Z4K+^zVY#|18^)H4d$V7ZrkZBHROmFL2DBs^zl(qE`RS>5 z%+p(ko`Ctf!5R*Hd(sz@c~nmPdmrXCUN4AQpnAUaHTQU10%uHN+&9ahV3$@I`Ar~} zYhzyUrMjFv0{{HTpmTxy{SvaGG5i(=w=d|K0eK{#J!!d7LCY=YNdU~t>04?PG%3jy z_tUxP6}LN^A#~xPYrOal`iGTWPH?A?IMKd!?rvT(6>WHYd?2@lI(KU3eO;FEnbVMS zRJk1=&XIEuCkuXHC~_u_hP-nga@N%Q%qIL@V?CdGjitpQ=l5MRS=C46{A*M=n*_DF z)z=?n=D;?$*(CG|MK|X40{!#7Z!c9=?N^KT!&fJ%nwP8;I`-{O^86a=6%k>ys2snS ze>oo-^O?1L-k7SdFSS|C$1eCIKKtX>34Z?2TcO(z|H31ZUts$dlY&E@uY}&V%A(+` z`)i?Be(YXw`cjF|{;SOjs!v@L`s6#^f>J&7!;6(4x#7~IqP_6XZSG@^aoUOYxm@GvTf6(Qk}x*PcI(4ikMwXFy%H8swZC z^o-qFj_*D_m;``A;aM|1%x(QBl=_pc~Xxx_+6}=cYzN7{olCm#=vLnof2x5!ruxo zcIJE?jH5vtzRKf&{J)CpoQcsW7$7Sb+S;UjL9^|ZLZ|umDVY28jnHyC^MaP=iiEzM zt5eWM3uB3v8L#<#?~|f^$@M}W(KAcvyvOOBR$2Efc-Y=d(iGM zmb*KkZKq!B#2cogZReS4Lk(rL?W><2G7^Qh-Ew>;>t2Yqed(b;+opxgA6v@U^U-MA z7u)<+=|E0b_4RGKY*$??^A*~yVWjeK`DUT56irFrLulJO>Qtn8S7bg|-<<9pj0~G6 zhR`4z^etzNuF^if*k^mIuhgIy#)1FZbG*q(cF3%gU~8?x6BuLo7`5gm;mP8&#d9l}m&YEVmnza(%v@wXed;=vbqkr> z__k;15y*U^Q?BYhoF!K?{J5n`*$DQPskPQ;mCSp|HlbIJ41>I2fkMlEl#s*waXjL9 z#*|Kk^N;HO=Jm$WEyIxcku+ag_z;=LJlsc@ZF3c8`k>k$eFJCei)$h8-x*Cw-_V0B z`z|NjJ~fg?P^mZpRf7_j^|9^!p;&sQH3%%p6iYr>{2yNC#x1euH zt+nYZRdGeM_sbc=-$fS)-R5yC{`uiq zq0M{NvhwjKg!Vqonby-xp(CNr<`Nt9C$omOVwaWZPn;@-t9A^-ao@;J4`dOmaBNc7 z_z=l?8znw_wZAsq9*XbE%Y*vR-NSMIbDhI<`pO_g^l48v((dokw#$rz>7sV%PXgX0 z(DIY$w`bUA(_2d*p85gvU^W-2_ZKhH9~df*zNIJkd6HmY_`t+Ss(~}DA3sCPAel-5 zGA|PQ3HF4*UhaNT9>o9S|8lNp>dXd}_ZB?cUYN<7J#HoREgK~dysRhm^scGAaBw}L zt&VKsR+b;cJ^yYtlxLNd3Vr`zQ~u-91EH&?RIocXH?R-OVMkPjLT`@_W?QoqLQf2{ zW4-U9ZAX1ARXLiVZOgt!Dx35{+xCu&CqAxd+isQ}>G5-D+gI%t(S00k`$|9{wdoWi zu6g4@EcH!A+b;T&N<)XCZQnV2oF4v&oYxoR)0CU&x5JGt)3%0a+aHY|QRg%M#PK)0 z_xU?I26D*c*1$YZaXl%cqYqI6+s-{rr1P-575I(vX6&(U*J5VU0+EneKUCo zoTFghsr4LB^7{YbTw^(oDVp{X49m7mR^4Led_x1T_=(Ak%AiL zP>Y<)j%BgPeJ{l`n*H)*=AI9Qt~Ke!W>+BRF83d*7A?3S+K2QXr%JcMxb9f&PTO7+ zF!o666G}FFBj=(XE$EOCr?O2 zl*h<65&VNm{EYOD}zj{x-TB8r)_kPexn~-y_PYtBTHUVTT_<_^GjV0^Z ze&it7v)h-J(g7D(=LCBmGTvO;(*kk`0DqUrc9LBPqn$k|v~!aBwyXPc|*S+ zQ8jpgoMrAmZG)1L^Z7ltBwOpIVB2d$23fxrInQZXP0s!0oYJ5Tbs@-k$oon3p(Ap> zekY99_e0JbA0DUie>wNKah>3!vZ%AItU* zK+YrETk*RSkn?lr6KtRYIrkf3%ffXvgl&gD%1|A4M9%UfF3Onq$a&>30}_1#Ij{Y+ zlZ*9gt64~H*)@EH-d&AK+fM=4x*bDA?N--E$LOL z*Cu|m6FX8xIdYCk>P+8V3m|gfJi2K&s;%KqB7t+5TTf~c>`T0Xa|^uzwA(;G5(k`h zk66>^4g5$0@F!CoZRq)GZ_*2xk9sMiUEu8b+W&{MdlN0FMT?xfMNa2~=OE_}YjwF^ z0dj8ZbdH7UBj?kKNapW^oL8P(!p>D8=WVY289#=czrHeJXAP0Frcsdf5m$uW)#!oMwca zJuaPAT6-dAn{#KBjkGbwzF_)E>F{@-OoPz=s-KR?dHn)M)p;-EJnoXes=;^U>}

      x;X`h8DPaqq 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 vlIu_BC)QLO?Ct;oC+J#<>Z~Mp_;1L3# Date: Wed, 6 Nov 2019 13:13:44 +0100 Subject: [PATCH 66/66] dcraw: reduce memory usage --- rtengine/dcraw.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index eaf1fe35e..5e17b47ab 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -167,8 +167,7 @@ protected: float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4]; - int histogram[4][0x2000]; - void (DCraw::*write_thumb)(), (DCraw::*write_fun)(); + void (DCraw::*write_thumb)(); void (DCraw::*load_raw)(), (DCraw::*thumb_load_raw)(); jmp_buf failure;

      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

    BYR;6FVmLA>c*ow!XLdv}{;boen&w0`A_$WzI% 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

  • _}s;;n7L^kpKV3YR<%$*VA6+ znYH9Sx6J9YIG4}-`jlr_+!Ukllh;|7{%##g#K_ctGcVQ&4R?y=p{xPbDY#&|QtUEM zfG|mcU5zD_r`0U^%mn`Ik2!lA+*aB^pPIaT^tN!>FO7U*h4|@dc+#vE z4i2%#utuqPX4?k62Rq>Kf8-?^pO?Zo`?jNA&yv+9%KFDKh^EKS|Hn7BjVLX7q@k83 z=W;>LXnwVAB1 zLdUaTIGe7$UpoPxtcl&}IcpnmU$$`|Yuy7XZKKu1vondkM|9Pmk7N(Mj(41WL+!eD z+^0Fg9(HVn$UBe%w>Qk;L&}8oI)%CiDcEjxLNtmZZ(W}nwl;f3EhE+*lb9QSbM8$2 z3|-Fh93vNs(_g6xnME&7oix$7FalBMQjmDpOH5l9jJf@Z)z%*`>JRo~{-Y1&oAx4a zvnQ0%Y1m}+T#2xCLGCg7i?p7v*nhLf0cvZT@4hX6J7j}!`bf6f8?9dT!3xD1`aO*_ zlX}jxhOS8}n!lYdeH-nF2~*i4k8C8BmH1=komkwwyG%KeACJEGs^WE{eM(E-WZFT? zIFDKoQ8F~g0i77<={LKU*gSKGGvmC-=(AQw6UF^^{+x1&cFzL(1q@|RU9d*G`*}QK zCU92hpQ$Z1;BKWYxdHcGwTHQXZ^$0-njW;Sk@$XE&Cx*RA!7kPkh7KpieESr58qiNRexLB-Jv^RyIPX05oK2`* z=S_aK#}d)kH3mPHrC?ZjmbmjJ9GOp9zs-vjZOel&**Fz<@7arrbYI{Ky>DtjJbLee zyFT=9O5!fkRcAQ8Nki#d9TAXbk4VFGteRM&ggE`X2h(x3JW-i&$_hU>r(sG-O=Zp= zYgFc>B55uyZ=TW-U6#zLFgOoP=E$z6#Y zrgd?qcA7o=k-zP=t+rEphVS|1yn5Ph#10?MW(^$jU6k@H_v8IH^VWUwYBK9&_RCL( zpA|Q*laKs^I7t|DGJD_h4#cl(Z5J1KmWQiSAnezQ2Md$1iFbXggnaRCHTC~OQ_yAm zJmI}78lBk}->Z=&e)kH;rr*rf$r|ybb`W#}QsLRhPpn^0AIxv$=eygGtLXvvIceDN zbb^Tf;e^G_(@~~7OpJeM$N3Jqn5}z?R%O=o)k(*MFHJ?NuN7vWBk$|ZS7krX^Ccw} za~_>k3cEYu9KYwZx%(8?GlBTtP=jtGFDR``$#-p9bv_tXV^B%2L-y#vINw=uNIPJP zBbG7FXC}mGzejtZjB#$zd$hLZx2XSd2Hq@hu8n6c=Sj@j)cl)hH$;QklZZvMx-5!g zxm)SL*-+qqvGq7>=5Xedq?O{cF7e=byh9h~2y4dp=Pu^wK9S;s5k1DQlLP$2PRu>a zbNYw9%%llo?mqf^cV#_ycc?i3oc_tI?fk=gi?DsvmAC!pWz$(~FOEY>4E;~fwHCMb zbC!LGKEJh^i5VTkFi9^JiTCux$(I4RmYRw>W%Wh1EN?hAX08aVCwBdD!$sb4F2VK0 zuX;|{-76iggBl3wlP!EB(lO7kvH1Sg3g?OWzPQ;^?A&LG>~i{!8+H^RcJbm#D)u>a z69ex#VmZ%%&Zib4d3GQS-)S&v-&LjE32GO4SDkm?sk2Pmud@+?7O}2t+DZH5f(5#> zmxwrZT}}f^}^I%6&Odp3^ zeOY_W(-GF(kJo4X?fYI)_UBO>cqY&Pj!lZXF)<{bZ9GX)wC7lZ9H!p#9w_m=$G*QN ze=J&8>Ao!mYj~bp#S6J*f9|{R+!r=pBKNw@v%p;8wPd0E?s`0~rm_CBStr|MM^hUx z1y35DlGj#JXRiVMtuNG2O1NKtJf7Tu0dwgV7YQ?uMNsPIFs|NE#6PICYO!=H`Z;%>b@(t+_#d-HH}(&k=iN~bwsPRE!9O17 zJS8*RoqLq*QwFqEYE6#9-df~azR!~bHPkBa!d#v2Q+(tFJy3=d*R9=6eRvwRdDwSf z{c}X!l6$c){E4k)H=W1B z(5H>kBl2PIIH%xDi-Xc4)*f{hlh-?>Sh{;V8FLlpiYW)B1C7b!eZa3jxnBA)Jr-`Y zQxS1-w&YKJj}%k-Lg`pZjeUbrrzjPVUB0Ppbo|f-X;788s%{o~V#J*^SXEq>-!*oH zz8^h4?)!0f*bxWMq@%%@Bg$Xu7ac!NuO^c}ikf)o6yl)0|8x{xs@oys7<-(M0ph?> zXSCixFU!5ZlzPj8&`dWTYggsVcY_l#@^97roVC5Y_`!Autdf(++i+JYA2`p=qV9B@ zw>ohIJ;76$6L&R~o)$)<1$&JA@sR#;*uL~+ui@Y?>1nCStoj%K+0stVdoQxySm(S! z>NJCV1ojnCFBECuWbU%8{D-mMmU7DZE6;JI(-&!5cnVHeOF`yAUHtq=FG$vGLz}d~ zVEa_~rqi1ssS{pF^j11WZ&Rf^K8LX0t0X==v>Ru=NwDdiim&0V@ue-_qiOsacU?GC zQ1dE{Uz7Gw+QXeVV{$DT4qGQ(qSy9Z4|&i@GZFO-2oDb3;JYE_gOitQkTLp2CI^%@teHZlL&$V}8 zb#bs)Fj}O>Vfg2%>R;0mAvLcW=l@k+QfvANVf?9AA{$dO8JYfx&yUZc(?>1J2@fv_KZxaYXk$%8)C z5sa^REZvzw4$&%NAT_Gv#(i>UE;4WIXbO8DVv}`<1Lt%@WEnkV*%MxJ8%90?Jv5f^ ztY(eJZ1xuR>@{3aS{MVSwZH=cIDz-`3VA1bOhU7c{6ytkHEtv;AcZ4m1u_5x~Y z?7e7s{UWb^WwI2og)_VMoL_HVEj{{1p6^idWDaYk6V!h0PkbYH+hb{WEb|cKyjQ;_ zj+-Up`x@4M)~(RzE^9O1ed7lA!wS}H)ta%Vhz9IWum|MtD|kO7wWhbp_7r&c^+viX z70cOcOr`H@-ec~qa(ApnL_BgX5esKMoWwoj%^wmF{wNhUZn(noSqusr(tA2n!q>ml zxSLFG*%wW5k9!bpxw|^_(@|;mesA<;&GvV`j_BX6{A@(j!kl9NC}P8!}h4K?ZK|PMbV1 z6%U=~;W*EH?g~DG9!uz5%(MTS&tSk}*z$f~J}nJRt#k3RXB^gMr(v#T7`9K2z;1=H z%{Rnm>amot2N_tqCXB*-FrXkE%MYhXr;0o|l{QV?usSCb=B2%;SL}(unHjLz>?GcJ`e3XBbBJj_v3GqKLXzX~aa@V|V>5D5 z0;~3e-m9JzH+$@WC(AicZ}3-TY3+pJ6WJ&CKcNn};ECD#$O+p6Ntp7^EBM6Kw_qVZPlt8zbO@a6tO`5lIg!_23(64cGf75wa9HO|eO zye>9+?||>D>z*E|uZ{?ILfzrquQ_^6ZT8g@3GLW-4~&s=rp91$8L{J?TcrWi=^VrQ zY=`v?snmm7`hB<)w6r<`R+57;o%?ai+QEB2_jMTOPW=r~!XD9OE9>V;=JfGm-Tf*V zUvCAYYj^g2?DZ0-W+9vP+VlDBM>;IU`$Z}6C5EXy+lc0@H5!Dc;z6&2SQ5aPS4%_c z;bYiN%&BKy8lGF8#@S)iwQZY@t`kpSyn8%`%udJJI|uQad~f-6I!5lZWMi%roj!vL zj^BraO2K+{@>c_M9| zMeXDs#Gk|K<4qCuMW!$p7xYBoi6kU4KV!joJY<}YZ{uvm+#P{OS#Q2$e)eNtZjb_Q zBp}>>A^ldFGghZyY4i1%?LrS<_8Q6e4#1CncH;${8Cjk}la|aSebTUa%1w-3O3i~C zX(+E&j{BU^G>=J#%a(GSwkNKon}M2VZs1sa6waq)VA%%+f9Hk3>}3Y|=LN`Y>IXNI zOxP@N#WLmr^T(M8o}`Ow*IjUEc@~Zp+DlzeJ7G+CHqK=~P=zjaK~DHAq}RPFXN>fO zQ^_pMIJZZM8si5?yDZo=>M7<^W8ov~VQp9sm2q?WGEo!k|KmtU`sv6M>pS938u#dP z+NiIubHWIIURak`>b^6)aGXCwr_5}rOJNMIon&3zT$UDlP|J`#-jtv3B-=d+C}J(G z4QPsCcj${XF&SrO>Z9-m`}HvH!37w@fpOMlAJ{B8nC}DYj*sN(8_nV_DDw$%p>?Ip zQ9?Z9;8tRw&38e+2RSL7Q*r3pG1lzF^*KxGkbDE4GV={{#ofU#F===*j2f^k+r|-VxBFo z>;bj!)I$@!(Bpn04i@A}o36&-Zc!3^|CC7gxF>SHI%lJwze*o()BmUg@r@3xu=ocx zOU9Cyl`tHGpC{p3FlSL+tTB!G`8xB4U$a5^XBZta}7&_VhIZ)9~lrcPv{#tZP&{I>$x zvUi7PY8JxZ1YrF*M||Fyh2Fg%N#(@(r|{!u8h3eSoE0L+Wa0J{9Wm&cHO|r(^7Eq^ zqIi!J7A{Q3%GA-KgHHgeJ8|!<#(3G%HyY2WAN2pv^Sk60vO#Z0ScFr*v|9_cwv2Th z&+xO*cWSRaUhq1@kGsy6itEJU-tHtsxs^&2ga#LXk#CStA?>I^O}p0QzqM|I;5Njt z*|X@_kAy`<5?=fB+%~X>u{HUj>;u=2Cs%PX{d;+ypQkUxF4jcf8E5nEn_yo;JdYSf z`OjiFGRN2&q~hD5t4Q=@zkZ3eansir_Kv1hZbsbe^iIzYFb(y?MyeZvL|G}vZL zf6TO|hIbt4;W8u>@jaUxHh3EWr7{!y4(b`^QCrV%Sr*Q`u4Y)T)CcoEbC+r4O*|@h z!;FsEn0aFz4A@6JoSKb4y)6(?&jvZuvN6MJC92(JoR`&AT9#X(^i3wJNi~J{ z1V?mk$=ajC08yVjoO-NjUyq(9XEg}I@I6)WjUOAk(bC!x)!2^&#MM&|_)czKIrDhx z3-#eAUYNB%5d*Zdq;`g}xJ8a%z#*-)op?zu-;um$U!~&%Ilpd3j`y2Za2`!f^byH; zA2b3%wTWHKl2>mzQpO`jT7-Ghdd3=SS#Kv#B0`iciDTlZL*nj3-;@*Cu%KI z;1S9*KQa}2EN&pG4gYS=K8khU!(}M%XZjq^>{-(=?KnN!n3JbIX=K=RIXMQ*73Q;A z8;Th*)Naj0myGs?F*n1}!6XZw?b{l*pBRLgpIKN{-pFv>32(f2WKMYao4#wV=$)O7 zePx%?<+MF+@5_eX{MF1qR#XumVmW56;Kg#io?6G51 z2J^C>@Q?IG%Sv+BCJ&TNk9gwppQ`6sE*~Zv4<^6YJqZI-KdJQfoYCSk`^MpA>Rl~n zVgt`j@A~P|&Zt=C56)`Ck4P`M19gry9)jLV_SA57Xh=N2Q#1OoxC=Isod%!}r; z%tYPPE{4DK!jT%7g|`>F7`E~W#5%ofEcnsZ(Bj%mRM=*t{1DH1O;>!4f^|emU*37IdcbfV=OeuT z8hK2_d){eH7ST&O%^OYGXLMpu*kM#AYSc)>x*@#(`V`=gbs9Ra;@o8WE+`9$Uv?z- z^u$SQ-N#*a;=SG}4>03s8t$i36XU`UIIl{>SDt4*r@DrN^oYa7Wx!c!W_XUc(*i%< zcZb><#{Edbtln7|)uX*(qH`QVsk3mdZ)?N#{^1C5$imB)O${#v1)#fq7ThZu7*;;u zu0&84P7SDS=wRxK>fFN_w&^FaCr8v`z4zPvF>wJ$n0(5>@recS*x?MBbG7d6mKNpT zV{gtGis6Cj(q3mPOgdh54%=#uoBU^&1NE@ExBlhvm^-zc5yJk;^L?t?n|hD#^Qn)w zy{}}uG7dFo6T3STDyc@ zt&jHX>AI)z9Q$-b3iSX|jWdq3yy zavJIm%R<@Q4{*-o?Bz}t`VRVlvFSXQ*R#;p?G1h>(d%S=7Vh?Yi6gTk@FY14>pMS( z$Y)a_Kqu5 z6At*I=G?0MjqYRPjoo-w_!qy29)VG}SSVygU$qO|Z)6?tEspq|kMTsT} z&l8(TD_M_kEhYwH4XNLL_Sa9jt92eLlKBxc7 zs4RqeZ$YgICZ zbL2|?|Gd$x*F5=k8yjSp)6Zh}f5jEY?O0rD-Z zFkiKSVH_+S*jN8qp*~$#gINLO^u9W!-nS(I!SlGYUFVy6eoOiim-3vKHIp)iahIL< zV&gRfr5fjw@z{X;*!bzvIQAfs;hfJd@{?AV5`Pxt8R%w81>{-Sw`bqdIA79eh|jT4 zT$!{@`gw|e#T}S;BDKSHOl?9KNEf@>VFrBjCAKVq)gSk6UhjqxFvG|W(X?uxp z)asOg%7Yi8i2%KX}B190bM5h6BFQkbH)ao{mZ?W@ex@4=%s4=W9lt9 zyH$zvprNbe@OI|(jUmoFx4nFFjU|e+n4f>0EN)I-U!)#+AdV@;zo>(xx1Iis#`eY9 znbcCaz}d`?X~hc$(d*e|I-d^K>p{Rxy8?k2gEba zpP#(EcuY6e;77>GiQQ6M5JMj22-bl`M~Xk3C9m)n^Ss-c;@5vUhhM@Sv?*tbpWGm4 zfqDX&KeLJ(ORVMJ@je*vY0PxKkL5^*v?yD>i0^4qy>xWDVkq4t*Yr&+pI_c3>07m6 zj5^GFB^M|h<_q^-U)r_j#hLCwDTn%P{|95FVWJLA6USRb%}U zur0Exf4618T6u2^>in}N%Q!evE~h6;VLWFc`#Z}o(`}LYg*hVLMph2`^WLGy>#uD2 z;GIw$TR_i|lJ#=SP2pI@`N5B(<8n8%NHldw| z2W4kUEGohiu_0o((wyA9hO6lD)YL?&BtPK?d!iAi{FE~87oR1@(#IlQ8JJ1!{Ow8b z4_d4QnsG;gu^zr>gEF2y>qXAcpPV_Q)MuYs*eC^CR-RIR{3IS*NX@jpmzAk}M>qGP zevsdPO4F^>eTg`6AJieZok14fD6ZT?mtC?7^jCgn7rBDtA!D;kN=$XDz?f?*1+AHc;8yGZN1ji&uwDlop$!U_2=i#+eaHgH|!P${B-` z>0G71H#uX@d@g$H72o_gJW8dX#hfDL@P2CNvu<1clRiK7$P;e;K`~s)8Zv^r zGYe~rfB(+E_k2TX3lT~T#-06_V}~AM_)g}k%gjY#gN17p`9Z7|^CL%!$1}K_Kpd+2 zL<14oSOYUHxk<-+h)HW>@Rz-(X|)>S0d?(`4opS>l61Z#P3HwxL6W{{wuQ3y^y{@O=sd>o9C+OFd!w2SICFFA0gh!)CvB;U7`2> zqG^6ClrrX#cyo~y7Kt^iGn=01CCut^k3Nd?O5^{O&`|c?vD{M_x}fy-@L2(*pl8XMb=f~ ztn^q$!v<(vR^J@d;t%W~2F`xVzI6)ai{mIN( z)F?KKP>xIphl3k?;2Vn-xAzhFIf1@-o%br|>FqgiD7DS&T~XS-ibfOaM#-DLD6=QT zV#jEn^BN6>FLfK{S@14s*+op)77uk2J+o2`#9?x$pYd$}7-J+F@I0q5M`ZQ#61n_$ zre{-II4nWLexn~0bNJ#5*+MBK_lexI!F%V58`Rid#Qt+^;aqWq^SaezxVKW0A!d;0 zQ~Mls7%KckLftUf@mw8#tP-|LAdHx!GGe|d*;9P6i0^~njn0ZP+>2g|e5Pp=Bpa5o_yVicmyEQOf?6G2wXU=`q zd4V`fzEko(daLy+5Zh7`u$wV?m$gzPsMv$EZ@oWxnP|8o8hA@y6lRNk6=9g$mi<+F zjF|W^2#<~>fE%yEdlPjwm>WmeX(&#m&&2e^MA%--QXW_LK$8|p7A3;5>9e%BviBGq~pz~}zT$}y#@pgla_d(ShgLvqyASUv^|ESN(Tz9e8 zd^vW8DI%tk11BfQccz=8Y(*kEY~Ce*YiWyx9TEYbVTyNqe=O(sVDU9USv@)QfBrRx z(pD*1^}}IfPmPjsCCape+=CfKZU2$a6m*=qYo%JH>UOb$u6NgP%FB~G{6ZXZyUY2p zL8{o-(--$Sd-GK}i{pPhQR+;O$g%y!kt?ofcu&JS@s?8b!VzQ6Y0xRLrJ}RR9+%q1 zqxah((v92pNb#Z1UuHwhedUb5CjxMFen%*Yf%w*doXA~~DwTB{%w|-LbJ*;3`J<63 z7Vs`Pg;e>ZfjQo8Wvu#^$Yrl>&`F>7QIN56`LQ2PvNq^gXQ9%tNho=?iO^0usAOHH zZ!B?krPh7rFmpzNH3K^rowd) z^JjIQ^S1$_o>x5L8LNp(hRBbiF9z>Whi*&6Qtn5j@_g2@S}URoS#R4i4|Lruwy%i8 z+)wmYP;C;{PouD;1N}svtQO0rhoJ`d72`JKi|WQfXyw88#A&|pnBxbR;qlN_Wr}}Z zHnTPKW@;HMo(gx=W3Tn;?|8A+iMj;t+)41z6FrvLQ8&|+xpnw#a?$ zNzbo%e5yC7`o4wzi8!*A^~H zn_)IMFeC!&8|g@4cO7xmz#nz?E|E5M3&hemXY!K&8*?+B`!ZLn#(8@4K)K-rQ>?a2 zLabM^yqCUOwU3f77i?4&&r~ITJL|MKVvppW+SLs8YvRVvDjKualkSLJ)gZ* zD$A^pl@*Sn?)8+~`i>Z0?uYlAZ>#T7^E@-wnYyMu$4qS$i_y2L#<`!jlbkJ?;w|wy z#VTI*Xl9O^C49$MotCF?(V1bZu>n})Y%b(+t)ekn&~V8Ys6vc zfAsa(pb-)|ke6>IV1VIlp}&DV;xh^Od2Wel&bv~Hq&Lcse9?!0&$Ckc=*27%Mq9#Q z%Q^lg-$g>FC%PTu-rWF9TY>oxk%|(LW!KtJ@L~ai_jm-#QYzqN)8C+Et{PL}AhtdUhWhEp&pTQIEA~ z?hQ-vGMS$Bzv!FUC`inB9fOW%IE(6^EN)(ohNYv1yC>1J537mfQDlZD$5 zOIU4X{oQJqn4)n&H|Eo<1@jf7^#PoZI%CcgH`TmtF*rA-YMg6rt1oY^XNotB^Tu0U z50sopu0vIzE^Wkx(ldjT$F# z52~LitWQmaSKK3VHx!i%*~=Eu=W(^Ec(^_qar76f@yAvitQU!8>*G=3Y$G<(Hz8v+ z&)YX^VMpJbvqg-_3P*9+-WLvx^K;2h7}(B4G~eM$!zA&btq1;^$D*D=t_aX^!DS^D zy9X>4bByiLSw9YEM-+;#XRL78JPw&rTSUS%Vr#2nvB7zZXc17mgua9t_JcC>_U zmvHVwhKtG04(ucS(QfQBWgqwE&bYh4&u*&v&Vd-bFs>SB-)?7$ThuW{SK`lUc3+A& zUo^vJ#(Bk{X>xoE8^kltomM@Sw@AKd5KWz>I^C3EYVuv(6OolTO=+_w1oK&A*QgPt z^r#-jx`_4em4ynVaC)z?e>k>X=^Yt?>#R#ZzCEps&x=F?eXL@_pDXp&P$#*10(y+C zDRvY@<0Cnd#ttpS#^Esl>)Vcfx`{nJ^CxG}hu5Q@5Y;0wi*cUZufO$Kv);S5f1(J9=5g;#EMhXm^@9`2s!T z_b(LRd)Q;ANgVO74WjR6E9B0K!{%H2#i_pBbtRVPXH+b1Pd7uCbI}-XaZu#Hv%rCz zaGYzEC+@azz`T?GxV)~d$ZhM7m%Cl?cK%LvV`3gN4XVbucUFAyu3DxrVVtMz++4iw zj2ZQQ$SbOBB1hJ-!C1z*NAoSRLq}iSiDVC`_g=o=l3XHJ&gxz^Q+maPU>*CcNp?e( zre{NOfjPF}18Qvk3d6W%Jj1Kvl}EiJQ0dHG)oY>B9FZ8?I|0)#ZB`~rQP}uZgLacj zl+ppw_{LoEYT{kx3$^Yatk9q${iE`12;bLn8YEd(6C2*q|FMu7$S4?ry#gE(~thwN!i_qya@JsE;ByJ z2Ns2*_!{-*KItYVifm%=&$!IuvGLqYKFyu#1kEF3A5v-sOA}iBjTRe#dEsB zAOa0`pAc5f?U76`jbV1)BL2HKzI<|l$*z5BX?QeV`Bsgycjt=HCOW2A!#M8@URdO% zHNy+W*>1UUali*_+@8Q*Z(Tk4DKWr<;pCCKK>l_q2#RAO_T+iXo4STz275Zov>e&g zH59*DKis;yPBu;oL-1VcxmOCg)v|D;nerYqdLU0C?h@T10gGGfD3da|>&O1<>-FY} zqiYm0m@Bls`YF*3qp4M(!P`w^m17&3Tl#BIJ;hqd*+i~>K0O~#`zqNVLNIJU&z^6Z z^4vNApNO9+D^@8cOMSR&z}fuxi^}>@A7ktT
    Tr4+JRyz2gLHk(Pj9jh^WIuB6TMUHL3ng-~8v^K4Jkp}CIFRauE-zvc zIxkqX_+X2mrE$2Gx>`8qSR$hdYs#gkgj~xEZmh$*OnfeOyfDFM_E(`bzl+xm%u&uA z#kZGVh!)dqVfBo2EEI?yr=_2g6d~JMjN-q~?)xRZ*2Dc+WU*{#!#O z9X3OA*3Uk#gT}PDYmIEixz)EdM}P0|AxG&S&R(rrg9SnK-J-YJ#TsL7UZr0^WA@-T z(#O=(3B~ZU2{7J%YD}447%Hh9b0oip>H$5`?u}<%(Xq3tX>EGK*5dx#H3QY=`w{qd zn*ClbRGZdEV&y{i%XvdpYbG&=xUdH?c{1ijUG7rR@2^$O(M21_&}Wu-lR?&j;-aDu ztf$t=-F@Nm)*1mgMvPqM6Mg7aIxt@-dq%q9;f#O!O07h6 zHz&M(84K?ru3}J@Eh2bscZ?_y4cL!d>qLDP=7f}m^sQt6nCkjc__@$$?K^i|iz`L` zG&3|Sih$RvFXAQZ?UhgIO*?O!n408@vlcE$*G*B@e)mQ7)m8mr>%TpvD*9!D)-Fk~ z+GM6$wBHN^8E50YO;rAut>Mc!w+*PR>Xqk%j*Ro^XErLA2zqGRCZa??U-f!dFg9_9 zh(4!ODc3`wK9vAVlOL)NoNe7srYAu~OZCb-#F`{}?~WXz&MgVY?n?S#-Z4@);?B-a zL2T~5x4Neh^+`B~NcohgzW$6eY%>jt)}^Tr9isPo9rB+-Lew38hT~XLJeqv$sWzG& zf+5s}@6@Z-n9y_nII@GfqDGUL~rhg%hjPjBM_p|z$t2nx_U1AkqNAsn;llq_K4)pI(M5}>{Y+p9gg5gdSCWh zpuR($I;@K$*Qt(rXtqBlZQ$Io*?+|~QoPB-jK!Hh-{tHl9=Lx$25&91m5nj3&>b6# z_18Wtd+Z(2oOz?8@mMi*hYemZ&beK4MP7dk)aers+t9-zliEkkK2Tdk|Dnh+GKQvA zEFMkyCHj=nKmAMudhPrzW?!;|mi|WWk%}<>uN{Dsgr=(^9>* z!URE#bNKoKRnwhj@MoO;o?56nX{|AVaW?p?R+;(xkpIc~lv$3-(U5Vr=4@r}QPqZ^ zVCWMsx;f&#Y6HF5`w&03Xxm&}mot~bSkBjTho}n!!;m(wI=xQl+r2XfTu+v&F+ra^gbf%@doNHiNotTK4LI!iAS6FXGb{;(>^3#8c+SDgzpmLpw4S zt=BwI(#flLdrZD#+aaRaNE@WF-^nUV76tUC|3KX1RVBSRTbRJ`MH~)Yz9RY_H$o5g zJ4Zjh6S^Zz@Xx2b`oqs6>nWd0K>+M#9uW@q_E1MTqfd(pWo42RW^}0<=Lf6$tH*xl z*D}s}G3!-hwwYo6zx+IFj4I)R66`9fJ-vbd^mlJ#hAP3@&?Xls0QzxJOQ| zL(o;_N{j<0l*Qse-ELwm=Xmegzt@TP5gU7&V@Px2cpe2}dAczk{TGMNak3ac!U*@@ zlb2j^Qw*R^;OR_i%+H>0@o zh+wSX-eB~|HN`RGLNHuOzVZpeqp$^E;Gx897KTJ-D#ly+96&vz^(#vAd`-q`3Y^6IQW%icRT;*X`7kIO- zPS^WSv3YNg?^lSaU2i6a_P0hW_JAWgP8EA+nPD*TrIYl_IP%a4cga6!mAg{hTRQ`q zJ>+1z?iJBZjZwQlamkA-@!?($n$Gjwf!NXUDN4(F)M&lLxu&CoQh#(9{m|p_ ze&|f4{|@T1`o%%dAwX$z))#qxvFP$FLAig}3nSQ%*;FgUBrH#|6zaq(603YW$!~9+^}>+8>a;jG332uOsf*-_jPuu zm!F)1Tbx@xENY@2;yw+JIS4XSXO*Tl-*G6JliM`;^SZ^kt5YMwbtVm6j?`3@1-6^zZ>?!){l! zHlokO=go@V83&vxjzm9ofnu|Z`UCcn@aUhTG`wO4+aD2_pBSXb^Nr9gCjt$R3{pN< zpMhC3!ceVFjC{s@1`ZSkp?!s?^!ktq1|0TAXK60%57@%U*B&SO%r+czF&qmvPpJ}T zt^FQ#`&CmAOun4iT0Ql)(bKTu2{-rskf#_qA)!|yc0{a{Jwv>3 zlRe;8*9-FY%$az_Go0Q;M=8$phB5J?d+r^T2b+9g-JJ8h?obR)GUlw4Cp`5~E(B>{^UXsaS1Mfxa_-YW!?mHq%6qdQ{4C?_WXKhzZCMcZtl++){WB$D zauBAm9(Z}-o$`DleGGY?SAY1ZxYzN6@gm|#ODdF{Xdm1vkHPPoI^scuH?FwHAgXB% zvH61+&OMAqr;@Kq>j)1Vp2FUK^94oe;fkk)QCMTJSZR8|5pSDCLEE^o(s#ZcB7!54 z<~&;cD8mNrM@68|o?I!J`xMjL(Z6<96AT*S0Ec1RpQo?a;E7(;kno}hKySl=!{X^F zSCv=b)M3B6pEL!MUlMtF4b*nOrXu@VBHsGE9CL;5$Z5_>JR_#c9cnotk$C>`pQWp}QBMuYH# zM&h1HFwC21@YAWis34!Mfr!T}i>|`7OCX*y{>~q}i%s0){u@tRI=rvA+SdB=ZE^tcZ?)uk3~#{r@*{pJ6UtFMl#YU|z>ySo)^ z#TN6boc&;eih_h9-QC@XLyHmyCfMDr)L#2wVz(IB-QDp$_x}EQ{q7j=c=vE9oHO@Y zbImp96Tvsgg=^DB#BiV1jEO*_OOIs9&69n|Fw`=)lV=i-q-q!n=hXJnNP3#zW{qW^ za7t1iXCA8_2%Vm-q&`(@1a18r$9O8`pvq^vF~&rb`fy6GXPkctnRW-cu=vD&aw!6wt zs(IsjK?2lS8S=_H?5VnOw$fph+^wZAz7AkbVpbw|C01c6`=X(l*X5eM{qf*-JQff7 zAx8}j!0&R-MlG9)*s*~ayoZ>rCOyPA6MAbBLo@8%KjN4iguYATasIc7aP$tsFHgRs zlJR zksY>uRc*=Vd9;&!nD@z&BvVhC@8Ey$-5;uoRm)(EJE>|oTGv<2pEU_LYO7&?&t&xD z=cb5WLQcudIc1OB$$8=P?DaKeW8qG1F=A$-`^eqOJYdQ-Up>fDZo`^tQ;S46*H4n~ z?)Spen^d-oSt3X6^u~wH2{>rAS01p}2TOQ=8TsJ6Y`@zV8XI~ZgujymchloWjI%{OOgQfZ(lq;{73dXLn3MsWMbtmIL9#=dgxTMUw+Tc+9gPRqZYos)8|)^~{)G zQ6i3bm6z=jV8NNo0G`oP9uR}oJXMS=3c%AjoMr#W5XQ9w(0CfLhEsFIo`wOK&-0=| z;v(^O7qxf3Q@is+z8HT#00qnG0Wcv!SW=sGzB}iaSKEl$DqlR}-T!p64y=WIa4(H} z${|y7nIDWTj?qxB+b`u7lDpI5Z=Ct-zGbS)Nyhj_+;Z%~x~fmpCgGwky*w;)M)f*l zN)2*yAWs&Qtv9mAZ9aGZ)IxS!;f{>`i71+;k}u_WpjiUvgXetY7sT__F=4N%X13gp zx$z+TrM9Cs$~|4ZG4mC5_Aeclv+R6WW3mU*_JM3T%@-#b|0Ub1i+`wJIF^0XClReg z3jHg8rI6>N+eZX(ZQCX$V0o31I58*?BAFT=pJoY@-a$CQzwa9zA)>kjBVs4?JlzS|d&s1i~Yb{)Npq ziO(kjvDG61J9}*u=ZXIuzAgdK=8B!>0eHbV{@cq##FuBjIK=&)yyJ1%g-Rco5$8QR zB}aPi8jR0Vd2cPeEKTB?trh*Zu3BzSp{gEbj6=jq>D;ZY8fGyGenW|^avfN_>yRmI zZjwXPYg^g=uJ-6yMckEr7kQY5bNTDU9xR$F_je_ia}#HU_v7VOW}f&Sn+TmJi{<&m zvMR)m&hyzTcWv&CU;Q~}9C1OOS=|R=P3Swn@SS|^nGY<8Hz@R|FQ#0eU+QCGx)b763VIojJ%%!&n2#6dmeQ~J|*DuutYIFGYE0)8D{j! z5j*H1IF;Cs+C|ictrr4#5bv>di#Xal1Ob_e@UM1A>^T_>n`MdE*!GCHTQe9b%Xz*B z9}&^<-Rte@=T?2fy?i1WN-D`ySyz}`#5I<`xfO^63Rx-F6VVr%7= zZ#;1-D-nh1r)1M(UMS~XvZC`(Sz-=Z!=CD~`R&CZo<~>A_#MZN7S)*dY^El{*vMJ@ zhnZx3-v3dm7{;DwgeSjy=K>MfDgYK~taF+j5VPq?E$wB^+3b>7TN#KwZ|SQy_k)
    (l@B7n^#ZS-z@}9%Bcg}vYPV1Jp?BYsp%j2T3q}bj5fQ}Xf^zX zNVpY*?kCjfSz8gKJp(bnCpAV+E)uWXb7r!WyvO{JqRt5)7&>ck^iQxn{2{q)>#0RH zcDQujAs7K&)UZ7GTv|fz+Mem`ScIJrN)EtI%QFU;ea8kujVxaD}k_7XKE8ksBE+q|&hEOjJa zTPVw(d7 zbY`G3(~tRt7~`c|LzH0VxuHX-1+5BKu5%VwMQxg8XIzwu66y>SBdXVXs&ZG5+cc6m z|KX#QNg@!-2T@~lxxUijH1+Gq@n1cpoieYOc+MW=01R!Ud>I*n7L1{VPjzK|jSvL$ z?|16+f?mBr7%`2U$2Jw>1oQK*mE?t0EfoWZh3+z%_-Er$LZ6@i#V7LrpQOw4IWu)1 zkqozWEv4M*!Kh9Q{7uyXlsM9tME!T1OAL;wlrm%NFHxh%#av}t)GQ46K)o*|S8L>B zg$cXpsW&Q2YyQ9ik1NUh`(vWr-jnq|xxpdMeYKtW{IiPusYR`{<1^jia+%zQOEtB_ zntNaYxhU`7yjJvzJy3F(@%eC7c|X?^K}E!hJ8PBSfnKoLPF6_LdkE-I>d#TfA1d3nbyJhYDbK;Piy6MA!p@|)R%r+SGmkQBaSl#8D#<-KeYr3z&o1G)gIQ&!n8UX#Kb#kD~G#cV@v9Mt{kZyO3ber|Gea!p0@am8+!ks@5%G} z+O@gv$bZW`w)C@7Yla88PSiARTBQu?OC3(Wms#77D?eBVPUL$@bla~CyX%F8d@rSu z>y@B#Z+t2zKgWKt@^ga^b{5k&WLuW9EY}z6J&bv;M5VUc56R?h{aWm;RD}DZ&Ki1^ z4zg0d_y?fZQtF(?7%At1xVHJ-?>_6N*x8YHOx*bUHXRgm;`WDUQHxKffwF*i&vz@R zJ^l29h#DA(*5tHAjX5dOxA@^HIb%07mk8fO-t<&W#_Cn$M9~3H)F*GW-kVc$Ycp?H z)T4gF#?hs@>w_?X`U{ONb~kzuPTgx?8BUm|%zQO}X}p z7HIbjv_}3VYDrmVYd=`c!pL?SoNwc*z24XrKE23YC4+JM1@>yFfz~3li#9NqSQN(p zRZb(VsR?`Rji@R2{f9EQh6hI1rnYM0eWe>`&>?>qxAte0a^i;%eC4{;7Auv(Ua0$? zysSN2ltq)h(dY#=23-mi5Zih00b}Bts~qCJ&+ry?tQ=C52OoUVgzsqJ)*xl)8$Y;_ z3-nU9Q6hi&U<+-{2p_{h8bEtCs!O`t}u-0uC?O*dcj@l0dCOIx{mfjjS6zP+nraw%=ALj-Spki zY*LnP@Io=qW#9Fg%Dm3rc&?_Vaa~8Hp2B&q7xk3t4Obcm`(T0vHKNN}D?O=Y@dDH? zIq_4h=-`LL%$ZN;UK4J${o%;Gx}{aA=s*nHA6@#84&5va$W;eFr?Vch(0zlrU#Wj? z!96}D7~A>xXU!-SkzOIl8_xVTeS^3=gSvKB^b085BO;H6Vq7xyaC()BD^8(E=I7sg zw@h?<#=b7|@aKgG#H6r5_`TAgPrFT`>mEORy+i%&yZK^IP2c~t8Jo>b5~coJ^L6Pr z?Up4UqsC_8d+O-k`p2kq2lmJ2(y!=$&OyR>uz^}k+jutR@+>Yn=!$aki0#~03Zt2v zlmDa+)n;q4Jo#VUXny8lEybI`G`6cVv?bH#-KDJwaNNusj)Pu0Qw@FSQ zW~n#%o4dPFgN2^UfB5H?)vm}hJUAbJOAcM<-}28oAz1Z`XX5^rV&I_=*z@=9Ufx$6 zCT34=MtzO1uZ6{A>}9JN?Ly2#=u_VmOLb+;@?4MExxhxMEI?!G6od zJfBEvlaniPaI0usCknlo&;O}iDn8GQqRue2H=CancFm&5gQL#j(o4ePNd%mzYcqQG zRdJR+ET0RhOTXrls4tk$?Wt3jeo}-`%ejS33idoN7F&sjaZr(m8$Vy1iuOfkt5l?X zO_q~2#1|ORd-(fMqrjG|rHL>7-#GV?J0p2q?td{{8g@jQT$J|Tb7??3$*MF3N2@0R z_e{zX$W8yJKKEw*esXY)R6HSf{^;Y`@`T~ZnAV({RQHSI?qA5cY{T>D#S{4g|KEo3 zDO+4$cz;R6K%VcXM|Tk)IOCcykRF=7$%i7(ZU^gx7E8@UN8)7?Cr~@O$V>EPuXHch zxsh#>cE;}O}OzAProHMw`HPN{~bp`8c;MuTB)Fk%I+Cl?s?HzF+>HdU2Kay0^Q=2xG9p3F|4|lBf8np7t-(FdLUnHPouwa6#06- z1;S}3HNP3pn44?GsfC;a^IW@JwpGmCmOzh2YE87+CqCSZhni>Ny%(jzbSV3;|DKyW zj*4}}n149KcYX4Vkfz3>`!i}L6kQgdi|Mn|N&~0l8zL<+5~JKTxZmWin7V@8u@}@5 zs=6=w9}EHwbx>#iJ>eefhj8jmoosPcG->0Ft;?v%R=QQ3BwtYXC^blT+>+a{zKtVC zxAuj`M&DohqB+;(|HirIKPN;%Ngf`2SL4;FcFKax9dQ0Z%=wca!qs98!nvzXu3%sIZ_mx;6; zDR|AFpH+W}XhTl%1m>LiOBabjujqaBg_=vwi-gm2axp)up&qzctmHki(L3@P?=KMs zHHmp-PCM(iT=@Tr!%60!_G?#&Iep_0eveqSWoyLL*jSjeK6jk5QMeFGKkbSdNd7;INna3meaf zp}pCU^(EiX=&Bgfkokc*BsuY_NI2_>G(&Q1rxl5g<2+E6or1we{lr)&_A05ZH*n(- zn0fdi@AUs+F#gT8|Nc++lD=YcEDvA!9ZNPvD&Cem@P_qs+$|&JQ@u6NFeY;<^pro( z7vm4(ZxK;P85o?0xr|}!i?2kJboy-a*)!~l(666~evGqda99k8Vx0Nx@qC|Hnx2B8 ze17_6vuLS9O>sV(N3Ry8rnj^WZI;Y6qUuBl-fWj=!kcB{4kR} zlmA`MujT|O^-knr)EhOHpWUoj*WQ5)uAh^uHOjNH)kx%Liw`xYx8`DOW6Y~%_g8BD zlZSG~A=$O1vdV(me2kBKq>gf)x(l@!!&>=|#2#u!cITQOVR}|nr&+)b^#gPcU6CKuR@-4Pc~8|GF=BH(mh*XhK&q&kEbdTG@(BO! zk)E#N9rdX$vUc^q<0sxt4@dGS)`0^x;&WyQUe2d(>hgu6-2u)W`cZqcY=_8*^1;eK z^a!XrDx7~48+kYxGsYhiXU4i?>sxwNOrIkH^}R4UmA)aa{?a2?f3*D=_g9=dbz7>m z=XxH%*zRprsk|=Tj@{gwN0+Wq48vCAEZ6pvvq{RMu*LtaZNJ`@N`AFGeCFr3@-a~C zJI%o^uE~C9+9>{8Gcb>_y?LmHlHHkFag4*l?oY(y;q+nVcQjaeS~Muq;62aQT`>oQ zGKV>y=fd4XYsLA|^jNONJhEYdXmyZ%HP#*vi_=6VF&#te^5=9769MEm{Nb}{iGxU_ z2l~`{e7-qZ)an_FXZ&-|f>B}>=iZw#;V=$nVj)IX=_CF-=1*Oq4sRAa(M!|U0yDKpM#H*N|chLdDzJO*t=B? z?UwNEFk&8CIpeU>y3cCNWt`jhT&j#4xfrJz+m=(J72k?n6f(B&e@#^~>1XT5xl@f;hilbhn|VB1aqa0?JBsZt)TU!?Q#RE|6s#vEi?P!5?jZ{6 zQ-g(P_sQT!;*@<1#GCu}mfPLv4Yo)Lhzr~mdzPqMuwejT# zir3v$7{oZ=8NFNi{c90gGPZ7!IZEC6xtPw_-s<41q!ndh9b=m@ah%e6Y6k2W+dp~T zl~yNHiTh)Jrl5i1^CTJX8QZ?auY`99wL`fMpUyieY^Jae(UAMpWScOnNJKv4dE?|f zG1`K&FUGKZWw;1q58kFNH6kJ>i(`gyi0H_D(Yw1ipH6?A&OE<@bwu5}F(~aujr4$H z^6_RdTo-&j`IDSNbK#!K7jiWIhs6%r;up2m{x?6{b*iS-Ig&@eGoCNk25E0S*oHH=n3L;O*M7-g zh1mD3F&bAW2g(cT+0CKmI5o(WcnX(FLtgo7_ zxU00vScH#^^K{ESO0TZDn8!728qMYTcI)bdN>B2N)2vmlHX!-*ST*>`RSBQkENQL)LgHo5jRJCv>|-%~^x{;-HZe{Rvt3JKPs%D?AaL zMr}l|F3RzC#6=iJ{1xYz#ID*IA`g@AQ+KtGqjoU0XlGugHt6Fn+Kqo!!h`Q9;Mo_Y z&6Gvh$6R53`>=B8Sq}Ph4WB$+s08U{VJFw{<1I-_URgRyxQ4U(St>flypJ-DEA#p* z2uen0)=^dljTK|+SpKWE8}Z|@Xu#TbL3`%X{fDUYK<$$*^!a_4D{RZ+;mX*a|2{)B zBKQ9@_xLH7R^pQ!i_NSJD)t|gJr2d-qY?e%*7uedL`I_lYv4mCic9W(jD!#SBoFH} zlAM=DAe8aXtCb{e>qyQ8&pXrfLTPKSP?Ym$mbA~5HcCNgGK}Y7pPj0ADnGrI$-(gL=C0tvl&Ne(grv}y;XqCMy(T(-ql;}Fz9gP?9 z{jgWu^NMnAR}Ky{&OIJ)QEt-nbUpL1X?~WXmz|D*T*Iq>xhUV-r(y}$a9xXklzPVW z6=!}Jyr7kG>n`vY<7z0IQfOEnLq1n%oXoAFD>S}&D%Xqbcl*W zIb*w}MqQClF5#82)WVBjBu`8&DN;)eU88ao@<>%fV4A} zzKe`utIs>7j8mZ)pwIIl?yz*$nR@bk*Dq%kN@qBe3gmw5dPk_j3%nt7oxGc(k?X&9 z!;dl4tu`7htfQT%y|9BaZc# zeXR74%K7iS8>Bs`bl5)|tC%YaOcp8&?bES~d00OzSm{MAqAiW76?l5AvW8l8C;7cB zj&xLFN}2zd9}e99$~u-aobHUzJw;p~*YI$E?)`bWBHfl}ANPAnv57Dy?z<0TyWQcJ zoKr+iNXFJ^tVUKfj>bGbA8w1XA5$Vx$hAE!ySY@KJ`eiLCj;6qmZJKEp?MGf%qPdC zJoc<~xCXXopOAF_1i-3DjXG$;&MA`J`aqmr zNBZAIUaJ|_fF`~`DSo_E8(%1 zx}aICZ|xI>iJ={?IPrb4e|5F9Bfe@_!+b9iW7tzV$yt1lAsI^ZN7O*x{HH%NhnOpjx}__#7p9;=3+9k#GnAue=(Wf^T(r24B0{O{+Kn-+ zRZE$FArZL)II9|0!G09=u9zPl>dzN5v*WOm`F4?kiTJ*mxMRjSi!UHjYW5UwFwQ&D%tT^HG`4VU-y5kTe5m1emuo(2 ze~^4}KsdT^-Ts+@(!ni4QJe3&bWKBP59f5%RubnUjgxv^q?Q2Z;G-_~khXFT5==b9 zVAsd0=%MadG%x}GWZSA*w{pQh)I?}|DW^2c#1SjV-SC_8sLWu49XfVOpr=f-?6rh` zcEm-<;)YxtPn@#}`x0L|3;XI0`0C90c;oS6`ZMZh_N5^}l)$+Ns7XV8*(-@UEowdbaStI8WZyLOZ4)8>*Vj19P7$ zG0&)L$ee6baY!j&l?Hd#6(*w>C=EE<>Bn3#<%o~sl|sMP&OFPqM<|&*-=4E>-elEC zi6f3cpZoopa#@V)Pdp>z`SZYXa`)(S$C!sk*@~`BqM%|8obkDiNVpb`@mxQrpJvGB zexdlm9CbG*w``DxSod-@ykdVD4m?U8@CY@W2I#4D+j=1&E)nfs4j3J%>k8!nbq`9$ zmF;tLfTJOKNf}qmoDbSSg#;w5)0aI4T0tf+uWJKWIl<8!Q!bKQeQCaIZ#fNI6;HePhXqhaK8jozSiqR(R`=kfnrKW{p*Kzn^u z7TPe*I;)Oohi9yz4-&cF^Ru;+>*ph#wRCnTYwbV7vZ3XAw(s9VoBl8j35@f=e$}<#LgDIH&g;Zr~6@cUhq zgqPts!kV^|$#;<)5`k|#?~b<+;-AqG=s2D;)2F%O1vL(rvNm&kGF2FaQ73>gUu<1Z zyqgq?Z_Ga-d)CQQ<`JjC8uDS>Fu7z|0Ctz~Tw8dn?Bih0??$O{IH{yeN4VkT>O`_} z*Onb_?T98)B67T)%0_tGpyA|1{AyBK()@u1W}TtFmS>JC|Ibv+TE#os)lO2i6O&QK z{pjgrE^YWV38%UDhpb<(+BIhi^oSv-{M1P_bT>oBPvTCKTPsP9R`{g%_j+y?w@N#C zatazV&gV5(wE-KKA#1xDrlXf>x6Ye`tmA5|*x{-5X+pj5pX?9UGtjDSh#6#@-^%s0 zrRAY$$?v#zdZp6dgdSKt`x-XcrqrCq8ntZ__FtH-jI<8J=B`}xtsE4Kz;H}rPQJcu zkkURi0-G7b2fhuJPlF?=$w>`K_uHaH??~L4#P_&mr&wY|?H0zoYIBCrri7!7iu(TN zCyNHeN8Du07lbqu?dyahp6}7o;FLU!n4(-Ao_#gu%T4Y5aHxQ|?wOAAq^BO}*Pguv zgVyqcA5O?1_SkT!S()XBSva^m5p@RbP>t(sg%?fOU)_-|`97S6AjaWQ+vif9o>Nel zcZYS;bg`E>&*?K+k4^80aj}!}WoTH1f?aP3=TY<0Q{VW_e2J#F& zDJk2VL}EMRmZR4}iM1yxI!pmMkMPvD`Ea>lyRk>P}*B^$>Jq-PmaC7x_kAYC}CxqjUW-x#A!-k>jZq z@F7vIvA_j?`f^4vptS7eG&^{8;|#+3vC40RHGSx*&)mC23X#pAu%^}S>q@-I6li!J z)&1oFTX_=J>T$oXpzlHZ$!MmEM_$$oY4#UW*g8Z2iStGC5;NGR{*7Z?_gG?a}L&TRO4d#Hm${X&WqP@k2H zgQ3SfdFSo}<bs%hgm- z&5Oik=H$M8dn?K6C{&now!WsJ5?UUGGWHyF+P)B@5ru;m%)?nn#2r^^*z%6NZNnO| zePIMH^SyktOcQmj!V%7#^I(UK*wro+_4)IwhYb|A27xf){yLvgPrUu&jW!q6=vz(5 zX~$hLX@wfall#d-EbXCR$nU%6pemvH3_Rq#!1h#yG$p|t#;jp>R}RNZTjFNfzuFN+ z+?By(TxhGt_u_fjIAbz8kwa>`cp~PGaO#ioKGGstnSL??@vJeDXUZ5o7tcPx>zFBCUV(`D?UVq_~7(1LNPg&1}&kebq-aCRT zhxlg+}VkXKM=UUa(+Q`d37|p))%Mc^&Bd1{GFwS*M+GyV_55c2<<81v=DYzDj z-7OiPt`*8l@}yk#h+}!PQE4|J0`2;+CsUNI9Lytko8R$#zYt~iea@12zq@~7ni5$( z24*wai+eFxxt%~wZx{A0^*SnrBVsVygE?8Ro|0rAjS24TOP_x$W>XXIhc|0++e_ly zP@bVaybG5d67P${P|3g3KVqe5p-?A;@edrACeCL0!iW1J?dUY&8{iI4{@W`Sbw&0| za=p{&%iwP(2a|geznvQR;Z3A4GYbS)uum1IgM0bp3@)LU!#}n-^vo2cGS9C!Ie1r> z9K+@G(43cnpk-F*d5r#1Ha3#`a3@%A|2xk8HWX>MU!IN^jI++Y#^nzlIbj^*yxMKQ zR(IJVlJ6>t0J%1zQzu8A{`Zp!FBlT=rF|WFx zRc=y;w!9PfyR=ulCJSM)<^_wH@b% zH&n{kXE6x!B)+SDFXiP1)}(&y1OIHH1aL-?!{^9xHI(E!(dZk>{r>i;&`sqT8bQCO zYG;M+r!f2zNz8`+K7sE+=*Q=Es-?oQ)EA|RNtpd4LWEIUxN0fyr#}aZ%Z84aD%j(l zE983(Y+&`0Gl-4V$~3Pn@VtfwhNkPKx>;t3Im7;pQy-L1nTApPj>C^~_9B@hRQF%q zrvQ|c*`RGoB$nv6mUe}CLVwfW^~Sk#McQRmJMzH5~WBLg=_5nPW+v$xEFHP&$?pe9yi73a10tVKfFF^tehK5 z-!tyhhmQv-JATAqQ!wWRCA!LpuGA}HY;`|0RGyhe!yt}xvA#dWqtZx}YM39|-xF)t z|Gb#N{8bZtnh#T{U5Gi^7kUG`{U`j%{c3BYg!)O-U7eYvBvN|sGWR& zCNBJ&H@+ro=Op-|>3u$*FxF-fGb|YA#)_VHnmM_yjPuXkI@&b_Vc5&NN#>|ZWyrm7 z6tQM*R_mbhs(&Otvz9YCTAaw8)n+;x8fq|jaXslzi8*@CXKv|JA-#07`cErz@Pmue zi6PD?4336;Hc>9l3q=R#zxx|`J&Lsr-%Lj(JvY<_Ul`}B zDdF1i)4sUPIB)1NM%z^i!Qi^g$)EJJdox3^fOo(XHEU|q=?in7cax0cx0LCfBVf{< zXLopsvLGZ9T?h00YOz`o7df+IjqzKVqlAx&!7OX``mTj5%`Ic0=f!g;&qi6yetwH^ z{v7i$N-BHKS7Vu5j`mlK=?$Sy;w+}9qf)RS8ZOz)T@{U#<>X?XT~6Po*lNn_Zs9Ou zj_sN7RCIhpFVUmyKQA~h{AT-N%5&zH0|&*mKzC$yp|{210%6<3k(yo_45~~Jt^94! zmp%N@Dns$OwG|}xWoDPYmebcwM~yHI{11$g{SQvZwad);`p&B6dNW|qg+0g2a+PmS zH+-7S?=$$8e6MR1+~5D*ugjfYtX=SBIxhUXo^1|ki^f`FHRC++TbS0bnE5J)*dgy> z+Lh#j^?k^G>BA=4SLATrWSqmxUMaUPhhjeKC5K-Xie>w73~f)pi2*wmHS6TwJsDe@ zWy+szkytmBd0^*kWew}M0~6SP?h~ynh#x`6xoCBt)Su5@vqNEZtFpfDP^;}m)vnU#W7A4USsD*Oyek6KrW(?oeRtkQHAx2?u zFtWC6lOIzZQr>u}aq|QWR-YJ&Z`N_Lydtl%u z>RA^x7X{?yhh~TVl{b)BtgTVa;y+F4hA~One&;Qb$~c#_@2j2NbryCp&K-9DQS>$w zWAjLjg_}<)Z?ACP-Js*I!H38Kk=5S;*LG>B>69h1ugyf4=NcHa z3KcEBSYi#aQ)$lT;%HmOxl)5;e+G-^A1ttmSir&52JfY@ftv~Mi4z)%mIJ+Tj{1;o zmi84{)FRr%bK-yVv(36ST61Fy#Bx3NjqRzmgB2z+&gb3lD0f5XAHz6z+`LhVBbIw8 zdv`?@g8MdMej9N1#C;)&q~5D{DEk zyD^eIf3F(KREuaN^4@pFCeR7y2(8M#tXw# zODOa)`n+$b$apZFGmd1;9n?##u5F3;oP9?$>?Bq^vcW{wd+REDh=hk;*tUf_0Lw;+ z-}|X;Hv8{6?48jgwb?cKGtaTFHCC(SherPx$u@Fu$;Brj$>OyHR6yzjOO}G zTr3{BM#I*Ob1vr$@tE3^i&^U?Orw^5P%IX)2DAR)C@zP_qF)Mep|z%oq)jof$RZ}c zBZTkEXap^#Hh9cnVX;37J9lt?8mTXu@8*5Cf_<%;U4`M8P)vKq+NM({F@+oo-R2tX zf2k+ZGpOf7OvBmLoyDY4F4)aHY(Jr!@H4W*!72?-U+*F6n9RVzw)Cg=))({6TflHg zGV)jT5wAR^V}AQ&JZ#oaTqv`^<3k!uo8DI(KW2mTSJ``f+d*_#?gayX_EcAVlpQ9J zhg$SEuAt4JHA?SC6HuH%-JVnWO4Y3?cxXs$P|t_r!dnZZ^DckZYLjRe?TI2k;w`_X zhz;q1$Xcx?CwZp$>>Z3R?4x#SKSb>58H&Lth`SrpS`-`)LmBf-+uc9qNNVrQszqMd zs!MXd4t4*STY|iH%FfH^_c5IJIL|ye{$vdAQ@m>*4U{7W#o`cak9viZ_C=-IV^GeO-3a@pAkY~RCKfOTVez&Gl{Und4eua|spUm(74 zzJAZdTHebk_-jdnJ2$fABL;3*$)5PxVS8lPP7b(yRD+znTe36tuE)M*K8dO!;s;qF zlF!i#+K3kc7RV=lzbEj^ zVF;#N=N;TOtE|!eP<-Uf#W8SA=^TS_82(|8<@Yhe2Z_Y6vECD{GFA1iQv-lCUf1kf zDlbH1IM;UmsJ2q0Z86BR;d#2>NLv0r7DsvZz0Gx%&c((djWMj+8!H9r#bM$G?oIs^ zDgGigx^{B5Xq7JAAlD}J2x~~BO6Pdac7Mn`lMyEU=)|5<6Z&zE8ZW^;7<0$bN3!`d zm9w26dM44!DeC^{Kg&EYn0UEOxj)NN_Bmk=bH(NrS@LL=E$$CWhWKz*UNK?@{X3GW zFWE$V>tcm7C+Pd>HBb!NU`5Wi26|UjqRZ7;(A}lRyqreD{T2DY#8%$EHNjBgT;-SZ z-}yOM4llcY#}d;ws}U&1mJaA(4Nn(x+~$`Ujvr?W_mS*t1s+jtYA?Tm8|BRgs5n}2^c&!Zk1>ApVCKGq>|Tl1ywocpinL7XSHN@FUb zQEbE>UAb0TNc>?p=I0qTuS)udkb9*coXv zwK2?Cdt@g)lg=1YAJmq2*vuLjzcLOd(ukdS+zi(@#ADT7-dT3*;`@2}-BPd;e&SUt!HH%RT=GegMn=_Os+SR@5VafTpqC|iKpe#zP7lUkc=?@ zo}%-jnbgA|1}WT0w27f+9c!40BNN4oL^}+gM_;N%BSbjQ*|%S#(Xzjh^p)KDbHD$_ z72FJnF6;c>65BZ!_8fSoq-YGeZ2u7BeZQq@xyBZIsW^VDYMgSOC=J{Z zikO|8J2Z-xdOQllKF*0W_KT!8T_RAEJ>CJfd!%ZP#BzU9V^H_=(%P+2uwhLy{>~do zuUZUyxV(#9a$T^-P8(= z$&>ZDqaohxvh=ApwXuo$oYBQdD%15qA#rKB$9I+08tx3!tMmuAI4=7(u*W(2lrJwVlSjV&HNBR79^E6M4dKN@(_H!;montdb` zbJ!byK!4snI^kHkNsZH2H%qsSs9`RM@9lR|O3_6Acdxl~@}<=MLKJ$lr?-e+kZY+0 z^>G0GVNZ3$ulQK}b&aap*mt{pW!u=uJ(O4!m=n9P0qHtJITjr-5l@08SSq zz{i5~NY>-+4dStfn5&VTYyC>1eu+i{x3kpxq#sRufrj^ad-zQZ!-1O`jJY)izitL$ z1!HybOncZ4^M~oRWQ^%vAw4knM(wB+n4YL5HQ3;eEp_Ojd_h-kSDUq;TPn39AIc_A zonbj96;90zMYp*wxJ5ko*XSg%dWjq2*)!Q+(^34U9#O@dXsozBQQF^vnqhH&-@98l zC6=|UX@zIWGeTYM|GcT;~H?2`h-HAJ?DH`+Z*f%AuKsm2R;IIc-W&1$y zG7b6-dkCjES6JK8@32{j$fv*gpnZJrRbHa~W`C#$aj&YnNeR^WcfJ4j9QMIPO_^t7 zD-4QdPnG{oR9j;xbH$%4Hma46Z87N}wN1_rk`f07phzOVabT)+^Jge5qRGi`zELWo zrs5C{=aTYi>GHe?3|^u}o2*Y#XZCiCwEXk?O;I+O8mPb3$iJ_TaqI!O_h!HM;aDiQ zW2qy}nxvK!+7DvCd_8@@Yf;C_om$a9xVDXQFgcJuW3C$P-B5t4QsNL!(x1N5MhvS= z0Ej0m4A=_&6>$ijo(xm(jkwQ#shw*w63Pov&?+1TbBQ^-m;+Dtl$@TEFT6VhCtmyE zYBGJm5B&p=+SII=mWuN|o=9)DxZ~M?G;$(3O0j;fc=;s_>X~}-mP;-;W08($+h5C$ zecTXqgn#~iqF7kyiM3WK_(ygZi(><@PS9)QKn(m_%_uTNNAPxT<-Xw+Dy5L@XI)7g?L!De_a^5qL_h6fxve*Un z7N*l*!$_oAlEeOsIF%{s;s^Z@*3IXgcHL>!L*fC>Wc{5tPPfh|%VvG3&zkw;l6Rv9 zZM8s zY326_v<;%)dT;|ISw>NhnS1164-DKNjmMljzy3NFdhCC;>CSn|Q&;@ zWAE;G&O_Muc$$y9m+3vF&%OVCGY;&d$Hit1d#N()d2VbOoecHpb9hVLrZGw~f@|ME zp_;loT~pAm<#p8L@ACR51sUfnFoARMq+0ZpZMFxs76c&iAkyU2a*9uP@c?Ze3JIbxx8usKc zm|codNwcW)=1rZG^TyJ`^#L%{QDa!vB1sbzhWaYjZwnRa5$o0OW7zk&`dYe1ug}x7 z)Y$%^Db7=G|M6_ja|iUttr{^XBqq%wz!bmTVsWtxwFSNfVqYn-pzP5FW@I5iCjl8J ziQTHZ5>IQ<1BW^J-syelBvXf`LW3Q?r*NhX@239bEV$o+){CF9ZVF~)yn;WuLV3&s z?hD_d>OOfPdsC>X_W-5Dc(hHVM{>d`oJa_O$EXx^blJ?$PMwhUy__w^XV{@d zqh$1|nIj6KsR4B%4(+{{8P?oI{K>q(>pJsIxn)O(Ss~S$d`7j&sDael{YLGh!$vWx zm&talx9P36#zZ=PF@QSs#Pb|jEIlp^L#jS&>G$Q*)MgRXfmEZxh4<2tgh+JZ{n1#b zCCr|a-xSH3e7ON$us`3Wf_Rn17VJC5;&>LI&xPNVO^3hy*tObNeglWEVPoYc?6EOA_xD$JL$%WNDLdG#=iC~ zkv1lpS_+Kw?7?_hO70|U>`^^Q4()ThM$FgqV3Uf#z^Kd}+drT}(z(>|&%gU=874wdBs!1vqh14;s zTPvEL-aOZg=~-VAiq8G{eBd)=;@w`IO~KMORk*Ui6F-)uU|UWJGNPUFayHj(_B?#r zXN$G;4qucp7T0Rbpl4bNYvO~FT4RaeEh$KvTf5BH#0rf)Q!v+yzNopg5Mq>!6{(?O z46L9X%RYZhYKe8t8EBYGj9F(FRsHkCOtz)R z+-^f@E48-PYN^-SGf!$%JscZly7fWq-*f z6$LkH8^ym2fobDZYT{Kha%|*}H%n8XJLeT1H}%9%vlJY$z5=^;&iFQn7-G|du=KFS z&mr{xPR>W0?bf(&NlrJ} zVf$fGk_;DJuHpV?k;b#G^jpsHTYV@P$UT&)Xg6jjAvw6R$(YBh=L08UUesJ%5 z{zT)pjuA?0ed(AWZM!06$`gtxb29T(4t?&6f0p zeluD6WNQTr`q%t#T{pbWhO&DBme6NyoST(b`uK!3Tv%f?*>=b9(MLO+txf&3xo=eI zp93*;S0d6XMoC7kh)a2#2#2z8DXL)#fenj>svR#qQ1Plu*RIS~EmP5l~9?17PaVzT04aT3RoCUaT#Bge9 zF66sbrEP{wCtq~GO&nDBz34u~8{N~?=%vUQdd3^g8&U)R^H%8n3_|7W2z+*qGwevL zbv1u_O#k=a|INF7`fe_}7ixj|M&w;eH%mjA=O<^-n?`;x`r#-$sOr(nvfXUeF2g{i zZ2I?nysP?3+@{`5`rW>5DUD8!L^^T8oA#@u+_-3bC1&1ute^BQg)_27YHDrdN^@3{ zZ{kFJ^6jnCQ07?s>*U$FoRW@DWADw7{}ZpI683aGSCIpJYe*S1a2m!$4;WZU?8ptal1^_?>aiJ_R<9Q?MbG{vnr=@kpJDonE}tuGXMu zSt_1$ezwSie0`@>oTFAmSsb}?=eXwo)%ornjm_hjH>P>vgcN}S{=O$VPVnY@ZzJ#T z|BtG#46CYJyH*riRP62+F)`SiVGF1zf}*H&ch_dqsHhki2nLFsh=B^MHP^Pg#SRSY zMr{4Y^L~F0&!4j{FAj0?K{ zH1QYc$hpyG`qwyyOR8&wsE=spS}D#C^Y%;ouUlaWF=K|CT1Z%L%{d=?1C>Xy!8kiO zKc?@@zm=+4cf64?hxmKbF6wztf>1g)4#)0!sk^=9UE@uE(%3BZvM-$dI?*q0<}r0} ztw`>Osf}>vgF2Zr%st!K%UL!u3!JS%3+9%NV~os%J2?so4ZlvvrqeoKA$(*ryj!gpko;2Ifxmq4;@PAcq zne7@xPUxa!9DDiH?AR>g1s*4(Z`KR53)!4I<|SiVmuF^I>JY!*i}zjkM`iZAv!vGmI@PDFXc00fT?z=i?bsgW0w-`59)leCyzeiW0FywHL; zl8s3PSTipeWwQfO7vw4=2pId7X^166d zqBXv4(86p{X7Q$uu5f&-#gFo!;`d{Hak3U;*w?Puc8ouI)5}A0uqbXeGLYV~5=!roW07(^ro!{u;!7FI|hX|ICX|XA)a`P>Ty`Q;UuFM8b|9xIxj5#V1xoL(9)- zWm#acX1oTG&*&BMJh3?NQY`8%W!=&%y}0)P`c4nx{_%5G@hyNJRSf;^Irksf(GDhz%>{;)aF9C-kS6_w%L2My(?;mvv54lP0RC zD?-tOGlxYL+c+Z)M1rEl*8y6yW#fHelCQzAJ@s&ydRfEhRk3?0@z#+pyqm&NZA&4- zmO8^EGzcex^6_<~FW#-BS54q4)z|*iuRBTZ(EsF(?_r0eMli?lj?~lGY$nayVTm>4 z=@UA(k+iwdWRx;KgTC~YHW)i0Oh+%UK2DOV#0zU~X_4A1MH+S92Yw5+cw4$wDnCXX z&SWkB=0fS*g#hYwQrmOHeJSou5T>@$;_vaQaU#_)VDz-C6Mi=&RmLsHP8!XX! zGCh<>bd#?9u)^}yT6(@GNlR-xA?CCe(XS3mZ>e25?XH$J!DDIjS|4=hXYr$XE%_gF z*KsTQZ6E0@zgWyUN*67zd5o4PZVN(jBQ4gad&(gvL(qdUA2?{f-0e*md`EKbS+HKd z^FD$+N9y9*9+tOoMq$K!71!mO{LG*EZ+09UM}3fQ|KR@Z7d@}-Ylx+dwaDJgU0dJA z;&gBR{FtQsk5=}hAKgD!s)#g41pB)%#<^mvC6ev_ z^B)`{IaOF;H_zDgJp9ne znrG{~lU(Kyz@ANuTZwb!vHuK>kIY%~24Z$#S$66jMlJj>^hu=txJ1_6bnuGMQ z@}w@+m*4W&WjxQst)=~GC{|d;V06zo{Cm{I6kd^eAe6Vdfp3y@!od;!;ikTr^tzu96_1()e=E#UAxSZL^drO2+-V6z=E-Aq z$4SBOtWdH~i$%q!rQGWQGnKRPXIh-FF_q^y`C$1`2YLx*$8s<0Dy%<+VCYK?JVw}y>h!|sdz!ugRmY3Qa{{rw zZ!FS1+lzaz={d8VI%4VS?NKcs&GX)AdZjp*WTi`OH<(lVl;?S+sifOxiG7?MEvsTJ zJ$`D1P7?Em-czaiO-J0~8P0iOB=-&QLf2P}zix*7dIa?ovbEe9rO2A*elR5Gao^Gn z@=J1iD;Vc(PlSBsUm)VE^G+K0RBl6zO^2Vn@1yla26qGtYV(XOZ7tTCMxe$ZErPcX z6o-39;R^Y&7gtXb%|6p>^epwav)sj3YLM5}W3H|mC6-cuBmI*Wdv+#>x+jSp_0{73 zpE$9Rv)RM5Vp$i(h+mCE>DR>iW=VvYMXeb3pD{R4J6O0--}OWn4SgS-ME4fd#ofU? zZet?C2KeG@Rq6zlJd@w8_e4>J2KHlKNe`B~VgCsBoWlalR&8=c^9xZ}l-mwhrn+Mj zf-$nC2Ta=d!z9HSR$*&YEiT1C8a=I2oXc(}Ne_0KUV~W_Q$}*VxVXtK^?LC+s7xy=+FIdUot=TqJg3$DOZcA8*;?Ge7=cZVsNm z^o2uHS9A{YfkCb#lIx|Y@@K?g_a@s)ah{YJC?)2ZqaOQif>*Wo0|R$4B~Aotq-3nt98)^*LV@bJx`Qv?BlA zMC}@Czkj^*Ty|VZofhUdaj>Rnxg;2q-^8NZk9Hz7ClqS#T$4Ty6>@PnPSxNps{J%E zjJ3i00rW0xA1J;TMWN*wEtF}A;wv$A@9Og%xtJ;>ckCG&Hb6k*bokX_g!Y4>&(O<;}Env&<&^JXA^7V z3%>@#(3|h|Jr74*yD(XGi9d4+=S}}x*BQNYF6$Y>vP?&iGo5NESyq%NmxgLEp~F;!R92O6c9@ z^f+0_X@U6omL8gWQpKv80oWVH9w|Fjl+g#IJ@rtsk~Gw^Bd1AbO=CSnWR|!g#V85` zrgRpgcRF&e9f_OXC*_3e_Ba+2fpeMfrG`7~FyKDD!`ikqYrM%0z2*kvgy}sqldH4v z?v@WdB?=zW z=_@_ zSdwS9tjrq|G958_+iugZ{{k?b`PpSsGtvA7eHk9nhjf6k*!Lm?JukM0e`|=v|@@Z(*YN zG=!h;P*(3@zr-TTH(LBQ`MZC#^1)Dz zzS+bgZyYRl#L~d(rggMYXwMzY|K^Q^eT}5@9p)H2iTdy}>q!CR(hl7ahX?)bq>3af z{NfyG-O8qNPjg3DH|1Ub$X_;o#9F<69NL?%klQZwhBs@HlKThc@xy#EKa3u`t?tMJ zzWd?FVD9<0RuR5e0&s@4T*!xJ0{ero^&!3Ra*V~QJt6qS*j~FfUi@rEzp!0AxA*OZ zy%BegbLdmkz)jRy7J?Ik9!$eLL?`xc_g}I1=wc;yyKHyp~7^eKfbRbE+k4T zjyI!MMU!XjK>h&mbxV_Sc5F2fmizay}-uaj`uHye{(B5-uE zjkwix2Bv=^2XN{*F?g{p4!eZo(^(Vo)7}Ps>xUu7sDsFGn+C7W)b?F*Nq)4$9;FR@ zp~^fieOO9Qhae}cq#u1y^(d@7T{+Ix=HD#7zJPTd<6LXo-QxbU>3_vIH<@50xsSEN z-I{S|RQgp)S>}L#?1i_qA1j~K^TY<`XP=wlazMNn2D0Ah)qRzG|F1WOSZJ{_<)ECt z$QNqX5|T}c{B;2Rdf1EVfBz+qq)u}Gh*&s(Fcj9*i)%AF7QfX!MDK5qVey^|IOc771v-);J6h&P`icNqkp``dwD88B!yz2yOYTKMr^?0Ak@$|7IP!Ge|hYK z+~ynP$T_UH{aB++i&2^K=l>R!~Iqu=b?yQq^{H(K8Rkf2XI<+c9!2doK)KM~|5KLGrq*-Y^=+In27HvZEb6 z3%=5G?c^>wk@|!m_OKtWb54%W3c$pGSd2LPM)sW%gbzbwv1ooxvHnId!m2Tc%xoqc zdeT2?s|H)zwHE>3iTSLl!LITS!gpQ(>^jjyb7L3Ll(>{VQ={=VrMGB8PKPz)Jk-)e ztftq7Z<8pzwS|bOPw(KkNE}@?PL$no<2x6DryZ?C4NoUzQ0r%r%`DMk_bj-S^4zk= zIW>qq-28CV`jIHgPT8P|K{!4dFA&+grlQ}~P{>;sik(k*&gmBt6C5D&r`V%WFJI*L zttzV0zo|aYv;O9(>N{;&4+d9`v+ecrqH6QassGBpRcBee-p&%&80VPk$BQ$ESYZ<5 zT;DWPs^;o|HjMMZ+%HngGai`oO^bV*n#+Ssyf9>qmRNyd@;c4|dW@zoUXFuYvx_e> zK5@@#mLi`z;)j;(v(~R&BTupoK&D45_U=C<@2nk!M#enz%dg6|@A(pBPar$x7&yw>9f$kSp@6e zaFNr*4&|rAA>COd^f%eSh?vN%@oUB1*r~{+#&=-GCb6El+y;|^F?9WM5%yyy#=BD^ z?0#R-;ixCQ*qoqewo6@|^^2N(t^du>%WGa5es8WhZZXb{ClwVfoMwp@8@W$0iz_zk zZ$)kCI2fFmB`ureK#fYy=pW=u4|jW@cZC)|Ki!wUH1>i;7W+7f?yoIgDLCI8Ly#Mz~hXtdox98RVehF&DzH0&;1J38UcB69LaT8bg88D10H zI(&GPc=d#Si&a=V`mPjzJ#8?JXZvI9F7eWMD)Py_u~Z!qD@NGDka*vu#(Tu;keT>N zJs^vOS>lbE2SWQgVXot0^*(hJR{xz^Db9ax_fnloHAm;k#6MSWI((IlCF~jJdLDYk zroF9@%-HT6U?^D(bHG>T>Y?ugq`Mg&X!%u(qt};9K3_Z$n@R7gvIEk7`UNag)32xe zmUQ;G50<{7uWtV;a+J9r#;uFRx*N^pb;Ku(CSIpOzkc$+ut2PC6N`2oCdzx+yWQpd z;m-$mxmj^AdU9WDogXDX`4xm&jPt+F339&;0a$4qgPF#uawB&?*fP#Ni>p;>JqOjy6t`di3)~HB-*< zeuhhKne=62Ka#q4nN+ulAEvCPpI7HyQma+|$g_?``y;2N-p1SqHHn2|`U~mbnILR@ z#G0*PHMvSU>(gb#0=8-(o4uy)L_H1n;Z5b6^g@an5Ch{u?d4?_e)wh`&E3iX*?F!H zF)~pwoHj##JJuV$8brbB{Q~(YSbt_k!hPmZ`Emm{>}wf`fvu~G(hZL2dnf{SM+S-b zoA$UJ&zbD&2(e}4bX>D1F3@-bHIt_z{z*6tSL(!gwKc|Og~4>nZBg=pKIun;iIKe} z8c24?JmkxIb&Y6J-GzOJBRa)9NP`B4VAakkmEv4KtWmS;_N!~=!g z&aj>$D9Rq!GB_)I5+b&iOk+L5z9=A9JnuafM$939z0Qb5E2rSvt}uMr_f*XJOYRjt z8~R4R6s|$jq2y5O>UX|KW8FKyg(K`v`N-dh6+b<4a-}%WwKr5ZW1RJ-#6zyRK=o&m zCEDe3_Zr_$)wi`39x~3w*Nsd^=uu~kan5mgJN(H657>X^%prZ0=~VKJ?q_H*E`NdP z!q;AiHlY_@#1T`wF+K=qKeD{n8&gmEVtBEqJ7Q?4>f6;HPsegzEcI7)q*v+X>akck z$5!QR7K8&AHCS>aK((YxFh-?lV9_K%CG8EuYklrcTMkos@*cdzI3NBu)by*qAIv%P zSzg7vxU{Vg1}um|N*^<+weX@wRurBk+?QU-^xNWj_W5lme@u2oT9-(CayTX@S2!T& zG&%1R+X+Jhp69i!pJhK`F>4w*bP;$JmMgL{tu$ePSYsUmtr$kR=E+aN5 zeWR-6oEMS?alZ8JlxlE0AFRF4p1STQm7MB}xeH@)X=Fq7aN^ZBjfh3eyI$(MK>_&v zM}yhL=IYnf78r3-gGH;{)ERGs$QveB?QNKP^4uVpuzo)9AV7Un6Mz!~sgqkUNj>Tw zJsG*Pvn#Eq{>2%~uH+~*2v}|!M4X!e@z&}cF4C7s4@5FQho^UvXAg13YHC35Shhnp z%635TIqD2XG!}E#&qULW5opuJO+0>Ri>K7B81*Pe^sHfxy6qxx>ic<7zwKn4-oxF` z)AyqB)5-Y5ooh&^zv4FU$|D2mA33~4Y>%G_`yLJ$p4~x=lbq;@J+abxHeWJT-Gp(@ zWt?3OT~gh$w8S39xoY}6Ra<%}4`iHczMQ5y{$viyi7%|bKTY+xvj=K3&fO31Rju># zMD$YXyw|&-3AdaPn$1^(Wzn2d1%jHN#o` zct`+_f79TXafQdH|&0;wV@~cpl^!391a{67qFDdRwk0(FY8)H6Ikq4EzU~1<` zlpkFsC-YAKPK?^!SG7cp(M&Ynz%#sXhVXK+MQi4e>Q%GFoY*Ni-7x~SD^7{Wp;lIuFiqyzd@qiky-fmZbGFv-_#FQ z??^Pq561a&&(|s^3rqZFoQtZgQZ+QNf;Z#5B4L`U^u`?M80RaK;#JQYd0^p3?sUGa zSDmu)9$N6pLk;3n@Egnc&0dtzRX|eMPgURTj^K2 z3-sGYB28K#H@-FpKF1M>6}fpMNeJafRbD(ctcEirWyIVp>?RnzKNVaI>x`CBtpvomwBg>ioSLQgfOD(^wY z`Noizs$7*Pq{ZCjS(&J=M|k0#G4USCOqG0;d}`w7cAiXBJvH!U%^8cxcG;@i+#x<1 zNPKY10+ov1a}(Z?mr`<5RdrM#9_8`wi!4_?QU&3+C(n7OYU)|f19A0T3_dUWqpI>on0{g#h z6Ynf0!8Me6aK-1u1??obQxodtq{kxX`($jUZ(_^HW1`*z;^te$00PB2Fi<9zLVE%lOdmdInA-8QUHy{ln`a>n`o+yleCi{~JRaeh4Y zYLWhDcf94i^sm&ict}t7T#WOxk_pAF9lh|luNEx=5{hrGrI*}|SX}PDt~l(i4@5lm zB=d{OcJf0$ITC#f9~IBrNT1eM8kj7qCUv70XuwYPfb&{NFRBDlyIq610lg)o+(2x3 z9)s=S!=>{%{^-{-2Hze|k~ZGGtOU_H)8J?sK+qQUzj(#u1QwSs%}M1%Q(Ez>sS0IpPyCr zIN0=mUhMbG9ar9S$KAN4w7t0}jx5q*;geC4hXs3l?ypflSUQ~KjoVjwo=0U!mKS}n zKb9Efj(JiedQ+b36N{NUFH4Ie{L$!{2AjjmrJi>K&~CE^b`$E${Z0hp@eB>`k~Z?+ z>D1o28-tjwUF0(({4uh23_6M)a(uK8esC_AwP%3b*ux98hzt7te5}0tt_QWEA`y7i zQBKKrL-O=U#I%c-`*(Fl!?Fl0G+rg!kD86HNfEGkd{lne(GHH*5vcY3tvrodI$qp? zO|ITdbe&;^AJlH!7H1+Fjh%>!*WCRSO%V%ICnAO(T|cd-ie-uw)N$VUzT~X@xc*c; z`#1~v({kvkU`<~ki%RD?wZ#o}S<|uTPTW@+Mysm@j>DvcINWG^MYX@J1y+=3p*q~V zc=7A$Sig^6uJPTZPk~OD&0f3DAs5Ly-5IyJpBg%6ne>J^@CfH}Z}uLP25xo5=25X| z-s8U1`I;Mfc^aIutuFi5W39#9duUZ#dG}0uCUSP6?K@14O7X&utudJWXR5r}z#Hc| z$M6~IA-iq%!Z=Md?)(Xpoo;$^cN2wqTa)C+qdcjJ8VP0ULb>{34;&``ITxIn6NY*vF>>i)M|fWk!N~5;a_5e-al#@Plje?#EKOhLAfKg8DsQp(y%81R5Qx%R&5SMrK^14W}(jaYLx2!o%Ds}yIcyhLsLZVVoeq0YwiG3w4!#zAi_ardkUjRaG3596Grm;umWYJ7v>gIcu&bN{4IEKYOA4 zJ;VzWIcLuPyH-v-?}c^T_u22?A$!nQ@%ty9Vb6o|s;!LqglN=nsK`YFJ@F$a3a$Yc zwV+vY(Pv-)ta9?q>~78=Zr2ZYo(#a;9C~7I z@Wy(-&4|C_jM2Ybk)Dka6HZ6tmTTpG_g&k&YHj)$w3``^{$0nZ&omi_S`z0-{ZFXA zpD+jd#Nm_Yh2qI`rz60C+Pr$pq-};ys9Tj^^HfNuS~z3ICM~A;ev%G-b;f?qMK@e* zEXT8s+QGeElcN4|jpwe&%jVtp-&uXjdCo-ct-3|Yn}|6XtRIV8FPF*@tvu1|1aUAE zx65ld1Kh)Y&~COOUu))#Hr5(k8&M)_y}YTnq=E1%ljqg;#^-F#qMgg-W^=vJmiJ?= z6IDflDRsrEad7NnZIRN(i&#Z!eC(<(W^M9BUFsM8SIa$E=7E1RBQYZKpIouQ9idet zpf>p^M~1lL0yRXE%kRohg*&+$A;ixel3%d@t#U081}Qyd_e>8&=ModM&c)27&;t`@ z_#woz9X2%e!>=p8FdbPBM#RS6dEiv(Ja>wEsP=m|8jAwrsq<{1ZdN!JdXM6;rp__d z>}YeC*vDbUlqz(PosN5mgY(!u(&cB4cr%!N;)O%5pwuQ=Iu% z`6lG)$2`%u8R!2i@5_xI(j$_!pMTyDS-a00(j^TBcd8?PHS)pr9Ad03nux{sSlif> zWB;U$P%&SwWG)&xvzrjJ=u1VdCCmQ(go%qcHN;{d#+itP1HEzXLo^Z&4-f+ucwu=L zYN?#_GI54nf}eM6;bo>F0CNy;7X7g*{R4iX4q5iR1vbnW+91IhMJQJE=fL zHEpChE~doM2egIMr2#cSh&}6n;Ix!_(h-|H;xK=Xo;>HQ6S}vdU$&}~JamIIR$Qmf zSQh91aV`j8UF}@MM{exx3a`mp=qIMhPaLVW)s*|JDjQ@2dw1;NPPSXg5joc014j-L z7i4=wPIvZ1&!yz5o&PMa3G;$~cq~Hu*AY%B-k9eW3sZG#VL!`sik@oS!6WZTCS7;;}kxn<@5OBla?dc%}y~LQDVC zJ$>kJe%M(|IO@Z_3Gw-Nri!huKA7jk`n;v7&}e*M-H~&uzi;HYgWj;5&3mD2x!Uf4 z7w+)cwxq(WYuf;9{!AT#MF-6;ts-wS#=BCSv#LB-A6_;Z-4;`~#A%Y+LOT{i$R8tc zLZwohVjpQ1N6CM%wI5T399J7SEx?vph z_Ro~JxVxa*O=3UF6XYvnTyf^Voy)~l@~QsxIP>G4Yr|gIiM-uioLBoFJR^^8>VbgP z#46Z4m-`!dqVeBYg!}3VsficXa=z+*wy}8A-kUWY^Z&JOVs&pHtm1QV$Km3*zAyUm z^J~FlZib6rpSc&{-l6`}L{Z9_ttD&w ztM}%Kric9C!yc-!#auC+-i|uHFHX@8qIxFxV&o@m*Z(NL*LY*yMQXiecQhM)%@c_y zV{q_%Cww7hEO`%gQI}pfJF6kja#v-YKw0mF+W6{dw8@HxK|?F`qKvUf?;DT3#)nlA zqs>u=y3@0b#!KIua5h^^-bzV@wD*i7W);Tasdam~c99d>CXzEdV~iY|3*{Rx+)$mnnD_oSWtSW7cpgh# z@ok^wvpNs_AO=0rytc^Tp2C<|vORJu(YBB~GHWePzcLc*6mN8#MqT~Wql7Vc`z?4E zf4OfbJU03wIh>w!*L+27^2?^q*P>qS1fk*nW%zO}c6cumG1Ryi!kPJ^I_rgTPk)qd zWY2YTt(Z{YkG}p|G-;kGY7tMhf@h%qA+5-q>jw|+J;SZ*iw>W>(T6xUC7`OA4f&pH zIIDcTu@_PU{b2tm2B$BTph`t7`i-uv6S$6AE5oXdff4bmg`cg|X}M!jHkO>V?FUqA z$C~5Y2l5Bc&6IqbPsigYam3qHmm8jQgeRY??&u|_A0(GQKMp&>tYyP+XM`jXv=BMZWmXAwrh$ariRA?JkjuE`R0Jqxm#1Q93H6TFC+cP@ zQ&2&zEuS{tI;qJF*dHS2{q+c4IL~wDDRR4ZbkP}pIy6OLv zyz@?2MefY&+s~DjAdnU7nOJ8T`-8>vt#LDU+Ts; zS*bkNC!TONwZhWoDj$Bj!*UY2YWqSIlV2XVVn!_#XM3f%iWk!Rk#D$VwDO{%H!P^X z;txqBO&M*M0(>{5@)yyLFvXT zbw^mE_d05G9Z%I6_o3d}6Y`eMOw)n8m6x9w2hm>_QPUCkpOW*{tA%dISx54`shd$# zU)L(h3FpsJTX^Lg<@^L^?r9USDe9V{>EMC^`Q(N`Qs(?}K{IMW?0&gZ8Cpv1Ykn4~ zO12VxntCIP=&>?#k#cOmJHisE>sU8VvEJ)}>g1Ko2zOU5?&ciBle+YSt(0bmy--A5 znhTePC@+aa>ob8mnYxaO{M3h@x6~s&Qcnr3@Ws|13HbH4LR>HP!>wl2kQ{SYc(CWI zRiC<@+4LkLH`%5&e`ozIVx&LwIX`QMpITuz-Uny+w|CYx7L%8G!gVoq9lOO!0b@L{ z{?-7l92BX=p%6wS62A|dQG-ELJDnH-r$;w_kTkO)K51l4e z_ic?ersh#&cHdl`O=nx=ex=^gQ9E5s0|(60PlR3JK%MVD2Q;Nt#;!iCbhRW${QSt@ ztwl}U0`}%rUXs6e=Yw)>fHQuQf7kzJiPE#G3$EX!2JCj7aXxe3Tg_fv-Xd1A^c{yyVvmHk>T z>WfobDOII}<#HDsP2Se2E=p_0xw98}Qq>HU#2$XQYD?X`PZc7R9EbR^^b_fOM_ASh zz``-)6P;DW@V)^kawRAF_;wL*>yMf|8-E+835RaJXzoCs-N|9%IA@Z3+mZWblp~j! zQ%fy~8g~|V&Hfg8V?N{4vA|3g|Iu`aX4I=(OS zzRuGX-Lyt3b&70VCh9^`XCw4HwcqEr(H(Ymg@$>fN@#^r#ncsJ_*qo*IH}Bcc13O` z&xuQp;&jRt+40njI+UO^uy?~p555;)Co7AX6TVwfr*U9U<;Yojtq$X7w7-txww?NT z-KdSW?767A+>`#XjN2MTELiS^h&t5MezsXO;k$XdDmk7Lmx)6seUSH)XTva6jG|^v z=U?PCr^JhmYJdFUIa${@QCO2B)0uxuT<(04dp{5h+a(}t{z`F~8mo_oP*de?uDDK( zxcTG|WgOijj%Ebo{SNwNT-YnVj10mgYEzu;w?PCX_@g8BYM%Z~5ECqXaIPQ;o31qy z@!a(ft(}aRHT%tOb@js1RB8w9a2&CYHDvkS$~u8VFOJ7~L0;lp-c#~haebWw&N8Qc zH(x4tmDpo=Ikioit3}EZo}aJO+%T*vj(7D#tB>)}9ylZqJm8CsPpOqOWT`xed%$0J z<8fyATzTscUlcIUm)u_}?+Wun!&}7fmF|+=n)_oVKhryPugF=(^dRc?MNpIQa=y4*7ETQxY9rKBMCn8F zk$IN<&YcsT>xaX@klNby&x;P6d7Q{fr2kWq=zo!C-XRHp%QHph03TE_N=A!KCSqEy z2cE?zqtwF4tm|SAJn2Bs>^{~b-Z%Be@pF}ZOEZ6WM8UI#Jmchr)xByq*CFNqp6%uh zH>*Kiy#YKw875)HO%Kr@p%(S}JZi|jBa>iLm-z?w=%)hlkcE1^i0Nz0~ ze3LE6fvU}zG%PKb`~B8HZclHZW(`D2cMaBe=Uw@tvzW3f1{-;oZErP9M;8=XTFIi#f#X2k?B({=@g88vW?Sf1lT7akVHK_7C{=qwb6IRikm;AQ9CH zp9tkQ_2;P(WSjRu%pVqt-tQ908@V7XO#;yCND>O#?G=~mdgJf%WLPZn70;@>>S3cP)zP;u>Mn0f>*F4c>8a3^5s4IBmun1s1SdaNCu3Ql*SL4u%F^ryfP9(OZ zSJLGKc&FVErW*1=AMvwm{XneS!kq)}j!&DP3!lvz6xT^aftvfi3eGl$CZhAxw_^RH z2>f2ev$elWc#R7|GSBCijdw(=-F_JOgIu59I`OZGCw4qd#+)5X#K7AwSU~=G>*Tev z7r6kpM$j|eulWcS+;O7oe|wbw{`>ELsh$4pm`DpuMKgO4-tF(C~R<^J>b-p=+^=&y8GT0Ss!KLbCg;F-^f#ICyDi% zM6_p)dN8M0v|#K5KGWNKQLz{`oVt3frPnT(MD5$eOTMDky{iz7ITw+byRJUfiJNDL z9lJ}7tQsf9)LO*XT%pg`oik!G`EldV(1RfJqL}JWJ?zWmOa8hlI&g;C;9oofe_t1i z|Ae8zDEi~*-w<_I2BF0{`hJeTCeYg#=H!Yu?|7E@Mt9_AB|(454pH;7GiIxkv0`UW z(PN$q{MIL-@8PqUw2J5aE&0O#6X&mWx+-bm=`i?0Pg3`}O8)5r;@sG47$z#IT?^6o zJGqc;XDUupwjqJfi9bx0h2PiUJf9oS>83cwtiTICue{n+aq7PW5BS{XZY^c`_=ULl z-@n)RBaAHO<0_xWOnWQle@=zO=hot(n9?W(fqY)P>AD!RkQ%^@b8-4Pv2$`F2J!iA zx8q_3b8YVm{(p@mk@JSQ66WxUfk(t~a)UbZ_dIgypqNek={epnR`vFanVb)GdCoJ_ zYoFMCoUy&f&(R`J?A2oqxfTzbyLnHh{vtSd@(RJlDl;3m`yn-L}nOX4@^M2 z_JyLjTM)MIV!ax8T$CSVeHfUC)ep~#6Jy*FJS_>9eUO5?6yyJ^={XV5kv$6I zu(ORU9<7PP8UB0n@dM%lXRd4b^=mKg6ob1Hi^`u>P;-+Qt>*rg^?$8tYsF9vHEW)c zr~GM^I8qP|>)ZUE{>w$sl_*$W=X)BSA(9LtG35pC>xz}ax=t8gw4qOW`35m_ejpqY z=(FH