Show raw values in navigator when demosaic 'none' is used

This commit is contained in:
heckflosse
2017-02-05 16:06:57 +01:00
parent bd492e0ece
commit 812bf40d17
5 changed files with 33 additions and 1 deletions

View File

@@ -160,6 +160,7 @@ public:
{ {
return this; return this;
} }
virtual void getRawValues(int x, int y, int &R, int &G, int &B) = 0;
}; };
} }
#endif #endif

View File

@@ -5460,6 +5460,21 @@ void RawImageSource::init ()
} }
} }
void RawImageSource::getRawValues(int x, int y, int &R, int &G, int &B)
{
int xnew = x + border;
int ynew = y + border;
int c = FC(ynew,xnew);
int val = rawData[ynew][xnew] / scale_mul[c];
if(c == 0) {
R = val; G = 0; B = 0;
} else if(c == 2) {
R = 0; G = 0; B = val;
} else {
R = 0; G = val; B = 0;
}
}
void RawImageSource::cleanup () void RawImageSource::cleanup ()
{ {
delete phaseOneIccCurve; delete phaseOneIccCurve;

View File

@@ -264,6 +264,7 @@ protected:
void pixelshift(int winx, int winy, int winw, int winh, const RAWParams::BayerSensor &bayerParams, unsigned int frame, const std::string &model, float rawWpCorrection); void pixelshift(int winx, int winy, int winw, int winh, const RAWParams::BayerSensor &bayerParams, unsigned int frame, const std::string &model, float rawWpCorrection);
void hflip (Imagefloat* im); void hflip (Imagefloat* im);
void vflip (Imagefloat* im); void vflip (Imagefloat* im);
void getRawValues(int x, int y, int &R, int &G, int &B);
}; };
} }

View File

@@ -97,6 +97,9 @@ public:
} }
void setCurrentFrame(unsigned int frameNum) {} void setCurrentFrame(unsigned int frameNum) {}
void getRawValues(int x, int y, int &R, int &G, int &B) { R = G = B = 0;}
}; };
} }
#endif #endif

View File

@@ -1035,9 +1035,21 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
int imheight = cropHandler.cropPixbuf->get_height(); int imheight = cropHandler.cropPixbuf->get_height();
guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3; guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3;
int rval = pix[0];
int gval = pix[1];
int bval = pix[2];
if (vx < imwidth && vy < imheight) { if (vx < imwidth && vy < imheight) {
rtengine::StagedImageProcessor* ipc = iarea->getImProcCoordinator();
if(ipc) {
procparams::ProcParams params;
ipc->getParams(&params);
if(params.raw.bayersensor.method == RAWParams::BayerSensor::methodstring[RAWParams::BayerSensor::none]) {
ImageSource *isrc = static_cast<ImageSource*>(ipc->getInitialImage());
isrc->getRawValues(mx, my, rval, gval, bval);
}
}
// pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); // pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);
pmlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); pmlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, rval, gval, bval);
if (pmhlistener) if (pmhlistener)
// pmhlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]); // pmhlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);