- fixed homebrew icon pngs with transparency correctly now. no more blank black covers.

This commit is contained in:
Fledge68 2020-04-20 08:16:18 -05:00
parent ab898c98b5
commit 1724046bf3
6 changed files with 20 additions and 3 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

After

Width:  |  Height:  |  Size: 4.1 MiB

View File

@ -1549,6 +1549,16 @@ u64 CCoverFlow::getChanTitle(void) const
m_items[loopNum(m_covers[m_range / 2].index + m_jump, m_items.size())].hdr->settings[1]);
}
bool CCoverFlow::getRenderTex(void)
{
return m_renderTex;
}
void CCoverFlow::setRenderTex(bool val)
{
m_renderTex = val;
}
/* this is used for smallbox homebrew icon png's that have alpha transparency */
/* cover textures can't have transparency. this creates a new texture by filling the transparent parts */
void CCoverFlow::RenderTex(void)
@ -1558,6 +1568,7 @@ void CCoverFlow::RenderTex(void)
DrawTexture(m_renderingTex);
m_vid.renderToTexture(*m_renderingTex, true);
}
setRenderTex(false);
}
bool CCoverFlow::select(void)

View File

@ -137,6 +137,8 @@ public:
wstringEx getTitle(void) const;
u64 getChanTitle(void) const;
const char *getFilenameId(const dir_discHdr *curHdr);
bool getRenderTex(void);
void setRenderTex(bool);
void RenderTex(void);
//
static u32 InternalCoverColor(const char *ID, u32 DefCaseColor);

View File

@ -448,9 +448,9 @@ TexErr STexture::fromPNG(TexData &dest, const u8 *buffer, u8 f, u32 minMipSize,
}
_convertToRGBA8(dest.data, tmpData2, dest.width, dest.height);
DCFlushRange(dest.data, dest.dataSize);
m_vid.prepare();
m_vid.setup2DProjection(false, true);// false = prepare() already set view port, true = no scaling - draw at 640x480
CoverFlow.RenderTex();
CoverFlow.setRenderTex(true);
while(CoverFlow.getRenderTex())
usleep(50);
_convertToRGBA(tmpData2, dest.data, dest.width, dest.height);
DCFlushRange(tmpData2, Size2);
Cleanup(dest);

View File

@ -1630,6 +1630,8 @@ void CMenu::_mainLoopCommon(bool withCF, bool adjusting)
m_vid.prepare();
m_vid.setup2DProjection(false, true);// false = prepare() already set view port, true = no scaling - draw at 640x480
_updateBg();
if(CoverFlow.getRenderTex())
CoverFlow.RenderTex();
m_vid.setup2DProjection();// this time set the view port and allow scaling
_drawBg();
m_btnMgr.draw();
@ -1654,6 +1656,8 @@ void CMenu::_mainLoopCommon(bool withCF, bool adjusting)
/* background and coverflow drawing */
_updateBg();
if(CoverFlow.getRenderTex())
CoverFlow.RenderTex();
if(withCF && m_lqBg != NULL)
CoverFlow.makeEffectTexture(m_lqBg);
if(withCF && m_aa > 0)