ZImage::Reload

This commit is contained in:
James Turk 2002-12-27 18:56:17 +00:00
parent 4fbdebfe78
commit 6d5c0637be
3 changed files with 30 additions and 13 deletions

View File

@ -13,7 +13,7 @@
File: ZE_ZImage.h <br>
Description: Header file for core ZEngine Image and Texture Object. <br>
Author(s): James Turk, Gamer Tazar <br>
$Id: ZE_ZImage.h,v 1.4 2002/12/02 05:18:52 cozman Exp $<br>
$Id: ZE_ZImage.h,v 1.5 2002/12/27 18:56:17 cozman Exp $<br>
\file ZE_ZImage.h
\brief Definition file for ZImage.
@ -132,6 +132,13 @@ class ZImage : public ZObject
**/
void Attach(SDL_Surface *surface);
/*
\brief Reattach a preloaded texture that has been lost.
Attach loaded textures which have been lost due to loss of focus, should be called when ZEngine::ImagesNeedReload is true.
**/
void Reload();
/*!
\brief Releases image.
@ -214,7 +221,7 @@ class ZImage : public ZObject
/*!
\brief Check if file is loaded.
Check if file is loaded and pointer to data is non-NULL.
Check if surface is a valid GL texture. (does not detect surface loss)
\return Loaded or Unloaded state of data.
**/
bool IsLoaded();

View File

@ -13,7 +13,7 @@
File: ZE_ZImage.cpp <br>
Description: Implementation source file for core ZEngine Image or Texture Object. <br>
Author(s): James Turk, Gamer Tazar <br>
$Id: ZE_ZImage.cpp,v 1.8 2002/12/22 04:31:15 cozman Exp $<br>
$Id: ZE_ZImage.cpp,v 1.9 2002/12/27 18:56:17 cozman Exp $<br>
\file ZE_ZImage.cpp
\brief Source file for ZImage.
@ -112,6 +112,13 @@ void ZImage::Attach(SDL_Surface *surface)
LogError("Invalid surface passed to ZImage::Attach.");
}
void ZImage::Reload()
{
SDL_Surface *temp = rImage;
rImage = NULL;
Attach(temp);
}
void ZImage::Release()
{
if(glIsTexture(rTexID))

View File

@ -41,11 +41,18 @@ void Test()
ZImage image1, image2, image3, textImage;
ZFont font("data/almontew.ttf",30);
engine->SetReloadNeed(true); //start off needing the reload
font.SetColor(0,255,0);
font.SetBGColor(0,0,255);
temp = SDL_LoadBMP("data/test02.bmp"); //this is a separate surface
image1.Attach(temp); //this attaches the surface into itself
image2.Open("data/test01.bmp");
image3.OpenFromImage(image2.Surface(),5,5,20,20);
temp = NULL; //and temp will now be controlled and freed by image1
image1.SetColorKey(255,0,255);
image2.SetColorKey(255,0,255);
font.DrawShadedText("ZImage Test.",textImage);
do
{
//In the active loop, check events first//
@ -53,14 +60,10 @@ void Test()
if(engine->ImagesNeedReload())
{
temp = SDL_LoadBMP("data/test02.bmp"); //this is a separate surface
image1.Attach(temp); //this attaches the surface into itself
image2.Open("data/test01.bmp");
image3.OpenFromImage(image2.Surface(),5,5,20,20);
temp = NULL; //and temp will now be controlled and freed by image1
image1.SetColorKey(255,0,255);
image2.SetColorKey(255,0,255);
font.DrawShadedText("ZImage Test.",textImage);
image1.Reload();
image2.Reload();
image3.Reload();
textImage.Reload();
engine->SetReloadNeed(false); //very important for speed, without this you'd be reloading every frame
}