Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

pge::TextureDatabase Class Reference

#include <TextureDatabase.h>

Collaboration diagram for pge::TextureDatabase:

Collaboration graph
[legend]

Public Member Functions

 ~TextureDatabase (void)
 Destructor.

void destroy (void)
TexturegetDefaultTexture (void)
TextureaddTexture (const std::string &filename)
TextureaddTexture (const std::string &filename, const std::string &name, bool mipmap, bool alpha)
TextureaddTexture (const std::string &filename, const std::string &name, bool mipmap, GLuint wrapS, GLuint wrapT, GLuint minFilter, GLuint magFilter, bool alpha, int alphaRed, int alphaGreen, int alphaBlue)
bool containsTexture (const std::string &name)
TexturegetTextureByName (const std::string &name)

Static Public Member Functions

TextureDatabasegetInstance (void)

Private Member Functions

 TextureDatabase (void)
 Constructor.


Private Attributes

std::vector< Texture * > m_textureList
TextureResourceFilem_resFile
Texturem_defaultTexture

Constructor & Destructor Documentation

pge::TextureDatabase::~TextureDatabase void   ) 
 

Destructor.

Definition at line 36 of file TextureDatabase.cpp.

References destroy().

00036                                               {
00037                 destroy();
00038         }

Here is the call graph for this function:

pge::TextureDatabase::TextureDatabase void   )  [private]
 

Constructor.

Definition at line 19 of file TextureDatabase.cpp.

References DEFAULT_TEXTURE_FILE, m_defaultTexture, m_resFile, m_textureList, TEXTURE_PREFIX, and TEXTURE_RESOURCE_FILE.

00019                                              {
00020                 m_textureList = std::vector<Texture*>();
00021 
00022                 m_resFile = new TextureResourceFile(TEXTURE_RESOURCE_FILE);
00023 
00024                 m_defaultTexture = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(DEFAULT_TEXTURE_FILE), "default", true);
00025                 if(m_defaultTexture == NULL) {
00026                         printf("WARNING: [%s] Could not load default texture!\n", __FILE__);
00027                 }
00028         }


Member Function Documentation

Texture * pge::TextureDatabase::addTexture const std::string &  filename,
const std::string &  name,
bool  mipmap,
GLuint  wrapS,
GLuint  wrapT,
GLuint  minFilter,
GLuint  magFilter,
bool  alpha,
int  alphaRed,
int  alphaGreen,
int  alphaBlue
 

Definition at line 169 of file TextureDatabase.cpp.

References containsTexture(), getTextureByName(), m_defaultTexture, m_textureList, and TEXTURE_PREFIX.

00171                                                              {
00172 
00173                         if(containsTexture(name)) {
00174                                 return getTextureByName(name);
00175                         }
00176 
00177                         Texture *tex;
00178 
00179                         tex = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(filename), name, mipmap, alpha, alphaRed, alphaGreen,
00180                                 alphaBlue, minFilter, magFilter, wrapS, wrapT);
00181 
00182                         if(tex != NULL) {
00183                                 m_textureList.push_back(tex);
00184                                 return tex;
00185                         } else {
00186                                 return m_defaultTexture;
00187                         }
00188         }

Here is the call graph for this function:

Texture * pge::TextureDatabase::addTexture const std::string &  filename,
const std::string &  name,
bool  mipmap,
bool  alpha
 

Definition at line 126 of file TextureDatabase.cpp.

References ALPHA_COLOR_B, ALPHA_COLOR_G, ALPHA_COLOR_R, containsTexture(), pge::TextureResourceFile::getResource(), getTextureByName(), pge::TextureResourceFile::hasResource(), pge::TextureResourceFile::TextureResource::m_alphaBlue, pge::TextureResourceFile::TextureResource::m_alphaGreen, pge::TextureResourceFile::TextureResource::m_alphaRed, m_defaultTexture, pge::TextureResourceFile::TextureResource::m_magFilter, pge::TextureResourceFile::TextureResource::m_minFilter, m_resFile, m_textureList, pge::TextureResourceFile::TextureResource::m_wrapS, pge::TextureResourceFile::TextureResource::m_wrapT, TEXTURE_MAGFILTER, TEXTURE_MINFILTER, TEXTURE_MINFILTER_MIPMAP, TEXTURE_PREFIX, TEXTURE_WRAPS, and TEXTURE_WRAPT.

00127                                          {
00128 
00129                         if(containsTexture(name)) {
00130                                 return getTextureByName(name);
00131                         }
00132 
00133                         Texture *tex;
00134 
00135                         // If there is a texture resource defined.
00136                         if(m_resFile->hasResource(filename)) {
00137                                 TextureResourceFile::TextureResource res = m_resFile->getResource(filename);
00138 
00139                                 tex = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(filename), name, mipmap, alpha,
00140                                         res.m_alphaRed, res.m_alphaGreen, res.m_alphaBlue, res.m_minFilter,
00141                                         res.m_magFilter, res.m_wrapS, res.m_wrapT);
00142                         } else {
00143 
00144                                 if(mipmap) {
00145                                         tex = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(filename), name, mipmap, alpha,
00146                                                 ALPHA_COLOR_R, ALPHA_COLOR_G, ALPHA_COLOR_B, TEXTURE_MINFILTER_MIPMAP,
00147                                                 TEXTURE_MAGFILTER, TEXTURE_WRAPS, TEXTURE_WRAPT);
00148                                 } else {
00149                                         tex = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(filename), name, mipmap, alpha,
00150                                                 ALPHA_COLOR_R, ALPHA_COLOR_G, ALPHA_COLOR_B, TEXTURE_MINFILTER,
00151                                                 TEXTURE_MAGFILTER, TEXTURE_WRAPS, TEXTURE_WRAPT);
00152                                 }
00153                         }
00154 
00155                         if(tex != NULL) {
00156                                 m_textureList.push_back(tex);
00157                                 return tex;
00158                         } else {
00159                                 return m_defaultTexture;
00160                         }
00161         }

Here is the call graph for this function:

Texture * pge::TextureDatabase::addTexture const std::string &  filename  ) 
 

Definition at line 94 of file TextureDatabase.cpp.

References containsTexture(), pge::TextureResourceFile::getResource(), getTextureByName(), pge::TextureResourceFile::hasResource(), pge::TextureResourceFile::TextureResource::m_alphaBlue, pge::TextureResourceFile::TextureResource::m_alphaEnabled, pge::TextureResourceFile::TextureResource::m_alphaGreen, pge::TextureResourceFile::TextureResource::m_alphaRed, m_defaultTexture, pge::TextureResourceFile::TextureResource::m_doMipmap, pge::TextureResourceFile::TextureResource::m_magFilter, pge::TextureResourceFile::TextureResource::m_minFilter, m_resFile, m_textureList, pge::TextureResourceFile::TextureResource::m_wrapS, pge::TextureResourceFile::TextureResource::m_wrapT, and TEXTURE_PREFIX.

00094                                                                       {
00095                 if(containsTexture(filename)) {
00096                         return getTextureByName(filename);
00097                 }
00098 
00099                 Texture *tex;
00100 
00101                 // If there is a texture resource defined.
00102                 if(m_resFile->hasResource(filename)) {
00103                         TextureResourceFile::TextureResource res = m_resFile->getResource(filename);
00104 
00105                         tex = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(filename), filename, res.m_doMipmap, res.m_alphaEnabled,
00106                                 res.m_alphaRed, res.m_alphaGreen, res.m_alphaBlue, res.m_minFilter,
00107                                 res.m_magFilter, res.m_wrapS, res.m_wrapT);
00108                 } else {
00109                         tex = TextureFactory::createTexture2D(TEXTURE_PREFIX.append(filename), filename, true);
00110                 }
00111 
00112                 if(tex != NULL) {
00113                         m_textureList.push_back(tex);
00114                         return tex;
00115                 } else {
00116                         return m_defaultTexture;
00117                 }
00118         }

Here is the call graph for this function:

bool pge::TextureDatabase::containsTexture const std::string &  name  ) 
 

Definition at line 196 of file TextureDatabase.cpp.

References pge::Texture::getName(), and m_textureList.

Referenced by addTexture().

00196                                                                    {
00197                 std::vector<Texture*>::iterator it;
00198 
00199 
00200                 for(it = m_textureList.begin(); it != m_textureList.end(); it++) {
00201                         Texture *t = *it;
00202                         if(t->getName().compare(name) == 0) {
00203                                 return true;
00204                         }
00205                 }
00206                 return false;
00207         }

Here is the call graph for this function:

void pge::TextureDatabase::destroy void   ) 
 

Definition at line 57 of file TextureDatabase.cpp.

References m_defaultTexture, m_resFile, and m_textureList.

Referenced by ~TextureDatabase().

00057                                           {
00058                 std::vector<Texture*>::iterator it;
00059 
00060 
00061                 for(it = m_textureList.begin(); it != m_textureList.end(); it++) {
00062                         if(*it != NULL) {
00063                                 delete *it;
00064                         }
00065                 }
00066 
00067                 if(m_defaultTexture != NULL) {
00068                         delete m_defaultTexture;
00069                         m_defaultTexture = NULL;
00070                 }
00071 
00072                 if(m_resFile != NULL) {
00073                         delete m_resFile;
00074                         m_resFile = NULL;
00075                 }
00076         }

Texture * pge::TextureDatabase::getDefaultTexture void   ) 
 

Definition at line 84 of file TextureDatabase.cpp.

References m_defaultTexture.

00084                                                         {
00085                 return m_defaultTexture;
00086         }

TextureDatabase * pge::TextureDatabase::getInstance void   )  [static]
 

Definition at line 46 of file TextureDatabase.cpp.

00046                                                           {
00047                 static TextureDatabase instance;
00048                 return &instance;
00049         }

Texture * pge::TextureDatabase::getTextureByName const std::string &  name  ) 
 

Definition at line 215 of file TextureDatabase.cpp.

References pge::Texture::getName(), and m_textureList.

Referenced by addTexture().

00215                                                                         {
00216                 std::vector<Texture*>::iterator it;
00217 
00218 
00219                 for(it = m_textureList.begin(); it != m_textureList.end(); it++) {
00220                         Texture *t = *it;
00221                         if(t->getName().compare(name) == 0) {
00222                                 return t;
00223                         }
00224                 }
00225 
00226                 return NULL;
00227         }

Here is the call graph for this function:


Field Documentation

Texture* pge::TextureDatabase::m_defaultTexture [private]
 

Definition at line 70 of file TextureDatabase.h.

Referenced by addTexture(), destroy(), getDefaultTexture(), and TextureDatabase().

TextureResourceFile* pge::TextureDatabase::m_resFile [private]
 

Definition at line 69 of file TextureDatabase.h.

Referenced by addTexture(), destroy(), and TextureDatabase().

std::vector<Texture*> pge::TextureDatabase::m_textureList [private]
 

Definition at line 67 of file TextureDatabase.h.

Referenced by addTexture(), containsTexture(), destroy(), getTextureByName(), and TextureDatabase().


The documentation for this class was generated from the following files:
Generated on Mon Oct 16 12:09:47 2006 for Phobosengine by doxygen 1.3.4