diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index e18cf75a9..3d8642ded 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -365,20 +365,20 @@ void RawImageSource::CA_correct_RT(double cared, double cablue) { for (cc=4+(FC(rr,2)&1), indx=rr*TS+cc, c = FC(rr,cc); cc < cc1-4; cc+=2, indx+=2) { - rbhpfv[indx] = fabs(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+v4][1]-rgb[indx+v4][c])) + \ - fabs((rgb[indx-v4][1]-rgb[indx-v4][c])-(rgb[indx][1]-rgb[indx][c])) - \ + rbhpfv[indx] = fabs(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+v4][1]-rgb[indx+v4][c])) + + fabs((rgb[indx-v4][1]-rgb[indx-v4][c])-(rgb[indx][1]-rgb[indx][c])) - fabs((rgb[indx-v4][1]-rgb[indx-v4][c])-(rgb[indx+v4][1]-rgb[indx+v4][c]))); - rbhpfh[indx] = fabs(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+4][1]-rgb[indx+4][c])) + \ - fabs((rgb[indx-4][1]-rgb[indx-4][c])-(rgb[indx][1]-rgb[indx][c])) - \ + rbhpfh[indx] = fabs(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+4][1]-rgb[indx+4][c])) + + fabs((rgb[indx-4][1]-rgb[indx-4][c])-(rgb[indx][1]-rgb[indx][c])) - fabs((rgb[indx-4][1]-rgb[indx-4][c])-(rgb[indx+4][1]-rgb[indx+4][c]))); - /*ghpfv = fabs(fabs(rgb[indx][1]-rgb[indx+v4][1])+fabs(rgb[indx][1]-rgb[indx-v4][1]) - \ + /*ghpfv = fabs(fabs(rgb[indx][1]-rgb[indx+v4][1])+fabs(rgb[indx][1]-rgb[indx-v4][1]) - fabs(rgb[indx+v4][1]-rgb[indx-v4][1])); - ghpfh = fabs(fabs(rgb[indx][1]-rgb[indx+4][1])+fabs(rgb[indx][1]-rgb[indx-4][1]) - \ + ghpfh = fabs(fabs(rgb[indx][1]-rgb[indx+4][1])+fabs(rgb[indx][1]-rgb[indx-4][1]) - fabs(rgb[indx+4][1]-rgb[indx-4][1])); - rbhpfv[indx] = fabs(ghpfv - fabs(fabs(rgb[indx][c]-rgb[indx+v4][c])+fabs(rgb[indx][c]-rgb[indx-v4][c]) - \ + rbhpfv[indx] = fabs(ghpfv - fabs(fabs(rgb[indx][c]-rgb[indx+v4][c])+fabs(rgb[indx][c]-rgb[indx-v4][c]) - fabs(rgb[indx+v4][c]-rgb[indx-v4][c]))); - rbhpfh[indx] = fabs(ghpfh - fabs(fabs(rgb[indx][c]-rgb[indx+4][c])+fabs(rgb[indx][c]-rgb[indx-4][c]) - \ + rbhpfh[indx] = fabs(ghpfh - fabs(fabs(rgb[indx][c]-rgb[indx+4][c])+fabs(rgb[indx][c]-rgb[indx-4][c]) - fabs(rgb[indx+4][c]-rgb[indx-4][c])));*/ glpfv = 0.25*(2*rgb[indx][1]+rgb[indx+v2][1]+rgb[indx-v2][1]); @@ -435,11 +435,11 @@ void RawImageSource::CA_correct_RT(double cared, double cablue) { for (cc=4+(FC(rr,2)&1), indx=rr*TS+cc, c = FC(rr,cc); cc < cc1-4; cc+=2, indx+=2) { - rbhpfv[indx] = SQR(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+v4][1]-rgb[indx+v4][c])) + \ - fabs((rgb[indx-v4][1]-rgb[indx-v4][c])-(rgb[indx][1]-rgb[indx][c])) - \ + rbhpfv[indx] = SQR(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+v4][1]-rgb[indx+v4][c])) + + fabs((rgb[indx-v4][1]-rgb[indx-v4][c])-(rgb[indx][1]-rgb[indx][c])) - fabs((rgb[indx-v4][1]-rgb[indx-v4][c])-(rgb[indx+v4][1]-rgb[indx+v4][c]))); - rbhpfh[indx] = SQR(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+4][1]-rgb[indx+4][c])) + \ - fabs((rgb[indx-4][1]-rgb[indx-4][c])-(rgb[indx][1]-rgb[indx][c])) - \ + rbhpfh[indx] = SQR(fabs((rgb[indx][1]-rgb[indx][c])-(rgb[indx+4][1]-rgb[indx+4][c])) + + fabs((rgb[indx-4][1]-rgb[indx-4][c])-(rgb[indx][1]-rgb[indx][c])) - fabs((rgb[indx-4][1]-rgb[indx-4][c])-(rgb[indx+4][1]-rgb[indx+4][c]))); @@ -883,7 +883,7 @@ void RawImageSource::CA_correct_RT(double cared, double cablue) { p[2]=1/(eps+fabs(rgb[indx][1]-gshift[(rr-2*GRBdir[0][c])*TS+cc])); p[3]=1/(eps+fabs(rgb[indx][1]-gshift[(rr-2*GRBdir[0][c])*TS+cc-2*GRBdir[1][c]])); - grbdiffint = (p[0]*grbdiff[indx]+p[1]*grbdiff[indx-2*GRBdir[1][c]]+ \ + grbdiffint = (p[0]*grbdiff[indx]+p[1]*grbdiff[indx-2*GRBdir[1][c]]+ p[2]*grbdiff[(rr-2*GRBdir[0][c])*TS+cc]+p[3]*grbdiff[(rr-2*GRBdir[0][c])*TS+cc-2*GRBdir[1][c]])/(p[0]+p[1]+p[2]+p[3]); //now determine R/B at grid points using interpolated color differences and interpolated G value at grid point diff --git a/rtengine/amaze_demosaic_RT.cc b/rtengine/amaze_demosaic_RT.cc index f48c879c8..d3961e82f 100644 --- a/rtengine/amaze_demosaic_RT.cc +++ b/rtengine/amaze_demosaic_RT.cc @@ -70,7 +70,7 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) { //gaussian on 5x5 quincunx, sigma=1.2 static const float gaussodd[4] = {0.14659727707323927f, 0.103592713382435f, 0.0732036125103057f, 0.0365543548389495f}; //gaussian on 5x5, sigma=1.2 - static const float gaussgrad[6] = {0.07384411893421103f, 0.06207511968171489f, 0.0521818194747806f, \ + static const float gaussgrad[6] = {0.07384411893421103f, 0.06207511968171489f, 0.0521818194747806f, 0.03687419286733595f, 0.03099732204057846f, 0.018413194161458882f}; //gaussian on 3x3, sigma =0.7 static const float gauss1[3] = {0.3376688223162362f, 0.12171198028231786f, 0.04387081413862306f}; @@ -617,26 +617,26 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) { for (cc=6+(FC(rr,2)&1),indx=rr*TS+cc; cc4) nyquist[indx]=1; @@ -738,13 +738,13 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) { if (nyquist[indx]) { //local averages (over Nyquist pixels only) of G curvature squared - gvarh = epssq + (gquinc[0]*Dgrbh2[indx]+ \ - gquinc[1]*(Dgrbh2[indx-m1]+Dgrbh2[indx+p1]+Dgrbh2[indx-p1]+Dgrbh2[indx+m1])+ \ - gquinc[2]*(Dgrbh2[indx-v2]+Dgrbh2[indx-2]+Dgrbh2[indx+2]+Dgrbh2[indx+v2])+ \ + gvarh = epssq + (gquinc[0]*Dgrbh2[indx]+ + gquinc[1]*(Dgrbh2[indx-m1]+Dgrbh2[indx+p1]+Dgrbh2[indx-p1]+Dgrbh2[indx+m1])+ + gquinc[2]*(Dgrbh2[indx-v2]+Dgrbh2[indx-2]+Dgrbh2[indx+2]+Dgrbh2[indx+v2])+ gquinc[3]*(Dgrbh2[indx-m2]+Dgrbh2[indx+p2]+Dgrbh2[indx-p2]+Dgrbh2[indx+m2])); - gvarv = epssq + (gquinc[0]*Dgrbv2[indx]+ \ - gquinc[1]*(Dgrbv2[indx-m1]+Dgrbv2[indx+p1]+Dgrbv2[indx-p1]+Dgrbv2[indx+m1])+ \ - gquinc[2]*(Dgrbv2[indx-v2]+Dgrbv2[indx-2]+Dgrbv2[indx+2]+Dgrbv2[indx+v2])+ \ + gvarv = epssq + (gquinc[0]*Dgrbv2[indx]+ + gquinc[1]*(Dgrbv2[indx-m1]+Dgrbv2[indx+p1]+Dgrbv2[indx-p1]+Dgrbv2[indx+m1])+ + gquinc[2]*(Dgrbv2[indx-v2]+Dgrbv2[indx-2]+Dgrbv2[indx+2]+Dgrbv2[indx+v2])+ gquinc[3]*(Dgrbv2[indx-m2]+Dgrbv2[indx+p2]+Dgrbv2[indx-p2]+Dgrbv2[indx+m2])); //use the results as weights for refined G interpolation Dgrb[indx][0] = (hcd[indx]*gvarv + vcd[indx]*gvarh)/(gvarv+gvarh); @@ -763,11 +763,11 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) { for (cc=8+(FC(rr,2)&1),indx=rr*TS+cc; cc& acurvePoints, const std::vector& bcurvePoints, \ + void CurveFactory::complexsgnCurve (double saturation, bool satlimit, double satlimthresh, + const std::vector& acurvePoints, const std::vector& bcurvePoints, LUTf & aoutCurve, LUTf & boutCurve, LUTf & satCurve, int skip) { //colormult = chroma_scale for Lab manipulations @@ -239,16 +239,16 @@ namespace rtengine { //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, double hlcomprthresh, \ - double shcompr, double br, double contr, double gamma_, bool igamma_, \ - const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped, \ - LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, \ + void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, double hlcomprthresh, + double shcompr, double br, double contr, double gamma_, bool igamma_, + const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped, + LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTu & outBeforeCCurveHistogram, int skip) { //double def_mul = pow (2.0, defmul); - /*printf ("def_mul= %f ecomp= %f black= %f hlcompr= %f shcompr= %f br= %f contr= %f defmul= %f \ + /*printf ("def_mul= %f ecomp= %f black= %f hlcompr= %f shcompr= %f br= %f contr= %f defmul= %f gamma= %f, skip= %d \n",def_mul,ecomp,black,hlcompr,shcompr,br,contr,defmul,gamma_,skip);*/ // compute parameters of the gamma curve @@ -469,8 +469,8 @@ namespace rtengine { //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - void CurveFactory::complexLCurve (double br, double contr, const std::vector& curvePoints, \ - LUTu & histogram, LUTu & histogramCropped, LUTf & outCurve, \ + void CurveFactory::complexLCurve (double br, double contr, const std::vector& curvePoints, + LUTu & histogram, LUTu & histogramCropped, LUTf & outCurve, LUTu & outBeforeCCurveHistogram, int skip) { // curve without contrast diff --git a/rtengine/curves.h b/rtengine/curves.h index eedac21f8..2fc0be8a7 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -193,12 +193,12 @@ class CurveFactory { } public: - static void complexCurve (double ecomp, double black, double hlcompr, double hlcomprthresh, double shcompr, double br, double contr, \ - double gamma_, bool igamma_, const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped, \ + static void complexCurve (double ecomp, double black, double hlcompr, double hlcomprthresh, double shcompr, double br, double contr, + double gamma_, bool igamma_, const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped, LUTf & hlCurve, LUTf & shCurve,LUTf & outCurve, LUTu & outBeforeCCurveHistogram, int skip=1); - static void complexsgnCurve (double saturation, bool satlimit, double satlimthresh, const std::vector& acurvePoints, \ + static void complexsgnCurve (double saturation, bool satlimit, double satlimthresh, const std::vector& acurvePoints, const std::vector& bcurvePoints, LUTf & aoutCurve, LUTf & boutCurve, LUTf & satCurve, int skip=1); - static void complexLCurve (double br, double contr, const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped, \ + static void complexLCurve (double br, double contr, const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped, LUTf & outCurve, LUTu & outBeforeCCurveHistogram, int skip); static void RGBCurve (const std::vector& curvePoints, LUTf & outCurve, int skip); }; diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index a44b40d93..8dbf71322 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -133,15 +133,15 @@ void Crop::update (int todo) { if (colortest && cropw>115 && croph>115) for(int j=1;j<5;j++){ xref+=j*30;yref+=j*30; - if (settings->verbose) printf("before rgbProc RGB Xr%i Yr%i Skip=%d R=%f G=%f B=%f gamma=%f \n",xref,yref,skip, \ - baseCrop->r[(int)(xref/skip)][(int)(yref/skip)]/256,\ - baseCrop->g[(int)(xref/skip)][(int)(yref/skip)]/256, \ + if (settings->verbose) printf("before rgbProc RGB Xr%i Yr%i Skip=%d R=%f G=%f B=%f gamma=%f \n",xref,yref,skip, + baseCrop->r[(int)(xref/skip)][(int)(yref/skip)]/256, + baseCrop->g[(int)(xref/skip)][(int)(yref/skip)]/256, baseCrop->b[(int)(xref/skip)][(int)(yref/skip)]/256, parent->imgsrc->getGamma()); }*/ if (todo & M_RGBCURVE) - parent->ipf.rgbProc (baseCrop, laboCrop, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, cshmap, \ + parent->ipf.rgbProc (baseCrop, laboCrop, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, cshmap, params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve ); /*xref=000;yref=000; @@ -149,13 +149,13 @@ void Crop::update (int todo) { for(int j=1;j<5;j++){ xref+=j*30;yref+=j*30; if (settings->verbose) { - printf("after rgbProc RGB Xr%i Yr%i Skip=%d R=%f G=%f B=%f \n",xref,yref,skip, \ - baseCrop->r[(int)(xref/skip)][(int)(yref/skip)]/256,\ - baseCrop->g[(int)(xref/skip)][(int)(yref/skip)]/256, \ + printf("after rgbProc RGB Xr%i Yr%i Skip=%d R=%f G=%f B=%f \n",xref,yref,skip, + baseCrop->r[(int)(xref/skip)][(int)(yref/skip)]/256, + baseCrop->g[(int)(xref/skip)][(int)(yref/skip)]/256, baseCrop->b[(int)(xref/skip)][(int)(yref/skip)]/256); printf("after rgbProc Lab Xr%i Yr%i Skip=%d l=%f a=%f b=%f \n",xref,yref,skip, - laboCrop->L[(int)(xref/skip)][(int)(yref/skip)]/327, \ - laboCrop->a[(int)(xref/skip)][(int)(yref/skip)]/327, \ + laboCrop->L[(int)(xref/skip)][(int)(yref/skip)]/327, + laboCrop->a[(int)(xref/skip)][(int)(yref/skip)]/327, laboCrop->b[(int)(xref/skip)][(int)(yref/skip)]/327); } }*/ @@ -200,24 +200,24 @@ void Crop::update (int todo) { int glin = (CurveFactory::igamma2((float)cropImg->data[3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))+1]/255.0) * 255.0); int blin = (CurveFactory::igamma2((float)cropImg->data[3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))+2]/255.0) * 255.0); - printf("after lab2rgb RGB lab2 Xr%i Yr%i Skip=%d R=%d G=%d B=%d \n",xref,yref,skip, \ + printf("after lab2rgb RGB lab2 Xr%i Yr%i Skip=%d R=%d G=%d B=%d \n",xref,yref,skip, rlin,glin,blin); - //cropImg->data[3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))], \ - //cropImg->data[(3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))+1)], \ + //cropImg->data[3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))], + //cropImg->data[(3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))+1)], //cropImg->data[(3*((int)(xref/skip)*cropImg->width+(int)(yref/skip))+2)]); //printf("after lab2rgb Lab lab2 Xr%i Yr%i Skip=%d l=%f a=%f b=%f \n",xref,yref,skip, labnCrop->L[(int)(xref/skip)][(int)(yref/skip)]/327,labnCrop->a[(int)(xref/skip)][(int)(yref/skip)]/327,labnCrop->b[(int)(xref/skip)][(int)(yref/skip)]/327); - printf("after lab2rgb Lab Xr%i Yr%i Skip=%d l=%f a=%f b=%f \n",xref,yref,skip, \ - labnCrop->L[(int)(xref/skip)][(int)(yref/skip)]/327, \ - labnCrop->a[(int)(xref/skip)][(int)(yref/skip)]/327, \ - labnCrop->b[(int)(xref/skip)][(int)(yref/skip)]/327); + printf("after lab2rgb Lab Xr%i Yr%i Skip=%d l=%f a=%f b=%f \n",xref,yref,skip, + labnCrop->L[(int)(xref/skip)][(int)(yref/skip)]/327, + labnCrop->a[(int)(xref/skip)][(int)(yref/skip)]/327, + labnCrop->b[(int)(xref/skip)][(int)(yref/skip)]/327)q; } */ /* if (colortest && cropImg->height>115 && cropImg->width>115) {//for testing xref=000;yref=000; - printf("dcrop final R= %d G= %d B= %d \n", \ - cropImg->data[3*xref/(skip)*(cropImg->width+1)], \ - cropImg->data[3*xref/(skip)*(cropImg->width+1)+1], \ + printf("dcrop final R= %d G= %d B= %d \n", + cropImg->data[3*xref/(skip)*(cropImg->width+1)], + cropImg->data[3*xref/(skip)*(cropImg->width+1)+1], cropImg->data[3*xref/(skip)*(cropImg->width+1)+2]); } */ diff --git a/rtengine/dirpyrLab_denoise.cc b/rtengine/dirpyrLab_denoise.cc index 805df38dc..d25ea7e68 100644 --- a/rtengine/dirpyrLab_denoise.cc +++ b/rtengine/dirpyrLab_denoise.cc @@ -150,10 +150,10 @@ namespace rtengine { //set up NR weight functions //gamma correction for chroma in shadows - float nrwtl_norm = ((CurveFactory::gamma((double)65535.0/65535.0, gam, gamthresh, gamslope, 1.0, 0.0)) - \ + float nrwtl_norm = ((CurveFactory::gamma((double)65535.0/65535.0, gam, gamthresh, gamslope, 1.0, 0.0)) - (CurveFactory::gamma((double)75535.0/65535.0, gam, gamthresh, gamslope, 1.0, 0.0))); for (int i=0; i<65536; i++) { - nrwt_l[i] = ((CurveFactory::gamma((double)i/65535.0, gam, gamthresh, gamslope, 1.0, 0.0) - \ + nrwt_l[i] = ((CurveFactory::gamma((double)i/65535.0, gam, gamthresh, gamslope, 1.0, 0.0) - CurveFactory::gamma((double)(i+10000)/65535.0, gam, gamthresh, gamslope, 1.0, 0.0)) )/nrwtl_norm; //if (i % 100 ==0) printf("%d %f \n",i,nrwt_l[i]); } @@ -280,8 +280,8 @@ namespace rtengine { }; - void ImProcFunctions::dirpyr(LabImage* data_fine, LabImage* data_coarse, int level, \ - LUTf & rangefn_L, LUTf & rangefn_ab, int pitch, int scale, \ + void ImProcFunctions::dirpyr(LabImage* data_fine, LabImage* data_coarse, int level, + LUTf & rangefn_L, LUTf & rangefn_ab, int pitch, int scale, const int luma, const int chroma ) { @@ -361,7 +361,7 @@ namespace rtengine { //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - void ImProcFunctions::idirpyr(LabImage* data_coarse, LabImage* data_fine, int level, LUTf &rangefn_L, LUTf & nrwt_l, LUTf & nrwt_ab, \ + void ImProcFunctions::idirpyr(LabImage* data_coarse, LabImage* data_fine, int level, LUTf &rangefn_L, LUTf & nrwt_l, LUTf & nrwt_ab, int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/ ) { diff --git a/rtengine/fast_demo.cc b/rtengine/fast_demo.cc index ca4c15b29..2557f7dc5 100644 --- a/rtengine/fast_demo.cc +++ b/rtengine/fast_demo.cc @@ -225,10 +225,10 @@ void RawImageSource::fast_demosaic(int winx, int winy, int winw, int winh) { if (c==0) {//R site red[i][j] = rawData[i][j]; - blue[i][j] = green[i][j] - 0.25f*((green[i-1][j-1]+green[i-1][j+1]+green[i+1][j+1]+green[i+1][j-1]) - \ + blue[i][j] = green[i][j] - 0.25f*((green[i-1][j-1]+green[i-1][j+1]+green[i+1][j+1]+green[i+1][j-1]) - MIN(clip_pt,rawData[i-1][j-1]+rawData[i-1][j+1]+rawData[i+1][j+1]+rawData[i+1][j-1])); } else {//B site - red[i][j] = green[i][j] - 0.25f*((green[i-1][j-1]+green[i-1][j+1]+green[i+1][j+1]+green[i+1][j-1]) - \ + red[i][j] = green[i][j] - 0.25f*((green[i-1][j-1]+green[i-1][j+1]+green[i+1][j+1]+green[i+1][j-1]) - MIN(clip_pt,rawData[i-1][j-1]+rawData[i-1][j+1]+rawData[i+1][j+1]+rawData[i+1][j-1])); blue[i][j] = rawData[i][j]; } @@ -247,9 +247,9 @@ void RawImageSource::fast_demosaic(int winx, int winy, int winw, int winh) { for (int j=bord+1-(FC(i,2)&1); j < W-bord; j+=2) { //interpolate R and B colors at G sites - red[i][j] = green[i][j] - 0.25f*((green[i-1][j]-red[i-1][j])+(green[i+1][j]-red[i+1][j])+ \ + red[i][j] = green[i][j] - 0.25f*((green[i-1][j]-red[i-1][j])+(green[i+1][j]-red[i+1][j])+ (green[i][j-1]-red[i][j-1])+(green[i][j+1]-red[i][j+1])); - blue[i][j] = green[i][j] - 0.25f*((green[i-1][j]-blue[i-1][j])+(green[i+1][j]-blue[i+1][j])+ \ + blue[i][j] = green[i][j] - 0.25f*((green[i-1][j]-blue[i-1][j])+(green[i+1][j]-blue[i+1][j])+ (green[i][j-1]-blue[i][j-1])+(green[i][j+1]-blue[i][j+1])); } progress+=(double)0.33/(H); diff --git a/rtengine/gamutbdy.cc b/rtengine/gamutbdy.cc index 715bebcd9..c81e8e138 100644 --- a/rtengine/gamutbdy.cc +++ b/rtengine/gamutbdy.cc @@ -72,14 +72,14 @@ void ImProcFunctions::gamutmap(float &X, float &Y, float &Z, const double p[3][3 int c1=(c+1)%3; int c2=(c+2)%3; - lam[c][m] = (-(p[0][c1]*p[1][c]*((-12 + 3*u0 + 20*v0)*Y + 4*m*65535*v0*p[2][c2])) + \ - p[0][c]*p[1][c1]*((-12 + 3*u0 + 20*v0)*Y + 4*m*65535*v0*p[2][c2]) - \ - 4*v0*p[0][c1]*(Y - m*65535*p[1][c2])*p[2][c] + 4*v0*p[0][c]*(Y - m*65535*p[1][c2])*p[2][c1] - \ + lam[c][m] = (-(p[0][c1]*p[1][c]*((-12 + 3*u0 + 20*v0)*Y + 4*m*65535*v0*p[2][c2])) + + p[0][c]*p[1][c1]*((-12 + 3*u0 + 20*v0)*Y + 4*m*65535*v0*p[2][c2]) - + 4*v0*p[0][c1]*(Y - m*65535*p[1][c2])*p[2][c] + 4*v0*p[0][c]*(Y - m*65535*p[1][c2])*p[2][c1] - (4*m*65535*v0*p[0][c2] - 9*u0*Y)*(p[1][c1]*p[2][c] - p[1][c]*p[2][c1])); - lam[c][m] /= (3*u*Y*(p[0][c1]*p[1][c] - p[1][c1]*(p[0][c] + 3*p[2][c]) + 3*p[1][c]*p[2][c1]) + \ - 4*v*(p[0][c1]*(5*Y*p[1][c] + m*65535*p[1][c]*p[2][c2] + Y*p[2][c] - m*65535*p[1][c2]*p[2][c]) - \ - p[0][c]*(5*Y*p[1][c1] + m*65535*p[1][c1]*p[2][c2] + Y*p[2][c1] - m*65535*p[1][c2]*p[2][c1]) + \ + lam[c][m] /= (3*u*Y*(p[0][c1]*p[1][c] - p[1][c1]*(p[0][c] + 3*p[2][c]) + 3*p[1][c]*p[2][c1]) + + 4*v*(p[0][c1]*(5*Y*p[1][c] + m*65535*p[1][c]*p[2][c2] + Y*p[2][c] - m*65535*p[1][c2]*p[2][c]) - + p[0][c]*(5*Y*p[1][c1] + m*65535*p[1][c1]*p[2][c2] + Y*p[2][c1] - m*65535*p[1][c2]*p[2][c1]) + m*65535*p[0][c2]*(p[1][c1]*p[2][c] - p[1][c]*p[2][c1]))); if (lam[c][m]0) lam_min=lam[c][m]; diff --git a/rtengine/hilite_recon.cc b/rtengine/hilite_recon.cc index 72a78c091..d241256c9 100644 --- a/rtengine/hilite_recon.cc +++ b/rtengine/hilite_recon.cc @@ -282,7 +282,7 @@ void RawImageSource :: HLRecovery_inpaint (float** red, float** green, float** b //if one or more channels is highlight but none are blown, add to highlight accumulator - if ((red[i][j]>thresh[0] || green[i][j]>thresh[1] || blue[i][j]>thresh[2]) && \ + if ((red[i][j]>thresh[0] || green[i][j]>thresh[1] || blue[i][j]>thresh[2]) && (red[i][j]0.5) { - dirwt = invfn[65535*(SQR(rgb_blend[0]/Y-hilite_dir[dir*4+0][i1][j1]/Yhi) + \ - SQR(rgb_blend[1]/Y-hilite_dir[dir*4+1][i1][j1]/Yhi) + \ + dirwt = invfn[65535*(SQR(rgb_blend[0]/Y-hilite_dir[dir*4+0][i1][j1]/Yhi) + + SQR(rgb_blend[1]/Y-hilite_dir[dir*4+1][i1][j1]/Yhi) + SQR(rgb_blend[2]/Y-hilite_dir[dir*4+2][i1][j1]/Yhi))]; totwt += dirwt; clipfix[0] += dirwt*hilite_dir[dir*4+0][i1][j1]/(hilite_dir[dir*4+3][i1][j1]+0.00001); @@ -591,15 +591,15 @@ void RawImageSource :: HLRecovery_inpaint (float** red, float** green, float** b int notclipped[3] = {pixel[0]getDefGain(), params.toneCurve.clip, params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh); if (aeListener) - aeListener->autoExpChanged (params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, \ + aeListener->autoExpChanged (params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr,params.toneCurve.hlcomprthresh); } } @@ -226,10 +226,10 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) { if (hListener) oprevi->calcCroppedHistogram(params, scale, histCropped); // complexCurve also calculated pre-curves histogram dependend on crop - CurveFactory::complexCurve (params.toneCurve.expcomp, params.toneCurve.black/65535.0, \ - params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, \ - params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, \ - imgsrc->getGamma(), true, params.toneCurve.curve, \ + CurveFactory::complexCurve (params.toneCurve.expcomp, params.toneCurve.black/65535.0, + params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, + params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, + imgsrc->getGamma(), true, params.toneCurve.curve, vhist16, histCropped, hltonecurve, shtonecurve, tonecurve, histToneCurve, scale==1 ? 1 : 1); CurveFactory::RGBCurve (params.rgbCurves.rcurve, rCurve, scale==1 ? 1 : 1); @@ -238,7 +238,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) { // if it's just crop we just need the histogram, no image updates if ( todo!=CROP ) { - ipf.rgbProc (oprevi, oprevl, hltonecurve, shtonecurve, tonecurve, shmap, params.toneCurve.saturation, \ + ipf.rgbProc (oprevi, oprevl, hltonecurve, shtonecurve, tonecurve, shmap, params.toneCurve.saturation, rCurve, gCurve, bCurve); } @@ -265,7 +265,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) { } if (todo & M_LUMACURVE) { - CurveFactory::complexsgnCurve (params.labCurve.saturation, params.labCurve.enable_saturationlimiter, params.labCurve.saturationlimit, \ + CurveFactory::complexsgnCurve (params.labCurve.saturation, params.labCurve.enable_saturationlimiter, params.labCurve.saturationlimit, params.labCurve.acurve, params.labCurve.bcurve, chroma_acurve, chroma_bcurve, satcurve, scale==1 ? 1 : 16); } diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 6d9576d16..03107b70e 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -207,7 +207,7 @@ void ImProcFunctions::firstAnalysis (Imagefloat* original, const ProcParams* par } // Process RGB image and convert to LAB space -void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, \ +void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, SHMap* shmap, int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve) { int h_th, s_th; @@ -239,8 +239,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltone }; - bool mixchannels = (params->chmixer.red[0]!=100 || params->chmixer.red[1]!=0 || params->chmixer.red[2]!=0 || \ - params->chmixer.green[0]!=0 || params->chmixer.green[1]!=100 || params->chmixer.green[2]!=0 || \ + bool mixchannels = (params->chmixer.red[0]!=100 || params->chmixer.red[1]!=0 || params->chmixer.red[2]!=0 || + params->chmixer.green[0]!=0 || params->chmixer.green[1]!=100 || params->chmixer.green[2]!=0 || params->chmixer.blue[0]!=0 || params->chmixer.blue[1]!=0 || params->chmixer.blue[2]!=100); int tW = working->width; @@ -319,8 +319,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltone //TODO: proper treatment of out-of-gamut colors //float tonefactor = hltonecurve[(0.299f*r+0.587f*g+0.114f*b)]; - float tonefactor=((r1.0f) diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index e2d12e039..36e7b5985 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -385,14 +385,14 @@ void ImProcFunctions::transformSep (Imagefloat* original, Imagefloat* transforme // auxiliary variables for vertical perspective correction double vpdeg = params->perspective.vertical / 100.0 * 45.0; double vpalpha = (90.0 - vpdeg) / 180.0 * RT_PI; - double vpteta = fabs(vpalpha-RT_PI/2)<1e-3 ? 0.0 : acos ((vpdeg>0 ? 1.0 : -1.0) * sqrt((-SQR(oW*tan(vpalpha)) + (vpdeg>0 ? 1.0 : -1.0) * \ + double vpteta = fabs(vpalpha-RT_PI/2)<1e-3 ? 0.0 : acos ((vpdeg>0 ? 1.0 : -1.0) * sqrt((-SQR(oW*tan(vpalpha)) + (vpdeg>0 ? 1.0 : -1.0) * oW*tan(vpalpha)*sqrt(SQR(4*maxRadius)+SQR(oW*tan(vpalpha))))/(SQR(maxRadius)*8))); double vpcospt = (vpdeg>=0 ? 1.0 : -1.0) * cos (vpteta), vptanpt = tan (vpteta); // auxiliary variables for horizontal perspective correction double hpdeg = params->perspective.horizontal / 100.0 * 45.0; double hpalpha = (90.0 - hpdeg) / 180.0 * RT_PI; - double hpteta = fabs(hpalpha-RT_PI/2)<1e-3 ? 0.0 : acos ((hpdeg>0 ? 1.0 : -1.0) * sqrt((-SQR(oH*tan(hpalpha)) + (hpdeg>0 ? 1.0 : -1.0) * \ + double hpteta = fabs(hpalpha-RT_PI/2)<1e-3 ? 0.0 : acos ((hpdeg>0 ? 1.0 : -1.0) * sqrt((-SQR(oH*tan(hpalpha)) + (hpdeg>0 ? 1.0 : -1.0) * oH*tan(hpalpha)*sqrt(SQR(4*maxRadius)+SQR(oH*tan(hpalpha))))/(SQR(maxRadius)*8))); double hpcospt = (hpdeg>=0 ? 1.0 : -1.0) * cos (hpteta), hptanpt = tan (hpteta); diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 9b96306b4..5413c928e 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -503,8 +503,8 @@ int RawImageSource::findHotDeadPixel( PixelsMap &bpMap, float thresh) for (int j=0; jW-3) {jnext=j-2;} else {jnext=j+2;} - med3x3(rawData[iprev][jprev],rawData[iprev][j],rawData[iprev][jnext], \ - rawData[i][jprev],rawData[i][j],rawData[i][jnext], \ + med3x3(rawData[iprev][jprev],rawData[iprev][j],rawData[iprev][jnext], + rawData[i][jprev],rawData[i][j],rawData[i][jnext], rawData[inext][jprev],rawData[inext][j],rawData[inext][jnext],cfablur[i*W+j]); } } @@ -1308,10 +1308,10 @@ void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH, for (int j=0; jW-3) {jnext=j-2;} else {jnext=j+2;} - //med3x3(riFlatFile->data[iprev][jprev], riFlatFile->data[iprev][j], riFlatFile->data[iprev][jnext], \ - riFlatFile->data[i][jprev], riFlatFile->data[i][j], riFlatFile->data[i][jnext], \ - riFlatFile->data[inext][jprev], riFlatFile->data[inext][j], riFlatFile->data[inext][jnext], cfatmp[i*W+j]); - med5(riFlatFile->data[iprev][j], riFlatFile->data[i][jprev],riFlatFile->data[i][j], \ + //med3x3(riFlatFile->data[iprev][jprev], riFlatFile->data[iprev][j], riFlatFile->data[iprev][jnext], + // riFlatFile->data[i][jprev], riFlatFile->data[i][j], riFlatFile->data[i][jnext], + // riFlatFile->data[inext][jprev], riFlatFile->data[inext][j], riFlatFile->data[inext][jnext], cfatmp[i*W+j]); + med5(riFlatFile->data[iprev][j], riFlatFile->data[i][jprev],riFlatFile->data[i][j], riFlatFile->data[i][jnext], riFlatFile->data[inext][j],median); if (riFlatFile->data[i][j]>hotdeadthresh*median || median>hotdeadthresh*riFlatFile->data[i][j]) { cfatmp[i*W+j] = median; @@ -2086,7 +2086,7 @@ void RawImageSource::HLRecovery_Luminance (float* rin, float* gin, float* bin, f //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void RawImageSource::HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, \ +void RawImageSource::HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double xyz_cam[3][3], double cam_xyz[3][3]) { //static bool crTableReady = false; @@ -2500,8 +2500,8 @@ void RawImageSource::transformPosition (int x, int y, int tran, int& ttx, int& t //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% void RawImageSource::inverse33 (double (*rgb_cam)[3], double (*cam_rgb)[3]) { - double nom = (rgb_cam[0][2]*rgb_cam[1][1]*rgb_cam[2][0] - rgb_cam[0][1]*rgb_cam[1][2]*rgb_cam[2][0] - \ - rgb_cam[0][2]*rgb_cam[1][0]*rgb_cam[2][1] + rgb_cam[0][0]*rgb_cam[1][2]*rgb_cam[2][1] + \ + double nom = (rgb_cam[0][2]*rgb_cam[1][1]*rgb_cam[2][0] - rgb_cam[0][1]*rgb_cam[1][2]*rgb_cam[2][0] - + rgb_cam[0][2]*rgb_cam[1][0]*rgb_cam[2][1] + rgb_cam[0][0]*rgb_cam[1][2]*rgb_cam[2][1] + rgb_cam[0][1]*rgb_cam[1][0]*rgb_cam[2][2] - rgb_cam[0][0]*rgb_cam[1][1]*rgb_cam[2][2] ); cam_rgb[0][0] = (rgb_cam[1][2]*rgb_cam[2][1]-rgb_cam[1][1]*rgb_cam[2][2]) / nom; cam_rgb[0][1] = -(rgb_cam[0][2]*rgb_cam[2][1]-rgb_cam[0][1]*rgb_cam[2][2]) / nom; diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 832d09420..7cbd553a4 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -189,7 +189,7 @@ namespace rtengine { public: /** With this member function the staged processor notifies the listener that the detailed crop image has been updated. * @param img is a pointer to the detailed crop image */ - virtual void setDetailedCrop (IImage8* img, IImage8* imgtrue, procparams::ColorManagementParams cmp, \ + virtual void setDetailedCrop (IImage8* img, IImage8* imgtrue, procparams::ColorManagementParams cmp, procparams::CropParams cp, int cx, int cy, int cw, int ch, int skip) {} virtual bool getWindow (int& cx, int& cy, int& cw, int& ch, int& skip) { return false; } }; diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 4a1554a19..68e21c086 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -741,10 +741,10 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei LUTf bCurve (65536); LUTu dummy; - //CurveFactory::complexCurve (expcomp, black/65535.0, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, \ - params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, \ - gamma, true, params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16); - CurveFactory::complexCurve (expcomp, black/65535.0, hlcompr, params.toneCurve.hlcomprthresh, \ + //CurveFactory::complexCurve (expcomp, black/65535.0, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, + // params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, + // gamma, true, params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16); + CurveFactory::complexCurve (expcomp, black/65535.0, hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.shcompr, bright, contr, gamma, true, params.toneCurve.curve, hist16, dummy, curve1, curve2, curve, dummy, 16); @@ -770,7 +770,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, hist16, hist16, curve, dummy, 16); - CurveFactory::complexsgnCurve (params.labCurve.saturation, params.labCurve.enable_saturationlimiter, params.labCurve.saturationlimit, \ + CurveFactory::complexsgnCurve (params.labCurve.saturation, params.labCurve.enable_saturationlimiter, params.labCurve.saturationlimit, params.labCurve.acurve, params.labCurve.bcurve, curve1, curve2, satcurve, 16); ipf.luminanceCurve (labView, labView, curve); ipf.chrominanceCurve (labView, labView, curve1, curve2, satcurve); @@ -852,7 +852,7 @@ void Thumbnail::applyAutoExp (procparams::ProcParams& params) { if (params.toneCurve.autoexp && aeHistogram) { ImProcFunctions ipf (¶ms, false); - ipf.getAutoExp (aeHistogram, aeHistCompression, log(defGain)/log(2.0), params.toneCurve.clip, params.toneCurve.expcomp, \ + ipf.getAutoExp (aeHistogram, aeHistCompression, log(defGain)/log(2.0), params.toneCurve.clip, params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh); } } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index d896649b9..407585e94 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -200,7 +200,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, hist16, hist16, curve, dummy, 1); - CurveFactory::complexsgnCurve (params.labCurve.saturation, params.labCurve.enable_saturationlimiter, params.labCurve.saturationlimit, \ + CurveFactory::complexsgnCurve (params.labCurve.saturation, params.labCurve.enable_saturationlimiter, params.labCurve.saturationlimit, params.labCurve.acurve, params.labCurve.bcurve, curve1, curve2, satcurve, 1); ipf.luminanceCurve (labView, labView, curve); ipf.chrominanceCurve (labView, labView, curve1, curve2, satcurve); diff --git a/rtgui/crophandler.cc b/rtgui/crophandler.cc index 5603a51cb..2d6fd79ce 100644 --- a/rtgui/crophandler.cc +++ b/rtgui/crophandler.cc @@ -232,7 +232,7 @@ int createpixbufs (void* data) { return 0; } -void CropHandler::setDetailedCrop (IImage8* im, IImage8* imtrue, rtengine::procparams::ColorManagementParams cmp, \ +void CropHandler::setDetailedCrop (IImage8* im, IImage8* imtrue, rtengine::procparams::ColorManagementParams cmp, rtengine::procparams::CropParams cp, int ax, int ay, int aw, int ah, int askip) { if (!enabled) diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index 50faa6f28..af9565dd0 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -91,7 +91,7 @@ class CropHandler : public rtengine::DetailedCropListener, public rtengine::Size bool getEnabled (); // DetailedCropListener interface - void setDetailedCrop (rtengine::IImage8* im, rtengine::IImage8* imworking,rtengine::procparams::ColorManagementParams cmp, \ + void setDetailedCrop (rtengine::IImage8* im, rtengine::IImage8* imworking,rtengine::procparams::ColorManagementParams cmp, rtengine::procparams::CropParams cp, int cx, int cy, int cw, int ch, int skip); bool getWindow (int& cwx, int& cwy, int& cww, int& cwh, int& cskip); // SizeListener interface diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index b15e9e4f3..45626c118 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -787,16 +787,16 @@ bool FileBrowser::checkFilter (ThumbBrowserEntryBase* entryb) { // true -> entry FileBrowserEntry* entry = (FileBrowserEntry*)entryb; // return false if basic filter settings are not satisfied - if ((filter.showRanked[entry->thumbnail->getRank()]==false ) || \ - (filter.showCLabeled[entry->thumbnail->getColorLabel()]==false ) || \ + if ((filter.showRanked[entry->thumbnail->getRank()]==false ) || + (filter.showCLabeled[entry->thumbnail->getColorLabel()]==false ) || - ((entry->thumbnail->hasProcParams() && filter.showEdited[0]) && !filter.showEdited[1]) || \ - ((!entry->thumbnail->hasProcParams() && filter.showEdited[1])&& !filter.showEdited[0]) || \ + ((entry->thumbnail->hasProcParams() && filter.showEdited[0]) && !filter.showEdited[1]) || + ((!entry->thumbnail->hasProcParams() && filter.showEdited[1])&& !filter.showEdited[0]) || - ((entry->thumbnail->isRecentlySaved() && filter.showRecentlySaved[0]) && !filter.showRecentlySaved[1]) || \ - ((!entry->thumbnail->isRecentlySaved() && filter.showRecentlySaved[1]) && !filter.showRecentlySaved[0]) || \ + ((entry->thumbnail->isRecentlySaved() && filter.showRecentlySaved[0]) && !filter.showRecentlySaved[1]) || + ((!entry->thumbnail->isRecentlySaved() && filter.showRecentlySaved[1]) && !filter.showRecentlySaved[0]) || - (entry->thumbnail->getStage()==1 && !filter.showTrash) || \ + (entry->thumbnail->getStage()==1 && !filter.showTrash) || (entry->thumbnail->getStage()==0 && !filter.showNotTrash)) return false; diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index a92d54e85..d9d58215f 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -1152,25 +1152,25 @@ BrowserFilter FileCatalog::getFilter () { * filter is setup in 2 steps * Step 1: handle individual filters */ - filter.showRanked[0] = bFilterClear->get_active() || bUnRanked->get_active () || bTrash->get_active () || \ + filter.showRanked[0] = bFilterClear->get_active() || bUnRanked->get_active () || bTrash->get_active () || anyCLabelFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive; - filter.showCLabeled[0] = bFilterClear->get_active() || bUnCLabeled->get_active () || bTrash->get_active () || \ + filter.showCLabeled[0] = bFilterClear->get_active() || bUnCLabeled->get_active () || bTrash->get_active () || anyRankFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive; for (int i=1; i<=5; i++){ - filter.showRanked[i] = bFilterClear->get_active() || bRank[i-1]->get_active () || bTrash->get_active () || \ + filter.showRanked[i] = bFilterClear->get_active() || bRank[i-1]->get_active () || bTrash->get_active () || anyCLabelFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive; - filter.showCLabeled[i] = bFilterClear->get_active() || bCLabel[i-1]->get_active () || bTrash->get_active () || \ + filter.showCLabeled[i] = bFilterClear->get_active() || bCLabel[i-1]->get_active () || bTrash->get_active () || anyRankFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive; } for (int i=0; i<2; i++){ - filter.showEdited[i] = bFilterClear->get_active() || bEdited[i]->get_active () || bTrash->get_active () || \ + filter.showEdited[i] = bFilterClear->get_active() || bEdited[i]->get_active () || bTrash->get_active () || anyRankFilterActive || anyCLabelFilterActive || anyRecentlySavedFilterActive; - filter.showRecentlySaved[i] = bFilterClear->get_active() || bRecentlySaved[i]->get_active () || bTrash->get_active () || \ + filter.showRecentlySaved[i] = bFilterClear->get_active() || bRecentlySaved[i]->get_active () || bTrash->get_active () || anyRankFilterActive || anyCLabelFilterActive || anyEditedFilterActive; } if( options.rtSettings.verbose ){ @@ -1188,11 +1188,11 @@ BrowserFilter FileCatalog::getFilter () { * if no filters in a group are active, filter.show for each member of that group will be set to true * otherwise they are set based on UI input */ - if ((anyRankFilterActive && anyCLabelFilterActive ) || \ - (anyRankFilterActive && anyEditedFilterActive ) || \ - (anyRankFilterActive && anyRecentlySavedFilterActive ) || \ - (anyCLabelFilterActive && anyEditedFilterActive ) || \ - (anyCLabelFilterActive && anyRecentlySavedFilterActive ) || \ + if ((anyRankFilterActive && anyCLabelFilterActive ) || + (anyRankFilterActive && anyEditedFilterActive ) || + (anyRankFilterActive && anyRecentlySavedFilterActive ) || + (anyCLabelFilterActive && anyEditedFilterActive ) || + (anyCLabelFilterActive && anyRecentlySavedFilterActive ) || (anyEditedFilterActive && anyRecentlySavedFilterActive)){ filter.multiselect = true;