diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-03-27 12:37:04 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-03-27 15:39:05 -0400 |
| commit | 2da8d98b2f94a33e337d37dc7153e5ba445961f3 (patch) | |
| tree | 518f28e986c09058f851515ea47d6668fec5627b /Source/Core/VideoCommon/HiresTextures.cpp | |
| parent | d5a1edba09f95b868c03879a4c05ffef9a3d80d8 (diff) | |
HiresTextures: Use std::minmax or std::minmax_element where applicable in GenBaseName()
Minimizes repetition.
std::minmax_element can be used for the 256 * 2 case, as it's only performing byte comparisons
and thus, there will always be an element smaller than 0xffff, so it doesn't need to be included
in the set of compared values.
Diffstat (limited to 'Source/Core/VideoCommon/HiresTextures.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/HiresTextures.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 9df399365f..c74b4e617d 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -12,6 +12,7 @@ #include <mutex> #include <string> #include <thread> +#include <tuple> #include <unordered_map> #include <utility> #include <vector> @@ -229,25 +230,23 @@ std::string HiresTexture::GenBaseName(const u8* texture, size_t texture_size, co case 16 * 2: for (size_t i = 0; i < texture_size; i++) { - min = std::min<u32>(min, texture[i] & 0xf); - min = std::min<u32>(min, texture[i] >> 4); - max = std::max<u32>(max, texture[i] & 0xf); - max = std::max<u32>(max, texture[i] >> 4); + const u32 low_nibble = texture[i] & 0xf; + const u32 high_nibble = texture[i] >> 4; + std::tie(min, max) = std::minmax({min, max, low_nibble, high_nibble}); } break; case 256 * 2: - for (size_t i = 0; i < texture_size; i++) - { - min = std::min<u32>(min, texture[i]); - max = std::max<u32>(max, texture[i]); - } + { + const auto minmax = std::minmax_element(texture, texture + texture_size); + min = *minmax.first; + max = *minmax.second; break; + } case 16384 * 2: for (size_t i = 0; i < texture_size; i += sizeof(u16)) { - const u16 texture_halfword = Common::swap16(texture[i]) & 0x3fff; - min = std::min<u32>(min, texture_halfword); - max = std::max<u32>(max, texture_halfword); + const u32 texture_halfword = Common::swap16(texture[i]) & 0x3fff; + std::tie(min, max) = std::minmax({min, max, texture_halfword}); } break; } |
