load cover images directly from file instead of an intermediary buffer

This commit is contained in:
Daryl 2020-08-09 13:16:00 -06:00
parent fbbb4ce0b7
commit 2cf4a1c4aa
5 changed files with 777 additions and 769 deletions

View File

@ -929,6 +929,16 @@ static void WindowCredits(void * ptr)
* Displays a list of games on the specified load device, and allows the user
* to browse and select from this list.
***************************************************************************/
static char* getImageFolder()
{
switch(GCSettings.PreviewImage)
{
case 1 : return GCSettings.CoverFolder; break;
case 2 : return GCSettings.ArtworkFolder; break;
default: return GCSettings.ScreenshotsFolder; break;
}
}
static int MenuGameSelection()
{
int menu = MENU_NONE;
@ -1098,27 +1108,18 @@ static int MenuGameSelection()
{
previousBrowserIndex = browser.selIndex;
previousPreviewImg = GCSettings.PreviewImage;
snprintf(imagePath, MAXJOLIET, "%s%s/%s.png", pathPrefix[GCSettings.LoadMethod], ImageFolder(), browserList[browser.selIndex].displayname);
snprintf(imagePath, MAXJOLIET, "%s%s/%s.png", pathPrefix[GCSettings.LoadMethod], getImageFolder(), browserList[browser.selIndex].displayname);
AllocSaveBuffer();
int width, height;
if(LoadFile(imagePath, SILENT))
if(DecodePNGFromFile(imagePath, &width, &height, imgBuffer, 512, 512))
{
if(DecodePNG(savebuffer, &width, &height, imgBuffer, 512, 512))
{
preview.SetImage(imgBuffer, width, height);
preview.SetScale( MIN(225.0f / width, 235.0f / height) );
}
else
{
preview.SetImage(NULL, 0, 0);
}
preview.SetImage(imgBuffer, width, height);
preview.SetScale( MIN(225.0f / width, 235.0f / height) );
}
else
{
preview.SetImage(NULL, 0, 0);
}
FreeSaveBuffer();
}
if(settingsBtn.GetState() == STATE_CLICKED)

File diff suppressed because it is too large Load Diff

View File

@ -76,6 +76,7 @@ int PNGU_GetImageProperties (IMGCTX ctx, PNGUPROP *fileproperties);
****************************************************************************/
u8 * DecodePNG(const u8 *src, int *width, int *height, u8 *dst, int maxwidth, int maxheight);
u8 * DecodePNGFromFile(const char *filepath, int *width, int *height, u8 *dst, int maxwidth, int maxheight);
int PNGU_EncodeFromRGB (IMGCTX ctx, u32 width, u32 height, void *buffer, u32 stride);
int PNGU_EncodeFromGXTexture (IMGCTX ctx, u32 width, u32 height, void *buffer, u32 stride);
int PNGU_EncodeFromEFB (IMGCTX ctx, u32 width, u32 height);

View File

@ -470,13 +470,3 @@ int main(int argc, char *argv[])
} // main loop
return 0;
}
char* ImageFolder()
{
switch(GCSettings.PreviewImage)
{
case 1 : return GCSettings.CoverFolder; break;
case 2 : return GCSettings.ArtworkFolder; break;
default: return GCSettings.ScreenshotsFolder; break;
}
}

View File

@ -116,8 +116,6 @@ struct SGCSettings
char smbshare[20];
};
char* ImageFolder();
void ExitApp();
void ShutdownWii();
bool SupportedIOS(u32 ios);