Skip to content

Commit 5c03b83

Browse files
committed
Polish compare HUD size fitting and compact format labels
1 parent 09ddfd5 commit 5c03b83

1 file changed

Lines changed: 38 additions & 39 deletions

File tree

QuickView/UIRenderer.cpp

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,6 +1506,7 @@ namespace {
15061506
static std::wstring ExtractChroma(const std::wstring& details, int& rank);
15071507
static std::wstring BuildFormatFlagsSummary(const std::wstring& details);
15081508
static std::wstring StripQualityFromFormatDetails(const std::wstring& details);
1509+
static void AppendFormatToken(std::wstring& target, const std::wstring& token);
15091510
}
15101511

15111512
UIRenderer::TooltipInfo UIRenderer::GetTooltipInfo(const std::wstring& label) const {
@@ -1604,38 +1605,28 @@ std::vector<InfoRow> UIRenderer::BuildGridRows(const CImageLoader::ImageMetadata
16041605
rows.push_back({ L"\U0001F4BB", L"Soft", metadata.Software, L"", metadata.Software, TruncateMode::EndEllipsis, false });
16051606
}
16061607

1607-
if (!metadata.Format.empty() || !metadata.FormatDetails.empty()) {
1608-
std::wstring formatMain = metadata.Format.empty() ? L"Image" : metadata.Format;
1609-
std::wstring formatSub;
1608+
if (!metadata.Format.empty() || !metadata.FormatDetails.empty()) {
1609+
std::wstring formatText = metadata.Format.empty() ? L"Image" : metadata.Format;
1610+
std::wstring formatTokens;
16101611

1611-
int chromaRank = -1;
1612-
std::wstring chroma = ExtractChroma(metadata.FormatDetails, chromaRank);
1613-
if (chroma != L"-") formatSub += chroma;
1612+
int chromaRank = -1;
1613+
std::wstring chroma = ExtractChroma(metadata.FormatDetails, chromaRank);
1614+
std::wstring bitDepth = ExtractBitDepth(metadata.FormatDetails);
1615+
std::wstring quality = ExtractQualityEstimate(metadata.FormatDetails);
1616+
std::wstring formatFlags = BuildFormatFlagsSummary(metadata.FormatDetails);
16141617

1615-
std::wstring quality = ExtractQualityEstimate(metadata.FormatDetails);
1616-
if (quality != L"-") {
1617-
if (!formatSub.empty()) formatSub += L" ";
1618-
formatSub += quality;
1619-
}
1620-
1621-
std::wstring bitDepth = ExtractBitDepth(metadata.FormatDetails);
1622-
if (bitDepth != L"-") {
1623-
if (!formatSub.empty()) formatSub += L" ";
1624-
formatSub += bitDepth;
1625-
}
1626-
1627-
std::wstring formatFlags = BuildFormatFlagsSummary(metadata.FormatDetails);
1628-
if (!formatFlags.empty()) {
1629-
if (!formatSub.empty()) formatSub += L" ";
1630-
formatSub += formatFlags;
1631-
}
1618+
AppendFormatToken(formatTokens, bitDepth == L"-" ? L"" : bitDepth);
1619+
AppendFormatToken(formatTokens, chroma == L"-" ? L"" : chroma);
1620+
AppendFormatToken(formatTokens, quality == L"-" ? L"" : quality);
1621+
AppendFormatToken(formatTokens, formatFlags);
16321622

1633-
if (formatSub.empty() && !metadata.FormatDetails.empty() && metadata.FormatDetails != metadata.Format) {
1634-
formatSub = metadata.FormatDetails;
1635-
}
1623+
if (formatTokens.empty() && !metadata.FormatDetails.empty() && metadata.FormatDetails != metadata.Format) {
1624+
formatTokens = metadata.FormatDetails;
1625+
}
16361626

1637-
rows.push_back({ L"\U0001F39E", L"Format", formatMain, formatSub, metadata.FormatDetails, TruncateMode::None, false });
1638-
}
1627+
AppendFormatToken(formatText, formatTokens);
1628+
rows.push_back({ L"\U0001F39E", L"Format", formatText, L"", metadata.FormatDetails, TruncateMode::EndEllipsis, false });
1629+
}
16391630

16401631
// Advanced Metrics at the very bottom (only for HUD/Geek mode)
16411632
if (showAdvanced) {
@@ -2259,7 +2250,7 @@ namespace {
22592250
std::wstring summary;
22602251
auto append = [&](const wchar_t* token) {
22612252
if (!HasFormatFlag(details, token)) return;
2262-
if (!summary.empty()) summary += L" ";
2253+
if (!summary.empty()) summary += L" ";
22632254
summary += token;
22642255
};
22652256

@@ -2268,7 +2259,7 @@ namespace {
22682259
append(L"Alpha");
22692260
append(L"Anim");
22702261
append(L"Prog");
2271-
append(L"[Scaled]");
2262+
append(L"Scaled");
22722263
return summary;
22732264
}
22742265

@@ -2296,6 +2287,12 @@ namespace {
22962287
if (!stripped.empty() && stripped.back() == L' ') stripped.pop_back();
22972288
return stripped;
22982289
}
2290+
2291+
static void AppendFormatToken(std::wstring& target, const std::wstring& token) {
2292+
if (token.empty()) return;
2293+
if (!target.empty()) target += L" ";
2294+
target += token;
2295+
}
22992296
}
23002297

23012298
void UIRenderer::DrawCompareInfoHUD(ID2D1DeviceContext* dc) {
@@ -2520,15 +2517,17 @@ void UIRenderer::DrawCompareInfoHUD(ID2D1DeviceContext* dc) {
25202517
const float labelW = 74.0f * s;
25212518
const float valGap = 4.0f * s;
25222519

2523-
float desiredValW = 120.0f * s;
2524-
const InfoRow* leftSizeRow = nullptr;
2525-
const InfoRow* rightSizeRow = nullptr;
2526-
for (const auto& r : leftRows) if (r.label == L"Size") { leftSizeRow = &r; break; }
2527-
for (const auto& r : rightRows) if (r.label == L"Size") { rightSizeRow = &r; break; }
2528-
std::wstring leftSizeText = GetHudRowText(leftSizeRow);
2529-
std::wstring rightSizeText = GetHudRowText(rightSizeRow);
2530-
if (!leftSizeText.empty()) desiredValW = (std::max)(desiredValW, MeasureTextWidth(leftSizeText, m_debugFormat.Get()) + 10.0f * s);
2531-
if (!rightSizeText.empty()) desiredValW = (std::max)(desiredValW, MeasureTextWidth(rightSizeText, m_debugFormat.Get()) + 10.0f * s);
2520+
float desiredValW = 120.0f * s;
2521+
const InfoRow* leftSizeRow = nullptr;
2522+
const InfoRow* rightSizeRow = nullptr;
2523+
for (const auto& r : leftRows) if (r.label == L"Size") { leftSizeRow = &r; break; }
2524+
for (const auto& r : rightRows) if (r.label == L"Size") { rightSizeRow = &r; break; }
2525+
std::wstring leftSizeText = GetHudRowText(leftSizeRow);
2526+
std::wstring rightSizeText = GetHudRowText(rightSizeRow);
2527+
float sizeArrowReserve = MeasureTextWidth(L"", m_debugFormat.Get()) + 4.0f * s;
2528+
float sizeSafetyPadding = 6.0f * s;
2529+
if (!leftSizeText.empty()) desiredValW = (std::max)(desiredValW, MeasureTextWidth(leftSizeText, m_debugFormat.Get()) + sizeArrowReserve + sizeSafetyPadding);
2530+
if (!rightSizeText.empty()) desiredValW = (std::max)(desiredValW, MeasureTextWidth(rightSizeText, m_debugFormat.Get()) + sizeArrowReserve + sizeSafetyPadding);
25322531

25332532
const float minPanelW = 400.0f * s;
25342533
const float maxPanelW = m_width - 20.0f * s;

0 commit comments

Comments
 (0)