overlays/home: Add icons repository wrapper

This commit is contained in:
kd-11 2026-03-11 00:13:32 +03:00 committed by kd-11
parent fcb5a5c5f8
commit 3194bd3fb4
5 changed files with 91 additions and 0 deletions

View file

@ -487,6 +487,7 @@ target_sources(rpcs3_emu PRIVATE
RSX/NV47/HW/nv406e.cpp
RSX/NV47/HW/nv4097.cpp
RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp
RSX/Overlays/HomeMenu/overlay_home_icons.cpp
RSX/Overlays/HomeMenu/overlay_home_menu.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp

View file

@ -0,0 +1,59 @@
#include "stdafx.h"
#include "overlay_home_icons.h"
#include <unordered_map>
namespace rsx::overlays::home_menu
{
std::unordered_map<fa_icon, std::unique_ptr<image_info>> g_icons_cache;
static const char* fa_icon_to_filename(fa_icon icon)
{
switch (icon)
{
case fa_icon::home:
return "home.png";
case fa_icon::settings:
return "settings.png";
case fa_icon::back:
return "circle-left-solid.png";
case fa_icon::floppy:
return "floppy-disk-solid.png";
case fa_icon::maximize:
return "maximize-solid.png";
case fa_icon::play:
return "play-button-arrowhead.png";
case fa_icon::poweroff:
return "power-off-solid.png";
case fa_icon::restart:
return "rotate-left-solid.png";
case fa_icon::screenshot:
return "screenshot.png";
case fa_icon::video_camera:
return "video-camera.png";
}
}
void load_icon(fa_icon icon)
{
if (!g_icons_cache.empty())
{
return;
}
const std::string image_path = fmt::format("%s/Icons/ui/home/%s", fs::get_config_dir(), fa_icon_to_filename(icon));
g_icons_cache[icon] = std::make_unique<image_info>(image_path);
}
const image_info* get_icon(fa_icon icon)
{
auto found = g_icons_cache.find(icon);
if (found != g_icons_cache.end())
{
return found->second.get();
}
load_icon(icon);
return g_icons_cache.at(icon).get();
}
}

View file

@ -0,0 +1,23 @@
#pragma once
#include "Emu/RSX/Overlays/overlays.h"
#include "Emu/RSX/Overlays/overlay_controls.h"
namespace rsx::overlays::home_menu
{
enum class fa_icon
{
home = 0,
settings,
back,
floppy,
maximize,
play,
poweroff,
restart,
screenshot,
video_camera
};
const image_info* get_icon(fa_icon icon);
}

View file

@ -135,6 +135,7 @@
<ClCompile Include="Emu\RSX\NV47\HW\nv406e.cpp" />
<ClCompile Include="Emu\RSX\NV47\HW\nv4097.cpp" />
<ClCompile Include="Emu\RSX\Overlays\FriendsList\overlay_friends_list_dialog.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_icons.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_components.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_message_box.cpp" />
@ -696,6 +697,7 @@
<ClInclude Include="Emu\RSX\NV47\HW\common.h" />
<ClInclude Include="Emu\RSX\NV47\HW\nv47_sync.hpp" />
<ClInclude Include="Emu\RSX\Overlays\FriendsList\overlay_friends_list_dialog.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_icons.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_components.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_message_box.h" />

View file

@ -1417,6 +1417,9 @@
<ClCompile Include="Emu\RSX\Overlays\overlay_tabs.cpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_icons.cpp">
<Filter>Emu\GPU\RSX\Overlays\HomeMenu</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -2845,6 +2848,9 @@
<ClInclude Include="Emu\RSX\Overlays\overlay_tabs.h">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_icons.h">
<Filter>Emu\GPU\RSX\Overlays\HomeMenu</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Emu\RSX\Program\GLSLSnippets\GPUDeswizzle.glsl">