mirror of https://github.com/axmolengine/axmol.git
issue #3025: move VolatileTexture static function to VolatileTextureMgr
This commit is contained in:
parent
6f1e98df34
commit
b726c6fd2c
|
@ -102,11 +102,11 @@ void RenderTexture::listenToBackground(cocos2d::Object *obj)
|
|||
if (_UITextureImage)
|
||||
{
|
||||
const Size& s = _texture->getContentSizeInPixels();
|
||||
VolatileTexture::addDataTexture(_texture, _UITextureImage->getData(), s.width * s.height * 4, Texture2D::PixelFormat::RGBA8888, s);
|
||||
VolatileTextureMgr::addDataTexture(_texture, _UITextureImage->getData(), s.width * s.height * 4, Texture2D::PixelFormat::RGBA8888, s);
|
||||
|
||||
if ( _textureCopy )
|
||||
{
|
||||
VolatileTexture::addDataTexture(_textureCopy, _UITextureImage->getData(), s.width * s.height * 4, Texture2D::PixelFormat::RGBA8888, s);
|
||||
VolatileTextureMgr::addDataTexture(_textureCopy, _UITextureImage->getData(), s.width * s.height * 4, Texture2D::PixelFormat::RGBA8888, s);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -434,7 +434,7 @@ Texture2D::Texture2D()
|
|||
Texture2D::~Texture2D()
|
||||
{
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
VolatileTexture::removeTexture(this);
|
||||
VolatileTextureMgr::removeTexture(this);
|
||||
#endif
|
||||
|
||||
CCLOGINFO("deallocing Texture2D: %p - id=%u", this, _name);
|
||||
|
@ -1041,7 +1041,7 @@ bool Texture2D::initWithString(const char *text, const FontDefinition& textDefin
|
|||
{
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
// cache the texture data
|
||||
VolatileTexture::addStringTexture(this, text, textDefinition);
|
||||
VolatileTextureMgr::addStringTexture(this, text, textDefinition);
|
||||
#endif
|
||||
|
||||
bool bRet = false;
|
||||
|
@ -1267,7 +1267,7 @@ void Texture2D::setTexParameters(const TexParams &texParams)
|
|||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, texParams.wrapT );
|
||||
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
VolatileTexture::setTexParameters(this, texParams);
|
||||
VolatileTextureMgr::setTexParameters(this, texParams);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1287,7 +1287,7 @@ void Texture2D::setAliasTexParameters()
|
|||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
TexParams texParams = {(GLuint)(_hasMipmaps?GL_NEAREST_MIPMAP_NEAREST:GL_NEAREST),GL_NEAREST,GL_NONE,GL_NONE};
|
||||
VolatileTexture::setTexParameters(this, texParams);
|
||||
VolatileTextureMgr::setTexParameters(this, texParams);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1307,7 +1307,7 @@ void Texture2D::setAntiAliasTexParameters()
|
|||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
TexParams texParams = {(GLuint)(_hasMipmaps?GL_LINEAR_MIPMAP_NEAREST:GL_LINEAR),GL_LINEAR,GL_NONE,GL_NONE};
|
||||
VolatileTexture::setTexParameters(this, texParams);
|
||||
VolatileTextureMgr::setTexParameters(this, texParams);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ void TextureCache::addImageAsyncCallBack(float dt)
|
|||
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
// cache the texture file name
|
||||
VolatileTexture::addImageTexture(texture, filename);
|
||||
VolatileTextureMgr::addImageTexture(texture, filename);
|
||||
#endif
|
||||
// cache the texture. retain it, since it is added in the map
|
||||
_textures.insert( std::make_pair(filename, texture) );
|
||||
|
@ -299,7 +299,7 @@ Texture2D * TextureCache::addImage(const std::string &path)
|
|||
{
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
// cache the texture file name
|
||||
VolatileTexture::addImageTexture(texture, fullpath.c_str());
|
||||
VolatileTextureMgr::addImageTexture(texture, fullpath.c_str());
|
||||
#endif
|
||||
// texture already retained, no need to re-retain it
|
||||
_textures.insert( std::make_pair(fullpath, texture) );
|
||||
|
@ -349,7 +349,7 @@ Texture2D* TextureCache::addImage(Image *image, const std::string &key)
|
|||
} while (0);
|
||||
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
VolatileTexture::addImage(texture, image);
|
||||
VolatileTextureMgr::addImage(texture, image);
|
||||
#endif
|
||||
|
||||
return texture;
|
||||
|
@ -418,7 +418,7 @@ Texture2D* TextureCache::getTextureForKey(const std::string &key) const
|
|||
void TextureCache::reloadAllTextures()
|
||||
{
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
VolatileTexture::reloadAllTextures();
|
||||
VolatileTextureMgr::reloadAllTextures();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -458,8 +458,8 @@ void TextureCache::dumpCachedTextureInfo() const
|
|||
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
|
||||
std::list<VolatileTexture*> VolatileTexture::_textures;
|
||||
bool VolatileTexture::_isReloading = false;
|
||||
std::list<VolatileTexture*> VolatileTextureMgr::_textures;
|
||||
bool VolatileTextureMgr::_isReloading = false;
|
||||
|
||||
VolatileTexture::VolatileTexture(Texture2D *t)
|
||||
: _texture(t)
|
||||
|
@ -474,16 +474,14 @@ VolatileTexture::VolatileTexture(Texture2D *t)
|
|||
_texParams.magFilter = GL_LINEAR;
|
||||
_texParams.wrapS = GL_CLAMP_TO_EDGE;
|
||||
_texParams.wrapT = GL_CLAMP_TO_EDGE;
|
||||
_textures.push_back(this);
|
||||
}
|
||||
|
||||
VolatileTexture::~VolatileTexture()
|
||||
{
|
||||
_textures.remove(this);
|
||||
CC_SAFE_RELEASE(_uiImage);
|
||||
}
|
||||
|
||||
void VolatileTexture::addImageTexture(Texture2D *tt, const char* imageFileName)
|
||||
void VolatileTextureMgr::addImageTexture(Texture2D *tt, const char* imageFileName)
|
||||
{
|
||||
if (_isReloading)
|
||||
{
|
||||
|
@ -492,20 +490,20 @@ void VolatileTexture::addImageTexture(Texture2D *tt, const char* imageFileName)
|
|||
|
||||
VolatileTexture *vt = findVolotileTexture(tt);
|
||||
|
||||
vt->_cashedImageType = kImageFile;
|
||||
vt->_cashedImageType = VolatileTexture::kImageFile;
|
||||
vt->_fileName = imageFileName;
|
||||
vt->_pixelFormat = tt->getPixelFormat();
|
||||
}
|
||||
|
||||
void VolatileTexture::addImage(Texture2D *tt, Image *image)
|
||||
void VolatileTextureMgr::addImage(Texture2D *tt, Image *image)
|
||||
{
|
||||
VolatileTexture *vt = findVolotileTexture(tt);
|
||||
image->retain();
|
||||
vt->_uiImage = image;
|
||||
vt->_cashedImageType = kImage;
|
||||
vt->_cashedImageType = VolatileTexture::kImage;
|
||||
}
|
||||
|
||||
VolatileTexture* VolatileTexture::findVolotileTexture(Texture2D *tt)
|
||||
VolatileTexture* VolatileTextureMgr::findVolotileTexture(Texture2D *tt)
|
||||
{
|
||||
VolatileTexture *vt = 0;
|
||||
auto i = _textures.begin();
|
||||
|
@ -522,12 +520,13 @@ VolatileTexture* VolatileTexture::findVolotileTexture(Texture2D *tt)
|
|||
if (! vt)
|
||||
{
|
||||
vt = new VolatileTexture(tt);
|
||||
_textures.push_back(vt);
|
||||
}
|
||||
|
||||
return vt;
|
||||
}
|
||||
|
||||
void VolatileTexture::addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize)
|
||||
void VolatileTextureMgr::addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize)
|
||||
{
|
||||
if (_isReloading)
|
||||
{
|
||||
|
@ -536,14 +535,14 @@ void VolatileTexture::addDataTexture(Texture2D *tt, void* data, int dataLen, Tex
|
|||
|
||||
VolatileTexture *vt = findVolotileTexture(tt);
|
||||
|
||||
vt->_cashedImageType = kImageData;
|
||||
vt->_cashedImageType = VolatileTexture::kImageData;
|
||||
vt->_textureData = data;
|
||||
vt->_dataLen = dataLen;
|
||||
vt->_pixelFormat = pixelFormat;
|
||||
vt->_textureSize = contentSize;
|
||||
}
|
||||
|
||||
void VolatileTexture::addStringTexture(Texture2D *tt, const char* text, const FontDefinition& fontDefinition)
|
||||
void VolatileTextureMgr::addStringTexture(Texture2D *tt, const char* text, const FontDefinition& fontDefinition)
|
||||
{
|
||||
if (_isReloading)
|
||||
{
|
||||
|
@ -552,12 +551,12 @@ void VolatileTexture::addStringTexture(Texture2D *tt, const char* text, const Fo
|
|||
|
||||
VolatileTexture *vt = findVolotileTexture(tt);
|
||||
|
||||
vt->_cashedImageType = kString;
|
||||
vt->_cashedImageType = VolatileTexture::kString;
|
||||
vt->_text = text;
|
||||
vt->_fontDefinition = fontDefinition;
|
||||
}
|
||||
|
||||
void VolatileTexture::setTexParameters(Texture2D *t, const Texture2D::TexParams &texParams)
|
||||
void VolatileTextureMgr::setTexParameters(Texture2D *t, const Texture2D::TexParams &texParams)
|
||||
{
|
||||
VolatileTexture *vt = findVolotileTexture(t);
|
||||
|
||||
|
@ -571,7 +570,7 @@ void VolatileTexture::setTexParameters(Texture2D *t, const Texture2D::TexParams
|
|||
vt->_texParams.wrapT = texParams.wrapT;
|
||||
}
|
||||
|
||||
void VolatileTexture::removeTexture(Texture2D *t)
|
||||
void VolatileTextureMgr::removeTexture(Texture2D *t)
|
||||
{
|
||||
auto i = _textures.begin();
|
||||
while (i != _textures.end())
|
||||
|
@ -579,13 +578,14 @@ void VolatileTexture::removeTexture(Texture2D *t)
|
|||
VolatileTexture *vt = *i++;
|
||||
if (vt->_texture == t)
|
||||
{
|
||||
_textures.remove(vt);
|
||||
delete vt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void VolatileTexture::reloadAllTextures()
|
||||
void VolatileTextureMgr::reloadAllTextures()
|
||||
{
|
||||
_isReloading = true;
|
||||
|
||||
|
@ -598,7 +598,7 @@ void VolatileTexture::reloadAllTextures()
|
|||
|
||||
switch (vt->_cashedImageType)
|
||||
{
|
||||
case kImageFile:
|
||||
case VolatileTexture::kImageFile:
|
||||
{
|
||||
Image* image = new Image();
|
||||
long size = 0;
|
||||
|
@ -616,7 +616,7 @@ void VolatileTexture::reloadAllTextures()
|
|||
CC_SAFE_RELEASE(image);
|
||||
}
|
||||
break;
|
||||
case kImageData:
|
||||
case VolatileTexture::kImageData:
|
||||
{
|
||||
vt->_texture->initWithData(vt->_textureData,
|
||||
vt->_dataLen,
|
||||
|
@ -626,12 +626,12 @@ void VolatileTexture::reloadAllTextures()
|
|||
vt->_textureSize);
|
||||
}
|
||||
break;
|
||||
case kString:
|
||||
case VolatileTexture::kString:
|
||||
{
|
||||
vt->_texture->initWithString(vt->_text.c_str(), vt->_fontDefinition);
|
||||
}
|
||||
break;
|
||||
case kImage:
|
||||
case VolatileTexture::kImage:
|
||||
{
|
||||
vt->_texture->initWithImage(vt->_uiImage);
|
||||
}
|
||||
|
|
|
@ -214,7 +214,7 @@ class VolatileTexture
|
|||
kImage,
|
||||
}ccCachedImageType;
|
||||
|
||||
public:
|
||||
private:
|
||||
VolatileTexture(Texture2D *t);
|
||||
/**
|
||||
* @js NA
|
||||
|
@ -222,25 +222,8 @@ public:
|
|||
*/
|
||||
~VolatileTexture();
|
||||
|
||||
static void addImageTexture(Texture2D *tt, const char* imageFileName);
|
||||
static void addStringTexture(Texture2D *tt, const char* text, const FontDefinition& fontDefinition);
|
||||
static void addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize);
|
||||
static void addImage(Texture2D *tt, Image *image);
|
||||
|
||||
static void setTexParameters(Texture2D *t, const Texture2D::TexParams &texParams);
|
||||
static void removeTexture(Texture2D *t);
|
||||
static void reloadAllTextures();
|
||||
|
||||
public:
|
||||
static std::list<VolatileTexture*> _textures;
|
||||
static bool _isReloading;
|
||||
|
||||
private:
|
||||
// find VolatileTexture by Texture2D*
|
||||
// if not found, create a new one
|
||||
static VolatileTexture* findVolotileTexture(Texture2D *tt);
|
||||
|
||||
protected:
|
||||
friend class VolatileTextureMgr;
|
||||
Texture2D *_texture;
|
||||
|
||||
Image *_uiImage;
|
||||
|
@ -259,6 +242,26 @@ protected:
|
|||
FontDefinition _fontDefinition;
|
||||
};
|
||||
|
||||
class VolatileTextureMgr
|
||||
{
|
||||
public:
|
||||
static void addImageTexture(Texture2D *tt, const char* imageFileName);
|
||||
static void addStringTexture(Texture2D *tt, const char* text, const FontDefinition& fontDefinition);
|
||||
static void addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize);
|
||||
static void addImage(Texture2D *tt, Image *image);
|
||||
|
||||
static void setTexParameters(Texture2D *t, const Texture2D::TexParams &texParams);
|
||||
static void removeTexture(Texture2D *t);
|
||||
static void reloadAllTextures();
|
||||
public:
|
||||
static std::list<VolatileTexture*> _textures;
|
||||
static bool _isReloading;
|
||||
private:
|
||||
// find VolatileTexture by Texture2D*
|
||||
// if not found, create a new one
|
||||
static VolatileTexture* findVolotileTexture(Texture2D *tt);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// end of textures group
|
||||
|
|
Loading…
Reference in New Issue