FullscreenUI: Tweak separator style

pull/3799/head
Stenzek 1 week ago
parent 8c6ff3bfc7
commit b5f0fb9c36
No known key found for this signature in database

@ -2541,7 +2541,7 @@ void FullscreenUI::DrawAchievement(const rc_client_achievement_t* cheevo, const
// unofficial can't be unlocked so don't show the percentage
if (!is_unofficial)
{
text.append(" | ");
text.append(" \u2022 ");
text.append_format(TRANSLATE_FS("Achievements", "{:.1f}% of players have this achievement"), rarity_to_display);
}

@ -475,9 +475,14 @@ void FullscreenUI::DrawGameList(const ImVec2& heading_size)
if (!compact_mode)
{
if (entry->serial.empty())
summary.format("{} | {} MB", Path::GetFileName(entry->path), to_mb(entry->file_size));
{
summary.format("{} \u2022 {} MB", Path::GetFileName(entry->path), to_mb(entry->file_size));
}
else
summary.format("{} | {} | {} MB", entry->serial, Path::GetFileName(entry->path), to_mb(entry->file_size));
{
summary.format("{} \u2022 {} \u2022 {} MB", entry->serial, Path::GetFileName(entry->path),
to_mb(entry->file_size));
}
}
const MenuButtonBounds mbb(entry->GetDisplayTitle(show_localized_titles), {}, summary, row_left_margin);
@ -1103,7 +1108,7 @@ void FullscreenUI::HandleSelectDiscForDiscSet(const GameDatabase::DiscSetEntry*
for (u32 i = 0; i < static_cast<u32>(entries.size()); i++)
{
const GameList::Entry* const entry = entries[i];
std::string title = fmt::format(ICON_FA_COMPACT_DISC " {} {} | {}##{}", FSUI_VSTR("Disc"),
std::string title = fmt::format(ICON_FA_COMPACT_DISC " {} {} \u2022 {}##{}", FSUI_VSTR("Disc"),
entry->disc_set_index + 1, Path::GetFileName(entry->path), i);
options.emplace_back(std::move(title), false);
paths.push_back(entry->path);

@ -2481,6 +2481,8 @@ void FullscreenUI::DrawSummarySettingsTrackList()
void FullscreenUI::PopulateImageTrackList()
{
#define DOT_SEP " \u2022 "
s_settings_locals.image_track_list.clear();
s_settings_locals.image_track_summary.clear();
@ -2498,14 +2500,16 @@ void FullscreenUI::PopulateImageTrackList()
for (u32 track = 1; track <= num_tracks; track++)
{
const CDImage::TrackMode mode = image->GetTrackMode(static_cast<u8>(track));
s_settings_locals.image_track_list.push_back(
{fmt::format(FSUI_FSTR("{} | Start: {} | Length: {}"), CDImage::GetTrackModeDisplayName(mode),
image->GetTrackStartMSFPosition(static_cast<u8>(track)).ToString(),
image->GetTrackMSFLength(static_cast<u8>(track)).ToString()),
{},
{},
mode == CDImage::TrackMode::Audio});
SmallString summary;
summary.assign(CDImage::GetTrackModeDisplayName(mode));
summary.append(DOT_SEP);
summary.append_format(FSUI_FSTR("Start: {}"), image->GetTrackStartMSFPosition(static_cast<u8>(track)).ToString());
summary.append(DOT_SEP);
summary.append_format(FSUI_FSTR("Length: {}"), image->GetTrackMSFLength(static_cast<u8>(track)).ToString());
s_settings_locals.image_track_list.push_back({std::string(summary), {}, {}, mode == CDImage::TrackMode::Audio});
}
#undef DOT_SEP
}
void FullscreenUI::StartImageVerification()
@ -5113,6 +5117,8 @@ void FullscreenUI::DrawPostProcessingSettingsPage()
if (opt.ShouldHide())
continue;
#define DOT_SEP " \u2022 "
switch (opt.type)
{
case PostProcessing::ShaderOption::Type::Bool:
@ -5135,8 +5141,14 @@ void FullscreenUI::DrawPostProcessingSettingsPage()
case PostProcessing::ShaderOption::Type::Float:
{
tstr.format(ICON_FA_RULER_VERTICAL " {}###{}", opt.ui_name, opt.name);
str.format(FSUI_FSTR("Value: {} | Default: {} | Minimum: {} | Maximum: {}"), opt.value[0].float_value,
opt.default_value[0].float_value, opt.min_value[0].float_value, opt.max_value[0].float_value);
str.format(FSUI_FSTR("Value: {}"), opt.value[0].float_value);
str.append(DOT_SEP);
str.append_format(FSUI_FSTR("Default: {}"), opt.default_value[0].float_value);
str.append(DOT_SEP);
str.append_format(FSUI_FSTR("Minimum: {}"), opt.min_value[0].float_value);
str.append(DOT_SEP);
str.append_format(FSUI_FSTR("Maximum: {}"), opt.max_value[0].float_value);
str.append(DOT_SEP);
if (MenuButton(tstr, str))
OpenFixedPopupDialog(tstr);
@ -5203,8 +5215,14 @@ void FullscreenUI::DrawPostProcessingSettingsPage()
case PostProcessing::ShaderOption::Type::Int:
{
tstr.format(ICON_FA_RULER_VERTICAL " {}##{}", opt.ui_name, opt.name);
str.format(FSUI_FSTR("Value: {} | Default: {} | Minimum: {} | Maximum: {}"), opt.value[0].int_value,
opt.default_value[0].int_value, opt.min_value[0].int_value, opt.max_value[0].int_value);
str.format(FSUI_FSTR("Value: {}"), opt.value[0].int_value);
str.append(DOT_SEP);
str.append_format(FSUI_FSTR("Default: {}"), opt.default_value[0].int_value);
str.append(DOT_SEP);
str.append_format(FSUI_FSTR("Minimum: {}"), opt.min_value[0].int_value);
str.append(DOT_SEP);
str.append_format(FSUI_FSTR("Maximum: {}"), opt.max_value[0].int_value);
str.append(DOT_SEP);
if (MenuButton(tstr, str))
OpenFixedPopupDialog(tstr);
@ -5268,6 +5286,8 @@ void FullscreenUI::DrawPostProcessingSettingsPage()
default:
break;
}
#undef DOT_SEP
}
ImGui::PopID();

@ -226,6 +226,7 @@ TRANSLATE_NOOP("FullscreenUI", "Default Value");
TRANSLATE_NOOP("FullscreenUI", "Default View");
TRANSLATE_NOOP("FullscreenUI", "Default: Disabled");
TRANSLATE_NOOP("FullscreenUI", "Default: Enabled");
TRANSLATE_NOOP("FullscreenUI", "Default: {}");
TRANSLATE_NOOP("FullscreenUI", "Deinterlacing Mode");
TRANSLATE_NOOP("FullscreenUI", "Delete");
TRANSLATE_NOOP("FullscreenUI", "Delete And Boot");
@ -470,6 +471,7 @@ TRANSLATE_NOOP("FullscreenUI", "Leaderboard Notifications");
TRANSLATE_NOOP("FullscreenUI", "Leaderboard Trackers");
TRANSLATE_NOOP("FullscreenUI", "Leaderboards");
TRANSLATE_NOOP("FullscreenUI", "Left: ");
TRANSLATE_NOOP("FullscreenUI", "Length: {}");
TRANSLATE_NOOP("FullscreenUI", "Light");
TRANSLATE_NOOP("FullscreenUI", "Line Detection");
TRANSLATE_NOOP("FullscreenUI", "List Compact Mode");
@ -504,6 +506,7 @@ TRANSLATE_NOOP("FullscreenUI", "Makes games run closer to their console framerat
TRANSLATE_NOOP("FullscreenUI", "Maximum (Safer)");
TRANSLATE_NOOP("FullscreenUI", "Maximum Read Speedup Cycles");
TRANSLATE_NOOP("FullscreenUI", "Maximum Seek Speedup Cycles");
TRANSLATE_NOOP("FullscreenUI", "Maximum: {}");
TRANSLATE_NOOP("FullscreenUI", "Memory Card Busy");
TRANSLATE_NOOP("FullscreenUI", "Memory Card Directory");
TRANSLATE_NOOP("FullscreenUI", "Memory Card Port {}");
@ -515,6 +518,7 @@ TRANSLATE_NOOP("FullscreenUI", "Merge Multi-Disc Games");
TRANSLATE_NOOP("FullscreenUI", "Merges multi-disc games into one item in the game list.");
TRANSLATE_NOOP("FullscreenUI", "Message Location");
TRANSLATE_NOOP("FullscreenUI", "Minimal Output Latency");
TRANSLATE_NOOP("FullscreenUI", "Minimum: {}");
TRANSLATE_NOOP("FullscreenUI", "Move Cursor");
TRANSLATE_NOOP("FullscreenUI", "Move Down");
TRANSLATE_NOOP("FullscreenUI", "Move Up");
@ -822,6 +826,7 @@ TRANSLATE_NOOP("FullscreenUI", "Start Game");
TRANSLATE_NOOP("FullscreenUI", "Start In Big Picture Mode");
TRANSLATE_NOOP("FullscreenUI", "Start a game from a disc in your PC's DVD drive.");
TRANSLATE_NOOP("FullscreenUI", "Start the console without any disc inserted.");
TRANSLATE_NOOP("FullscreenUI", "Start: {}");
TRANSLATE_NOOP("FullscreenUI", "Starts the application in Big Picture Mode instead of the desktop interface.");
TRANSLATE_NOOP("FullscreenUI", "Stores the current settings to a controller preset.");
TRANSLATE_NOOP("FullscreenUI", "Stretch Mode");
@ -910,7 +915,7 @@ TRANSLATE_NOOP("FullscreenUI", "Uses separate game settings for each disc of mul
TRANSLATE_NOOP("FullscreenUI", "Uses the software renderer when creating rewind states to prevent additional VRAM usage. Especially useful when upscaling.");
TRANSLATE_NOOP("FullscreenUI", "Utilizes the chosen frame rate regardless of the game's setting.");
TRANSLATE_NOOP("FullscreenUI", "Value Range");
TRANSLATE_NOOP("FullscreenUI", "Value: {} | Default: {} | Minimum: {} | Maximum: {}");
TRANSLATE_NOOP("FullscreenUI", "Value: {}");
TRANSLATE_NOOP("FullscreenUI", "Verify");
TRANSLATE_NOOP("FullscreenUI", "Verifying Image");
TRANSLATE_NOOP("FullscreenUI", "Vertex Cache");
@ -952,6 +957,5 @@ TRANSLATE_NOOP("FullscreenUI", "{} is not a valid disc image.");
TRANSLATE_NOOP("FullscreenUI", "{} of {}");
TRANSLATE_NOOP("FullscreenUI", "{} pinned.");
TRANSLATE_NOOP("FullscreenUI", "{} unpinned.");
TRANSLATE_NOOP("FullscreenUI", "{} | Start: {} | Length: {}");
// TRANSLATION-STRING-AREA-END
#endif

@ -611,24 +611,25 @@ void GPUBackend::HandleSubmitFrameCommand(const GPUBackendFramePresentationParam
RestoreDeviceContext();
}
#define BOLD(text) "\x02" text "\x01"
void GPUBackend::GetStatsString(SmallStringBase& str) const
{
#define BOLD(text) "\x02" text "\x01"
#define DOT_SEP " \u2022 "
if (IsUsingHardwareBackend())
{
if (g_gpu_settings.gpu_pgxp_depth_buffer)
{
str.format(BOLD("{}{} HW") " | {} " BOLD("P") " | {} " BOLD("DC") " | {} " BOLD("RB") " | {} " BOLD(
"C") " | {} " BOLD("W") " | {}% " BOLD("U") " | {} " BOLD("DBC"),
str.format(BOLD("{}{} HW") DOT_SEP "{} " BOLD("P") DOT_SEP "{} " BOLD("DC") DOT_SEP "{} " BOLD("RB") DOT_SEP
"{} " BOLD("C") DOT_SEP "{} " BOLD("W") DOT_SEP "{}% " BOLD("U") DOT_SEP "{} " BOLD("DBC"),
GPUDevice::RenderAPIToString(g_gpu_device->GetRenderAPI()), g_gpu_settings.gpu_use_thread ? "-MT" : "",
s_stats.num_primitives, s_stats.host_num_draws, s_stats.host_num_downloads, s_stats.num_copies,
s_stats.num_writes, s_stats.gpu_busy_pct, s_stats.num_depth_buffer_clears);
}
else
{
str.format(BOLD("{}{} HW") " | {} " BOLD("P") " | {} " BOLD("DC") " | {} " BOLD("RB") " | {} " BOLD(
"C") " | {} " BOLD("W") " | {}% " BOLD("U"),
str.format(BOLD("{}{} HW") DOT_SEP "{} " BOLD("P") DOT_SEP "{} " BOLD("DC") DOT_SEP "{} " BOLD("RB") DOT_SEP
"{} " BOLD("C") DOT_SEP "{} " BOLD("W") DOT_SEP "{}% " BOLD("U"),
GPUDevice::RenderAPIToString(g_gpu_device->GetRenderAPI()), g_gpu_settings.gpu_use_thread ? "-MT" : "",
s_stats.num_primitives, s_stats.host_num_draws, s_stats.host_num_downloads, s_stats.num_copies,
s_stats.num_writes, s_stats.gpu_busy_pct);
@ -636,10 +637,10 @@ void GPUBackend::GetStatsString(SmallStringBase& str) const
}
else
{
str.format(
BOLD("{}{} SW") " | {} " BOLD("P") " | {} " BOLD("R") " | {} " BOLD("C") " | {} " BOLD("W") " | {}% " BOLD("U"),
GPUDevice::RenderAPIToString(g_gpu_device->GetRenderAPI()), g_gpu_settings.gpu_use_thread ? "-MT" : "",
s_stats.num_primitives, s_stats.num_reads, s_stats.num_copies, s_stats.num_writes, s_stats.gpu_busy_pct);
str.format(BOLD("{}{} SW") DOT_SEP "{} " BOLD("P") DOT_SEP "{} " BOLD("R") DOT_SEP "{} " BOLD("C") DOT_SEP
"{} " BOLD("W") DOT_SEP "{}% " BOLD("U"),
GPUDevice::RenderAPIToString(g_gpu_device->GetRenderAPI()), g_gpu_settings.gpu_use_thread ? "-MT" : "",
s_stats.num_primitives, s_stats.num_reads, s_stats.num_copies, s_stats.num_writes, s_stats.gpu_busy_pct);
}
}
@ -648,13 +649,14 @@ void GPUBackend::GetMemoryStatsString(SmallStringBase& str) const
const u32 vram_usage_mb = static_cast<u32>((g_gpu_device->GetVRAMUsage() + (1048576 - 1)) / 1048576);
const u32 stream_kb = static_cast<u32>((s_stats.host_buffer_streamed + (1024 - 1)) / 1024);
str.format("{}MB " BOLD("VRAM") " | {}KB " BOLD("STR") " | {} " BOLD("B") " | {} " BOLD("RP") " | {} " BOLD(
"TC") " | {} " BOLD("TU"),
str.format("{}MB " BOLD("VRAM") DOT_SEP "{}KB " BOLD("STR") DOT_SEP "{} " BOLD("B") DOT_SEP "{} " BOLD("RP") DOT_SEP
"{} " BOLD("TC") DOT_SEP "{} " BOLD("TU"),
vram_usage_mb, stream_kb, s_stats.host_num_barriers, s_stats.host_num_render_passes,
s_stats.host_num_copies, s_stats.host_num_uploads);
}
#undef DOT_SEP
#undef BOLD
}
void GPUBackend::ResetStatistics()
{

@ -387,6 +387,7 @@ void ImGuiManager::DrawPerformanceOverlay(const GPUBackend* gpu, float& position
{
#define BOLD(text) "\x02" text "\x01"
#define COLOR(text) "\x04" text "\x03"
#define DOT_SEP " \u2022 "
if (!(g_gpu_settings.display_show_fps || g_gpu_settings.display_show_speed || g_gpu_settings.display_show_gpu_stats ||
g_gpu_settings.display_show_resolution || g_gpu_settings.display_show_latency_stats ||
@ -415,15 +416,15 @@ void ImGuiManager::DrawPerformanceOverlay(const GPUBackend* gpu, float& position
const float vps = PerformanceCounters::GetVPS();
if (vps < 100.0f)
text.append_format(COLOR("{:.2f}") " " BOLD("FPS") " | " COLOR("{:.2f}") " " BOLD("VPS"), fps, vps);
text.append_format(COLOR("{:.2f}") " " BOLD("FPS") DOT_SEP COLOR("{:.2f}") " " BOLD("VPS"), fps, vps);
else if (vps < 1000.0f)
text.append_format(COLOR("{:.1f}") " " BOLD("FPS") " | " COLOR("{:.1f}") " " BOLD("VPS"), fps, vps);
text.append_format(COLOR("{:.1f}") " " BOLD("FPS") DOT_SEP COLOR("{:.1f}") " " BOLD("VPS"), fps, vps);
else
text.append_format(COLOR("{:.0f}") " " BOLD("FPS") " | " COLOR("{:.0f}") " " BOLD("VPS"), fps, vps);
text.append_format(COLOR("{:.0f}") " " BOLD("FPS") DOT_SEP COLOR("{:.0f}") " " BOLD("VPS"), fps, vps);
}
if (g_gpu_settings.display_show_speed)
{
text.append_format("{}" COLOR("{}%") " ", text.empty() ? "" : " | ", static_cast<u32>(std::round(speed)));
text.append_format("{}" COLOR("{}%") " ", text.empty() ? "" : DOT_SEP, static_cast<u32>(std::round(speed)));
const float target_speed = System::GetTargetSpeed();
if (target_speed <= 0.0f)
@ -464,10 +465,10 @@ void ImGuiManager::DrawPerformanceOverlay(const GPUBackend* gpu, float& position
const bool interlaced = GPU::IsInterlacedDisplayEnabled();
const bool progressive_forced = GPU::IsProgressiveDisplayScanForced();
const bool pal = GPU::IsInPALMode();
text.format("{}x{} " BOLD("{} {}") " | {}x " BOLD("IR") "{}", display_width * resolution_scale,
text.format("{}x{} " BOLD("{} {}") DOT_SEP "{}x " BOLD("IR") "{}", display_width * resolution_scale,
display_height * resolution_scale, pal ? "PAL" : "NTSC",
interlaced ? "Interlaced" : (progressive_forced ? "Forced-Progressive" : "Progressive"),
resolution_scale, pgxp ? " | " BOLD("PGXP") : "");
resolution_scale, pgxp ? DOT_SEP BOLD("PGXP") : "");
DrawPerformanceStat(dl, position_y, fixed_font, fixed_font_size, FIXED_BOLD_WEIGHT, 0, rbound, text);
position_y += spacing;
}
@ -481,7 +482,7 @@ void ImGuiManager::DrawPerformanceOverlay(const GPUBackend* gpu, float& position
if (g_gpu_settings.display_show_cpu_usage)
{
text.format(" {:.2f}ms " BOLD("Min") " | {:.2f}ms " BOLD("Avg") " | {:.2f}ms " BOLD("Max"),
text.format(" {:.2f}ms " BOLD("Min") DOT_SEP "{:.2f}ms " BOLD("Avg") DOT_SEP "{:.2f}ms " BOLD("Max"),
PerformanceCounters::GetMinimumFrameTime(), PerformanceCounters::GetAverageFrameTime(),
PerformanceCounters::GetMaximumFrameTime());
DrawPerformanceStat(dl, position_y, fixed_font, fixed_font_size, FIXED_BOLD_WEIGHT, 0, rbound, text);
@ -568,6 +569,7 @@ void ImGuiManager::DrawPerformanceOverlay(const GPUBackend* gpu, float& position
DrawStatusIndicators(dl, position_y, ui_font, status_size, rbound, text, true);
}
#undef DOT_SEP
#undef COLOR
#undef BOLD
}

@ -3682,11 +3682,13 @@ void System::FormatLatencyStats(SmallStringBase& str)
Timer::ConvertValueToMilliseconds(static_cast<Timer::Value>(s_state.runahead_frames) * s_state.frame_period));
#define BOLD(text) "\x02" text "\x01"
#define DOT_SEP " \u2022 "
str.format("{}ms " BOLD("AL") " | {:.0f}ms " BOLD("AF") " | {:.0f}ms " BOLD("PF") " | {:.0f}ms " BOLD(
"IL") " | {} " BOLD("QF"),
str.format("{}ms " BOLD("AL") DOT_SEP "{:.0f}ms " BOLD("AF") DOT_SEP "{:.0f}ms " BOLD("PF") DOT_SEP
"{:.0f}ms " BOLD("IL") DOT_SEP "{} " BOLD("QF"),
audio_latency, active_frame_time, pre_frame_time, input_latency, queued_frame_count);
#undef DOT_SEP
#undef BOLD
}

@ -144,7 +144,7 @@ void GameSummaryWidget::populateUi(const GameList::Entry* entry)
if (entry->IsDiscOrDiscSet())
{
m_ui.hashes->setText(QtUtils::StringViewToQString(SmallString::from_format(
"HASH-{:016X} | RA: {}", entry->hash, Achievements::GameHashToString(entry->achievements_hash))));
"HASH-{:016X} \u2022 RA: {}", entry->hash, Achievements::GameHashToString(entry->achievements_hash))));
}
else
{

@ -168,8 +168,8 @@ static constexpr const std::array TEXT_FONT_FILENAMES = {
static constexpr const char* DEFAULT_TEXT_FONT_NAME = TEXT_FONT_NAMES[0];
#define ENUMERATE_FIXED_FONT_NAMES(X) \
X("GoogleSansCode", "Google Sans Code", "GoogleSansCode-VariableFont_wght.ttf") \
X("RobotoMono", "Roboto Mono", "RobotoMono-VariableFont_wght.ttf") \
X("GoogleSansCode", "Google Sans Code", "GoogleSansCode-VariableFont_wght.ttf") \
X("KodeMono", "Kode Mono", "KodeMono-VariableFont_wght.ttf") \
X("Bitcount", "Bitcount", "BitcountPropSingle-VariableFont_CRSV,ELSH,ELXP,slnt,wght.ttf")

Loading…
Cancel
Save