//------------------------------------------------------------------------------ // Author: Gero Mueller // Copyright: (c) 2006 Gero Mueller // License: MIT License //------------------------------------------------------------------------------ #ifndef BLUECORE_TEXTURE_MANAGER_H #define BLUECORE_TEXTURE_MANAGER_H // system includes #include #include // project includes #include "Utilities/Referenced.h" namespace BlueCore { // forward declaration class TextureManager; class Texture : public Referenced { unsigned int _Id; unsigned int _Width, _Height; ~Texture(); public: Texture( unsigned int id, unsigned int width, unsigned int height ) : _Id( id ), _Width( width ), _Height( height ) { } unsigned int getWidth() const { return _Width; } unsigned int getHeight() const { return _Height; } unsigned int getId() const { return _Id; } }; class TextureManager : public Referenced { private: typedef std::map TextureMap; TextureMap textures; float _maxAnisotopy; unsigned int _maxTextureSize; unsigned int _lodDrop; bool _textureCompression; void clearTextures(); bool saveToCache ( const std::string &name, int levels ); bool loadFromCache ( const std::string &filename, unsigned int &max_width, unsigned int &max_height ); ~TextureManager(); void TextureDestroySlot(Referenced *referenced); public: TextureManager(); Texture *loadTexture ( const std::string &filename, int mipmapLevel = -1, int compressionLevel = 1 ); }; } #endif