@@ -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
15111512UIRenderer::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
23012298void 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