- 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]); 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 */ /* 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 */ /* cover textures can't have transparency. this creates a new texture by filling the transparent parts */
void CCoverFlow::RenderTex(void) void CCoverFlow::RenderTex(void)
@ -1558,6 +1568,7 @@ void CCoverFlow::RenderTex(void)
DrawTexture(m_renderingTex); DrawTexture(m_renderingTex);
m_vid.renderToTexture(*m_renderingTex, true); m_vid.renderToTexture(*m_renderingTex, true);
} }
setRenderTex(false);
} }
bool CCoverFlow::select(void) bool CCoverFlow::select(void)

View File

@ -137,6 +137,8 @@ public:
wstringEx getTitle(void) const; wstringEx getTitle(void) const;
u64 getChanTitle(void) const; u64 getChanTitle(void) const;
const char *getFilenameId(const dir_discHdr *curHdr); const char *getFilenameId(const dir_discHdr *curHdr);
bool getRenderTex(void);
void setRenderTex(bool);
void RenderTex(void); void RenderTex(void);
// //
static u32 InternalCoverColor(const char *ID, u32 DefCaseColor); 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); _convertToRGBA8(dest.data, tmpData2, dest.width, dest.height);
DCFlushRange(dest.data, dest.dataSize); DCFlushRange(dest.data, dest.dataSize);
m_vid.prepare(); CoverFlow.setRenderTex(true);
m_vid.setup2DProjection(false, true);// false = prepare() already set view port, true = no scaling - draw at 640x480 while(CoverFlow.getRenderTex())
CoverFlow.RenderTex(); usleep(50);
_convertToRGBA(tmpData2, dest.data, dest.width, dest.height); _convertToRGBA(tmpData2, dest.data, dest.width, dest.height);
DCFlushRange(tmpData2, Size2); DCFlushRange(tmpData2, Size2);
Cleanup(dest); Cleanup(dest);

View File

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