Clipping indicator with grayscale coding

This commit is contained in:
Oliver Duis 2011-04-08 23:13:05 +02:00
parent 566da11ddc
commit 3c736fccf2

View File

@ -660,6 +660,9 @@ void CropWindow::expose (Cairo::RefPtr<Cairo::Context> cr) {
int pixRowStride = tmp->get_rowstride (); int pixRowStride = tmp->get_rowstride ();
int pixWSRowStride = cropHandler.cropPixbuftrue->get_rowstride (); int pixWSRowStride = cropHandler.cropPixbuftrue->get_rowstride ();
const float ShawdowFac = 64 / (options.shadowThreshold+1);
const float HighlightFac = 64 / (256-options.highlightThreshold);
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp for #pragma omp for
#endif #endif
@ -667,16 +670,47 @@ void CropWindow::expose (Cairo::RefPtr<Cairo::Context> cr) {
guint8* curr = pix + i*pixRowStride; guint8* curr = pix + i*pixRowStride;
guint8* currWS = pixWrkSpace + i*pixWSRowStride; guint8* currWS = pixWrkSpace + i*pixWSRowStride;
int delta; bool changed;
for (int j=0; j<tmp->get_width(); j++) { for (int j=0; j<tmp->get_width(); j++) {
// we must compare clippings in working space, since the cropPixbuf is in sRGB, with mon profile // we must compare clippings in working space, since the cropPixbuf is in sRGB, with mon profile
if (showch) {
delta=0; changed=false;
if (currWS[0]>=options.highlightThreshold) { delta += 255-currWS[0]; changed=true; }
if (currWS[1]>=options.highlightThreshold) { delta += 255-currWS[1]; changed=true; }
if (currWS[2]>=options.highlightThreshold) { delta += 255-currWS[2]; changed=true; }
if (changed) {
delta *= HighlightFac;
curr[0]=delta; curr[1]=delta; curr[2]=delta;
}
}
if (showcs) {
delta=0; changed=false;
if (currWS[0]<=options.shadowThreshold) { delta += currWS[0]; changed=true; }
if (currWS[1]<=options.shadowThreshold) { delta += currWS[1]; changed=true; }
if (currWS[2]<=options.shadowThreshold) { delta += currWS[2]; changed=true; }
if (changed) {
delta = 255 - (delta * ShawdowFac);
curr[0]=delta; curr[1]=delta; curr[2]=delta;
}
}
/*
if (showch && (currWS[0]>=options.highlightThreshold || currWS[1]>=options.highlightThreshold || currWS[2]>=options.highlightThreshold)) if (showch && (currWS[0]>=options.highlightThreshold || currWS[1]>=options.highlightThreshold || currWS[2]>=options.highlightThreshold))
curr[0] = curr[1] = curr[2] = 0; curr[0] = curr[1] = curr[2] = 0;
else if (showcs && (currWS[0]<=options.shadowThreshold || currWS[1]<=options.shadowThreshold || currWS[2]<=options.shadowThreshold)) else if (showcs && (currWS[0]<=options.shadowThreshold || currWS[1]<=options.shadowThreshold || currWS[2]<=options.shadowThreshold))
curr[0] = curr[1] = curr[2] = 255; curr[0] = curr[1] = curr[2] = 255;
/*if (showch && ((0.299*curr[0]+0.587*curr[1]+0.114*curr[2])>=options.highlightThreshold)) //if (showch && ((0.299*curr[0]+0.587*curr[1]+0.114*curr[2])>=options.highlightThreshold))
curr[0] = curr[1] = curr[2] = 0; // curr[0] = curr[1] = curr[2] = 0;
else if (showcs && ((0.299*curr[0]+0.587*curr[1]+0.114*curr[2])<=options.shadowThreshold)) //else if (showcs && ((0.299*curr[0]+0.587*curr[1]+0.114*curr[2])<=options.shadowThreshold))
curr[0] = curr[1] = curr[2] = 255;*/ // curr[0] = curr[1] = curr[2] = 255;
*/
curr+=3; currWS+=3; curr+=3; currWS+=3;
} }