1
0
mirror of https://github.com/microsoft/DirectXTex synced 2024-11-21 12:00:06 +00:00

code review for command-line tool

This commit is contained in:
Chuck Walbourn 2021-04-24 19:57:56 -07:00
parent 29c99117f2
commit 32faa3bec4
3 changed files with 125 additions and 122 deletions

View File

@ -73,7 +73,7 @@ namespace
CMD_MAX
};
enum OPTIONS
enum OPTIONS : uint32_t
{
OPT_RECURSIVE = 1,
OPT_FILELIST,
@ -102,7 +102,7 @@ namespace
OPT_MAX
};
static_assert(OPT_MAX <= 32, "dwOptions is a DWORD bitfield");
static_assert(OPT_MAX <= 32, "dwOptions is a unsigned int bitfield");
struct SConversion
{
@ -111,8 +111,8 @@ namespace
struct SValue
{
LPCWSTR pName;
DWORD dwValue;
const wchar_t* name;
uint32_t value;
};
//////////////////////////////////////////////////////////////////////////////
@ -383,12 +383,12 @@ namespace
#pragma prefast(disable : 26018, "Only used with static internal arrays")
#endif
DWORD LookupByName(const wchar_t *pName, const SValue *pArray)
uint32_t LookupByName(const wchar_t *pName, const SValue *pArray)
{
while (pArray->pName)
while (pArray->name)
{
if (!_wcsicmp(pName, pArray->pName))
return pArray->dwValue;
if (!_wcsicmp(pName, pArray->name))
return pArray->value;
pArray++;
}
@ -472,11 +472,11 @@ namespace
void PrintFormat(DXGI_FORMAT Format)
{
for (const SValue *pFormat = g_pFormats; pFormat->pName; pFormat++)
for (auto pFormat = g_pFormats; pFormat->name; pFormat++)
{
if (static_cast<DXGI_FORMAT>(pFormat->dwValue) == Format)
if (static_cast<DXGI_FORMAT>(pFormat->value) == Format)
{
wprintf(L"%ls", pFormat->pName);
wprintf(L"%ls", pFormat->name);
break;
}
}
@ -543,9 +543,9 @@ namespace
void PrintList(size_t cch, const SValue *pValue)
{
while (pValue->pName)
while (pValue->name)
{
size_t cchName = wcslen(pValue->pName);
size_t cchName = wcslen(pValue->name);
if (cch + cchName + 2 >= 80)
{
@ -553,7 +553,7 @@ namespace
cch = 6;
}
wprintf(L"%ls ", pValue->pName);
wprintf(L"%ls ", pValue->name);
cch += cchName + 2;
pValue++;
}
@ -678,7 +678,7 @@ namespace
PrintList(13, g_pFeatureLevels);
}
HRESULT SaveImageFile(const Image& img, DWORD fileType, const wchar_t* szOutputFile)
HRESULT SaveImageFile(const Image& img, uint32_t fileType, const wchar_t* szOutputFile)
{
switch (fileType)
{
@ -844,11 +844,11 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
TEX_FILTER_FLAGS dwFilter = TEX_FILTER_DEFAULT;
TEX_FILTER_FLAGS dwSRGB = TEX_FILTER_DEFAULT;
TEX_FILTER_FLAGS dwFilterOpts = TEX_FILTER_DEFAULT;
DWORD fileType = WIC_CODEC_BMP;
DWORD maxSize = 16384;
DWORD maxCube = 16384;
DWORD maxArray = 2048;
DWORD maxVolume = 2048;
uint32_t fileType = WIC_CODEC_BMP;
uint32_t maxSize = 16384;
uint32_t maxCube = 16384;
uint32_t maxArray = 2048;
uint32_t maxVolume = 2048;
// DXTex's Open Alpha onto Surface always loaded alpha from the blue channel
uint32_t permuteElements[4] = { 0, 1, 2, 6 };
@ -872,7 +872,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 0;
}
DWORD dwCommand = LookupByName(argv[1], g_pCommands);
uint32_t dwCommand = LookupByName(argv[1], g_pCommands);
switch (dwCommand)
{
case CMD_CUBE:
@ -893,7 +893,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 1;
}
DWORD dwOptions = 0;
uint32_t dwOptions = 0;
std::list<SConversion> conversion;
for (int iArg = 2; iArg < argc; iArg++)
@ -910,7 +910,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (*pValue)
*pValue++ = 0;
DWORD dwOption = LookupByName(pArg, g_pOptions);
uint32_t dwOption = LookupByName(pArg, g_pOptions);
if (!dwOption || (dwOptions & (1 << dwOption)))
{

View File

@ -62,7 +62,7 @@ using Microsoft::WRL::ComPtr;
namespace
{
enum OPTIONS
enum OPTIONS : uint64_t
{
OPT_RECURSIVE = 1,
OPT_FILELIST,
@ -136,7 +136,7 @@ namespace
ROTATE_DISPLAY_P3_TO_709,
};
static_assert(OPT_MAX <= 64, "dwOptions is a DWORD64 bitfield");
static_assert(OPT_MAX <= 64, "dwOptions is a unsigned int bitfield");
struct SConversion
{
@ -144,13 +144,14 @@ namespace
wchar_t szFolder[MAX_PATH];
};
template<typename T>
struct SValue
{
LPCWSTR pName;
DWORD dwValue;
const wchar_t* name;
T value;
};
const SValue g_pOptions[] =
const SValue<uint64_t> g_pOptions[] =
{
{ L"r", OPT_RECURSIVE },
{ L"flist", OPT_FILELIST },
@ -214,7 +215,7 @@ namespace
#define DEFFMT(fmt) { L## #fmt, DXGI_FORMAT_ ## fmt }
const SValue g_pFormats[] =
const SValue<uint32_t> g_pFormats[] =
{
// List does not include _TYPELESS or depth/stencil formats
DEFFMT(R32G32B32A32_FLOAT),
@ -301,7 +302,7 @@ namespace
{ nullptr, DXGI_FORMAT_UNKNOWN }
};
const SValue g_pFormatAliases[] =
const SValue<uint32_t> g_pFormatAliases[] =
{
{ L"DXT1", DXGI_FORMAT_BC1_UNORM },
{ L"DXT2", DXGI_FORMAT_BC2_UNORM },
@ -321,7 +322,7 @@ namespace
{ nullptr, DXGI_FORMAT_UNKNOWN }
};
const SValue g_pReadOnlyFormats[] =
const SValue<uint32_t> g_pReadOnlyFormats[] =
{
DEFFMT(R32G32B32A32_TYPELESS),
DEFFMT(R32G32B32_TYPELESS),
@ -370,7 +371,7 @@ namespace
{ nullptr, DXGI_FORMAT_UNKNOWN }
};
const SValue g_pFilters[] =
const SValue<uint32_t> g_pFilters[] =
{
{ L"POINT", TEX_FILTER_POINT },
{ L"LINEAR", TEX_FILTER_LINEAR },
@ -393,7 +394,7 @@ namespace
{ nullptr, TEX_FILTER_DEFAULT }
};
const SValue g_pRotateColor[] =
const SValue<uint32_t> g_pRotateColor[] =
{
{ L"709to2020", ROTATE_709_TO_2020 },
{ L"2020to709", ROTATE_2020_TO_709 },
@ -418,7 +419,7 @@ namespace
#define CODEC_EXR 0xFFFF0008
#endif
const SValue g_pSaveFileTypes[] = // valid formats to write to
const SValue<uint32_t> g_pSaveFileTypes[] = // valid formats to write to
{
{ L"BMP", WIC_CODEC_BMP },
{ L"JPG", WIC_CODEC_JPEG },
@ -440,7 +441,7 @@ namespace
{ nullptr, CODEC_DDS }
};
const SValue g_pFeatureLevels[] = // valid feature levels for -fl for maximimum size
const SValue<uint32_t> g_pFeatureLevels[] = // valid feature levels for -fl for maximimum size
{
{ L"9.1", 2048 },
{ L"9.2", 2048 },
@ -506,12 +507,13 @@ namespace
#pragma prefast(disable : 26018, "Only used with static internal arrays")
#endif
DWORD LookupByName(const wchar_t *pName, const SValue *pArray)
template<typename T>
T LookupByName(const wchar_t *pName, const SValue<T> *pArray)
{
while (pArray->pName)
while (pArray->name)
{
if (!_wcsicmp(pName, pArray->pName))
return pArray->dwValue;
if (!_wcsicmp(pName, pArray->name))
return pArray->value;
pArray++;
}
@ -519,12 +521,13 @@ namespace
return 0;
}
const wchar_t* LookupByValue(DWORD pValue, const SValue *pArray)
template<typename T>
const wchar_t* LookupByValue(T value, const SValue<T> *pArray)
{
while (pArray->pName)
while (pArray->name)
{
if (pValue == pArray->dwValue)
return pArray->pName;
if (value == pArray->value)
return pArray->name;
pArray++;
}
@ -614,20 +617,20 @@ namespace
void PrintFormat(DXGI_FORMAT Format)
{
for (const SValue *pFormat = g_pFormats; pFormat->pName; pFormat++)
for (auto pFormat = g_pFormats; pFormat->name; pFormat++)
{
if (static_cast<DXGI_FORMAT>(pFormat->dwValue) == Format)
if (static_cast<DXGI_FORMAT>(pFormat->value) == Format)
{
wprintf(L"%ls", pFormat->pName);
wprintf(L"%ls", pFormat->name);
return;
}
}
for (const SValue *pFormat = g_pReadOnlyFormats; pFormat->pName; pFormat++)
for (auto pFormat = g_pReadOnlyFormats; pFormat->name; pFormat++)
{
if (static_cast<DXGI_FORMAT>(pFormat->dwValue) == Format)
if (static_cast<DXGI_FORMAT>(pFormat->value) == Format)
{
wprintf(L"%ls", pFormat->pName);
wprintf(L"%ls", pFormat->name);
return;
}
}
@ -694,11 +697,11 @@ namespace
wprintf(L")");
}
void PrintList(size_t cch, const SValue *pValue)
void PrintList(size_t cch, const SValue<uint32_t> *pValue)
{
while (pValue->pName)
while (pValue->name)
{
size_t cchName = wcslen(pValue->pName);
size_t cchName = wcslen(pValue->name);
if (cch + cchName + 2 >= 80)
{
@ -706,7 +709,7 @@ namespace
cch = 6;
}
wprintf(L"%ls ", pValue->pName);
wprintf(L"%ls ", pValue->name);
cch += cchName + 2;
pValue++;
}
@ -1226,16 +1229,16 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
TEX_FILTER_FLAGS dwConvert = TEX_FILTER_DEFAULT;
TEX_COMPRESS_FLAGS dwCompress = TEX_COMPRESS_DEFAULT;
TEX_FILTER_FLAGS dwFilterOpts = TEX_FILTER_DEFAULT;
DWORD FileType = CODEC_DDS;
DWORD maxSize = 16384;
uint32_t FileType = CODEC_DDS;
uint32_t maxSize = 16384;
int adapter = -1;
float alphaThreshold = TEX_THRESHOLD_DEFAULT;
float alphaWeight = 1.f;
CNMAP_FLAGS dwNormalMap = CNMAP_DEFAULT;
float nmapAmplitude = 1.f;
float wicQuality = -1.f;
DWORD colorKey = 0;
DWORD dwRotateColor = 0;
uint32_t colorKey = 0;
uint32_t dwRotateColor = 0;
float paperWhiteNits = 200.f;
float preserveAlphaCoverageRef = 0.0f;
bool keepRecursiveDirs = false;
@ -1256,7 +1259,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// Process command line
DWORD64 dwOptions = 0;
uint64_t dwOptions = 0;
std::list<SConversion> conversion;
for (int iArg = 1; iArg < argc; iArg++)
@ -1273,15 +1276,15 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (*pValue)
*pValue++ = 0;
DWORD dwOption = LookupByName(pArg, g_pOptions);
uint64_t dwOption = LookupByName(pArg, g_pOptions);
if (!dwOption || (dwOptions & (DWORD64(1) << dwOption)))
if (!dwOption || (dwOptions & (uint64_t(1) << dwOption)))
{
PrintUsage();
return 1;
}
dwOptions |= (DWORD64(1) << dwOption);
dwOptions |= (uint64_t(1) << dwOption);
// Handle options with additional value parameter
switch (dwOption)
@ -1437,7 +1440,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
break;
case OPT_PREMUL_ALPHA:
if (dwOptions & (DWORD64(1) << OPT_DEMUL_ALPHA))
if (dwOptions & (uint64_t(1) << OPT_DEMUL_ALPHA))
{
wprintf(L"Can't use -pmalpha and -alpha at same time\n\n");
PrintUsage();
@ -1446,7 +1449,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
break;
case OPT_DEMUL_ALPHA:
if (dwOptions & (DWORD64(1) << OPT_PREMUL_ALPHA))
if (dwOptions & (uint64_t(1) << OPT_PREMUL_ALPHA))
{
wprintf(L"Can't use -pmalpha and -alpha at same time\n\n");
PrintUsage();
@ -1682,7 +1685,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
break;
case OPT_USE_DX10:
if (dwOptions & (DWORD64(1) << OPT_USE_DX9))
if (dwOptions & (uint64_t(1) << OPT_USE_DX9))
{
wprintf(L"Can't use -dx9 and -dx10 at same time\n\n");
PrintUsage();
@ -1691,7 +1694,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
break;
case OPT_USE_DX9:
if (dwOptions & (DWORD64(1) << OPT_USE_DX10))
if (dwOptions & (uint64_t(1) << OPT_USE_DX10))
{
wprintf(L"Can't use -dx9 and -dx10 at same time\n\n");
PrintUsage();
@ -1804,7 +1807,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
else if (wcspbrk(pArg, L"?*") != nullptr)
{
size_t count = conversion.size();
SearchForFiles(pArg, conversion, (dwOptions & (DWORD64(1) << OPT_RECURSIVE)) != 0, nullptr);
SearchForFiles(pArg, conversion, (dwOptions & (uint64_t(1) << OPT_RECURSIVE)) != 0, nullptr);
if (conversion.size() <= count)
{
wprintf(L"No matching files found for %ls\n", pArg);
@ -1826,7 +1829,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 0;
}
if (~dwOptions & (DWORD64(1) << OPT_NOLOGO))
if (~dwOptions & (uint64_t(1) << OPT_NOLOGO))
PrintLogo();
// Work out out filename prefix and suffix
@ -1896,11 +1899,11 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (_wcsicmp(ext, L".dds") == 0)
{
DDS_FLAGS ddsFlags = DDS_FLAGS_ALLOW_LARGE_FILES;
if (dwOptions & (DWORD64(1) << OPT_DDS_DWORD_ALIGN))
if (dwOptions & (uint64_t(1) << OPT_DDS_DWORD_ALIGN))
ddsFlags |= DDS_FLAGS_LEGACY_DWORD;
if (dwOptions & (DWORD64(1) << OPT_EXPAND_LUMINANCE))
if (dwOptions & (uint64_t(1) << OPT_EXPAND_LUMINANCE))
ddsFlags |= DDS_FLAGS_EXPAND_LUMINANCE;
if (dwOptions & (DWORD64(1) << OPT_DDS_BAD_DXTN_TAILS))
if (dwOptions & (uint64_t(1) << OPT_DDS_BAD_DXTN_TAILS))
ddsFlags |= DDS_FLAGS_BAD_DXTN_TAILS;
hr = LoadFromDDSFile(pConv->szSrc, ddsFlags, &info, *image);
@ -1913,11 +1916,11 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (IsTypeless(info.format))
{
if (dwOptions & (DWORD64(1) << OPT_TYPELESS_UNORM))
if (dwOptions & (uint64_t(1) << OPT_TYPELESS_UNORM))
{
info.format = MakeTypelessUNORM(info.format);
}
else if (dwOptions & (DWORD64(1) << OPT_TYPELESS_FLOAT))
else if (dwOptions & (uint64_t(1) << OPT_TYPELESS_FLOAT))
{
info.format = MakeTypelessFLOAT(info.format);
}
@ -2072,7 +2075,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
// Direct3D can only create BC resources with multiple-of-4 top levels
if ((info.width % 4) != 0 || (info.height % 4) != 0)
{
if (dwOptions & (DWORD64(1) << OPT_BCNONMULT4FIX))
if (dwOptions & (uint64_t(1) << OPT_BCNONMULT4FIX))
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
if (!timage)
@ -2176,7 +2179,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Undo Premultiplied Alpha (if requested) ---------------------------------
if ((dwOptions & (DWORD64(1) << OPT_DEMUL_ALPHA))
if ((dwOptions & (uint64_t(1) << OPT_DEMUL_ALPHA))
&& HasAlpha(info.format)
&& info.format != DXGI_FORMAT_A8_UNORM)
{
@ -2227,7 +2230,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Flip/Rotate -------------------------------------------------------------
if (dwOptions & ((DWORD64(1) << OPT_HFLIP) | (DWORD64(1) << OPT_VFLIP)))
if (dwOptions & ((uint64_t(1) << OPT_HFLIP) | (uint64_t(1) << OPT_VFLIP)))
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
if (!timage)
@ -2238,10 +2241,10 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
TEX_FR_FLAGS dwFlags = TEX_FR_ROTATE0;
if (dwOptions & (DWORD64(1) << OPT_HFLIP))
if (dwOptions & (uint64_t(1) << OPT_HFLIP))
dwFlags |= TEX_FR_FLIP_HORIZONTAL;
if (dwOptions & (DWORD64(1) << OPT_VFLIP))
if (dwOptions & (uint64_t(1) << OPT_VFLIP))
dwFlags |= TEX_FR_FLIP_VERTICAL;
assert(dwFlags != 0);
@ -2288,7 +2291,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
sizewarn = true;
}
if (dwOptions & (DWORD64(1) << OPT_FIT_POWEROF2))
if (dwOptions & (uint64_t(1) << OPT_FIT_POWEROF2))
{
FitPowerOf2(info.width, info.height, twidth, theight, maxSize);
}
@ -2648,7 +2651,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Tonemap (if requested) --------------------------------------------------
if (dwOptions & DWORD64(1) << OPT_TONEMAP)
if (dwOptions & uint64_t(1) << OPT_TONEMAP)
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
if (!timage)
@ -2728,7 +2731,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Convert -----------------------------------------------------------------
if (dwOptions & (DWORD64(1) << OPT_NORMAL_MAP))
if (dwOptions & (uint64_t(1) << OPT_NORMAL_MAP))
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
if (!timage)
@ -2816,7 +2819,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- ColorKey/ChromaKey ------------------------------------------------------
if ((dwOptions & (DWORD64(1) << OPT_COLORKEY))
if ((dwOptions & (uint64_t(1) << OPT_COLORKEY))
&& HasAlpha(info.format))
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
@ -2875,7 +2878,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Invert Y Channel --------------------------------------------------------
if (dwOptions & (DWORD64(1) << OPT_INVERT_Y))
if (dwOptions & (uint64_t(1) << OPT_INVERT_Y))
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
if (!timage)
@ -2924,7 +2927,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Reconstruct Z Channel ---------------------------------------------------
if (dwOptions & (DWORD64(1) << OPT_RECONSTRUCT_Z))
if (dwOptions & (uint64_t(1) << OPT_RECONSTRUCT_Z))
{
std::unique_ptr<ScratchImage> timage(new (std::nothrow) ScratchImage);
if (!timage)
@ -3186,7 +3189,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
// --- Premultiplied alpha (if requested) --------------------------------------
if ((dwOptions & (DWORD64(1) << OPT_PREMUL_ALPHA))
if ((dwOptions & (uint64_t(1) << OPT_PREMUL_ALPHA))
&& HasAlpha(info.format)
&& info.format != DXGI_FORMAT_A8_UNORM)
{
@ -3288,7 +3291,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
{
s_tryonce = true;
if (!(dwOptions & (DWORD64(1) << OPT_NOGPU)))
if (!(dwOptions & (uint64_t(1) << OPT_NOGPU)))
{
if (!CreateDevice(adapter, pDevice.GetAddressOf()))
wprintf(L"\nWARNING: DirectCompute is not available, using BC6H / BC7 CPU codec\n");
@ -3307,7 +3310,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
TEX_COMPRESS_FLAGS cflags = dwCompress;
#ifdef _OPENMP
if (!(dwOptions & (DWORD64(1) << OPT_FORCE_SINGLEPROC)))
if (!(dwOptions & (uint64_t(1) << OPT_FORCE_SINGLEPROC)))
{
cflags |= TEX_COMPRESS_PARALLEL;
}
@ -3364,7 +3367,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
{
// Aleady set TEX_ALPHA_MODE_PREMULTIPLIED
}
else if (dwOptions & (DWORD64(1) << OPT_SEPALPHA))
else if (dwOptions & (uint64_t(1) << OPT_SEPALPHA))
{
info.SetAlphaMode(TEX_ALPHA_MODE_CUSTOM);
}
@ -3434,7 +3437,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (*szSuffix)
wcscat_s(szDest, szSuffix);
if (dwOptions & (DWORD64(1) << OPT_TOLOWER))
if (dwOptions & (uint64_t(1) << OPT_TOLOWER))
{
(void)_wcslwr_s(szDest);
}
@ -3450,7 +3453,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
wprintf(L"writing %ls", szDest);
fflush(stdout);
if (~dwOptions & (DWORD64(1) << OPT_OVERWRITE))
if (~dwOptions & (uint64_t(1) << OPT_OVERWRITE))
{
if (GetFileAttributesW(szDest) != INVALID_FILE_ATTRIBUTES)
{
@ -3465,11 +3468,11 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
case CODEC_DDS:
{
DDS_FLAGS ddsFlags = DDS_FLAGS_NONE;
if (dwOptions & (DWORD64(1) << OPT_USE_DX10))
if (dwOptions & (uint64_t(1) << OPT_USE_DX10))
{
ddsFlags |= DDS_FLAGS_FORCE_DX10_EXT | DDS_FLAGS_FORCE_DX10_EXT_MISC2;
}
else if (dwOptions & (DWORD64(1) << OPT_USE_DX9))
else if (dwOptions & (uint64_t(1) << OPT_USE_DX9))
{
ddsFlags |= DDS_FLAGS_FORCE_DX9_LEGACY;
}
@ -3479,7 +3482,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
}
case CODEC_TGA:
hr = SaveToTGAFile(img[0], TGA_FLAGS_NONE, szDest, (dwOptions & (DWORD64(1) << OPT_TGA20)) ? &info : nullptr);
hr = SaveToTGAFile(img[0], TGA_FLAGS_NONE, szDest, (dwOptions & (uint64_t(1) << OPT_TGA20)) ? &info : nullptr);
break;
case CODEC_HDR:
@ -3503,11 +3506,11 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
default:
{
WICCodecs codec = (FileType == CODEC_HDP || FileType == CODEC_JXR) ? WIC_CODEC_WMP : static_cast<WICCodecs>(FileType);
size_t nimages = (dwOptions & (DWORD64(1) << OPT_WIC_MULTIFRAME)) ? nimg : 1;
size_t nimages = (dwOptions & (uint64_t(1) << OPT_WIC_MULTIFRAME)) ? nimg : 1;
hr = SaveToWICFile(img, nimages, WIC_FLAGS_NONE, GetWICCodec(codec), szDest, nullptr,
[&](IPropertyBag2* props)
{
bool wicLossless = (dwOptions & (DWORD64(1) << OPT_WIC_LOSSLESS)) != 0;
bool wicLossless = (dwOptions & (uint64_t(1) << OPT_WIC_LOSSLESS)) != 0;
switch (FileType)
{
@ -3594,7 +3597,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (non4bc)
wprintf(L"\nWARNING: Direct3D requires BC image to be multiple of 4 in width & height\n");
if (dwOptions & (DWORD64(1) << OPT_TIMING))
if (dwOptions & (uint64_t(1) << OPT_TIMING))
{
LARGE_INTEGER qpcEnd;
if (QueryPerformanceCounter(&qpcEnd))

View File

@ -60,7 +60,7 @@ enum COMMANDS
CMD_MAX
};
enum OPTIONS
enum OPTIONS : uint32_t
{
OPT_RECURSIVE = 1,
OPT_FORMAT,
@ -81,7 +81,7 @@ enum OPTIONS
OPT_MAX
};
static_assert(OPT_MAX <= 32, "dwOptions is a DWORD bitfield");
static_assert(OPT_MAX <= 32, "dwOptions is a unsigned int bitfield");
struct SConversion
{
@ -90,8 +90,8 @@ struct SConversion
struct SValue
{
LPCWSTR pName;
DWORD dwValue;
const wchar_t* name;
uint32_t value;
};
//////////////////////////////////////////////////////////////////////////////
@ -375,12 +375,12 @@ namespace
#pragma prefast(disable : 26018, "Only used with static internal arrays")
#endif
DWORD LookupByName(const wchar_t *pName, const SValue *pArray)
uint32_t LookupByName(const wchar_t *pName, const SValue *pArray)
{
while (pArray->pName)
while (pArray->name)
{
if (!_wcsicmp(pName, pArray->pName))
return pArray->dwValue;
if (!_wcsicmp(pName, pArray->name))
return pArray->value;
pArray++;
}
@ -388,12 +388,12 @@ namespace
return 0;
}
const wchar_t* LookupByValue(DWORD pValue, const SValue *pArray)
const wchar_t* LookupByValue(uint32_t pValue, const SValue *pArray)
{
while (pArray->pName)
while (pArray->name)
{
if (pValue == pArray->dwValue)
return pArray->pName;
if (pValue == pArray->value)
return pArray->name;
pArray++;
}
@ -477,20 +477,20 @@ namespace
void PrintFormat(DXGI_FORMAT Format)
{
for (const SValue *pFormat = g_pFormats; pFormat->pName; pFormat++)
for (auto pFormat = g_pFormats; pFormat->name; pFormat++)
{
if (static_cast<DXGI_FORMAT>(pFormat->dwValue) == Format)
if (static_cast<DXGI_FORMAT>(pFormat->value) == Format)
{
wprintf(L"%ls", pFormat->pName);
wprintf(L"%ls", pFormat->name);
return;
}
}
for (const SValue *pFormat = g_pReadOnlyFormats; pFormat->pName; pFormat++)
for (auto pFormat = g_pReadOnlyFormats; pFormat->name; pFormat++)
{
if (static_cast<DXGI_FORMAT>(pFormat->dwValue) == Format)
if (static_cast<DXGI_FORMAT>(pFormat->value) == Format)
{
wprintf(L"%ls", pFormat->pName);
wprintf(L"%ls", pFormat->name);
return;
}
}
@ -500,9 +500,9 @@ namespace
void PrintList(size_t cch, const SValue *pValue)
{
while (pValue->pName)
while (pValue->name)
{
size_t cchName = wcslen(pValue->pName);
size_t cchName = wcslen(pValue->name);
if (cch + cchName + 2 >= 80)
{
@ -510,7 +510,7 @@ namespace
cch = 6;
}
wprintf(L"%ls ", pValue->pName);
wprintf(L"%ls ", pValue->name);
cch += cchName + 2;
pValue++;
}
@ -629,7 +629,7 @@ namespace
HRESULT LoadImage(
const wchar_t *fileName,
DWORD dwOptions,
uint32_t dwOptions,
TEX_FILTER_FLAGS dwFilter,
TexMetadata& info,
std::unique_ptr<ScratchImage>& image)
@ -705,7 +705,7 @@ namespace
}
}
HRESULT SaveImage(const Image* image, const wchar_t *fileName, DWORD codec)
HRESULT SaveImage(const Image* image, const wchar_t *fileName, uint32_t codec)
{
switch (codec)
{
@ -3101,7 +3101,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
int pixelx = -1;
int pixely = -1;
DXGI_FORMAT diffFormat = DXGI_FORMAT_B8G8R8A8_UNORM;
DWORD fileType = WIC_CODEC_BMP;
uint32_t fileType = WIC_CODEC_BMP;
wchar_t szOutputFile[MAX_PATH] = {};
// Initialize COM (needed for WIC)
@ -3119,7 +3119,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 0;
}
DWORD dwCommand = LookupByName(argv[1], g_pCommands);
uint32_t dwCommand = LookupByName(argv[1], g_pCommands);
switch (dwCommand)
{
case CMD_INFO:
@ -3135,7 +3135,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 1;
}
DWORD dwOptions = 0;
uint32_t dwOptions = 0;
std::list<SConversion> conversion;
for (int iArg = 2; iArg < argc; iArg++)
@ -3152,7 +3152,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
if (*pValue)
*pValue++ = 0;
DWORD dwOption = LookupByName(pArg, g_pOptions);
uint32_t dwOption = LookupByName(pArg, g_pOptions);
if (!dwOption || (dwOptions & (1 << dwOption)))
{