Merge pull request #22389 from hrydgard/savedata-icon-black-background

Savedata dialog: Draw icons over black, with alpha blending
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2026-09-29 13:52:34 -06:00
commit c9c26ce0fd
3 files changed
+4 -10

No files matched your search

+4 -3
View File
@@ -412,7 +412,6 @@ void PSPSaveDialog::DisplaySaveList(bool canMove) {
for (int displayCount = 0; displayCount < param.GetFilenameCount(); displayCount++) { for (int displayCount = 0; displayCount < param.GetFilenameCount(); displayCount++) {
PPGeImageStyle imageStyle = FadedImageStyle(); PPGeImageStyle imageStyle = FadedImageStyle();
imageStyle.alphaBlend = false;
auto fileInfo = param.GetFileInfo(displayCount); auto fileInfo = param.GetFileInfo(displayCount);
if (fileInfo.size == 0 && fileInfo.texture && fileInfo.texture->IsValid()) if (fileInfo.size == 0 && fileInfo.texture && fileInfo.texture->IsValid())
@@ -449,6 +448,8 @@ void PSPSaveDialog::DisplaySaveList(bool canMove) {
pad = (w - scaledW) / 2; pad = (w - scaledW) / 2;
w = scaledW; w = scaledW;
// The PSP draws save icons over black, so their transparent parts come out black (#22280).
PPGeDrawRect(x + pad, y, x + pad + w, y + h, CalcFadedColor(0xFF000000));
PPGeDrawImage(x + pad, y, w, h, 0, 0, 1, 1, tw, th, imageStyle); PPGeDrawImage(x + pad, y, w, h, 0, 0, 1, 1, tw, th, imageStyle);
} else { } else {
PPGeDrawRect(x, y, x + w, y + h, 0x88666666); PPGeDrawRect(x, y, x + w, y + h, 0x88666666);
@@ -476,8 +477,6 @@ void PSPSaveDialog::DisplaySaveList(bool canMove) {
void PSPSaveDialog::DisplaySaveIcon(bool checkExists) { void PSPSaveDialog::DisplaySaveIcon(bool checkExists) {
std::lock_guard<std::mutex> guard(paramLock); std::lock_guard<std::mutex> guard(paramLock);
PPGeImageStyle imageStyle = FadedImageStyle(); PPGeImageStyle imageStyle = FadedImageStyle();
imageStyle.alphaBlend = false;
auto curSave = param.GetFileInfo(currentSelectedSave); auto curSave = param.GetFileInfo(currentSelectedSave);
if (curSave.size == 0 && checkExists) if (curSave.size == 0 && checkExists)
@@ -499,6 +498,8 @@ void PSPSaveDialog::DisplaySaveIcon(bool checkExists) {
int scaledW = (int)(tw * scale); int scaledW = (int)(tw * scale);
x += (w - scaledW) / 2; x += (w - scaledW) / 2;
w = scaledW; w = scaledW;
// Over black, as in DisplaySaveList.
PPGeDrawRect(x, y, x + w, y + h, CalcFadedColor(0xFF000000));
} else { } else {
PPGeDisableTexture(); PPGeDisableTexture();
} }
-6
View File
@@ -1299,16 +1299,10 @@ void PPGeDrawImage(ImageID atlasImage, float x, float y, float w, float h, const
void PPGeDrawImage(float x, float y, float w, float h, float u1, float v1, float u2, float v2, int tw, int th, const PPGeImageStyle &style) { void PPGeDrawImage(float x, float y, float w, float h, float u1, float v1, float u2, float v2, int tw, int th, const PPGeImageStyle &style) {
if (!dlPtr) if (!dlPtr)
return; return;
if (!style.alphaBlend) {
WriteCmd(GE_CMD_ALPHABLENDENABLE, 0);
}
BeginVertexData(); BeginVertexData();
Vertex(x, y, u1, v1, tw, th, style.color); Vertex(x, y, u1, v1, tw, th, style.color);
Vertex(x + w, y + h, u2, v2, tw, th, style.color); Vertex(x + w, y + h, u2, v2, tw, th, style.color);
EndVertexDataAndDraw(GE_PRIM_RECTANGLES); EndVertexDataAndDraw(GE_PRIM_RECTANGLES);
if (!style.alphaBlend) {
WriteCmd(GE_CMD_ALPHABLENDENABLE, 1);
}
} }
void PPGeSetDefaultTexture() void PPGeSetDefaultTexture()
-1
View File
@@ -85,7 +85,6 @@ struct PPGeStyle {
struct PPGeImageStyle { struct PPGeImageStyle {
uint32_t color = 0xFFFFFFFF; uint32_t color = 0xFFFFFFFF;
bool alphaBlend = true;
}; };
// Get the metrics of the bounding box of the text without changing the buffer or state. // Get the metrics of the bounding box of the text without changing the buffer or state.