CIECAM - Changes such as symmetric works and temperature output makes sense - issue #6656 (#6658)

* changes such as symmetric works and temperature output makes sense

* Comment code

* other Comment code and small change

* Change tint in tooltip temperature

* Improve GUI for tempout and greenout
This commit is contained in:
Desmis
2023-01-06 06:43:21 +01:00
committed by GitHub
parent 95cede9a1a
commit 21afbaf90b
3 changed files with 87 additions and 37 deletions

View File

@@ -1913,7 +1913,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
adap = pow(2.0, E_V - 3.0); // cd / m2
// end calculation adaptation scene luminosity
}
if(params->colorappearance.catmethod == "symg") {//force abolute luminance scenescene to 400 in symmetric
adap = 400.;
}
float d, dj, yb;
bool execsharp = false;
@@ -1935,24 +1937,60 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
CAMBrightCurveQ.dirty = true;
ipf.ciecam_02float(ncie, float (adap), pW, 2, nprevl, params.get(), customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 0, scale, execsharp, d, dj, yb, 1);
//call listener
if ((params->colorappearance.autodegree || params->colorappearance.autodegreeout) && acListener && params->colorappearance.enabled) {
acListener->autoCamChanged(100.* (double)d, 100.* (double)dj);
if(params->colorappearance.catmethod == "symg") {//force chromatic adaptation to 90 in symmetric
d = 0.9;
dj = 0.9;
}
acListener->autoCamChanged(100.* (double)d, 100.* (double)dj);
}
if (params->colorappearance.autoadapscen && acListener && params->colorappearance.enabled) {
acListener->adapCamChanged(adap); //real value of adapt scene
acListener->adapCamChanged(adap); //real value of adapt scene, force to 400 in symmetric
}
if (params->colorappearance.autoybscen && acListener && params->colorappearance.enabled) {
if(params->colorappearance.catmethod == "symg") {//force yb scene to 18 in symmetric
yb = 18;
}
acListener->ybCamChanged((int) yb); //real value Yb scene
}
// if (params->colorappearance.enabled && params->colorappearance.autotempout) {
// if (params->colorappearance.enabled) {
// acListener->wbCamChanged(params->wb.temperature, params->wb.green); //real temp and tint
// acListener->wbCamChanged(params->wb.temperature, 1.f); //real temp and tint = 1.
// }
double tempsym = 5003.;
int wmodel = 0;//wmodel allows - arbitrary - choice of illuminant and temp with choice
if (params->colorappearance.wbmodel == "RawT") {
wmodel = 0;
} else if (params->colorappearance.wbmodel == "RawTCAT02") {
wmodel = 1;
} else if (params->colorappearance.wbmodel == "free") {
wmodel = 2;//force white balance in symmetric
}
if(params->colorappearance.catmethod == "symg" && wmodel == 2) {
tempsym = params->wb.temperature;//force white balance in symmetric
} else {
if (params->colorappearance.illum == "iA") {//otherwise force illuminant source
tempsym = 2856.;
} else if (params->colorappearance.illum == "i41") {
tempsym = 4100.;
} else if (params->colorappearance.illum == "i50") {
tempsym = 5003.;
} else if (params->colorappearance.illum == "i55") {
tempsym = 5503.;
} else if (params->colorappearance.illum == "i60") {
tempsym = 6000. ;
} else if (params->colorappearance.illum == "i65") {
tempsym = 6504.;
} else if (params->colorappearance.illum == "i75") {
tempsym = 7504.;
} else if (params->colorappearance.illum == "ifree") {
tempsym = params->wb.temperature;//force white balance in symmetric
}
}
if (params->colorappearance.enabled && params->colorappearance.autotempout) {
acListener->wbCamChanged(tempsym, 1.f); //real temp and tint = 1.
}
} else {
// CIECAM is disabled, we free up its image buffer to save some space