diff --git a/astylert.bat b/astylert.bat new file mode 100644 index 000000000..1c918135f --- /dev/null +++ b/astylert.bat @@ -0,0 +1 @@ +astyle --options=rawtherapee.astylerc -n %1 \ No newline at end of file diff --git a/rtengine/boxblur.h b/rtengine/boxblur.h index 9fe828131..f1a444b2d 100644 --- a/rtengine/boxblur.h +++ b/rtengine/boxblur.h @@ -129,13 +129,14 @@ template void boxblur (T** src, A** dst, int radx, int rady, i } -template void boxblurnew (T** src, A** dst, T* buffer, int radx, int rady, int W, int H) +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 @@ -152,24 +153,27 @@ template void boxblurnew (T** src, A** dst, T* buffer, int rad #endif for (int row = 0; row < H; row++) { - int len = radx + 1; - temp[row * W + 0] = (float)src[row][0] / len; + float len = radx + 1; + float tempval = (float)src[row][0]; for (int j = 1; j <= radx; j++) { - temp[row * W + 0] += (float)src[row][j] / len; + tempval += (float)src[row][j]; } + tempval /= len; + temp[row * W + 0] = tempval; + for (int col = 1; col <= radx; col++) { - temp[row * W + col] = (temp[row * W + col - 1] * len + (float)src[row][col + radx]) / (len + 1); + 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] = temp[row * W + col - 1] + ((float)(src[row][col + radx] - src[row][col - radx - 1])) / len; + 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] = (temp[row * W + col - 1] * len - src[row][col - radx - 1]) / (len - 1); + temp[row * W + col] = tempval = (tempval * len - src[row][col - radx - 1]) / (len - 1); len --; } } @@ -191,36 +195,52 @@ template void boxblurnew (T** src, A** dst, T* buffer, int rad #pragma omp for #endif - for (int col = 0; col < W-numCols+1; col+=8) { - int len = rady + 1; - for(int k=0;k void gaussianBlur(T** src, T** dst, const int W, const int H, // Compute ideal averaging filter width and number of iterations int n = 1; double wIdeal = sqrt((12*sigma*sigma)+1); - while(wIdeal >= (W/2-1) || wIdeal >= (H/2-1)) { + while(wIdeal > W || wIdeal > H) { n++; wIdeal = sqrt((12*sigma*sigma/n)+1); } @@ -789,13 +789,11 @@ template void gaussianBlur(T** src, T** dst, const int W, const int H, int sizes[n]; for(int i=0; iset_tooltip_markup (M("TP_RETINEX_HIGHLIGHT_TOOLTIP")); vart = Gtk::manage (new Adjuster (M("TP_RETINEX_VARIANCE"), 50, 500, 1, 200)); vart->set_tooltip_markup (M("TP_RETINEX_VARIANCE_TOOLTIP"));