X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FTexture.h;h=95547bf30e9ec9e9b494495af2442e6d7f12c594;hb=c5dc3750efbc615b70917f19bb95cbd352cd00f6;hp=69226761fcf50fcfba8806f2e6d1e8f3d60d3433;hpb=46cff1de1e828cb8c04a5dc5377bc07baae57858;p=lugaru.git diff --git a/Source/Texture.h b/Source/Texture.h index 6922676..95547bf 100644 --- a/Source/Texture.h +++ b/Source/Texture.h @@ -1,36 +1,63 @@ +/* +Copyright (C) 2003, 2010 - Wolfire Games +Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file) + +This file is part of Lugaru. + +Lugaru is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +Lugaru 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Lugaru. If not, see . +*/ + +#ifndef _TEXTURE_H_ +#define _TEXTURE_H_ + #include +#include #include +using namespace std; + +class TextureRes +{ +private: + static vector list; + + GLuint id; + string filename; + bool hasMipmap; + bool isSkin; + int skinsize; + GLubyte* data; + int datalen; + + void load(); + +public: + TextureRes(const string& filename, bool hasMipmap); + TextureRes(const string& filename, bool hasMipmap, GLubyte* array, int* skinsize); + ~TextureRes(); + void bind(); +}; -//keeps track of which textures are loaded -class Texture { - private: - static std::map textures; - - bool isSkin; - std::string fileName; - GLuint id; - bool mipmap; - bool hasalpha; - GLubyte* array; - int arraySize; - int skinsize; - - void load(); - - public: - Texture(): - isSkin(false), skinsize(0), arraySize(0), - fileName(""), id(0), mipmap(false), hasalpha(false), array(NULL) { } - ~Texture(); - Texture (const std::string& _fileName, bool _mipmap, bool _hasalpha): - isSkin(false), skinsize(0), arraySize(0), array(NULL), - fileName(_fileName), id(0), mipmap(_mipmap), hasalpha(_hasalpha) { } - Texture (const std::string& _fileName, bool _mipmap, bool _hasalpha, bool _isSkin): - isSkin(_isSkin), skinsize(0), arraySize(0), array(NULL), - fileName(_fileName), id(0), mipmap(_mipmap), hasalpha(_hasalpha) { } - GLuint getId() const { return id; } - - static GLuint Load(const std::string& fileName, bool mipmap, bool hasalpha); - static GLuint Load(const std::string& fileName, bool mipmap, bool hasalpha, GLubyte* array, int* skinsize); +class Texture +{ +private: + TextureRes* tex; +public: + inline Texture(): tex(NULL) {} + void load(const string& filename, bool hasMipmap); + void load(const string& filename, bool hasMipmap, GLubyte* array, int* skinsizep); + void destroy(); + void bind(); }; +#endif