1
0
mirror of https://github.com/blupi-games/planetblupi synced 2024-12-30 10:15:36 +01:00

Reload the textures (target) when the window size changes

This commit is contained in:
Mathieu Schroeter 2017-03-03 17:43:01 +01:00
parent 63285d466e
commit fc37ddd017
3 changed files with 29 additions and 4 deletions

View File

@ -1640,6 +1640,8 @@ void CEvent::SetWindowSize (Uint8 prevScale, Uint8 newScale)
else
SDL_RenderSetLogicalSize (g_renderer, LXIMAGE, LYIMAGE);
m_pPixmap->ReloadTargetTextures ();
/* Force this update before otherwise the coordinates retrieved with
* the Warp SDL function are corresponding to the previous size.
*/

View File

@ -171,9 +171,31 @@ Sint32 CPixmap::BltFast (SDL_Texture *lpSDL, size_t channel, POINT dst,
return res;
}
/**
* \brief Reload textures created with access target flag.
*
* \returns true on success.
*/
bool CPixmap::ReloadTargetTextures ()
{
for (auto &tex: m_SDLTextureInfo)
{
if (!tex.second.target)
continue;
if (!Cache (tex.first,
tex.second.file,
tex.second.dimTotal,
tex.second.dimIcon))
return false;
}
return true;
}
// Cache une image contenant des ic�nes.
bool CPixmap::Cache (size_t channel, const char *pFilename, POINT totalDim,
bool CPixmap::Cache (size_t channel, const std::string &pFilename, POINT totalDim,
POINT iconDim)
{
std::string file = GetBaseDir() + pFilename;
@ -230,7 +252,7 @@ bool CPixmap::Cache (size_t channel, const char *pFilename, POINT totalDim,
// Cache une image globale.
bool CPixmap::Cache (size_t channel, const char *pFilename, POINT totalDim)
bool CPixmap::Cache (size_t channel, const std::string &pFilename, POINT totalDim)
{
POINT iconDim;

View File

@ -32,9 +32,10 @@ public:
bool Create (POINT dim, Sint32 mouseType);
void Fill (RECT rect, COLORREF color);
bool Cache (size_t channel, const char *pFilename, POINT totalDim,
bool ReloadTargetTextures ();
bool Cache (size_t channel, const std::string &pFilename, POINT totalDim,
POINT iconDim);
bool Cache (size_t channel, const char *pFilename, POINT totalDim);
bool Cache (size_t channel, const std::string &pFilename, POINT totalDim);
bool Cache (size_t channel, SDL_Surface *surface, POINT totalDim);
void SetClipping (RECT clip);
RECT GetClipping();