1
0
mirror of synced 2024-12-01 02:37:18 +01:00

fix: Splash screen being scaled incorrectly

This commit is contained in:
WerWolv 2024-03-22 17:52:10 +01:00
parent ac8ec2b622
commit 4916e5542a

View File

@ -238,7 +238,7 @@ namespace hex::init {
FrameResult WindowSplash::fullFrame() { FrameResult WindowSplash::fullFrame() {
glfwSetWindowSize(m_window, 640_scaled, 400_scaled); glfwSetWindowSize(m_window, 640, 400);
centerWindow(m_window); centerWindow(m_window);
glfwPollEvents(); glfwPollEvents();
@ -248,23 +248,21 @@ namespace hex::init {
ImGui_ImplGlfw_NewFrame(); ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame(); ImGui::NewFrame();
auto scale = ImHexApi::System::getGlobalScale();
// Draw the splash screen background // Draw the splash screen background
auto drawList = ImGui::GetBackgroundDrawList(); auto drawList = ImGui::GetBackgroundDrawList();
{ {
// Draw the splash screen background // Draw the splash screen background
drawList->AddImage(this->splashBackgroundTexture, ImVec2(0, 0), this->splashBackgroundTexture.getSize() * scale); drawList->AddImage(this->splashBackgroundTexture, ImVec2(0, 0), this->splashBackgroundTexture.getSize());
{ {
// Function to highlight a given number of bytes at a position in the splash screen // Function to highlight a given number of bytes at a position in the splash screen
const auto highlightBytes = [&](ImVec2 start, size_t count, ImColor color, float opacity) { const auto highlightBytes = [&](ImVec2 start, size_t count, ImColor color, float opacity) {
// Dimensions and number of bytes that are drawn. Taken from the splash screen image // Dimensions and number of bytes that are drawn. Taken from the splash screen image
const auto hexSize = ImVec2(29, 18) * scale; const auto hexSize = ImVec2(29, 18);
const auto hexSpacing = ImVec2(17.4, 15) * scale; const auto hexSpacing = ImVec2(17.4, 15);
const auto hexStart = ImVec2(27, 127) * scale; const auto hexStart = ImVec2(27, 127);
constexpr auto HexCount = ImVec2(13, 7); constexpr auto HexCount = ImVec2(13, 7);
@ -312,10 +310,10 @@ namespace hex::init {
this->progressLerp += (m_progress - this->progressLerp) * 0.1F; this->progressLerp += (m_progress - this->progressLerp) * 0.1F;
// Draw the splash screen foreground // Draw the splash screen foreground
drawList->AddImage(this->splashTextTexture, ImVec2(0, 0), this->splashTextTexture.getSize() * scale); drawList->AddImage(this->splashTextTexture, ImVec2(0, 0), this->splashTextTexture.getSize());
// Draw the "copyright" notice // Draw the "copyright" notice
drawList->AddText(ImVec2(35, 85) * scale, ImColor(0xFF, 0xFF, 0xFF, 0xFF), hex::format("WerWolv\n2020 - {0}", &__DATE__[7]).c_str()); drawList->AddText(ImVec2(35, 85), ImColor(0xFF, 0xFF, 0xFF, 0xFF), hex::format("WerWolv\n2020 - {0}", &__DATE__[7]).c_str());
// Draw version information // Draw version information
// In debug builds, also display the current commit hash and branch // In debug builds, also display the current commit hash and branch
@ -325,18 +323,18 @@ namespace hex::init {
const static auto VersionInfo = hex::format("{0}", ImHexApi::System::getImHexVersion()); const static auto VersionInfo = hex::format("{0}", ImHexApi::System::getImHexVersion());
#endif #endif
drawList->AddText(ImVec2((this->splashBackgroundTexture.getSize().x * scale - ImGui::CalcTextSize(VersionInfo.c_str()).x) / 2, 105 * scale), ImColor(0xFF, 0xFF, 0xFF, 0xFF), VersionInfo.c_str()); drawList->AddText(ImVec2((this->splashBackgroundTexture.getSize().x - ImGui::CalcTextSize(VersionInfo.c_str()).x) / 2, 105), ImColor(0xFF, 0xFF, 0xFF, 0xFF), VersionInfo.c_str());
} }
// Draw the task progress bar // Draw the task progress bar
{ {
std::lock_guard guard(m_progressMutex); std::lock_guard guard(m_progressMutex);
const auto progressBackgroundStart = ImVec2(99, 357) * scale; const auto progressBackgroundStart = ImVec2(99, 357);
const auto progressBackgroundSize = ImVec2(442, 30) * scale; const auto progressBackgroundSize = ImVec2(442, 30);
const auto progressStart = progressBackgroundStart + ImVec2(0, 20) * scale; const auto progressStart = progressBackgroundStart + ImVec2(0, 20);
const auto progressSize = ImVec2(progressBackgroundSize.x * m_progress, 10 * scale); const auto progressSize = ImVec2(progressBackgroundSize.x * m_progress, 10);
// Draw progress bar // Draw progress bar
drawList->AddRectFilled(progressStart, progressStart + progressSize, 0xD0FFFFFF); drawList->AddRectFilled(progressStart, progressStart + progressSize, 0xD0FFFFFF);
@ -344,7 +342,7 @@ namespace hex::init {
// Draw task names separated by | characters // Draw task names separated by | characters
if (!m_currTaskNames.empty()) { if (!m_currTaskNames.empty()) {
drawList->PushClipRect(progressBackgroundStart, progressBackgroundStart + progressBackgroundSize, true); drawList->PushClipRect(progressBackgroundStart, progressBackgroundStart + progressBackgroundSize, true);
drawList->AddText(progressStart + ImVec2(5, -20) * scale, ImColor(0xFF, 0xFF, 0xFF, 0xFF), hex::format("{}", fmt::join(m_currTaskNames, " | ")).c_str()); drawList->AddText(progressStart + ImVec2(5, -20), ImColor(0xFF, 0xFF, 0xFF, 0xFF), hex::format("{}", fmt::join(m_currTaskNames, " | ")).c_str());
drawList->PopClipRect(); drawList->PopClipRect();
} }
} }
@ -492,7 +490,7 @@ namespace hex::init {
ImFontConfig cfg; ImFontConfig cfg;
cfg.OversampleH = cfg.OversampleV = 1, cfg.PixelSnapH = true; cfg.OversampleH = cfg.OversampleV = 1, cfg.PixelSnapH = true;
cfg.SizePixels = 13.0_scaled; cfg.SizePixels = ImHexApi::Fonts::DefaultFontSize;
io.Fonts->AddFontDefault(&cfg); io.Fonts->AddFontDefault(&cfg);
std::uint8_t *px; std::uint8_t *px;