mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-07-11 09:35:09 +02:00
Path code cleanup, move some UI code (#21037)
* Move a bunch of path logic into Core/Util/PathUtil.cpp/h . * Move GameImageView out from SaveDataScreen * More cleanup, add a translation string
This commit is contained in:
@@ -158,3 +158,55 @@ PaneTitleBar::PaneTitleBar(const Path &gamePath, std::string_view title, const s
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void GameImageView::GetContentDimensions(const UIContext &dc, float &w, float &h) const {
|
||||
w = textureWidth_;
|
||||
h = textureHeight_;
|
||||
}
|
||||
|
||||
void GameImageView::Draw(UIContext &dc) {
|
||||
using namespace UI;
|
||||
std::shared_ptr<GameInfo> info = g_gameInfoCache->GetInfo(dc.GetDrawContext(), gamePath_, image_);
|
||||
if (!info->Ready(image_) || !info->icon.texture) {
|
||||
return;
|
||||
}
|
||||
|
||||
Draw::Texture *texture = nullptr;
|
||||
switch (image_) {
|
||||
case GameInfoFlags::ICON:
|
||||
texture = info->icon.texture;
|
||||
break;
|
||||
case GameInfoFlags::PIC0:
|
||||
texture = info->pic0.texture;
|
||||
break;
|
||||
case GameInfoFlags::PIC1:
|
||||
texture = info->pic1.texture;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!texture) {
|
||||
return;
|
||||
}
|
||||
|
||||
textureWidth_ = texture->Width() * scale_;
|
||||
textureHeight_ = texture->Height() * scale_;
|
||||
|
||||
// Fade icon with the backgrounds.
|
||||
double loadTime = info->icon.timeLoaded;
|
||||
auto pic = info->GetPIC1();
|
||||
if (pic) {
|
||||
loadTime = std::max(loadTime, pic->timeLoaded);
|
||||
}
|
||||
uint32_t color = whiteAlpha(ease((time_now_d() - loadTime) * 3));
|
||||
|
||||
// Adjust size so we don't stretch the image vertically or horizontally.
|
||||
// Make sure it's not wider than 144 (like Doom Legacy homebrew), ugly in the grid mode.
|
||||
float nw = std::min(bounds_.h * textureWidth_ / textureHeight_, (float)bounds_.w);
|
||||
int x = bounds_.x + (bounds_.w - nw) / 2.0f;
|
||||
|
||||
dc.Flush();
|
||||
dc.GetDrawContext()->BindTexture(0, texture);
|
||||
dc.Draw()->Rect(x, bounds_.y, nw, bounds_.h, color);
|
||||
dc.Flush();
|
||||
dc.RebindTexture();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user