copy constructor for labimage, further cleanup for locallab periphery
This commit is contained in:
parent
f02c4e1fd1
commit
3bab9ec688
@ -856,10 +856,8 @@ void Crop::update(int todo)
|
|||||||
labnCrop->CopyFrom(laboCrop);
|
labnCrop->CopyFrom(laboCrop);
|
||||||
|
|
||||||
if (params.locallab.enabled && !params.locallab.spots.empty()) {
|
if (params.locallab.enabled && !params.locallab.spots.empty()) {
|
||||||
const std::unique_ptr<LabImage> reservCrop(new LabImage(laboCrop->W, laboCrop->H));
|
const std::unique_ptr<LabImage> reservCrop(new LabImage(*laboCrop, true));
|
||||||
reservCrop->CopyFrom(laboCrop);
|
const std::unique_ptr<LabImage> lastorigCrop(new LabImage(*laboCrop, true));
|
||||||
const std::unique_ptr<LabImage> lastorigCrop(new LabImage(laboCrop->W, laboCrop->H));
|
|
||||||
lastorigCrop->CopyFrom(laboCrop);
|
|
||||||
auto& lllocalcurve2 = parent->lllocalcurve;
|
auto& lllocalcurve2 = parent->lllocalcurve;
|
||||||
auto& cllocalcurve2 = parent->cllocalcurve;
|
auto& cllocalcurve2 = parent->cllocalcurve;
|
||||||
auto& lclocalcurve2 = parent->lclocalcurve;
|
auto& lclocalcurve2 = parent->lclocalcurve;
|
||||||
@ -1235,19 +1233,17 @@ void Crop::update(int todo)
|
|||||||
|
|
||||||
|
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
provradius = new LabImage(labnCrop->W, labnCrop->H);
|
provradius = new LabImage(*labnCrop, true);
|
||||||
provradius->CopyFrom(labnCrop);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
||||||
|
|
||||||
unshar = new LabImage(labnCrop->W, labnCrop->H);
|
|
||||||
provis = params.wavelet.CLmethod;
|
provis = params.wavelet.CLmethod;
|
||||||
params.wavelet.CLmethod = "all";
|
params.wavelet.CLmethod = "all";
|
||||||
parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip);
|
parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip);
|
||||||
unshar->CopyFrom(labnCrop);
|
unshar = new LabImage(*labnCrop, true);
|
||||||
|
|
||||||
params.wavelet.CLmethod = provis;
|
params.wavelet.CLmethod = provis;
|
||||||
|
|
||||||
|
@ -1040,10 +1040,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
* 2017 2018 Jacques Desmis <jdesmis@gmail.com>
|
* 2017 2018 Jacques Desmis <jdesmis@gmail.com>
|
||||||
* 2019 Pierre Cabrera <pierre.cab@gmail.com>
|
* 2019 Pierre Cabrera <pierre.cab@gmail.com>
|
||||||
*/
|
*/
|
||||||
const std::unique_ptr<LabImage> reserv(new LabImage(oprevl->W, oprevl->H));
|
const std::unique_ptr<LabImage> reserv(new LabImage(*oprevl, true));
|
||||||
reserv->CopyFrom(oprevl);
|
const std::unique_ptr<LabImage> lastorigimp(new LabImage(*oprevl, true));
|
||||||
const std::unique_ptr<LabImage> lastorigimp(new LabImage(oprevl->W, oprevl->H));
|
|
||||||
lastorigimp->CopyFrom(oprevl);
|
|
||||||
float **shbuffer = nullptr;
|
float **shbuffer = nullptr;
|
||||||
int sca = 1;
|
int sca = 1;
|
||||||
double huere, chromare, lumare, huerefblu, chromarefblu, lumarefblu, sobelre;
|
double huere, chromare, lumare, huerefblu, chromarefblu, lumarefblu, sobelre;
|
||||||
@ -1287,20 +1285,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
provradius = new LabImage(pW, pH);
|
provradius = new LabImage(*nprevl, true);
|
||||||
provradius->CopyFrom(nprevl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
||||||
unshar = new LabImage(pW, pH);
|
|
||||||
provis = params->wavelet.CLmethod;
|
provis = params->wavelet.CLmethod;
|
||||||
params->wavelet.CLmethod = "all";
|
params->wavelet.CLmethod = "all";
|
||||||
ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale);
|
ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale);
|
||||||
|
unshar = new LabImage(*nprevl, true);
|
||||||
unshar->CopyFrom(nprevl);
|
|
||||||
|
|
||||||
params->wavelet.CLmethod = provis;
|
params->wavelet.CLmethod = provis;
|
||||||
|
|
||||||
|
@ -32,12 +32,18 @@ LabImage::LabImage (int w, int h, bool initZero, bool multiThread) : W(w), H(h)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LabImage::LabImage (const LabImage& source, bool multiThread) : W(source.W), H(source.H)
|
||||||
|
{
|
||||||
|
allocLab(W, H);
|
||||||
|
CopyFrom(&source, multiThread);
|
||||||
|
}
|
||||||
|
|
||||||
LabImage::~LabImage ()
|
LabImage::~LabImage ()
|
||||||
{
|
{
|
||||||
deleteLab();
|
deleteLab();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LabImage::CopyFrom(LabImage *Img, bool multiThread)
|
void LabImage::CopyFrom(const LabImage *Img, bool multiThread)
|
||||||
{
|
{
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel sections if(multiThread)
|
#pragma omp parallel sections if(multiThread)
|
||||||
@ -54,7 +60,7 @@ void LabImage::CopyFrom(LabImage *Img, bool multiThread)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void LabImage::getPipetteData (float &v1, float &v2, float &v3, int posX, int posY, int squareSize)
|
void LabImage::getPipetteData (float &v1, float &v2, float &v3, int posX, int posY, int squareSize) const
|
||||||
{
|
{
|
||||||
float accumulator_L = 0.f;
|
float accumulator_L = 0.f;
|
||||||
float accumulator_a = 0.f;
|
float accumulator_a = 0.f;
|
||||||
|
@ -36,11 +36,12 @@ public:
|
|||||||
float** b;
|
float** b;
|
||||||
|
|
||||||
LabImage (int w, int h, bool initZero = false, bool multiThread = true);
|
LabImage (int w, int h, bool initZero = false, bool multiThread = true);
|
||||||
|
LabImage (const LabImage& source, bool multiThread);
|
||||||
~LabImage ();
|
~LabImage ();
|
||||||
|
|
||||||
//Copies image data in Img into this instance.
|
//Copies image data in Img into this instance.
|
||||||
void CopyFrom(LabImage *Img, bool multiThread = true);
|
void CopyFrom(const LabImage *Img, bool multiThread = true);
|
||||||
void getPipetteData (float &L, float &a, float &b, int posX, int posY, int squareSize);
|
void getPipetteData (float &L, float &a, float &b, int posX, int posY, int squareSize) const;
|
||||||
void deleteLab();
|
void deleteLab();
|
||||||
void reallocLab();
|
void reallocLab();
|
||||||
void clear(bool multiThread = false);
|
void clear(bool multiThread = false);
|
||||||
|
@ -1081,10 +1081,8 @@ private:
|
|||||||
if (params.locallab.enabled && params.locallab.spots.size() > 0) {
|
if (params.locallab.enabled && params.locallab.spots.size() > 0) {
|
||||||
MyTime t1, t2;
|
MyTime t1, t2;
|
||||||
t1.set();
|
t1.set();
|
||||||
const std::unique_ptr<LabImage> reservView(new LabImage(fw, fh));
|
const std::unique_ptr<LabImage> reservView(new LabImage(*labView, true));
|
||||||
reservView->CopyFrom(labView);
|
const std::unique_ptr<LabImage> lastorigView(new LabImage(*labView, true));
|
||||||
const std::unique_ptr<LabImage> lastorigView(new LabImage(fw, fh));
|
|
||||||
lastorigView->CopyFrom(labView);
|
|
||||||
LocretigainCurve locRETgainCurve;
|
LocretigainCurve locRETgainCurve;
|
||||||
LocretitransCurve locRETtransCurve;
|
LocretitransCurve locRETtransCurve;
|
||||||
LocLHCurve loclhCurve;
|
LocLHCurve loclhCurve;
|
||||||
@ -1370,8 +1368,7 @@ private:
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if (WaveParams.softrad > 0.f) {
|
if (WaveParams.softrad > 0.f) {
|
||||||
provradius = new LabImage(fw, fh);
|
provradius = new LabImage(*labView, true);
|
||||||
provradius->CopyFrom(labView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
params.wavelet.getCurves(wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL);
|
params.wavelet.getCurves(wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL);
|
||||||
@ -1379,11 +1376,10 @@ private:
|
|||||||
CurveFactory::curveWavContL(wavcontlutili, params.wavelet.wavclCurve, wavclCurve,/* hist16C, dummy,*/ 1);
|
CurveFactory::curveWavContL(wavcontlutili, params.wavelet.wavclCurve, wavclCurve,/* hist16C, dummy,*/ 1);
|
||||||
|
|
||||||
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
if ((WaveParams.ushamethod == "sharp" || WaveParams.ushamethod == "clari") && WaveParams.expclari && WaveParams.CLmethod != "all") {
|
||||||
unshar = new LabImage(fw, fh);
|
|
||||||
provis = params.wavelet.CLmethod;
|
provis = params.wavelet.CLmethod;
|
||||||
params.wavelet.CLmethod = "all";
|
params.wavelet.CLmethod = "all";
|
||||||
ipf.ip_wavelet(labView, labView, 2, WaveParams, wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, 1);
|
ipf.ip_wavelet(labView, labView, 2, WaveParams, wavCLVCurve, wavblcurve, waOpacityCurveRG, waOpacityCurveSH, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, 1);
|
||||||
unshar->CopyFrom(labView);
|
unshar = new LabImage(*labView, true);
|
||||||
params.wavelet.CLmethod = provis;
|
params.wavelet.CLmethod = provis;
|
||||||
|
|
||||||
WaveParams.expcontrast = false;
|
WaveParams.expcontrast = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user