/* QGL TextureManager Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef GLTEXTUREMANAGER_H #define GLTEXTUREMANAGER_H #include #include #include #include #include class TextureManager { public: TextureManager(QOpenGLExtraFunctions * f_): f(f_) {} virtual ~TextureManager() {} static void addSearchPath(const QString & path) {if (!search_pathes.contains(path)) search_pathes << path;} static void clearSearchPathes() {search_pathes.clear();} static QStringList searchPathes() {return search_pathes;} static QString findFile(const QString & path); GLuint loadTexture(const QString & path, bool ownership = true, bool bump = false); GLuint loadTexture(const QImage & image, bool ownership = true, bool bump = false); QImage loadTextureImage(const QString & path, bool bump = false); void reloadTexture(GLuint tid, const QString & path); void reloadTexture(GLuint tid, const QImage & image); int textureID (const QString & path, bool bump = false) {return tex_ids[bump ? 1 : 0][path];} QImage textureImage(const QString & path, bool bump = false) {return tex_im [bump ? 1 : 0][path];} void addTexture(const QString & path) {tex_pathes << path;} bool loadTextures(); void deleteTextures(); void deleteTexture(const QString & name); void clearImageCache(); protected: static void convertToNormal(QImage & im); static QStringList search_pathes; QMap tex_ids[2]; QMap tex_im [2]; QStringList tex_pathes; QOpenGLExtraFunctions * f; }; #endif // GLTEXTUREMANAGER_H