From 8d6742de09b0ddfb3d9d22e329385fa27c4fc38f Mon Sep 17 00:00:00 2001 From: ffsup2 Date: Sat, 6 Nov 2010 23:52:25 +0100 Subject: [PATCH] Fix for raws without filters (no Bayer coded) --- rtengine/rawimagesource.cc | 43 ++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index d07d9ffc5..6ab571121 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -1084,15 +1084,40 @@ void RawImageSource::copyOriginalPixels(RawImage *src, RawImage *riDark ) void RawImageSource::scaleColors(int winx,int winy,int winw,int winh) { // scale image colors - for (int row = winy; row < winy+winh; row ++){ - for (int col = winx; col < winx+winw; col++) { - int val = rawData[row][col]; - if (!val) - continue; - int c = FC(row, col); - val -= cblack[c]; - val *= scale_mul[c]; - rawData[row][col] = CLIP(val); + if( ri->filters ){ + for (int row = winy; row < winy+winh; row ++){ + for (int col = winx; col < winx+winw; col++) { + int val = rawData[row][col]; + if (!val) + continue; + int c = FC(row, col); + val -= cblack[c]; + val *= scale_mul[c]; + rawData[row][col] = CLIP(val); + } + } + }else{ + for (int row = winy; row < winy+winh; row ++){ + for (int col = winx; col < winx+winw; col++) { + int val = rawData[row][3*col+0]; + if (val){ + val -= cblack[0]; + val *= scale_mul[0]; + rawData[row][3*col+0] = CLIP(val); + } + val = rawData[row][3*col+1]; + if (val){ + val -= cblack[1]; + val *= scale_mul[1]; + rawData[row][3*col+1] = CLIP(val); + } + val = rawData[row][3*col+2]; + if (val){ + val -= cblack[2]; + val *= scale_mul[2]; + rawData[row][3*col+2] = CLIP(val); + } + } } }