From 59e82bb87b97b86061d6ca3eb64a67b95a6445db Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Tue, 17 Sep 2024 14:07:26 -0700 Subject: [PATCH] Update for CmdLineHelpers.h refactor --- CMakeLists.txt | 3 +- Texenvmap/Texenvmap_Desktop_2019.vcxproj | 19 +- .../Texenvmap_Desktop_2019.vcxproj.filters | 11 +- .../Texenvmap_Desktop_2019_Win10.vcxproj | 25 +- ...xenvmap_Desktop_2019_Win10.vcxproj.filters | 7 +- Texenvmap/Texenvmap_Desktop_2022.vcxproj | 19 +- .../Texenvmap_Desktop_2022.vcxproj.filters | 7 +- .../Texenvmap_Desktop_2022_Win10.vcxproj | 25 +- ...xenvmap_Desktop_2022_Win10.vcxproj.filters | 7 +- Texenvmap/directx.ico | Bin 25214 -> 0 bytes Texenvmap/settings.manifest | 21 -- Texenvmap/texenvmap.cpp | 343 ++---------------- Texenvmap/texenvmap.rc | 2 +- 13 files changed, 111 insertions(+), 378 deletions(-) delete mode 100644 Texenvmap/directx.ico delete mode 100644 Texenvmap/settings.manifest diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c024b2..92212dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -477,7 +477,8 @@ if(BUILD_TOOLS AND BUILD_DX11 AND WIN32) add_executable(texenvmap Texenvmap/texenvmap.cpp Texenvmap/texenvmap.rc - Texenvmap/settings.manifest + Common/CmdLineHelpers.h + Common/settings.manifest ${COMPILED_SHADERS}/Texenvmap_VSBasic.inc) target_compile_features(texenvmap PRIVATE cxx_std_17) target_include_directories(texenvmap PRIVATE ${COMPILED_SHADERS}) diff --git a/Texenvmap/Texenvmap_Desktop_2019.vcxproj b/Texenvmap/Texenvmap_Desktop_2019.vcxproj index 39b80d1..6f99b0b 100644 --- a/Texenvmap/Texenvmap_Desktop_2019.vcxproj +++ b/Texenvmap/Texenvmap_Desktop_2019.vcxproj @@ -134,7 +134,7 @@ MultiThreadedDebugDLL Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -159,7 +159,7 @@ Disabled MultiThreadedDebugDLL Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -183,7 +183,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) Guard true @@ -210,7 +210,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) Guard true @@ -237,7 +237,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -264,7 +264,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -297,10 +297,13 @@ - + - + + + + diff --git a/Texenvmap/Texenvmap_Desktop_2019.vcxproj.filters b/Texenvmap/Texenvmap_Desktop_2019.vcxproj.filters index 4658588..92e57ed 100644 --- a/Texenvmap/Texenvmap_Desktop_2019.vcxproj.filters +++ b/Texenvmap/Texenvmap_Desktop_2019.vcxproj.filters @@ -15,11 +15,14 @@ - + + + + + + + Resource Files - - - \ No newline at end of file diff --git a/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj b/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj index 2c44329..4734792 100644 --- a/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj +++ b/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj @@ -191,7 +191,7 @@ MultiThreadedDebugDLL Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -216,7 +216,7 @@ Disabled MultiThreadedDebugDLL Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -240,7 +240,7 @@ Disabled MultiThreadedDebugDLL Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -263,7 +263,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) Guard true @@ -290,7 +290,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) Guard true @@ -316,7 +316,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) Guard true @@ -342,7 +342,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -369,7 +369,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -395,7 +395,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -427,10 +427,13 @@ - + - + + + + diff --git a/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj.filters b/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj.filters index 4658588..9f03f10 100644 --- a/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj.filters +++ b/Texenvmap/Texenvmap_Desktop_2019_Win10.vcxproj.filters @@ -15,11 +15,14 @@ - + + + + Resource Files - + \ No newline at end of file diff --git a/Texenvmap/Texenvmap_Desktop_2022.vcxproj b/Texenvmap/Texenvmap_Desktop_2022.vcxproj index 3031d7f..284cc64 100644 --- a/Texenvmap/Texenvmap_Desktop_2022.vcxproj +++ b/Texenvmap/Texenvmap_Desktop_2022.vcxproj @@ -134,7 +134,7 @@ MultiThreadedDebugDLL Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -159,7 +159,7 @@ Disabled MultiThreadedDebugDLL Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -183,7 +183,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) Guard true @@ -210,7 +210,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) Guard true @@ -237,7 +237,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -264,7 +264,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions) true true @@ -297,10 +297,13 @@ - + - + + + + diff --git a/Texenvmap/Texenvmap_Desktop_2022.vcxproj.filters b/Texenvmap/Texenvmap_Desktop_2022.vcxproj.filters index 4658588..9f03f10 100644 --- a/Texenvmap/Texenvmap_Desktop_2022.vcxproj.filters +++ b/Texenvmap/Texenvmap_Desktop_2022.vcxproj.filters @@ -15,11 +15,14 @@ - + + + + Resource Files - + \ No newline at end of file diff --git a/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj b/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj index 01ffc00..0616d04 100644 --- a/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj +++ b/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj @@ -191,7 +191,7 @@ MultiThreadedDebugDLL Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -216,7 +216,7 @@ Disabled MultiThreadedDebugDLL Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -240,7 +240,7 @@ Disabled MultiThreadedDebugDLL Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -263,7 +263,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) Guard true @@ -290,7 +290,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) Guard true @@ -316,7 +316,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) Guard true @@ -342,7 +342,7 @@ MaxSpeed Fast StreamingSIMDExtensions2 - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -369,7 +369,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -395,7 +395,7 @@ Level4 MaxSpeed Fast - $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\DirectXTex;%(AdditionalIncludeDirectories) + $(ProjectDir);$(ProjectDir)Shaders\Compiled;..\Common;..\DirectXTex;%(AdditionalIncludeDirectories) WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions) true true @@ -427,10 +427,13 @@ - + - + + + + diff --git a/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj.filters b/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj.filters index 4658588..9f03f10 100644 --- a/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj.filters +++ b/Texenvmap/Texenvmap_Desktop_2022_Win10.vcxproj.filters @@ -15,11 +15,14 @@ - + + + + Resource Files - + \ No newline at end of file diff --git a/Texenvmap/directx.ico b/Texenvmap/directx.ico deleted file mode 100644 index bc43c1b2085df668dffff26d80adcb0ef73f23a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25214 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 - - - - - - - - - - - - - - - - - true - - - diff --git a/Texenvmap/texenvmap.cpp b/Texenvmap/texenvmap.cpp index 7428166..0b5598d 100644 --- a/Texenvmap/texenvmap.cpp +++ b/Texenvmap/texenvmap.cpp @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include @@ -77,11 +76,18 @@ #include "DirectXTexPNG.h" #endif +#define TOOL_VERSION DIRECTX_TEX_VERSION +#include "CmdLineHelpers.h" + +using namespace Helpers; using namespace DirectX; using Microsoft::WRL::ComPtr; namespace { + const wchar_t* g_ToolName = L"texenvmap"; + const wchar_t* g_Description = L"Microsoft (R) DirectX Environment Map Tool [DirectXTex]"; + enum COMMANDS : uint32_t { CMD_CUBIC = 1, @@ -117,22 +123,11 @@ namespace static_assert(OPT_MAX <= 32, "dwOptions is a unsigned int bitfield"); - struct SConversion - { - std::wstring szSrc; - }; - - struct SValue - { - const wchar_t* name; - uint32_t value; - }; - ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// - const SValue g_pCommands[] = + const SValue g_pCommands[] = { { L"cubic", CMD_CUBIC }, { L"sphere", CMD_SPHERE }, @@ -140,7 +135,7 @@ namespace { nullptr, 0 } }; - const SValue g_pOptions[] = + const SValue g_pOptions[] = { { L"r", OPT_RECURSIVE }, { L"flist", OPT_FILELIST }, @@ -165,9 +160,9 @@ namespace { nullptr, 0 } }; -#define DEFFMT(fmt) { L## #fmt, DXGI_FORMAT_ ## fmt } + #define DEFFMT(fmt) { L## #fmt, DXGI_FORMAT_ ## fmt } - const SValue g_pFormats[] = + const SValue g_pFormats[] = { // List only includes render target supported formats DEFFMT(R32G32B32A32_FLOAT), @@ -197,7 +192,9 @@ namespace { nullptr, DXGI_FORMAT_UNKNOWN } }; - const SValue g_pFormatAliases[] = + #undef DEFFMT + + const SValue g_pFormatAliases[] = { { L"RGBA", DXGI_FORMAT_R8G8B8A8_UNORM }, { L"BGRA", DXGI_FORMAT_B8G8R8A8_UNORM }, @@ -209,7 +206,7 @@ namespace { nullptr, DXGI_FORMAT_UNKNOWN } }; - const SValue g_pFilters[] = + const SValue g_pFilters[] = { { L"POINT", TEX_FILTER_POINT }, { L"LINEAR", TEX_FILTER_LINEAR }, @@ -246,7 +243,7 @@ namespace #define CODEC_PNG 0xFFFF0008 #endif - const SValue g_pExtFileTypes[] = + const SValue g_pExtFileTypes[] = { { L".BMP", WIC_CODEC_BMP }, #ifdef USE_LIBJPEG @@ -293,183 +290,6 @@ namespace namespace { - inline HANDLE safe_handle(HANDLE h) noexcept { return (h == INVALID_HANDLE_VALUE) ? nullptr : h; } - - struct find_closer { void operator()(HANDLE h) noexcept { assert(h != INVALID_HANDLE_VALUE); if (h) FindClose(h); } }; - - using ScopedFindHandle = std::unique_ptr; - -#ifdef _PREFAST_ -#pragma prefast(disable : 26018, "Only used with static internal arrays") -#endif - - uint32_t LookupByName(const wchar_t *pName, const SValue *pArray) - { - while (pArray->name) - { - if (!_wcsicmp(pName, pArray->name)) - return pArray->value; - - pArray++; - } - - return 0; - } - - void SearchForFiles(const std::filesystem::path& path, std::list& files, bool recursive) - { - // Process files - WIN32_FIND_DATAW findData = {}; - ScopedFindHandle hFile(safe_handle(FindFirstFileExW(path.c_str(), - FindExInfoBasic, &findData, - FindExSearchNameMatch, nullptr, - FIND_FIRST_EX_LARGE_FETCH))); - if (hFile) - { - for (;;) - { - if (!(findData.dwFileAttributes & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY))) - { - SConversion conv = {}; - conv.szSrc = path.parent_path().append(findData.cFileName).native(); - files.push_back(conv); - } - - if (!FindNextFileW(hFile.get(), &findData)) - break; - } - } - - // Process directories - if (recursive) - { - auto searchDir = path.parent_path().append(L"*"); - - hFile.reset(safe_handle(FindFirstFileExW(searchDir.c_str(), - FindExInfoBasic, &findData, - FindExSearchLimitToDirectories, nullptr, - FIND_FIRST_EX_LARGE_FETCH))); - if (!hFile) - return; - - for (;;) - { - if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { - if (findData.cFileName[0] != L'.') - { - auto subdir = path.parent_path().append(findData.cFileName).append(path.filename().c_str()); - - SearchForFiles(subdir, files, recursive); - } - } - - if (!FindNextFileW(hFile.get(), &findData)) - break; - } - } - } - - void ProcessFileList(std::wifstream& inFile, std::list& files) - { - std::list flist; - std::set excludes; - - for (;;) - { - std::wstring fname; - std::getline(inFile, fname); - if (!inFile) - break; - - if (fname[0] == L'#') - { - // Comment - } - else if (fname[0] == L'-') - { - if (flist.empty()) - { - wprintf(L"WARNING: Ignoring the line '%ls' in -flist\n", fname.c_str()); - } - else - { - std::filesystem::path path(fname.c_str() + 1); - auto& npath = path.make_preferred(); - if (wcspbrk(fname.c_str(), L"?*") != nullptr) - { - std::list removeFiles; - SearchForFiles(npath, removeFiles, false); - - for (auto& it : removeFiles) - { - std::wstring name = it.szSrc; - std::transform(name.begin(), name.end(), name.begin(), towlower); - excludes.insert(name); - } - } - else - { - std::wstring name = npath.c_str(); - std::transform(name.begin(), name.end(), name.begin(), towlower); - excludes.insert(name); - } - } - } - else if (wcspbrk(fname.c_str(), L"?*") != nullptr) - { - std::filesystem::path path(fname.c_str()); - SearchForFiles(path.make_preferred(), flist, false); - } - else - { - SConversion conv = {}; - std::filesystem::path path(fname.c_str()); - conv.szSrc = path.make_preferred().native(); - flist.push_back(conv); - } - } - - inFile.close(); - - if (!excludes.empty()) - { - // Remove any excluded files - for (auto it = flist.begin(); it != flist.end();) - { - std::wstring name = it->szSrc; - std::transform(name.begin(), name.end(), name.begin(), towlower); - auto item = it; - ++it; - if (excludes.find(name) != excludes.end()) - { - flist.erase(item); - } - } - } - - if (flist.empty()) - { - wprintf(L"WARNING: No file names found in -flist\n"); - } - else - { - files.splice(files.end(), flist); - } - } - - void PrintFormat(DXGI_FORMAT Format) - { - for (auto pFormat = g_pFormats; pFormat->name; pFormat++) - { - if (static_cast(pFormat->value) == Format) - { - wprintf(L"%ls", pFormat->name); - break; - } - } - } - void PrintInfo(const TexMetadata& info) { wprintf(L" (%zux%zu", info.width, info.height); @@ -484,7 +304,7 @@ namespace wprintf(L",%zu", info.arraySize); wprintf(L" "); - PrintFormat(info.format); + PrintFormat(info.format, g_pFormats); switch (info.dimension) { @@ -529,106 +349,6 @@ namespace wprintf(L")"); } - void PrintList(size_t cch, const SValue *pValue) - { - while (pValue->name) - { - const size_t cchName = wcslen(pValue->name); - - if (cch + cchName + 2 >= 80) - { - wprintf(L"\n "); - cch = 6; - } - - wprintf(L"%ls ", pValue->name); - cch += cchName + 2; - pValue++; - } - - wprintf(L"\n"); - } - - void PrintLogo(bool versionOnly) - { - wchar_t version[32] = {}; - - wchar_t appName[_MAX_PATH] = {}; - if (GetModuleFileNameW(nullptr, appName, _MAX_PATH)) - { - const DWORD size = GetFileVersionInfoSizeW(appName, nullptr); - if (size > 0) - { - auto verInfo = std::make_unique(size); - if (GetFileVersionInfoW(appName, 0, size, verInfo.get())) - { - LPVOID lpstr = nullptr; - UINT strLen = 0; - if (VerQueryValueW(verInfo.get(), L"\\StringFileInfo\\040904B0\\ProductVersion", &lpstr, &strLen)) - { - wcsncpy_s(version, reinterpret_cast(lpstr), strLen); - } - } - } - } - - if (!*version || wcscmp(version, L"1.0.0.0") == 0) - { - swprintf_s(version, L"%03d (library)", DIRECTX_TEX_VERSION); - } - - if (versionOnly) - { - wprintf(L"texenvmap version %ls\n", version); - } - else - { - wprintf(L"Microsoft (R) DirectX Environment Map Tool [DirectXTex] Version %ls\n", version); - wprintf(L"Copyright (C) Microsoft Corp.\n"); - #ifdef _DEBUG - wprintf(L"*** Debug build ***\n"); - #endif - wprintf(L"\n"); - } - } - - const wchar_t* GetErrorDesc(HRESULT hr) - { - static wchar_t desc[1024] = {}; - - LPWSTR errorText = nullptr; - - const DWORD result = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER, - nullptr, static_cast(hr), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&errorText), 0, nullptr); - - *desc = 0; - - if (result > 0 && errorText) - { - swprintf_s(desc, L": %ls", errorText); - - size_t len = wcslen(desc); - if (len >= 1) - { - desc[len - 1] = 0; - } - - if (errorText) - LocalFree(errorText); - - for (wchar_t* ptr = desc; *ptr != 0; ++ptr) - { - if (*ptr == L'\r' || *ptr == L'\n') - { - *ptr = L' '; - } - } - } - - return desc; - } - _Success_(return != false) bool GetDXGIFactory(_Outptr_ IDXGIFactory1** pFactory) noexcept { @@ -655,10 +375,9 @@ namespace return SUCCEEDED(s_CreateDXGIFactory1(IID_PPV_ARGS(pFactory))); } - void PrintUsage() { - PrintLogo(false); + PrintLogo(false, g_ToolName, g_Description); static const wchar_t* const s_usage = L"Usage: texenvmap [--] \n\n" @@ -714,7 +433,6 @@ namespace } } - _Success_(return != false) bool CreateDevice(int adapter, _Outptr_ ID3D11Device** pDevice) noexcept { @@ -1329,9 +1047,6 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) // Set locale for output since GetErrorDesc can get localized strings. std::locale::global(std::locale("")); - // Set locale for output since GetErrorDesc can get localized strings. - std::locale::global(std::locale("")); - // Initialize COM (needed for WIC) HRESULT hr = hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); if (FAILED(hr)) @@ -1347,6 +1062,20 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) return 0; } + if (('-' == argv[1][0]) && ('-' == argv[1][1])) + { + if (!_wcsicmp(argv[1], L"--version")) + { + PrintLogo(true, g_ToolName, g_Description); + return 0; + } + else if (!_wcsicmp(argv[1], L"--help")) + { + PrintUsage(); + return 0; + } + } + const uint32_t dwCommand = LookupByName(argv[1], g_pCommands); switch (dwCommand) { @@ -1379,7 +1108,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) } else if (!_wcsicmp(pArg, L"--version")) { - PrintLogo(true); + PrintLogo(true, g_ToolName, g_Description); return 0; } else if (!_wcsicmp(pArg, L"--help")) @@ -1574,7 +1303,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) { const size_t count = conversion.size(); std::filesystem::path path(pArg); - SearchForFiles(path.make_preferred(), conversion, (dwOptions & (1 << OPT_RECURSIVE)) != 0); + SearchForFiles(path.make_preferred(), conversion, (dwOptions & (1 << OPT_RECURSIVE)) != 0, nullptr); if (conversion.size() <= count) { wprintf(L"No matching files found for %ls\n", pArg); @@ -1597,7 +1326,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) } if (~dwOptions & (1 << OPT_NOLOGO)) - PrintLogo(false); + PrintLogo(false, g_ToolName, g_Description); ComPtr pDevice; if (!CreateDevice(adapter, pDevice.GetAddressOf())) @@ -1641,7 +1370,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) if (FAILED(hr) || ((support & required) != required)) { wprintf(L"\nERROR: Direct3D device does not support format as a render target (DXGI_FORMAT_"); - PrintFormat(format); + PrintFormat(format, g_pFormats); wprintf(L")\n"); return 1; } diff --git a/Texenvmap/texenvmap.rc b/Texenvmap/texenvmap.rc index 31e6500..d12b573 100644 --- a/Texenvmap/texenvmap.rc +++ b/Texenvmap/texenvmap.rc @@ -28,7 +28,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. -IDI_MAIN_ICON ICON "directx.ico" +IDI_MAIN_ICON ICON "..\\Common\\directx.ico" #ifdef APSTUDIO_INVOKED