more double promote fixes, still not complete

This commit is contained in:
Ingo Weyrich 2020-01-21 00:16:27 +01:00
parent 9dbf0ff629
commit b2443b0e7e
38 changed files with 203 additions and 187 deletions

View File

@ -790,12 +790,12 @@ float* RawImageSource::CA_correct_RT(
for (int m = 0; m < polyord; m++) { for (int m = 0; m < polyord; m++) {
double powHblock = powHblockInit; double powHblock = powHblockInit;
for (int n = 0; n < polyord; n++) { for (int n = 0; n < polyord; n++) {
polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * blockwt[vblock * hblsz + hblock]; polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * static_cast<double>(blockwt[vblock * hblsz + hblock]);
powHblock *= hblock; powHblock *= hblock;
} }
powVblock *= vblock; powVblock *= vblock;
} }
shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * bstemp[dir] * blockwt[vblock * hblsz + hblock]; shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * static_cast<double>(bstemp[dir]) * static_cast<double>(blockwt[vblock * hblsz + hblock]);
powHblockInit *= hblock; powHblockInit *= hblock;
} }
powVblockInit *= vblock; powVblockInit *= vblock;
@ -848,7 +848,7 @@ float* RawImageSource::CA_correct_RT(
for (int top = -border; top < height; top += ts - border2) { for (int top = -border; top < height; top += ts - border2) {
for (int left = -border; left < width - (W & 1); left += ts - border2) { for (int left = -border; left < width - (W & 1); left += ts - border2) {
memset(bufferThr, 0, buffersizePassTwo); memset(bufferThr, 0, buffersizePassTwo);
float lblockshifts[2][2]; double lblockshifts[2][2];
const int vblock = ((top + border) / (ts - border2)) + 1; const int vblock = ((top + border) / (ts - border2)) + 1;
const int hblock = ((left + border) / (ts - border2)) + 1; const int hblock = ((left + border) / (ts - border2)) + 1;
const int bottom = min(top + ts, height + border); const int bottom = min(top + ts, height + border);
@ -1036,8 +1036,8 @@ float* RawImageSource::CA_correct_RT(
} }
if (!autoCA) { if (!autoCA) {
float hfrac = -((float)(hblock - 0.5) / (hblsz - 2) - 0.5); double hfrac = -((hblock - 0.5) / (hblsz - 2) - 0.5);
float vfrac = -((float)(vblock - 0.5) / (vblsz - 2) - 0.5) * height / width; double vfrac = -((vblock - 0.5) / (vblsz - 2) - 0.5) * height / width;
lblockshifts[0][0] = 2 * vfrac * cared; lblockshifts[0][0] = 2 * vfrac * cared;
lblockshifts[0][1] = 2 * hfrac * cared; lblockshifts[0][1] = 2 * hfrac * cared;
lblockshifts[1][0] = 2 * vfrac * cablue; lblockshifts[1][0] = 2 * vfrac * cablue;
@ -1058,7 +1058,7 @@ float* RawImageSource::CA_correct_RT(
} }
powVblock *= vblock; powVblock *= vblock;
} }
constexpr float bslim = 3.99; //max allowed CA shift constexpr double bslim = 3.99f; //max allowed CA shift
lblockshifts[0][0] = LIM(lblockshifts[0][0], -bslim, bslim); lblockshifts[0][0] = LIM(lblockshifts[0][0], -bslim, bslim);
lblockshifts[0][1] = LIM(lblockshifts[0][1], -bslim, bslim); lblockshifts[0][1] = LIM(lblockshifts[0][1], -bslim, bslim);
lblockshifts[1][0] = LIM(lblockshifts[1][0], -bslim, bslim); lblockshifts[1][0] = LIM(lblockshifts[1][0], -bslim, bslim);
@ -1070,14 +1070,14 @@ float* RawImageSource::CA_correct_RT(
//some parameters for the bilinear interpolation //some parameters for the bilinear interpolation
shiftvfloor[c] = floor((float)lblockshifts[c>>1][0]); shiftvfloor[c] = floor((float)lblockshifts[c>>1][0]);
shiftvceil[c] = ceil((float)lblockshifts[c>>1][0]); shiftvceil[c] = ceil((float)lblockshifts[c>>1][0]);
if (lblockshifts[c>>1][0] < 0.f) { if (lblockshifts[c>>1][0] < 0.0) {
std::swap(shiftvfloor[c], shiftvceil[c]); std::swap(shiftvfloor[c], shiftvceil[c]);
} }
shiftvfrac[c] = fabs(lblockshifts[c>>1][0] - shiftvfloor[c]); shiftvfrac[c] = fabs(lblockshifts[c>>1][0] - shiftvfloor[c]);
shifthfloor[c] = floor((float)lblockshifts[c>>1][1]); shifthfloor[c] = floor((float)lblockshifts[c>>1][1]);
shifthceil[c] = ceil((float)lblockshifts[c>>1][1]); shifthceil[c] = ceil((float)lblockshifts[c>>1][1]);
if (lblockshifts[c>>1][1] < 0.f) { if (lblockshifts[c>>1][1] < 0.0) {
std::swap(shifthfloor[c], shifthceil[c]); std::swap(shifthfloor[c], shifthceil[c]);
} }
shifthfrac[c] = fabs(lblockshifts[c>>1][1] - shifthfloor[c]); shifthfrac[c] = fabs(lblockshifts[c>>1][1] - shifthfloor[c]);

View File

@ -55,7 +55,7 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl
#endif #endif
for(int ii = 0; ii < n; ii++) { for(int ii = 0; ii < n; ii++) {
rs += r[ii] * s[ii]; rs += static_cast<double>(r[ii]) * static_cast<double>(s[ii]);
} }
//Search direction d. //Search direction d.
@ -84,15 +84,15 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl
#endif #endif
for(int ii = 0; ii < n; ii++) { for(int ii = 0; ii < n; ii++) {
ab += d[ii] * ax[ii]; ab += static_cast<double>(d[ii]) * static_cast<double>(ax[ii]);
} }
if(ab == 0.0f) { if(ab == 0.0) {
break; //So unlikely. It means perfectly converged or singular, stop either way. break; //So unlikely. It means perfectly converged or singular, stop either way.
} }
ab = rs / ab; ab = rs / ab;
float abf = ab;
//Update x and r with this step size. //Update x and r with this step size.
double rms = 0.0; // use double precision for large summations double rms = 0.0; // use double precision for large summations
#ifdef _OPENMP #ifdef _OPENMP
@ -100,15 +100,15 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl
#endif #endif
for(int ii = 0; ii < n; ii++) { for(int ii = 0; ii < n; ii++) {
x[ii] += ab * d[ii]; x[ii] += abf * d[ii];
r[ii] -= ab * ax[ii]; //"Fast recursive formula", use explicit r = b - Ax occasionally? r[ii] -= abf * ax[ii]; //"Fast recursive formula", use explicit r = b - Ax occasionally?
rms += r[ii] * r[ii]; rms += rtengine::SQR<double>(r[ii]);
} }
rms = sqrtf(rms / n); rms = sqrtf(rms / n);
//Quit? This probably isn't the best stopping condition, but ok. //Quit? This probably isn't the best stopping condition, but ok.
if(rms < RMSResidual) { if(rms < static_cast<double>(RMSResidual)) {
break; break;
} }
@ -129,20 +129,20 @@ float *SparseConjugateGradient(void Ax(float *Product, float *x, void *Pass), fl
#endif #endif
for(int ii = 0; ii < n; ii++) { for(int ii = 0; ii < n; ii++) {
rs += r[ii] * s[ii]; rs += static_cast<double>(r[ii]) * static_cast<double>(s[ii]);
} }
} }
ab = rs / ab; ab = rs / ab;
abf = ab;
//Update search direction p. //Update search direction p.
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for #pragma omp parallel for
#endif #endif
for(int ii = 0; ii < n; ii++) { for(int ii = 0; ii < n; ii++) {
d[ii] = s[ii] + ab * d[ii]; d[ii] = s[ii] + abf * d[ii];
} }

View File

@ -103,7 +103,7 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh)
// no precalculated values without SSE => calculate // no precalculated values without SSE => calculate
const float HH = xatan2f(lab->b[i][j], lab->a[i][j]); const float HH = xatan2f(lab->b[i][j], lab->a[i][j]);
#endif #endif
float chparam = chCurve->getVal((Color::huelab_to_huehsv2(HH))) - 0.5f; // get C=f(H) float chparam = chCurve->getVal((Color::huelab_to_huehsv2(HH))) - 0.5; // get C=f(H)
if (chparam < 0.f) { if (chparam < 0.f) {
chparam *= 2.f; // increased action if chparam < 0 chparam *= 2.f; // increased action if chparam < 0
@ -113,25 +113,25 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh)
} }
const float chroma = chromaChfactor * (SQR(lab->a[i][j] - tmpa[i][j]) + SQR(lab->b[i][j] - tmpb[i][j])); // modulate chroma function hue const float chroma = chromaChfactor * (SQR(lab->a[i][j] - tmpa[i][j]) + SQR(lab->b[i][j] - tmpb[i][j])); // modulate chroma function hue
chromave += chroma; chromave += static_cast<double>(chroma);
fringe[i * width + j] = chroma; fringe[i * width + j] = chroma;
} }
} }
} }
chromave /= height * width; chromave /= height * width;
if (chromave > 0.0) { if (chromave > 0.0) {
// now as chromave is calculated, we postprocess fringe to reduce the number of divisions in future // now as chromave is calculated, we postprocess fringe to reduce the number of divisions in future
const float chromavef = chromave;
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for simd #pragma omp parallel for simd
#endif #endif
for (int j = 0; j < width * height; j++) { for (int j = 0; j < width * height; j++) {
fringe[j] = 1.f / (fringe[j] + chromave); fringe[j] = 1.f / (fringe[j] + chromavef);
} }
const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromave * 5.0f + chromave); const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromavef * 5.0f + chromavef);
const int halfwin = std::ceil(2 * radius) + 1; const int halfwin = std::ceil(2 * radius) + 1;
// Issue 1674: // Issue 1674:
@ -297,7 +297,7 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres
// no precalculated values without SSE => calculate // no precalculated values without SSE => calculate
const float HH = xatan2f(srbb[i][j], sraa[i][j]); const float HH = xatan2f(srbb[i][j], sraa[i][j]);
#endif #endif
float chparam = chCurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5f; //get C=f(H) float chparam = chCurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5; //get C=f(H)
if (chparam < 0.f) { if (chparam < 0.f) {
chparam *= 2.f; // increase action if chparam < 0 chparam *= 2.f; // increase action if chparam < 0
@ -307,7 +307,7 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres
} }
const float chroma = chromaChfactor * (SQR(sraa[i][j] - tmaa[i][j]) + SQR(srbb[i][j] - tmbb[i][j])); //modulate chroma function hue const float chroma = chromaChfactor * (SQR(sraa[i][j] - tmaa[i][j]) + SQR(srbb[i][j] - tmbb[i][j])); //modulate chroma function hue
chromave += chroma; chromave += static_cast<double>(chroma);
fringe[i * width + j] = chroma; fringe[i * width + j] = chroma;
} }
} }
@ -317,15 +317,16 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres
if (chromave > 0.0) { if (chromave > 0.0) {
// now as chromave is calculated, we postprocess fringe to reduce the number of divisions in future // now as chromave is calculated, we postprocess fringe to reduce the number of divisions in future
const float chromavef = chromave;
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for simd #pragma omp parallel for simd
#endif #endif
for (int j = 0; j < width * height; j++) { for (int j = 0; j < width * height; j++) {
fringe[j] = 1.f / (fringe[j] + chromave); fringe[j] = 1.f / (fringe[j] + chromavef);
} }
const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromave * 5.0f + chromave); const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromavef * 5.0f + chromavef);
const int halfwin = std::ceil(2 * radius) + 1; const int halfwin = std::ceil(2 * radius) + 1;
// Issue 1674: // Issue 1674:
@ -695,7 +696,7 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
for (int i = 0; i < height; i++) { for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) { for (int j = 0; j < width; j++) {
const float chroma = SQR(sraa[i][j] - tmaa[i][j]) + SQR(srbb[i][j] - tmbb[i][j]); const float chroma = SQR(sraa[i][j] - tmaa[i][j]) + SQR(srbb[i][j] - tmbb[i][j]);
chrommed += chroma; chrommed += static_cast<double>(chroma);
badpix[i * width + j] = chroma; badpix[i * width + j] = chroma;
} }
} }
@ -703,15 +704,16 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
chrommed /= height * width; chrommed /= height * width;
if (chrommed > 0.0) { if (chrommed > 0.0) {
const float chrommedf = chrommed;
// now as chrommed is calculated, we postprocess badpix to reduce the number of divisions in future // now as chrommed is calculated, we postprocess badpix to reduce the number of divisions in future
const float threshfactor = 1.f / ((thresh * chrommed) / 33.f + chrommed); const float threshfactor = 1.f / ((thresh * chrommedf) / 33.f + chrommedf);
const int halfwin = std::ceil(2 * radius) + 1; const int halfwin = std::ceil(2 * radius) + 1;
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel #pragma omp parallel
#endif #endif
{ {
#ifdef __SSE2__ #ifdef __SSE2__
const vfloat chrommedv = F2V(chrommed); const vfloat chrommedv = F2V(chrommedf);
const vfloat onev = F2V(1.f); const vfloat onev = F2V(1.f);
#endif #endif
#ifdef _OPENMP #ifdef _OPENMP
@ -726,7 +728,7 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
} }
#endif #endif
for (; j < width; j++) { for (; j < width; j++) {
badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommed); badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommedf);
} }
} }
@ -1040,7 +1042,7 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i = 0; i < height; i++) { for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) { for (int j = 0; j < width; j++) {
const float chroma = SQR(lab->a[i][j] - tmaa[i][j]) + SQR(lab->b[i][j] - tmbb[i][j]); const float chroma = SQR(lab->a[i][j] - tmaa[i][j]) + SQR(lab->b[i][j] - tmbb[i][j]);
chrommed += chroma; chrommed += static_cast<double>(chroma);
badpix[i * width + j] = chroma; badpix[i * width + j] = chroma;
} }
} }
@ -1049,13 +1051,13 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
if (chrommed > 0.0) { if (chrommed > 0.0) {
// now as chrommed is calculated, we postprocess badpix to reduce the number of divisions in future // now as chrommed is calculated, we postprocess badpix to reduce the number of divisions in future
const float chrommedf = chrommed;
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel #pragma omp parallel
#endif #endif
{ {
#ifdef __SSE2__ #ifdef __SSE2__
const vfloat chrommedv = F2V(chrommed); const vfloat chrommedv = F2V(chrommedf);
const vfloat onev = F2V(1.f); const vfloat onev = F2V(1.f);
#endif #endif
#ifdef _OPENMP #ifdef _OPENMP
@ -1070,12 +1072,12 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
} }
#endif #endif
for (; j < width; j++) { for (; j < width; j++) {
badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommed); badpix[i * width + j] = 1.f / (badpix[i * width + j] + chrommedf);
} }
} }
} }
const float threshfactor = 1.f / ((thresh * chrommed) / 33.f + chrommed); const float threshfactor = 1.f / ((thresh * chrommedf) / 33.f + chrommedf);
chrom *= 327.68f; chrom *= 327.68f;
chrom *= chrom; chrom *= chrom;

View File

@ -52,13 +52,13 @@ void RawImageSource::ahd_demosaic()
int width = W, height = H; int width = W, height = H;
constexpr double xyz_rgb[3][3] = { /* XYZ from RGB */ constexpr float xyz_rgb[3][3] = { /* XYZ from RGB */
{ 0.412453, 0.357580, 0.180423 }, { 0.412453f, 0.357580f, 0.180423f },
{ 0.212671, 0.715160, 0.072169 }, { 0.212671f, 0.715160f, 0.072169f },
{ 0.019334, 0.119193, 0.950227 } { 0.019334f, 0.119193f, 0.950227f }
}; };
constexpr float d65_white[3] = { 0.950456, 1, 1.088754 }; constexpr float d65_white[3] = { 0.950456f, 1.f, 1.088754f };
double progress = 0.0; double progress = 0.0;
@ -76,7 +76,7 @@ void RawImageSource::ahd_demosaic()
for (unsigned int j = 0; j < 3; j++) { for (unsigned int j = 0; j < 3; j++) {
xyz_cam[i][j] = 0; xyz_cam[i][j] = 0;
for (int k = 0; k < 3; k++) { for (int k = 0; k < 3; k++) {
xyz_cam[i][j] += xyz_rgb[i][k] * imatrices.rgb_cam[k][j] / d65_white[i]; xyz_cam[i][j] += xyz_rgb[i][k] * static_cast<float>(imatrices.rgb_cam[k][j]) / d65_white[i];
} }
} }
} }

View File

@ -477,7 +477,7 @@ int RawImageSource::interpolateBadPixelsXtrans(const PixelsMap &bitmapBads)
int RawImageSource::findHotDeadPixels(PixelsMap &bpMap, const float thresh, const bool findHotPixels, const bool findDeadPixels) const int RawImageSource::findHotDeadPixels(PixelsMap &bpMap, const float thresh, const bool findHotPixels, const bool findDeadPixels) const
{ {
BENCHFUN BENCHFUN
const float varthresh = (20.0 * (thresh / 100.0) + 1.0) / 24.f; const float varthresh = (20.f * (thresh / 100.f) + 1.f) / 24.f;
// counter for dead or hot pixels // counter for dead or hot pixels
int counter = 0; int counter = 0;

View File

@ -553,7 +553,7 @@ CameraConst::get_Levels(struct camera_const_levels & lvl, int bw, int iso, float
float av = (avh - 1) + (float)k / 3; float av = (avh - 1) + (float)k / 3;
float aperture = sqrtf(powf(2, av)); float aperture = sqrtf(powf(2, av));
if (fnumber > aperture * 0.97 && fnumber < aperture / 0.97) { if (fnumber > aperture * 0.97f && fnumber < aperture / 0.97f) {
fnumber = fn_tab[avh][k]; fnumber = fn_tab[avh][k];
it = mApertureScaling.find(fnumber); it = mApertureScaling.find(fnumber);
avh = 7; avh = 7;
@ -579,7 +579,7 @@ CameraConst::get_Levels(struct camera_const_levels & lvl, int bw, int iso, float
scaling = it->second; scaling = it->second;
} }
if (scaling > 1.0) { if (scaling > 1.f) {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
lvl.levels[i] *= scaling; lvl.levels[i] *= scaling;

View File

@ -538,8 +538,8 @@ BENCHFUN
constexpr int tileSize = 32; constexpr int tileSize = 32;
const int border = iterations <= 30 ? 5 : 7; const int border = iterations <= 30 ? 5 : 7;
const int fullTileSize = tileSize + 2 * border; const int fullTileSize = tileSize + 2 * border;
const float cornerRadius = std::min<float>(1.15f, sigma + sigmaCornerOffset); const double cornerRadius = std::min<float>(1.15f, sigma + sigmaCornerOffset);
const float cornerDistance = sqrt(rtengine::SQR(W * 0.5f) + rtengine::SQR(H * 0.5f)); const double cornerDistance = sqrt(rtengine::SQR(W * 0.5f) + rtengine::SQR(H * 0.5f));
const float distanceFactor = (cornerRadius - sigma) / cornerDistance; const float distanceFactor = (cornerRadius - sigma) / cornerDistance;
double progress = startVal; double progress = startVal;
@ -642,7 +642,7 @@ BENCHFUN
const float distance = sqrt(rtengine::SQR(i + tileSize / 2 - H / 2) + rtengine::SQR(j + tileSize / 2 - W / 2)); const float distance = sqrt(rtengine::SQR(i + tileSize / 2 - H / 2) + rtengine::SQR(j + tileSize / 2 - W / 2));
const float sigmaTile = static_cast<float>(sigma) + distanceFactor * distance; const float sigmaTile = static_cast<float>(sigma) + distanceFactor * distance;
if (sigmaTile >= 0.4f) { if (sigmaTile >= 0.4f) {
if (sigmaTile > 0.84) { // have to use 7x7 kernel if (sigmaTile > 0.84f) { // have to use 7x7 kernel
float lkernel7[7][7]; float lkernel7[7][7];
compute7x7kernel(static_cast<float>(sigma) + distanceFactor * distance, lkernel7); compute7x7kernel(static_cast<float>(sigma) + distanceFactor * distance, lkernel7);
for (int k = 0; k < iterations; ++k) { for (int k = 0; k < iterations; ++k) {
@ -731,7 +731,7 @@ BENCHFUN
{ 0.019334, 0.119193, 0.950227 } { 0.019334, 0.119193, 0.950227 }
}; };
float contrast = conrastThreshold / 100.f; float contrast = conrastThreshold / 100.0;
const float clipVal = (ri->get_white(1) - ri->get_cblack(1)) * scale_mul[1]; const float clipVal = (ri->get_white(1) - ri->get_cblack(1)) * scale_mul[1];

View File

@ -28,7 +28,7 @@
#endif #endif
#undef CLIPD #undef CLIPD
#define CLIPD(a) ((a)>0.0?((a)<1.0?(a):1.0):0.0) #define CLIPD(a) ((a)>0.f?((a)<1.f?(a):1.f):0.f)
#define MAXR(a,b) ((a) > (b) ? (a) : (b)) #define MAXR(a,b) ((a) > (b) ? (a) : (b))
namespace rtengine namespace rtengine
@ -408,7 +408,7 @@ void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float x
{ {
n = yb / yw; n = yb / yw;
if (pilotd == 2.0) { if (pilotd == 2.f) {
d = d_factorfloat ( f, la ); d = d_factorfloat ( f, la );
} else { } else {
d = pilotd; d = pilotd;
@ -434,7 +434,7 @@ void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float x
{ {
n = yb / yw; n = yb / yw;
if (pilotd == 2.0) { if (pilotd == 2.f) {
d = d_factorfloat ( f, la ); d = d_factorfloat ( f, la );
} else { } else {
d = pilotd; d = pilotd;
@ -492,7 +492,7 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q
myh = xatan2f ( cb, ca ); myh = xatan2f ( cb, ca );
if ( myh < 0.0f ) { if ( myh < 0.0f ) {
myh += (2.f * rtengine::RT_PI); myh += (2.f * rtengine::RT_PI_F);
} }
a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb;
@ -620,7 +620,7 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f
myh = xatan2f ( cb, ca ); myh = xatan2f ( cb, ca );
if ( myh < 0.0f ) { if ( myh < 0.0f ) {
myh += (2.f * rtengine::RT_PI); myh += (2.f * rtengine::RT_PI_F);
} }
a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb;

View File

@ -132,7 +132,7 @@ public:
constexpr static double sRGBGammaCurve = 2.4; constexpr static double sRGBGammaCurve = 2.4;
constexpr static double eps = 216.0 / 24389.0; //0.008856 constexpr static double eps = 216.0 / 24389.0; //0.008856
constexpr static double eps_max = MAXVALF * eps; //580.40756; constexpr static double eps_max = MAXVALD * eps; //580.40756;
constexpr static double kappa = 24389.0 / 27.0; //903.29630; constexpr static double kappa = 24389.0 / 27.0; //903.29630;
constexpr static double kappaInv = 27.0 / 24389.0; constexpr static double kappaInv = 27.0 / 24389.0;
constexpr static double epsilonExpInv3 = 6.0 / 29.0; constexpr static double epsilonExpInv3 = 6.0 / 29.0;
@ -144,8 +144,8 @@ public:
constexpr static float D50x = 0.9642f; //0.96422; constexpr static float D50x = 0.9642f; //0.96422;
constexpr static float D50z = 0.8249f; //0.82521; constexpr static float D50z = 0.8249f; //0.82521;
constexpr static double u0 = 4.0 * D50x / (D50x + 15 + 3 * D50z); constexpr static double u0 = 4.0 * static_cast<double>(D50x) / (static_cast<double>(D50x) + 15 + 3 * static_cast<double>(D50z));
constexpr static double v0 = 9.0 / (D50x + 15 + 3 * D50z); constexpr static double v0 = 9.0 / (static_cast<double>(D50x) + 15 + 3 * static_cast<double>(D50z));
constexpr static double epskap = 8.0; constexpr static double epskap = 8.0;
constexpr static float c1By116 = 1.0 / 116.0; constexpr static float c1By116 = 1.0 / 116.0;
@ -206,7 +206,7 @@ public:
static float rgbLuminance(float r, float g, float b, const double workingspace[3][3]) static float rgbLuminance(float r, float g, float b, const double workingspace[3][3])
{ {
return r * workingspace[1][0] + g * workingspace[1][1] + b * workingspace[1][2]; return static_cast<double>(r) * workingspace[1][0] + static_cast<double>(g) * workingspace[1][1] + static_cast<double>(b) * workingspace[1][2];
} }
#ifdef __SSE2__ #ifdef __SSE2__
@ -972,10 +972,10 @@ public:
template <typename T, typename U> template <typename T, typename U>
static inline T interpolatePolarHue_PI (T h1, T h2, U balance) static inline T interpolatePolarHue_PI (T h1, T h2, U balance)
{ {
float d = h2 - h1; T d = h2 - h1;
float f; T f;
f = T(balance); f = T(balance);
double h; T h;
if (h1 > h2) { if (h1 > h2) {
std::swap(h1, h2); std::swap(h1, h2);
@ -986,7 +986,7 @@ public:
if (d < T(0) || d < T(0.5) || d > T(1.)) { //there was an inversion here !! d > T(rtengine::RT_PI) if (d < T(0) || d < T(0.5) || d > T(1.)) { //there was an inversion here !! d > T(rtengine::RT_PI)
h1 += T(1.); h1 += T(1.);
h = h1 + f * (h2 - h1); h = h1 + f * (h2 - h1);
h = std::fmod(h, 1.); h = std::fmod(h, T(1.));
} else { } else {
h = h1 + f * d; h = h1 + f * d;
} }

View File

@ -1071,10 +1071,10 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
double Xwb, Zwb; double Xwb, Zwb;
temp2mulxyz(temp, method, Xwb, Zwb); temp2mulxyz(temp, method, Xwb, Zwb);
float adj = 1.f; double adj = 1.0;
if(equal < 0.9999 || equal > 1.0001 ) { if(equal < 0.9999 || equal > 1.0001 ) {
adj = (100.f + ( 1000.f - (1000.f * (float)equal) ) / 20.f) / 100.f; adj = (100.0 + ( 1000.0 - (1000.0 * equal) ) / 20.0) / 100.0;
} }
@ -1389,7 +1389,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
} }
for(int i = 0; i < 8; i++) { for(int i = 0; i < 8; i++) {
CRIs[i] = 100 - 3.0 * DeltaEs[i]; //3.0 coef to adapt ==> same results than CRI "official" CRIs[i] = 100 - 3.f * DeltaEs[i]; //3.0 coef to adapt ==> same results than CRI "official"
} }
for(int i = 0; i < 8; i++) { for(int i = 0; i < 8; i++) {
@ -1409,7 +1409,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
} }
for(int i = 0; i < N_c; i++) { for(int i = 0; i < N_c; i++) {
CRI[i] = 100 - 3.0 * DeltaE[i]; //3.0 coef to adapt ==> same results than CRI "official" CRI[i] = 100 - 3.f * DeltaE[i]; //3.0 coef to adapt ==> same results than CRI "official"
} }
for(int i = 0; i < N_c; i++) { for(int i = 0; i < N_c; i++) {
@ -1425,8 +1425,8 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
quadCRI /= N_c; quadCRI /= N_c;
if(settings->CRI_color != 0) { if(settings->CRI_color != 0) {
printf("CRI_standard=%i CRI:1->8=%i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RTs, (int) CRIs[0], (int) CRIs[1], (int) CRIs[2], (int) CRIs[3], (int) CRIs[4], (int) CRIs[5], (int) CRIs[6], (int) CRIs[7], sqrt(quadCRIs)); printf("CRI_standard=%i CRI:1->8=%i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RTs, (int) CRIs[0], (int) CRIs[1], (int) CRIs[2], (int) CRIs[3], (int) CRIs[4], (int) CRIs[5], (int) CRIs[6], (int) CRIs[7], sqrt(static_cast<double>(quadCRIs)));
printf("CRI_RT_exten=%i CRI:9->20=%i %i %i %i %i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RT, (int) CRI[8], (int) CRI[9], (int) CRI[10], (int) CRI[11], (int) CRI[12], (int) CRI[13], (int) CRI[14], (int) CRI[15], (int) CRI[16], (int) CRI[17], (int) CRI[18], (int) CRI[19], sqrt(quadCRI)); printf("CRI_RT_exten=%i CRI:9->20=%i %i %i %i %i %i %i %i %i %i %i %i Sigma=%2.1f\n", (int) CRI_RT, (int) CRI[8], (int) CRI[9], (int) CRI[10], (int) CRI[11], (int) CRI[12], (int) CRI[13], (int) CRI[14], (int) CRI[15], (int) CRI[16], (int) CRI[17], (int) CRI[18], (int) CRI[19], static_cast<double>(sqrt(quadCRI)));
} }
} }
} }

View File

@ -292,11 +292,11 @@ public:
} }
static inline float gamma2 (float x) static inline float gamma2 (float x)
{ {
return x <= 0.00304 ? x * 12.92310 : 1.055 * expf(logf(x) / sRGBGammaCurve) - 0.055; return x <= 0.00304f ? x * 12.92310f : 1.055f * expf(logf(x) / static_cast<float>(sRGBGammaCurve)) - 0.055f;
} }
static inline float igamma2 (float x) static inline float igamma2 (float x)
{ {
return x <= 0.03928 ? x / 12.92310 : expf(logf((x + 0.055) / 1.055) * sRGBGammaCurve); return x <= 0.03928f ? x / 12.92310f : expf(logf((x + 0.055f) / 1.055f) * static_cast<float>(sRGBGammaCurve));
} }
// gamma function with adjustable parameters // gamma function with adjustable parameters
static inline double gamma (double x, double gamma, double start, double slope, double mul, double add) static inline double gamma (double x, double gamma, double start, double slope, double mul, double add)
@ -327,8 +327,8 @@ public:
#endif #endif
static inline float hlcurve (const float exp_scale, const float comp, const float hlrange, float level) static inline float hlcurve (const float exp_scale, const float comp, const float hlrange, float level)
{ {
if (comp > 0.0) { if (comp > 0.f) {
float val = level + (hlrange - 65536.0); float val = level + (hlrange - 65536.f);
if(val == 0.0f) { // to avoid division by zero if(val == 0.0f) { // to avoid division by zero
val = 0.000001f; val = 0.000001f;
@ -337,7 +337,7 @@ public:
float Y = val * exp_scale / hlrange; float Y = val * exp_scale / hlrange;
Y *= comp; Y *= comp;
if(Y <= -1.0) { // to avoid log(<=0) if(Y <= -1.f) { // to avoid log(<=0)
Y = -.999999f; Y = -.999999f;
} }

View File

@ -1064,9 +1064,11 @@ void DCPProfile::apply(
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) { for (int j = 0; j < 3; ++j) {
double temp = 0.0;
for (int k = 0; k < 3; ++k) { for (int k = 0; k < 3; ++k) {
mat[i][j] += work_matrix[i][k] * xyz_cam[k][j]; temp += work_matrix[i][k] * xyz_cam[k][j];
} }
mat[i][j] = temp;
} }
} }
@ -1092,9 +1094,11 @@ void DCPProfile::apply(
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) { for (int j = 0; j < 3; ++j) {
double temp = 0.0;
for (int k = 0; k < 3; ++k) { for (int k = 0; k < 3; ++k) {
pro_photo[i][j] += prophoto_xyz[i][k] * xyz_cam[k][j]; temp += prophoto_xyz[i][k] * xyz_cam[k][j];
} }
pro_photo[i][j] = temp;
} }
} }
@ -1102,9 +1106,11 @@ void DCPProfile::apply(
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) { for (int j = 0; j < 3; ++j) {
double temp = 0.0;
for (int k = 0; k < 3; ++k) { for (int k = 0; k < 3; ++k) {
work[i][j] += work_matrix[i][k] * xyz_prophoto[k][j]; temp += work_matrix[i][k] * xyz_prophoto[k][j];
} }
work[i][j] = temp;
} }
} }
@ -1173,19 +1179,27 @@ void DCPProfile::setStep2ApplyState(const Glib::ustring& working_space, bool use
mWork = ICCStore::getInstance()->workingSpaceMatrix (working_space); mWork = ICCStore::getInstance()->workingSpaceMatrix (working_space);
memset(as_out.data->pro_photo, 0, sizeof(as_out.data->pro_photo)); memset(as_out.data->pro_photo, 0, sizeof(as_out.data->pro_photo));
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++) {
double temp = 0.0;
for (int k = 0; k < 3; k++) { for (int k = 0; k < 3; k++) {
as_out.data->pro_photo[i][j] += prophoto_xyz[i][k] * mWork[k][j]; temp += prophoto_xyz[i][k] * mWork[k][j];
}
as_out.data->pro_photo[i][j] = temp;
}
} }
mWork = ICCStore::getInstance()->workingSpaceInverseMatrix (working_space); mWork = ICCStore::getInstance()->workingSpaceInverseMatrix (working_space);
memset(as_out.data->work, 0, sizeof(as_out.data->work)); memset(as_out.data->work, 0, sizeof(as_out.data->work));
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++) {
double temp = 0.0;
for (int k = 0; k < 3; k++) { for (int k = 0; k < 3; k++) {
as_out.data->work[i][j] += mWork[i][k] * xyz_prophoto[k][j]; temp += mWork[i][k] * xyz_prophoto[k][j];
}
as_out.data->work[i][j] = temp;
}
} }
} }
} }
@ -1193,7 +1207,7 @@ void DCPProfile::setStep2ApplyState(const Glib::ustring& working_space, bool use
void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int height, int tile_width, const DCPProfileApplyState& as_in) const void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int height, int tile_width, const DCPProfileApplyState& as_in) const
{ {
#define FCLIP(a) ((a)>0.0?((a)<65535.5?(a):65535.5):0.0) #define FCLIP(a) ((a)>0.f?((a)<65535.5f?(a):65535.5f):0.f)
#define CLIP01(a) ((a)>0?((a)<1?(a):1):0) #define CLIP01(a) ((a)>0?((a)<1?(a):1):0)
float exp_scale = as_in.data->bl_scale; float exp_scale = as_in.data->bl_scale;

View File

@ -1069,7 +1069,7 @@ void RawImageSource::dcb_hid(float (*image)[3], int x0, int y0)
for (int col = colMin + (FC(y0 - TILEBORDER + row, x0 - TILEBORDER + colMin) & 1), indx = row * CACHESIZE + col; col < colMax; col += 2, indx += 2) { for (int col = colMin + (FC(y0 - TILEBORDER + row, x0 - TILEBORDER + colMin) & 1), indx = row * CACHESIZE + col; col < colMax; col += 2, indx += 2) {
assert(indx - u - 1 >= 0 && indx + u + 1 < u * u); assert(indx - u - 1 >= 0 && indx + u + 1 < u * u);
image[indx][1] = 0.25*(image[indx-1][1]+image[indx+1][1]+image[indx-u][1]+image[indx+u][1]); image[indx][1] = 0.25f * (image[indx-1][1]+image[indx+1][1]+image[indx-u][1]+image[indx+u][1]);
} }
} }

View File

@ -476,7 +476,7 @@ dfInfo* DFManager::find( const std::string &mak, const std::string &mod, int iso
} }
} }
return bestD != INFINITY ? &(bestMatch->second) : nullptr ; return bestD != RT_INFINITY ? &(bestMatch->second) : nullptr ;
} }
} }

View File

@ -65,23 +65,23 @@ DiagonalCurve::DiagonalCurve (const std::vector<double>& p, int poly_pn)
} }
} }
if (x[0] != 0.0f || x[N - 1] != 1.0f) if (x[0] != 0.0 || x[N - 1] != 1.0)
// Special (and very rare) case where all points are on the identity line but // Special (and very rare) case where all points are on the identity line but
// not reaching the limits // not reaching the limits
{ {
identity = false; identity = false;
} }
if(x[0] == 0.f && x[1] == 0.f) if(x[0] == 0.0 && x[1] == 0.0)
// Avoid crash when first two points are at x = 0 (git Issue 2888) // Avoid crash when first two points are at x = 0 (git Issue 2888)
{ {
x[1] = 0.01f; x[1] = 0.01;
} }
if(x[0] == 1.f && x[1] == 1.f) if(x[0] == 1.0 && x[1] == 1.0)
// Avoid crash when first two points are at x = 1 (100 in gui) (git Issue 2923) // Avoid crash when first two points are at x = 1 (100 in gui) (git Issue 2923)
{ {
x[0] = 0.99f; x[0] = 0.99;
} }
if (!identity) { if (!identity) {
@ -97,7 +97,7 @@ DiagonalCurve::DiagonalCurve (const std::vector<double>& p, int poly_pn)
} }
} }
} else if (kind == DCT_Parametric) { } else if (kind == DCT_Parametric) {
if ((p.size() == 8 || p.size() == 9) && (p.at(4) != 0.0f || p.at(5) != 0.0f || p.at(6) != 0.0f || p.at(7) != 0.0f)) { if ((p.size() == 8 || p.size() == 9) && (p.at(4) != 0.0 || p.at(5) != 0.0 || p.at(6) != 0.0 || p.at(7) != 0.0)) {
identity = false; identity = false;
x = new double[9]; x = new double[9];

View File

@ -228,11 +228,11 @@ void fillLut(LUTf &irangefn, int level, double dirpyrThreshold, float mult, floa
} }
const float offs = skinprot == 0.f ? 0.f : -1.f; const float offs = skinprot == 0.f ? 0.f : -1.f;
constexpr float noise = 2000.f; constexpr double noise = 2000.0;
const float noisehi = 1.33f * noise * dirpyrThreshold / expf(level * log(3.0)), noiselo = 0.66f * noise * dirpyrThreshold / expf(level * log(3.0)); const float noisehi = 1.33 * noise * dirpyrThreshold / exp(level * log(3.0)), noiselo = 0.66 * noise * dirpyrThreshold / exp(level * log(3.0));
for (int i = 0; i < 0x20000; i++) { for (int i = 0; i < 0x20000; i++) {
if (abs(i - 0x10000) > noisehi || multbis < 1.0) { if (abs(i - 0x10000) > noisehi || multbis < 1.f) {
irangefn[i] = multbis + offs; irangefn[i] = multbis + offs;
} else { } else {
if (abs(i - 0x10000) < noiselo) { if (abs(i - 0x10000) < noiselo) {
@ -262,7 +262,7 @@ void idirpyr_eq_channel(const float * const * data_coarse, const float * const *
buffer[i][j] += irangefn[hipass + 0x10000] * hipass; buffer[i][j] += irangefn[hipass + 0x10000] * hipass;
} }
} }
} else if (skinprot > 0.f) { } else if (skinprot > 0.0) {
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16) #pragma omp parallel for schedule(dynamic,16)
#endif #endif
@ -314,7 +314,7 @@ void idirpyr_eq_channelcam(const float * const * data_coarse, const float * cons
buffer[i][j] += irangefn[hipass + 0x10000] * hipass; buffer[i][j] += irangefn[hipass + 0x10000] * hipass;
} }
} }
} else if (skinprot > 0.f) { } else if (skinprot > 0.0) {
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16) #pragma omp parallel for schedule(dynamic,16)
#endif #endif

View File

@ -45,7 +45,7 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const procparams::RAWParams
{ {
BENCHFUN BENCHFUN
if (contrast == 0.f && !autoContrast) { if (contrast == 0.0 && !autoContrast) {
// contrast == 0.0 means only first demosaicer will be used // contrast == 0.0 means only first demosaicer will be used
if(isBayer) { if(isBayer) {
if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4) ) { if (raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4) ) {
@ -103,7 +103,7 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const procparams::RAWParams
} }
// calculate contrast based blend factors to use vng4 in regions with low contrast // calculate contrast based blend factors to use vng4 in regions with low contrast
JaggedArray<float> blend(winw, winh); JaggedArray<float> blend(winw, winh);
float contrastf = contrast / 100.f; float contrastf = contrast / 100.0;
buildBlendMask(L, blend, winw, winh, contrastf, autoContrast); buildBlendMask(L, blend, winw, winh, contrastf, autoContrast);
contrast = contrastf * 100.f; contrast = contrastf * 100.f;

View File

@ -428,7 +428,7 @@ ffInfo* FFManager::find( const std::string &mak, const std::string &mod, const s
} }
} }
return bestD != INFINITY ? &(bestMatch->second) : nullptr ; return bestD != RT_INFINITY ? &(bestMatch->second) : nullptr ;
} }
} }

View File

@ -47,7 +47,7 @@ void RawImageSource::green_equilibrate_global(array2D<float> &rawData)
for (int i = border; i < H - border; i++) { for (int i = border; i < H - border; i++) {
double avgg = 0.; double avgg = 0.;
for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) { for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) {
avgg += rawData[i][j]; avgg += static_cast<double>(rawData[i][j]);
} }
int ng = (W - 2 * border + (FC(i, border) & 1)) / 2; int ng = (W - 2 * border + (FC(i, border) & 1)) / 2;
@ -71,15 +71,15 @@ void RawImageSource::green_equilibrate_global(array2D<float> &rawData)
avgg2 = 1.0; avgg2 = 1.0;
} }
double corrg1 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg1 / ng1); const float corrg1 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg1 / ng1);
double corrg2 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg2 / ng2); const float corrg2 = (avgg1 / ng1 + avgg2 / ng2) / 2.0 / (avgg2 / ng2);
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16) #pragma omp parallel for schedule(dynamic,16)
#endif #endif
for (int i = border; i < H - border; i++) { for (int i = border; i < H - border; i++) {
double corrg = (i & 1) ? corrg2 : corrg1; const float corrg = (i & 1) ? corrg2 : corrg1;
for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) { for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) {
rawData[i][j] *= corrg; rawData[i][j] *= corrg;
@ -220,7 +220,7 @@ void RawImageSource::green_equilibrate(const GreenEqulibrateThreshold &thresh, a
float tf = thresh(rr, cc); float tf = thresh(rr, cc);
if (c1 + c2 < 6 * tf * fabs(d1 - d2)) { if (c1 + c2 < 6 * tf * std::fabs(d1 - d2)) {
//pixel interpolation //pixel interpolation
float gin = cfa[rr][cc >> 1]; float gin = cfa[rr][cc >> 1];

View File

@ -179,7 +179,7 @@ void mappingToCurve(const std::vector<int> &mapping, std::vector<double> &curve)
}; };
idx = -1; idx = -1;
for (ssize_t i = curve.size()-1; i > 0; i -= 2) { for (ssize_t i = curve.size()-1; i > 0; i -= 2) {
if (curve[i] <= 0.f) { if (curve[i] <= 0.0) {
idx = i+1; idx = i+1;
break; break;
} }
@ -328,7 +328,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
int tw = target->getWidth(), th = target->getHeight(); int tw = target->getWidth(), th = target->getHeight();
float thumb_ratio = float(std::max(sw, sh)) / float(std::min(sw, sh)); float thumb_ratio = float(std::max(sw, sh)) / float(std::min(sw, sh));
float target_ratio = float(std::max(tw, th)) / float(std::min(tw, th)); float target_ratio = float(std::max(tw, th)) / float(std::min(tw, th));
if (std::abs(thumb_ratio - target_ratio) > 0.01) { if (std::abs(thumb_ratio - target_ratio) > 0.01f) {
int cx = 0, cy = 0; int cx = 0, cy = 0;
if (thumb_ratio > target_ratio) { if (thumb_ratio > target_ratio) {
// crop the height // crop the height
@ -342,7 +342,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
tw -= cw; tw -= cw;
} }
if (settings->verbose) { if (settings->verbose) {
std::cout << "histogram matching: cropping target to get an aspect ratio of " << round(thumb_ratio * 100)/100.0 << ":1, new size is " << tw << "x" << th << std::endl; std::cout << "histogram matching: cropping target to get an aspect ratio of " << round(thumb_ratio * 100)/100.f << ":1, new size is " << tw << "x" << th << std::endl;
} }
if (cx || cy) { if (cx || cy) {

View File

@ -147,10 +147,10 @@ void Image16::getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, P
gm = dgm; gm = dgm;
bm = dbm; bm = dbm;
rm = 1.0 / rm; rm = 1.f / rm;
gm = 1.0 / gm; gm = 1.f / gm;
bm = 1.0 / bm; bm = 1.f / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; float mul_lum = 0.299f * rm + 0.587f * gm + 0.114f * bm;
rm /= mul_lum; rm /= mul_lum;
gm /= mul_lum; gm /= mul_lum;
bm /= mul_lum; bm /= mul_lum;

View File

@ -111,10 +111,10 @@ void Image8::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, P
gm = dgm; gm = dgm;
bm = dbm; bm = dbm;
rm = 1.0 / rm; rm = 1.f / rm;
gm = 1.0 / gm; gm = 1.f / gm;
bm = 1.0 / bm; bm = 1.f / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; float mul_lum = 0.299f * rm + 0.587f * gm + 0.114f * bm;
rm /= mul_lum; rm /= mul_lum;
gm /= mul_lum; gm /= mul_lum;
bm /= mul_lum; bm /= mul_lum;

View File

@ -178,10 +178,10 @@ void Imagefloat::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* imag
gm = dgm; gm = dgm;
bm = dbm; bm = dbm;
rm = 1.0 / rm; rm = 1.f / rm;
gm = 1.0 / gm; gm = 1.f / gm;
bm = 1.0 / bm; bm = 1.f / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm; float mul_lum = 0.299f * rm + 0.587f * gm + 0.114f * bm;
rm /= mul_lum; rm /= mul_lum;
gm /= mul_lum; gm /= mul_lum;
bm /= mul_lum; bm /= mul_lum;
@ -368,7 +368,7 @@ Imagefloat::to16() const
void Imagefloat::normalizeFloat(float srcMinVal, float srcMaxVal) void Imagefloat::normalizeFloat(float srcMinVal, float srcMaxVal)
{ {
float scale = MAXVALD / (srcMaxVal - srcMinVal); float scale = MAXVALF / (srcMaxVal - srcMinVal);
int w = width; int w = width;
int h = height; int h = height;

View File

@ -240,9 +240,9 @@ float estimate_ambient_light(const array2D<float> &R, const array2D<float> &G, c
float g = G[y][x]; float g = G[y][x];
float b = B[y][x]; float b = B[y][x];
if (r + g + b >= bright_lim) { if (r + g + b >= bright_lim) {
rr += r; rr += static_cast<double>(r);
gg += g; gg += static_cast<double>(g);
bb += b; bb += static_cast<double>(b);
++n; ++n;
} }
} }

View File

@ -139,7 +139,7 @@ BENCHFUN
auto &hm = hmask[i]; auto &hm = hmask[i];
auto &cm = cmask[i]; auto &cm = cmask[i];
auto &lm = lmask[i]; auto &lm = lmask[i];
float blend = LIM01((hm ? hm->getVal(h) : 1.f) * (cm ? cm->getVal(c) : 1.f) * (lm ? lm->getVal(l) : 1.f)); float blend = LIM01((hm ? hm->getVal(h) : 1.0) * (cm ? cm->getVal(c) : 1.0) * (lm ? lm->getVal(l) : 1.0));
Lmask[i][y][x] = abmask[i][y][x] = blend; Lmask[i][y][x] = abmask[i][y][x] = blend;
} }
} }
@ -147,8 +147,8 @@ BENCHFUN
} }
for (int i = begin_idx; i < end_idx; ++i) { for (int i = begin_idx; i < end_idx; ++i) {
float blur = params->colorToning.labregions[i].maskBlur; double blur = params->colorToning.labregions[i].maskBlur;
blur = blur < 0.f ? -1.f/blur : 1.f + blur; blur = blur < 0.0 ? -1.0 / blur : 1.0 + blur;
int r1 = max(int(4 / scale * blur + 0.5), 1); int r1 = max(int(4 / scale * blur + 0.5), 1);
int r2 = max(int(25 / scale * blur + 0.5), 1); int r2 = max(int(25 / scale * blur + 0.5), 1);
rtengine::guidedFilter(guide, abmask[i], abmask[i], r1, 0.001, multiThread); rtengine::guidedFilter(guide, abmask[i], abmask[i], r1, 0.001, multiThread);
@ -188,7 +188,7 @@ BENCHFUN
auto &r = params->colorToning.labregions[i]; auto &r = params->colorToning.labregions[i];
abca[i] = abcoord(r.a); abca[i] = abcoord(r.a);
abcb[i] = abcoord(r.b); abcb[i] = abcoord(r.b);
rs[i] = 1.f + r.saturation / (SGN(r.saturation) > 0 ? 50.f : 100.f); rs[i] = 1.0 + r.saturation / (SGN(r.saturation) > 0 ? 50.0 : 100.0);
slope[i] = r.slope; slope[i] = r.slope;
offset[i] = r.offset; offset[i] = r.offset;
power[i] = r.power; power[i] = r.power;

View File

@ -110,8 +110,8 @@ void mean_stddv2( float **dst, float &mean, float &stddv, int W_L, int H_L, floa
for (int i = 0; i < H_L; i++ ) for (int i = 0; i < H_L; i++ )
for (int j = 0; j < W_L; j++) { for (int j = 0; j < W_L; j++) {
sum += dst[i][j]; sum += static_cast<double>(dst[i][j]);
vsquared += (dst[i][j] * dst[i][j]); vsquared += rtengine::SQR<double>(dst[i][j]);
lmax = dst[i][j] > lmax ? dst[i][j] : lmax; lmax = dst[i][j] > lmax ? dst[i][j] : lmax;
lmin = dst[i][j] < lmin ? dst[i][j] : lmin; lmin = dst[i][j] < lmin ? dst[i][j] : lmin;
@ -128,8 +128,8 @@ void mean_stddv2( float **dst, float &mean, float &stddv, int W_L, int H_L, floa
} }
mean = sum / (double) (W_L * H_L); mean = sum / (double) (W_L * H_L);
vsquared /= (double) W_L * H_L; vsquared /= (double) W_L * H_L;
stddv = ( vsquared - (mean * mean) ); stddv = vsquared - rtengine::SQR<double>(mean);
stddv = (float)sqrt(stddv); stddv = std::sqrt(stddv);
} }
} }
@ -678,9 +678,9 @@ BENCHFUN
float valparam; float valparam;
if(useHsl || useHslLin) { if(useHsl || useHslLin) {
valparam = shcurve->getVal(HH) - 0.5f; valparam = shcurve->getVal(HH) - 0.5;
} else { } else {
valparam = shcurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5f; valparam = shcurve->getVal(Color::huelab_to_huehsv2(HH)) - 0.5;
} }
str *= (1.f + 2.f * valparam); str *= (1.f + 2.f * valparam);

View File

@ -46,7 +46,7 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab)
array2D<float> mask(width, height); array2D<float> mask(width, height);
array2D<float> L(width, height); array2D<float> L(width, height);
const float radius = float(params->sh.radius) * 10 / scale; const float radius = params->sh.radius * 10 / scale;
LUTf f(lab_mode ? 32768 : 65536); LUTf f(lab_mode ? 32768 : 65536);
TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);

View File

@ -48,7 +48,7 @@ void fillCurveArrayVib (DiagonalCurve* diagCurve, LUTf &outCurve)
// change to [0,1] range // change to [0,1] range
// apply custom/parametric/NURBS curve, if any // apply custom/parametric/NURBS curve, if any
// and store result in a temporary array // and store result in a temporary array
outCurve[i] = 65535.f * diagCurve->getVal ( double (i) / 65535.0 ); outCurve[i] = 65535.0 * diagCurve->getVal(i / 65535.0);
} }
} else { } else {
outCurve.makeIdentity(); outCurve.makeIdentity();
@ -606,7 +606,7 @@ void ImProcFunctions::vibrance (LabImage* lab)
bool inGamut; bool inGamut;
const float fyy = Color::c1By116 * Lprov + Color::c16By116; const float fyy = Color::c1By116 * Lprov + Color::c16By116;
const float yy_ = (Lprov > Color::epskap) ? fyy * fyy*fyy : Lprov / Color::kappaf; const float yy_ = (Lprov > static_cast<float>(Color::epskap)) ? fyy * fyy*fyy : Lprov / Color::kappaf;
float ChprovOld = std::numeric_limits<float>::min(); float ChprovOld = std::numeric_limits<float>::min();
do { do {
inGamut = true; inGamut = true;

View File

@ -334,7 +334,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, const array2D<flo
float p8 = rix[2][ 3]; float p8 = rix[2][ 3];
float p9 = rix[2][ 4]; float p9 = rix[2][ 4];
float mu = (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9) / 9.f; float mu = (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9) / 9.f;
float vx = 1e-7 + SQR(p1 - mu) + SQR(p2 - mu) + SQR(p3 - mu) + SQR(p4 - mu) + SQR(p5 - mu) + SQR(p6 - mu) + SQR(p7 - mu) + SQR(p8 - mu) + SQR(p9 - mu); float vx = 1e-7f + SQR(p1 - mu) + SQR(p2 - mu) + SQR(p3 - mu) + SQR(p4 - mu) + SQR(p5 - mu) + SQR(p6 - mu) + SQR(p7 - mu) + SQR(p8 - mu) + SQR(p9 - mu);
p1 -= rix[0][-4]; p1 -= rix[0][-4];
p2 -= rix[0][-3]; p2 -= rix[0][-3];
p3 -= rix[0][-2]; p3 -= rix[0][-2];
@ -344,7 +344,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, const array2D<flo
p7 -= rix[0][ 2]; p7 -= rix[0][ 2];
p8 -= rix[0][ 3]; p8 -= rix[0][ 3];
p9 -= rix[0][ 4]; p9 -= rix[0][ 4];
float vn = 1e-7 + SQR(p1) + SQR(p2) + SQR(p3) + SQR(p4) + SQR(p5) + SQR(p6) + SQR(p7) + SQR(p8) + SQR(p9); float vn = 1e-7f + SQR(p1) + SQR(p2) + SQR(p3) + SQR(p4) + SQR(p5) + SQR(p6) + SQR(p7) + SQR(p8) + SQR(p9);
float xh = (rix[0][0] * vx + rix[2][0] * vn) / (vx + vn); float xh = (rix[0][0] * vx + rix[2][0] * vn) / (vx + vn);
float vh = vx * vn / (vx + vn); float vh = vx * vn / (vx + vn);
@ -359,7 +359,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, const array2D<flo
p8 = rix[3][ w3]; p8 = rix[3][ w3];
p9 = rix[3][ w4]; p9 = rix[3][ w4];
mu = (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9) / 9.f; mu = (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9) / 9.f;
vx = 1e-7 + SQR(p1 - mu) + SQR(p2 - mu) + SQR(p3 - mu) + SQR(p4 - mu) + SQR(p5 - mu) + SQR(p6 - mu) + SQR(p7 - mu) + SQR(p8 - mu) + SQR(p9 - mu); vx = 1e-7f + SQR(p1 - mu) + SQR(p2 - mu) + SQR(p3 - mu) + SQR(p4 - mu) + SQR(p5 - mu) + SQR(p6 - mu) + SQR(p7 - mu) + SQR(p8 - mu) + SQR(p9 - mu);
p1 -= rix[1][-w4]; p1 -= rix[1][-w4];
p2 -= rix[1][-w3]; p2 -= rix[1][-w3];
p3 -= rix[1][-w2]; p3 -= rix[1][-w2];
@ -369,7 +369,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, const array2D<flo
p7 -= rix[1][ w2]; p7 -= rix[1][ w2];
p8 -= rix[1][ w3]; p8 -= rix[1][ w3];
p9 -= rix[1][ w4]; p9 -= rix[1][ w4];
vn = 1e-7 + SQR(p1) + SQR(p2) + SQR(p3) + SQR(p4) + SQR(p5) + SQR(p6) + SQR(p7) + SQR(p8) + SQR(p9); vn = 1e-7f + SQR(p1) + SQR(p2) + SQR(p3) + SQR(p4) + SQR(p5) + SQR(p6) + SQR(p7) + SQR(p8) + SQR(p9);
float xv = (rix[1][0] * vx + rix[3][0] * vn) / (vx + vn); float xv = (rix[1][0] * vx + rix[3][0] * vn) / (vx + vn);
float vv = vx * vn / (vx + vn); float vv = vx * vn / (vx + vn);
// interpolated G-R(B) // interpolated G-R(B)

View File

@ -4289,7 +4289,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_key("Shadows & Highlights", "LocalContrast") && ppVersion < 329) { if (keyFile.has_key("Shadows & Highlights", "LocalContrast") && ppVersion < 329) {
int lc = keyFile.get_integer("Shadows & Highlights", "LocalContrast"); int lc = keyFile.get_integer("Shadows & Highlights", "LocalContrast");
localContrast.amount = float(lc) / 30.; localContrast.amount = float(lc) / 30.f;
if (pedited) { if (pedited) {
pedited->localContrast.amount = true; pedited->localContrast.amount = true;

View File

@ -308,7 +308,7 @@ float calculateGradients (Array2Df* H, Array2Df* G, int k, bool multithread)
// however, the impact is not visible so we ignore this here // however, the impact is not visible so we ignore this here
(*G) (x, y) = sqrt (gx * gx + gy * gy) / divider; (*G) (x, y) = sqrt (gx * gx + gy * gy) / divider;
avgGrad += (*G) (x, y); avgGrad += static_cast<double>((*G) (x, y));
} }
} }
@ -381,7 +381,7 @@ void calculateFiMatrix (Array2Df* FI, Array2Df* gradients[],
#endif #endif
for ( int y = 0; y < height; y++ ) { for ( int y = 0; y < height; y++ ) {
for ( int x = 0; x < width; x++ ) { for ( int x = 0; x < width; x++ ) {
float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4 : (*gradients[k]) (x, y); float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4f : (*gradients[k]) (x, y);
float a = alfa * avgGrad[k]; float a = alfa * avgGrad[k];
float value = pow ((grad + noise) / a, beta - 1.0f); float value = pow ((grad + noise) / a, beta - 1.0f);
@ -603,8 +603,8 @@ void tmo_fattal02 (size_t width,
// sets index+1 based on the boundary assumption H(N+1)=H(N-1) // sets index+1 based on the boundary assumption H(N+1)=H(N-1)
unsigned int xp1 = (x + 1 >= width ? width - 2 : x + 1); unsigned int xp1 = (x + 1 >= width ? width - 2 : x + 1);
// forward differences in H, so need to use between-points approx of FI // forward differences in H, so need to use between-points approx of FI
(*Gx) (x, y) = ((*H) (xp1, y) - (*H) (x, y)) * 0.5 * ((*FI) (xp1, y) + (*FI) (x, y)); (*Gx) (x, y) = ((*H) (xp1, y) - (*H) (x, y)) * 0.5f * ((*FI) (xp1, y) + (*FI) (x, y));
(*Gy) (x, y) = ((*H) (x, yp1) - (*H) (x, y)) * 0.5 * ((*FI) (x, yp1) + (*FI) (x, y)); (*Gy) (x, y) = ((*H) (x, yp1) - (*H) (x, y)) * 0.5f * ((*FI) (x, yp1) + (*FI) (x, y));
} }
} }
@ -747,7 +747,7 @@ void transform_ev2normal (Array2Df *A, Array2Df *T, bool multithread)
} }
for (int y = 1 ; y < height - 1 ; y++ ) { for (int y = 1 ; y < height - 1 ; y++ ) {
(*A) (0, y) *= 0.5; (*A) (0, y) *= 0.5f;
(*A) (width - 1, y) *= 0.5f; (*A) (width - 1, y) *= 0.5f;
} }
@ -912,7 +912,7 @@ void solve_pde_fft (Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread)/*
for (int y = 0 ; y < height ; y++ ) { for (int y = 0 ; y < height ; y++ ) {
for (int x = 0 ; x < width ; x++ ) { for (int x = 0 ; x < width ; x++ ) {
(*F_tr) (x, y) = (*F_tr) (x, y) / (l1[y] + l2[x]); (*F_tr) (x, y) = static_cast<double>((*F_tr) (x, y)) / (l1[y] + l2[x]);
} }
} }

View File

@ -31,7 +31,7 @@
namespace rtengine namespace rtengine
{ {
const double xyz_rgb[3][3] = { // XYZ from RGB const float xyz_rgb[3][3] = { // XYZ from RGB
{ 0.412453, 0.357580, 0.180423 }, { 0.412453, 0.357580, 0.180423 },
{ 0.212671, 0.715160, 0.072169 }, { 0.212671, 0.715160, 0.072169 },
{ 0.019334, 0.119193, 0.950227 } { 0.019334, 0.119193, 0.950227 }

View File

@ -70,7 +70,7 @@ BlackWhite::BlackWhite (): FoldableToolPanel(this, "blackwhite", M("TP_BWMIX_LAB
// -0.1 rad < Hue < 1.6 rad // -0.1 rad < Hue < 1.6 rad
for (int i = 0; i < 7; i++) { for (int i = 0; i < 7; i++) {
float x = float(i) * (1.0f / 6.0); float x = float(i) * (1.0f / 6.f);
Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B);
bottomMilestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); bottomMilestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) );
} }
@ -1185,10 +1185,10 @@ void BlackWhite::updateRGBLabel ()
RGBLabels->set_text( RGBLabels->set_text(
Glib::ustring::compose(M("TP_BWMIX_RGBLABEL"), Glib::ustring::compose(M("TP_BWMIX_RGBLABEL"),
Glib::ustring::format(std::fixed, std::setprecision(1), r * 100.), Glib::ustring::format(std::fixed, std::setprecision(1), r * 100.f),
Glib::ustring::format(std::fixed, std::setprecision(1), g * 100.), Glib::ustring::format(std::fixed, std::setprecision(1), g * 100.f),
Glib::ustring::format(std::fixed, std::setprecision(1), b * 100.), Glib::ustring::format(std::fixed, std::setprecision(1), b * 100.f),
Glib::ustring::format(std::fixed, std::setprecision(0), ceil(kcorrec * 100./*(r+g+b)*100.)*/))) Glib::ustring::format(std::fixed, std::setprecision(0), ceil(kcorrec * 100.f/*(r+g+b)*100.)*/)))
); );
// We have to update the RGB sliders too if preset values has been chosen // We have to update the RGB sliders too if preset values has been chosen

View File

@ -523,7 +523,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance"
float R, G, B; float R, G, B;
for (int i = 0; i < 7; i++) { for (int i = 0; i < 7; i++) {
float x = float (i) * (1.0f / 6.0); float x = float (i) * (1.0f / 6.f);
Color::hsv2rgb01 (x, 0.5f, 0.5f, R, G, B); Color::hsv2rgb01 (x, 0.5f, 0.5f, R, G, B);
shape3Milestones.push_back ( GradientMilestone (double (x), double (R), double (G), double (B)) ); shape3Milestones.push_back ( GradientMilestone (double (x), double (R), double (G), double (B)) );
} }

View File

@ -74,7 +74,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
// whole hue range // whole hue range
for (int i = 0; i < 7; i++) { for (int i = 0; i < 7; i++) {
float R, G, B; float R, G, B;
float x = float(i) * (1.0f / 6.0); float x = float(i) * (1.0f / 6.f);
Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B);
milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) );
} }
@ -1203,11 +1203,11 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele
// the strength applied to the current hue // the strength applied to the current hue
double strength, hue; double strength, hue;
hlColSat->getValue(strength, hue); hlColSat->getValue(strength, hue);
Color::hsv2rgb01(hue / 360.f, 1.f, 1.f, R, G, B); Color::hsv2rgb01(hue / 360.0, 1.f, 1.f, R, G, B);
const double gray = 0.46; const double gray = 0.46;
R = (gray * (1.0 - valX)) + R * valX; R = (gray * (1.0 - valX)) + static_cast<double>(R) * valX;
G = (gray * (1.0 - valX)) + G * valX; G = (gray * (1.0 - valX)) + static_cast<double>(G) * valX;
B = (gray * (1.0 - valX)) + B * valX; B = (gray * (1.0 - valX)) + static_cast<double>(B) * valX;
} }
} else if (callerId == 3) { // Slider 2 background } else if (callerId == 3) { // Slider 2 background
if (valY <= 0.5) if (valY <= 0.5)
@ -1218,17 +1218,17 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele
// the strength applied to the current hue // the strength applied to the current hue
double strength, hue; double strength, hue;
shadowsColSat->getValue(strength, hue); shadowsColSat->getValue(strength, hue);
Color::hsv2rgb01(hue / 360.f, 1.f, 1.f, R, G, B); Color::hsv2rgb01(hue / 360.0, 1.f, 1.f, R, G, B);
const double gray = 0.46; const double gray = 0.46;
R = (gray * (1.0 - valX)) + R * valX; R = (gray * (1.0 - valX)) + static_cast<double>(R) * valX;
G = (gray * (1.0 - valX)) + G * valX; G = (gray * (1.0 - valX)) + static_cast<double>(G) * valX;
B = (gray * (1.0 - valX)) + B * valX; B = (gray * (1.0 - valX)) + static_cast<double>(B) * valX;
} }
} else if (callerId == 4) { // color curve vertical and horizontal crosshair } else if (callerId == 4) { // color curve vertical and horizontal crosshair
Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B); Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B);
} else if (callerId == ID_LABREGION_HUE) { } else if (callerId == ID_LABREGION_HUE) {
// TODO // TODO
float x = valX - 1.f/6.f; float x = valX - 1.0/6.0;
if (x < 0.f) { if (x < 0.f) {
x += 1.f; x += 1.f;
} }

View File

@ -69,14 +69,14 @@ void CoordinateAdjuster::AxisAdjuster::setValue(double newValue)
{ {
float range = rangeUpperBound - rangeLowerBound; float range = rangeUpperBound - rangeLowerBound;
spinButtonConn.block(true); spinButtonConn.block(true);
spinButton->set_value(newValue * range + rangeLowerBound); spinButton->set_value(static_cast<float>(newValue) * range + rangeLowerBound);
spinButtonConn.block(false); spinButtonConn.block(false);
} }
void CoordinateAdjuster::AxisAdjuster::valueChanged() void CoordinateAdjuster::AxisAdjuster::valueChanged()
{ {
float range = rangeUpperBound - rangeLowerBound; float range = rangeUpperBound - rangeLowerBound;
parent->updatePos(idx, (spinButton->get_value() - rangeLowerBound) / range); parent->updatePos(idx, (static_cast<float>(spinButton->get_value()) - rangeLowerBound) / range);
} }
CoordinateAdjuster::CoordinateAdjuster(CoordinateProvider *provider, CurveEditorSubGroup *parent, const std::vector<Axis> &axis) CoordinateAdjuster::CoordinateAdjuster(CoordinateProvider *provider, CurveEditorSubGroup *parent, const std::vector<Axis> &axis)
@ -171,7 +171,7 @@ void CoordinateAdjuster::startNumericalAdjustment(const std::vector<Boundaries>
Gtk::SpinButton *currSpinButton = axisAdjusters.at(i)->spinButton; Gtk::SpinButton *currSpinButton = axisAdjusters.at(i)->spinButton;
currSpinButton->set_sensitive(true); currSpinButton->set_sensitive(true);
float range = axisAdjusters.at(i)->rangeUpperBound - axisAdjusters.at(i)->rangeLowerBound; float range = axisAdjusters.at(i)->rangeUpperBound - axisAdjusters.at(i)->rangeLowerBound;
currSpinButton->set_range(newBoundaries.at(i).minVal * range + axisAdjusters.at(i)->rangeLowerBound, newBoundaries.at(i).maxVal * range + axisAdjusters.at(i)->rangeLowerBound); currSpinButton->set_range(newBoundaries.at(i).minVal * static_cast<double>(range) + static_cast<double>(axisAdjusters.at(i)->rangeLowerBound), newBoundaries.at(i).maxVal * static_cast<double>(range) + static_cast<double>(axisAdjusters.at(i)->rangeLowerBound));
} }
axisAdjusters.at(0)->spinButton->grab_focus(); axisAdjusters.at(0)->spinButton->grab_focus();
@ -200,7 +200,7 @@ void CoordinateAdjuster::switchAdjustedPoint(std::vector<double> &pos, const std
// ...narrow the range to the new interval // ...narrow the range to the new interval
float range = axisAdjusters.at(i)->rangeUpperBound - axisAdjusters.at(i)->rangeLowerBound; float range = axisAdjusters.at(i)->rangeUpperBound - axisAdjusters.at(i)->rangeLowerBound;
currAxis->spinButton->set_range(newBoundaries.at(i).minVal * range + axisAdjusters.at(i)->rangeLowerBound, newBoundaries.at(i).maxVal * range + axisAdjusters.at(i)->rangeLowerBound); currAxis->spinButton->set_range(newBoundaries.at(i).minVal * static_cast<double>(range) + static_cast<double>(axisAdjusters.at(i)->rangeLowerBound), newBoundaries.at(i).maxVal * static_cast<double>(range) + static_cast<double>(axisAdjusters.at(i)->rangeLowerBound));
// enable events // enable events
currAxis->spinButtonConn.block(false); currAxis->spinButtonConn.block(false);

View File

@ -1006,7 +1006,7 @@ void Crop::cropWidth1Resized (int &X, int &Y, int &W, int &H, float custom_ratio
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0.f ? custom_ratio : static_cast<float>(getRatio());
H = (int)round(W / r); H = (int)round(W / r);
int Hmax = min(ny + nh, maxh - ny); int Hmax = min(ny + nh, maxh - ny);
@ -1053,7 +1053,7 @@ void Crop::cropWidth2Resized (int &X, int &Y, int &W, int &H, float custom_ratio
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
H = (int)round(W / r); H = (int)round(W / r);
int Hmax = min(ny + nh, maxh - ny); int Hmax = min(ny + nh, maxh - ny);
@ -1101,7 +1101,7 @@ void Crop::cropHeight1Resized (int &X, int &Y, int &W, int &H, float custom_rati
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
W = (int)round(H * r); W = (int)round(H * r);
int Wmax = min(nx + nw, maxw - nx); int Wmax = min(nx + nw, maxw - nx);
@ -1148,7 +1148,7 @@ void Crop::cropHeight2Resized (int &X, int &Y, int &W, int &H, float custom_rati
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
W = (int)round(H * r); W = (int)round(H * r);
int Wmax = min(nx + nw, maxw - nx); int Wmax = min(nx + nw, maxw - nx);
@ -1205,7 +1205,7 @@ void Crop::cropTopLeftResized (int &X, int &Y, int &W, int &H, float custom_rati
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
W = (int)round(H * r); W = (int)round(H * r);
if (W > oldXR) { if (W > oldXR) {
@ -1252,7 +1252,7 @@ void Crop::cropTopRightResized (int &X, int &Y, int &W, int &H, float custom_rat
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
W = (int)round(H * r); W = (int)round(H * r);
if (W > maxw - nx) { if (W > maxw - nx) {
@ -1298,7 +1298,7 @@ void Crop::cropBottomLeftResized (int &X, int &Y, int &W, int &H, float custom_r
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
W = (int)round(H * r); W = (int)round(H * r);
if (W > oldXR) { if (W > oldXR) {
@ -1342,7 +1342,7 @@ void Crop::cropBottomRightResized (int &X, int &Y, int &W, int &H, float custom_
} }
if (fixr->get_active() || custom_ratio > 0) { if (fixr->get_active() || custom_ratio > 0) {
double r = custom_ratio > 0 ? custom_ratio : getRatio(); double r = custom_ratio > 0 ? custom_ratio : static_cast<float>(getRatio());
W = (int)round(H * r); W = (int)round(H * r);
if (W > maxw - nx) { if (W > maxw - nx) {

View File

@ -126,13 +126,13 @@ void Circle::drawInnerGeometry(Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer
if (filled && state != INSENSITIVE) { if (filled && state != INSENSITIVE) {
cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0., 2.*rtengine::RT_PI); cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0., 2.*rtengine::RT_PI);
if (innerLineWidth > 0.) { if (innerLineWidth > 0.f) {
cr->fill_preserve(); cr->fill_preserve();
cr->stroke(); cr->stroke();
} else { } else {
cr->fill(); cr->fill();
} }
} else if (innerLineWidth > 0.) { } else if (innerLineWidth > 0.f) {
cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0., 2.*rtengine::RT_PI); cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0., 2.*rtengine::RT_PI);
if (state == INSENSITIVE) { if (state == INSENSITIVE) {
@ -176,7 +176,7 @@ void Circle::drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned short
cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0, 2.*rtengine::RT_PI); cr->arc(center_.x + 0.5, center_.y + 0.5, radius_, 0, 2.*rtengine::RT_PI);
if (filled) { if (filled) {
if (innerLineWidth > 0.) { if (innerLineWidth > 0.f) {
cr->fill_preserve(); cr->fill_preserve();
cr->stroke(); cr->stroke();
} else { } else {
@ -224,7 +224,7 @@ void Line::drawOuterGeometry(Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *
void Line::drawInnerGeometry(Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) void Line::drawInnerGeometry(Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem)
{ {
if ((flags & F_VISIBLE) && innerLineWidth > 0.) { if ((flags & F_VISIBLE) && innerLineWidth > 0.f) {
if (state != INSENSITIVE) { if (state != INSENSITIVE) {
RGBColor color; RGBColor color;
@ -383,13 +383,13 @@ void Polyline::drawInnerGeometry(Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuff
} }
} }
if (innerLineWidth > 0.) { if (innerLineWidth > 0.f) {
cr->fill_preserve(); cr->fill_preserve();
cr->stroke(); cr->stroke();
} else { } else {
cr->fill(); cr->fill();
} }
} else if (innerLineWidth > 0.) { } else if (innerLineWidth > 0.f) {
rtengine::Coord currPos; rtengine::Coord currPos;
for (unsigned int i = 0; i < points.size(); ++i) { for (unsigned int i = 0; i < points.size(); ++i) {
@ -459,7 +459,7 @@ void Polyline::drawToMOChannel (Cairo::RefPtr<Cairo::Context> &cr, unsigned shor
} }
if (filled) { if (filled) {
if (innerLineWidth > 0.) { if (innerLineWidth > 0.f) {
cr->fill_preserve(); cr->fill_preserve();
cr->stroke(); cr->stroke();
} else { } else {
@ -576,13 +576,13 @@ void Rectangle::drawInnerGeometry(Cairo::RefPtr<Cairo::Context> &cr, ObjectMOBuf
if (filled && state != INSENSITIVE) { if (filled && state != INSENSITIVE) {
cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y); cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y);
if (innerLineWidth > 0.) { if (innerLineWidth > 0.f) {
cr->fill_preserve(); cr->fill_preserve();
cr->stroke(); cr->stroke();
} else { } else {
cr->fill(); cr->fill();
} }
} else if (innerLineWidth > 0.) { } else if (innerLineWidth > 0.f) {
cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y); cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y);
if (state == INSENSITIVE) { if (state == INSENSITIVE) {
@ -634,7 +634,7 @@ void Rectangle::drawToMOChannel(Cairo::RefPtr<Cairo::Context> &cr, unsigned shor
cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y); cr->rectangle(tl.x + 0.5, tl.y + 0.5, br.x - tl.x, br.y - tl.y);
if (filled) { if (filled) {
if (innerLineWidth > 0.) { if (innerLineWidth > 0.f) {
cr->fill_preserve(); cr->fill_preserve();
cr->stroke(); cr->stroke();
} else { } else {