Cppcheck: Fixed all issues in rtengine/ alignedbuffer.h, colortemp.cc, dcrop.cc, simpleprocess.cc
This commit is contained in:
@@ -93,7 +93,15 @@ public:
|
||||
// we're freeing the memory and allocate it again if the new size is bigger.
|
||||
|
||||
if (allocatedSize < oldAllocatedSize) {
|
||||
real = realloc(real, allocatedSize + alignment);
|
||||
void *temp = realloc(real, allocatedSize + alignment);
|
||||
if (temp) { // realloc succeeded
|
||||
real = temp;
|
||||
} else { // realloc failed => free old buffer and allocate new one
|
||||
if (real) {
|
||||
free (real);
|
||||
}
|
||||
real = malloc(allocatedSize + alignment);
|
||||
}
|
||||
} else {
|
||||
if (real) {
|
||||
free (real);
|
||||
|
@@ -1100,7 +1100,7 @@ void ColorTemp::temp2mulxyz (double tem, double gree, const std::string &method,
|
||||
x_D = -4.6070e9 / (tem * tem * tem) + 2.9678e6 / (tem * tem) + 0.09911e3 / tem + 0.244063;
|
||||
} else if (tem <= 25000) {
|
||||
x_D = -2.0064e9 / (tem * tem * tem) + 1.9018e6 / (tem * tem) + 0.24748e3 / tem + 0.237040;
|
||||
} else if (tem > 25000) {
|
||||
} else /*if (tem > 25000)*/ {
|
||||
x_D = -2.0064e9 / (tem * tem * tem) + 1.9018e6 / (tem * tem) + 0.24748e3 / tem + 0.237040 - ((tem - 25000) / 25000) * 0.025; //Jacques empirical adjustemnt for very high temp (underwater !)
|
||||
}
|
||||
|
||||
@@ -1135,12 +1135,10 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
//printf("temp=%d green=%.3f equal=%.3f\n", (int)temp, (float) green, (float) equal);
|
||||
|
||||
//variables for CRI and display Lab, and palette
|
||||
bool CRI_type = false;
|
||||
double xD, yD, x_D, y_D, interm;
|
||||
double m1, m2;
|
||||
double xp, yp;
|
||||
|
||||
double x, y, z, xx, yy, zz;
|
||||
double x, y, z;
|
||||
double Xchk[50], Ychk[50], Zchk[50]; //50 : I think it's a good limit for number of color : for CRI and Palette
|
||||
double Xcam02[50], Ycam02[50], Zcam02[50];
|
||||
double Xcam02pal[50], Ycam02pal[50], Zcam02pal[50];
|
||||
@@ -1148,16 +1146,12 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
double XchkLamp[50], YchkLamp[50], ZchkLamp[50];
|
||||
double Xcam02Lamp[50], Ycam02Lamp[50], Zcam02Lamp[50];
|
||||
double Xpal[50], Ypal[50], Zpal[50];
|
||||
double tempw;
|
||||
const double epsilon = 0.008856; //Lab
|
||||
const double whiteD50[3] = {0.9646019585, 1.0, 0.8244507152}; //calculate with this tool : spect 5nm
|
||||
double CAM02BB00, CAM02BB01, CAM02BB02, CAM02BB10, CAM02BB11, CAM02BB12, CAM02BB20, CAM02BB21, CAM02BB22; //for CIECAT02
|
||||
|
||||
double xr[50], yr[50], zr[50];
|
||||
double fx[50], fy[50], fz[50];
|
||||
double Llamp[50], alamp[50], blamp[50];
|
||||
double Lbb[50], abb[50], bbb[50];
|
||||
double Lpal[50], apal[50], bpal[50];
|
||||
|
||||
int palet = -1;
|
||||
bool palette = false;
|
||||
@@ -1263,7 +1257,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
x_D = -4.6070e9 / (temp * temp * temp) + 2.9678e6 / (temp * temp) + 0.09911e3 / temp + 0.244063;
|
||||
} else if (temp <= 25000) {
|
||||
x_D = -2.0064e9 / (temp * temp * temp) + 1.9018e6 / (temp * temp) + 0.24748e3 / temp + 0.237040;
|
||||
} else if (temp > 25000) { // above 25000 it's unknown..then I have modified to adjust for underwater
|
||||
} else /*if (temp > 25000)*/ { // above 25000 it's unknown..then I have modified to adjust for underwater
|
||||
x_D = -2.0064e9 / (temp * temp * temp) + 1.9018e6 / (temp * temp) + 0.24748e3 / temp + 0.237040 - ((temp - 25000) / 25000) * 0.025; //Jacques empirical adjustemnt for very high temp (underwater !)
|
||||
}
|
||||
|
||||
@@ -1291,8 +1285,6 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
double Xwb = xD / yD;
|
||||
double Ywb = 1.0;
|
||||
double Zwb = (1.0 - xD - yD) / yD;
|
||||
double correl_temp;
|
||||
|
||||
|
||||
if (settings->verbose) {
|
||||
// double u=4*xD/(-2*xD+12*yD+3);
|
||||
@@ -1335,11 +1327,6 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
{
|
||||
double x_x, y_y, z_z;
|
||||
// illuminants
|
||||
const double* spect_illummax[] = {
|
||||
Daylight5300_spect, Cloudy6200_spect, Shade7600_spect, A2856_spect, FluoF1_spect, FluoF2_spect, FluoF3_spect, FluoF4_spect, FluoF5_spect, FluoF6_spect, FluoF7_spect,
|
||||
FluoF8_spect, FluoF9_spect, FluoF10_spect, FluoF11_spect, FluoF12_spect, HMI_spect, GTI_spect, JudgeIII_spect, Solux3500_spect, Solux4100_spect, Solux4700_spect, NG_Solux4700_spect, NG_CRSSP12WWMR16_spect, NG_CRSSP12WWMR16_spect,
|
||||
Flash5500_spect, Flash6000_spect, Flash6500_spect
|
||||
};
|
||||
// color
|
||||
const double* spec_colorpalet[] = {
|
||||
ColabSkin98_m2_10_spect, ColabSkin95_0_4_spect, ColabSkin91_4_14_spect, ColabSkin90_m1_20_spect,
|
||||
@@ -1359,13 +1346,18 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
int N_col = sizeof(spec_colorpalet) / sizeof(spec_colorpalet[0]); //number of color
|
||||
|
||||
if(palet < 28) {
|
||||
const double* spect_illummax[] = {
|
||||
Daylight5300_spect, Cloudy6200_spect, Shade7600_spect, A2856_spect, FluoF1_spect, FluoF2_spect, FluoF3_spect, FluoF4_spect, FluoF5_spect, FluoF6_spect, FluoF7_spect,
|
||||
FluoF8_spect, FluoF9_spect, FluoF10_spect, FluoF11_spect, FluoF12_spect, HMI_spect, GTI_spect, JudgeIII_spect, Solux3500_spect, Solux4100_spect, Solux4700_spect, NG_Solux4700_spect, NG_CRSSP12WWMR16_spect, NG_CRSSP12WWMR16_spect,
|
||||
Flash5500_spect, Flash6000_spect, Flash6500_spect
|
||||
};
|
||||
for(int i = 0; i < N_col; i++) {
|
||||
spectrum_to_color_xyz_preset(spec_colorpalet[i], spect_illummax[palet], x_x, y_y, z_z);
|
||||
Xpal[i] = x_x;
|
||||
Ypal[i] = y_y;
|
||||
Zpal[i] = z_z;
|
||||
}
|
||||
} else if(palet >= 28) {
|
||||
} else /*if(palet >= 28)*/ {
|
||||
if(temp < INITIALBLACKBODY) {
|
||||
for(int i = 0; i < N_col; i++) {
|
||||
spectrum_to_color_xyz_blackbody(spec_colorpalet[i], temp, x_x, y_y, z_z);
|
||||
@@ -1387,8 +1379,8 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
}
|
||||
}
|
||||
|
||||
xp = xD;
|
||||
yp = yD;
|
||||
double xp = xD;
|
||||
double yp = yD;
|
||||
double Xwbpal = xp / yp; //white balance
|
||||
double Ywbpal = 1.0;
|
||||
double Zwbpal = (1.0 - xp - yp) / yp;
|
||||
@@ -1433,6 +1425,8 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
|
||||
//Lab values in function of color and illuminant
|
||||
//these values can be compared to preview values when using white-balance (skin / sky / BW)
|
||||
double Lpal[50], apal[50], bpal[50];
|
||||
|
||||
for(int i = 0; i < N_col; i++) {
|
||||
Lpal[i] = 116.0 * fy[i] - 16.0;
|
||||
apal[i] = 500.0 * (fx[i] - fy[i]);
|
||||
@@ -1464,12 +1458,6 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
int numero_color = settings->CRI_color - 1;
|
||||
|
||||
//spectral data illuminant (actually 21): only those necessary (lamp, fluorescent, LED) others CRI=100 (not Flash...)
|
||||
const double* spect_illum[] = {
|
||||
Daylight5300_spect, Cloudy6200_spect, Shade7600_spect, A2856_spect, FluoF1_spect, FluoF2_spect, FluoF3_spect,
|
||||
FluoF4_spect, FluoF5_spect, FluoF6_spect, FluoF7_spect, FluoF8_spect, FluoF9_spect, FluoF10_spect, FluoF11_spect,
|
||||
FluoF12_spect, HMI_spect, GTI_spect, JudgeIII_spect, Solux3500_spect, Solux4100_spect, Solux4700_spect,
|
||||
NG_Solux4700_spect, NG_CRSSP12WWMR16_spect, NG_CRSSP12WWMR16_spect
|
||||
};
|
||||
const double* spec_color[] = {
|
||||
ColorchechredC3_spect, ColorchechOraA2_spect, ColorchechYelD3_spect, ColorchechGreE2_spect, ColorchechGreB3_spect,
|
||||
ColorchechCyaF3_spect, ColorchechPurD2_spect, ColorchechMagE3_spect, ColorchechSkiA138_13_14_spect, ColorchechGraC4_67_spect,
|
||||
@@ -1480,6 +1468,9 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
|
||||
int N_c = sizeof(spec_color) / sizeof(spec_color[0]); //number of color
|
||||
|
||||
bool CRI_type = false;
|
||||
double tempw;
|
||||
|
||||
if (method == "Fluo F1") {
|
||||
CRI_type = true;
|
||||
tempw = 6430;
|
||||
@@ -1569,25 +1560,26 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
}
|
||||
|
||||
if (CRI_type) {
|
||||
const double* spect_illum[] = {
|
||||
Daylight5300_spect, Cloudy6200_spect, Shade7600_spect, A2856_spect, FluoF1_spect, FluoF2_spect, FluoF3_spect,
|
||||
FluoF4_spect, FluoF5_spect, FluoF6_spect, FluoF7_spect, FluoF8_spect, FluoF9_spect, FluoF10_spect, FluoF11_spect,
|
||||
FluoF12_spect, HMI_spect, GTI_spect, JudgeIII_spect, Solux3500_spect, Solux4100_spect, Solux4700_spect,
|
||||
NG_Solux4700_spect, NG_CRSSP12WWMR16_spect, NG_CRSSP12WWMR16_spect
|
||||
};
|
||||
|
||||
float DeltaE[50], DeltaEs[8];
|
||||
float quadCRI = 0.0f, quadCRIs = 0.0f;
|
||||
float CRI_RT = 0.0, CRI[50];
|
||||
float CRI_RTs = 0.0, CRIs[8];
|
||||
|
||||
for(int i = 0; i < N_c; i++) {
|
||||
spectrum_to_color_xyz_preset(spec_color[i], spect_illum[illum + 3], xx, yy, zz);
|
||||
XchkLamp[i] = xx;
|
||||
YchkLamp[i] = yy;
|
||||
ZchkLamp[i] = zz;
|
||||
spectrum_to_color_xyz_preset(spec_color[i], spect_illum[illum + 3], XchkLamp[i], YchkLamp[i], ZchkLamp[i]);
|
||||
}
|
||||
|
||||
//calculate XYZ for each color : for Blackbody and Daylight at tempw
|
||||
if(tempw <= INITIALBLACKBODY) {
|
||||
for(int i = 0; i < N_c; i++) {
|
||||
spectrum_to_color_xyz_blackbody(spec_color[i], tempw, xx, yy, zz);
|
||||
Xchk[i] = xx;
|
||||
Ychk[i] = yy;
|
||||
Zchk[i] = zz;
|
||||
spectrum_to_color_xyz_blackbody(spec_color[i], tempw, Xchk[i], Ychk[i], Zchk[i]);
|
||||
}
|
||||
|
||||
spectrum_to_xyz_blackbody(tempw, x, y, z);//for white point
|
||||
@@ -1608,18 +1600,15 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
m22 = (0.03 - 31.4424 * x_DD + 30.0717 * y_DD) / interm2;
|
||||
|
||||
for(int i = 0; i < N_c; i++) {
|
||||
spectrum_to_color_xyz_daylight(spec_color[i], m11, m22, xx, yy, zz);
|
||||
Xchk[i] = xx;
|
||||
Ychk[i] = yy;
|
||||
Zchk[i] = zz;
|
||||
spectrum_to_color_xyz_daylight(spec_color[i], m11, m22, Xchk[i], Ychk[i], Zchk[i]);
|
||||
}
|
||||
|
||||
spectrum_to_xyz_daylight(m11, m22, x, y, z);
|
||||
}
|
||||
|
||||
XYZtoCorColorTemp(Xwb, Ywb, Zwb, correl_temp);
|
||||
|
||||
if (settings->verbose) {
|
||||
double correl_temp;
|
||||
XYZtoCorColorTemp(Xwb, Ywb, Zwb, correl_temp);
|
||||
printf("Correlated temperature (lamp)=%i\n", (int) correl_temp); //use only for lamp...otherwise It give an information!!
|
||||
}
|
||||
|
||||
@@ -1680,6 +1669,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
}
|
||||
}
|
||||
|
||||
double Llamp[50], alamp[50], blamp[50];
|
||||
for(int i = 0; i < N_c; i++) {
|
||||
Llamp[i] = 116.0 * fy[i] - 16.0;
|
||||
alamp[i] = 500.0 * (fx[i] - fy[i]);
|
||||
@@ -1712,6 +1702,8 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
|
||||
}
|
||||
}
|
||||
|
||||
double Lbb[50], abb[50], bbb[50];
|
||||
|
||||
for(int i = 0; i < N_c; i++) {
|
||||
Lbb[i] = 116.*fy[i] - 16.;
|
||||
abb[i] = 500.*(fx[i] - fy[i]);
|
||||
|
@@ -33,7 +33,7 @@ extern const Settings* settings;
|
||||
Crop::Crop (ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow)
|
||||
: PipetteBuffer(editDataProvider), origCrop(NULL), laboCrop(NULL), labnCrop(NULL),
|
||||
cropImg(NULL), cbuf_real(NULL), cshmap(NULL), transCrop(NULL), cieCrop(NULL), cbuffer(NULL),
|
||||
updating(false), newUpdatePending(false), skip(10),
|
||||
updating(false), newUpdatePending(false), skip(10), padding(0),
|
||||
cropx(0), cropy(0), cropw(-1), croph(-1),
|
||||
trafx(0), trafy(0), trafw(-1), trafh(-1),
|
||||
rqcropx(0), rqcropy(0), rqcropw(-1), rqcroph(-1),
|
||||
|
@@ -996,13 +996,12 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
}
|
||||
}
|
||||
|
||||
int kall = 2;
|
||||
bool wavcontlutili = false;
|
||||
|
||||
CurveFactory::curveWavContL(wavcontlutili, params.wavelet.wavclCurve, wavclCurve,/* hist16C, dummy,*/ 1);
|
||||
|
||||
if((params.wavelet.enabled)) {
|
||||
ipf.ip_wavelet(labView, labView, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, wavcontlutili, 1);
|
||||
if(params.wavelet.enabled) {
|
||||
ipf.ip_wavelet(labView, labView, 2, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, wavcontlutili, 1);
|
||||
}
|
||||
|
||||
wavCLVCurve.Reset();
|
||||
@@ -1053,25 +1052,19 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
float CAMMean = NAN;
|
||||
|
||||
if (params.sharpening.enabled) {
|
||||
float d;
|
||||
double dd;
|
||||
|
||||
int sk = 1;
|
||||
|
||||
if(settings->ciecamfloat) {
|
||||
ipf.ciecam_02float (cieView, float(adap), begh, endh, 1, 2, labView, ¶ms, customColCurve1, customColCurve2, customColCurve3, dummy, dummy, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, true, d, sk, 1);
|
||||
float d;
|
||||
ipf.ciecam_02float (cieView, float(adap), begh, endh, 1, 2, labView, ¶ms, customColCurve1, customColCurve2, customColCurve3, dummy, dummy, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, true, d, 1, 1);
|
||||
} else {
|
||||
double dd;
|
||||
ipf.ciecam_02 (cieView, adap, begh, endh, 1, 2, labView, ¶ms, customColCurve1, customColCurve2, customColCurve3, dummy, dummy, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, true, dd, 1, 1);
|
||||
}
|
||||
} else {
|
||||
float d;
|
||||
|
||||
double dd;
|
||||
int sk = 1;
|
||||
|
||||
if(settings->ciecamfloat) {
|
||||
ipf.ciecam_02float (cieView, float(adap), begh, endh, 1, 2, labView, ¶ms, customColCurve1, customColCurve2, customColCurve3, dummy, dummy, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, true, d, sk, 1);
|
||||
float d;
|
||||
ipf.ciecam_02float (cieView, float(adap), begh, endh, 1, 2, labView, ¶ms, customColCurve1, customColCurve2, customColCurve3, dummy, dummy, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, true, d, 1, 1);
|
||||
} else {
|
||||
double dd;
|
||||
ipf.ciecam_02 (cieView, adap, begh, endh, 1, 2, labView, ¶ms, customColCurve1, customColCurve2, customColCurve3, dummy, dummy, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, 1, true, dd, 1, 1);
|
||||
}
|
||||
}
|
||||
@@ -1160,10 +1153,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
bool useLCMS = false;
|
||||
|
||||
if(params.icm.gamma != "default" || params.icm.freegamma) { // if select gamma output between BT709, sRGB, linear, low, high, 2.2 , 1.8
|
||||
cmsMLU *DescriptionMLU, *CopyrightMLU, *DmndMLU, *DmddMLU;// for modification TAG
|
||||
|
||||
cmsToneCurve* GammaTRC[3] = { NULL, NULL, NULL };
|
||||
cmsFloat64Number Parameters[7];
|
||||
double ga0, ga1, ga2, ga3, ga4, ga5, ga6;
|
||||
// if(params.blackwhite.enabled) params.toneCurve.hrenabled=false;
|
||||
readyImg = ipf.lab2rgb16b (labView, cx, cy, cw, ch, params.icm.output, params.icm.outputIntent, params.icm.working, params.icm.gamma, params.icm.freegamma, params.icm.gampos, params.icm.slpos, ga0, ga1, ga2, ga3, ga4, ga5, ga6, params.blackwhite.enabled );
|
||||
@@ -1266,6 +1256,10 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
printf("\"%s\" ICC output profile not found!\n", outProfile.c_str());
|
||||
}
|
||||
} else {
|
||||
cmsToneCurve* GammaTRC[3] = { NULL, NULL, NULL };
|
||||
|
||||
cmsFloat64Number Parameters[7];
|
||||
|
||||
Parameters[0] = ga0;
|
||||
Parameters[1] = ga1;
|
||||
Parameters[2] = ga2;
|
||||
@@ -1275,6 +1269,8 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
Parameters[6] = ga6;
|
||||
// 7 parameters for smoother curves
|
||||
//change desc Tag , to "free gamma", or "BT709", etc.
|
||||
cmsMLU *DescriptionMLU, *CopyrightMLU, *DmndMLU, *DmddMLU;// for modification TAG
|
||||
|
||||
cmsContext ContextID = cmsGetProfileContextID(jprof);//modification TAG
|
||||
DescriptionMLU = cmsMLUalloc(ContextID, 1);
|
||||
CopyrightMLU = cmsMLUalloc(ContextID, 1);//for ICC
|
||||
@@ -1344,13 +1340,12 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
|
||||
// else if (params.icm.gamma== "sRGB_g2.4_s12.92") cmsSaveProfileToFile(jprof, "RT_Medium_gsRGB.icc");
|
||||
// else if (params.icm.gamma== "linear_g1.0") cmsSaveProfileToFile(jprof, "RT_Large_g10.icc");
|
||||
|
||||
|
||||
if (GammaTRC[0]) {
|
||||
cmsFreeToneCurve(GammaTRC[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (GammaTRC[0]) {
|
||||
cmsFreeToneCurve(GammaTRC[0]);
|
||||
}
|
||||
} else {
|
||||
// if Default gamma mode: we use the profile selected in the "Output profile" combobox;
|
||||
// gamma come from the selected profile, otherwise it comes from "Free gamma" tool
|
||||
|
Reference in New Issue
Block a user