Skip to content

Commit 285d36d

Browse files
committed
GTiff: enable -Wdouble-promotion
1 parent 89b30c3 commit 285d36d

File tree

6 files changed

+38
-24
lines changed

6 files changed

+38
-24
lines changed

frmts/gtiff/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ add_gdal_driver(
3939
BUILTIN)
4040
gdal_standard_includes(gdal_GTIFF)
4141

42+
target_compile_options(gdal_GTIFF PRIVATE ${WFLAG_DOUBLE_PROMOTION})
43+
4244
if (GDAL_ENABLE_DRIVER_JPEG)
4345
target_compile_definitions(gdal_GTIFF PRIVATE -DHAVE_LIBJPEG)
4446
target_include_directories(gdal_GTIFF PRIVATE ${GDAL_RASTER_FORMAT_SOURCE_DIR}/jpeg)

frmts/gtiff/gt_overview.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,15 +1078,17 @@ CPLErr GTIFFBuildOverviewsEx(const char *pszFilename, int nBands,
10781078
{
10791079
const float fJXLDistance =
10801080
static_cast<float>(CPLAtof(pszJXLDistance));
1081-
TIFFSetField(hTIFF, TIFFTAG_JXL_DISTANCE, fJXLDistance);
1081+
TIFFSetField(hTIFF, TIFFTAG_JXL_DISTANCE,
1082+
static_cast<double>(fJXLDistance));
10821083
GTIFFSetJXLDistance(GDALDataset::ToHandle(hODS), fJXLDistance);
10831084
}
10841085
if (const char *pszJXLAlphaDistance = GetOptionValue(
10851086
"JXL_ALPHA_DISTANCE", "JXL_ALPHA_DISTANCE_OVERVIEW"))
10861087
{
10871088
const float fJXLAlphaDistance =
10881089
static_cast<float>(CPLAtof(pszJXLAlphaDistance));
1089-
TIFFSetField(hTIFF, TIFFTAG_JXL_ALPHA_DISTANCE, fJXLAlphaDistance);
1090+
TIFFSetField(hTIFF, TIFFTAG_JXL_ALPHA_DISTANCE,
1091+
static_cast<double>(fJXLAlphaDistance));
10901092
GTIFFSetJXLAlphaDistance(GDALDataset::ToHandle(hODS),
10911093
fJXLAlphaDistance);
10921094
}

frmts/gtiff/gtiffdataset.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -981,9 +981,10 @@ void GTiffDataset::RestoreVolatileParameters(TIFF *hTIFF)
981981
TIFFSetField(hTIFF, TIFFTAG_JXL_LOSSYNESS,
982982
m_bJXLLossless ? JXL_LOSSLESS : JXL_LOSSY);
983983
TIFFSetField(hTIFF, TIFFTAG_JXL_EFFORT, m_nJXLEffort);
984-
TIFFSetField(hTIFF, TIFFTAG_JXL_DISTANCE, m_fJXLDistance);
984+
TIFFSetField(hTIFF, TIFFTAG_JXL_DISTANCE,
985+
static_cast<double>(m_fJXLDistance));
985986
TIFFSetField(hTIFF, TIFFTAG_JXL_ALPHA_DISTANCE,
986-
m_fJXLAlphaDistance);
987+
static_cast<double>(m_fJXLAlphaDistance));
987988
}
988989
#endif
989990
}

frmts/gtiff/gtiffdataset_read.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5187,7 +5187,8 @@ CPLErr GTiffDataset::OpenOffset(TIFF *hTIFFIn, toff_t nDirOffsetIn,
51875187
{
51885188
m_dfNoDataValue =
51895189
GDALAdjustNoDataCloseToFloatMax(m_dfNoDataValue);
5190-
m_dfNoDataValue = static_cast<float>(m_dfNoDataValue);
5190+
m_dfNoDataValue =
5191+
static_cast<double>(static_cast<float>(m_dfNoDataValue));
51915192
}
51925193
}
51935194
}
@@ -5285,7 +5286,8 @@ CPLErr GTiffDataset::OpenOffset(TIFF *hTIFFIn, toff_t nDirOffsetIn,
52855286
float fVal = 0.0;
52865287
if (TIFFGetField(m_hTIFF, pasTIFFTags[iTag].nTagVal, &fVal))
52875288
{
5288-
CPLsnprintf(szWorkMDI, sizeof(szWorkMDI), "%.8g", fVal);
5289+
CPLsnprintf(szWorkMDI, sizeof(szWorkMDI), "%.8g",
5290+
static_cast<double>(fVal));
52895291
m_oGTiffMDMD.SetMetadataItem(pasTIFFTags[iTag].pszTagName,
52905292
szWorkMDI);
52915293
}
@@ -6467,11 +6469,11 @@ const char *GTiffDataset::GetMetadataItem(const char *pszName,
64676469
}
64686470
else if (EQUAL(pszName, "JXL_DISTANCE"))
64696471
{
6470-
return CPLSPrintf("%f", m_fJXLDistance);
6472+
return CPLSPrintf("%f", static_cast<double>(m_fJXLDistance));
64716473
}
64726474
else if (EQUAL(pszName, "JXL_ALPHA_DISTANCE"))
64736475
{
6474-
return CPLSPrintf("%f", m_fJXLAlphaDistance);
6476+
return CPLSPrintf("%f", static_cast<double>(m_fJXLAlphaDistance));
64756477
}
64766478
else if (EQUAL(pszName, "JXL_EFFORT"))
64776479
{

frmts/gtiff/gtiffdataset_write.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4683,17 +4683,19 @@ bool GTiffDataset::WriteMetadata(GDALDataset *poSrcDS, TIFF *l_hTIFF,
46834683
else
46844684
{
46854685
fDistance = GTiffGetJXLDistance(papszCreationOptions);
4686-
AppendMetadataItem(&psRoot, &psTail, "JXL_DISTANCE",
4687-
CPLSPrintf("%f", fDistance), 0, nullptr,
4688-
"IMAGE_STRUCTURE");
4686+
AppendMetadataItem(
4687+
&psRoot, &psTail, "JXL_DISTANCE",
4688+
CPLSPrintf("%f", static_cast<double>(fDistance)), 0,
4689+
nullptr, "IMAGE_STRUCTURE");
46894690
}
46904691
const float fAlphaDistance =
46914692
GTiffGetJXLAlphaDistance(papszCreationOptions);
46924693
if (fAlphaDistance >= 0.0f && fAlphaDistance != fDistance)
46934694
{
4694-
AppendMetadataItem(&psRoot, &psTail, "JXL_ALPHA_DISTANCE",
4695-
CPLSPrintf("%f", fAlphaDistance), 0, nullptr,
4696-
"IMAGE_STRUCTURE");
4695+
AppendMetadataItem(
4696+
&psRoot, &psTail, "JXL_ALPHA_DISTANCE",
4697+
CPLSPrintf("%f", static_cast<double>(fAlphaDistance)), 0,
4698+
nullptr, "IMAGE_STRUCTURE");
46974699
}
46984700
AppendMetadataItem(
46994701
&psRoot, &psTail, "JXL_EFFORT",
@@ -4966,7 +4968,7 @@ void GTiffDataset::SaveICCProfile(GTiffDataset *pDS, TIFF *l_hTIFF,
49664968
if (j == 2)
49674969
{
49684970
// Last term of xyY color must be 1.0.
4969-
if (v != 1.0)
4971+
if (v != 1.0f)
49704972
{
49714973
bOutputCHR = false;
49724974
break;
@@ -5011,7 +5013,7 @@ void GTiffDataset::SaveICCProfile(GTiffDataset *pDS, TIFF *l_hTIFF,
50115013
if (j == 2)
50125014
{
50135015
// Last term of xyY color must be 1.0.
5014-
if (v != 1.0)
5016+
if (v != 1.0f)
50155017
{
50165018
bOutputWhitepoint = false;
50175019
break;
@@ -6308,8 +6310,10 @@ TIFF *GTiffDataset::CreateLL(const char *pszFilename, int nXSize, int nYSize,
63086310
TIFFSetField(l_hTIFF, TIFFTAG_JXL_LOSSYNESS,
63096311
l_bJXLLossless ? JXL_LOSSLESS : JXL_LOSSY);
63106312
TIFFSetField(l_hTIFF, TIFFTAG_JXL_EFFORT, l_nJXLEffort);
6311-
TIFFSetField(l_hTIFF, TIFFTAG_JXL_DISTANCE, l_fJXLDistance);
6312-
TIFFSetField(l_hTIFF, TIFFTAG_JXL_ALPHA_DISTANCE, l_fJXLAlphaDistance);
6313+
TIFFSetField(l_hTIFF, TIFFTAG_JXL_DISTANCE,
6314+
static_cast<double>(l_fJXLDistance));
6315+
TIFFSetField(l_hTIFF, TIFFTAG_JXL_ALPHA_DISTANCE,
6316+
static_cast<double>(l_fJXLAlphaDistance));
63136317
}
63146318
#endif
63156319
if (l_nCompression == COMPRESSION_WEBP)
@@ -8435,9 +8439,10 @@ GDALDataset *GTiffDataset::CreateCopy(const char *pszFilename,
84358439
TIFFSetField(l_hTIFF, TIFFTAG_JXL_LOSSYNESS,
84368440
poDS->m_bJXLLossless ? JXL_LOSSLESS : JXL_LOSSY);
84378441
TIFFSetField(l_hTIFF, TIFFTAG_JXL_EFFORT, poDS->m_nJXLEffort);
8438-
TIFFSetField(l_hTIFF, TIFFTAG_JXL_DISTANCE, poDS->m_fJXLDistance);
8442+
TIFFSetField(l_hTIFF, TIFFTAG_JXL_DISTANCE,
8443+
static_cast<double>(poDS->m_fJXLDistance));
84398444
TIFFSetField(l_hTIFF, TIFFTAG_JXL_ALPHA_DISTANCE,
8440-
poDS->m_fJXLAlphaDistance);
8445+
static_cast<double>(poDS->m_fJXLAlphaDistance));
84418446
}
84428447
#endif
84438448
if (l_nCompression == COMPRESSION_WEBP)

frmts/gtiff/tif_jxl.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,11 +1224,12 @@ static int JXLVSetField(TIFF *tif, uint32_t tag, va_list ap)
12241224

12251225
case TIFFTAG_JXL_DISTANCE:
12261226
{
1227-
float distance = (float)va_arg(ap, double);
1227+
const double dfDistance = va_arg(ap, double);
1228+
const float distance = (float)dfDistance;
12281229
if (distance < 0 || distance > 15)
12291230
{
12301231
TIFFErrorExtR(tif, module, "Invalid value for Distance: %f",
1231-
distance);
1232+
dfDistance);
12321233
return 0;
12331234
}
12341235
sp->distance = distance;
@@ -1237,13 +1238,14 @@ static int JXLVSetField(TIFF *tif, uint32_t tag, va_list ap)
12371238

12381239
case TIFFTAG_JXL_ALPHA_DISTANCE:
12391240
{
1240-
float alpha_distance = (float)va_arg(ap, double);
1241+
const double dfAlphaDistance = va_arg(ap, double);
1242+
const float alpha_distance = (float)dfAlphaDistance;
12411243
if (alpha_distance != -1 &&
12421244
(alpha_distance < 0 || alpha_distance > 15))
12431245
{
12441246
TIFFErrorExtR(tif, module,
12451247
"Invalid value for AlphaDistance: %f",
1246-
alpha_distance);
1248+
dfAlphaDistance);
12471249
return 0;
12481250
}
12491251
sp->alpha_distance = alpha_distance;

0 commit comments

Comments
 (0)