Clipping indicator with grayscale coding
This commit is contained in:
parent
566da11ddc
commit
3c736fccf2
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user