diff options
author | Kahrl <kahrl@gmx.net> | 2013-08-20 22:38:14 +0200 |
---|---|---|
committer | Kahrl <kahrl@gmx.net> | 2013-09-11 00:08:56 +0200 |
commit | 3c4734d69a44aea133e5bd7df66a5dedb87785fb (patch) | |
tree | f3961c8855c0d864b672ae79857de9b993c3e95c /src/tile.h | |
parent | da9fe6485134ec81cc3628b1bc4847c3b2226c76 (diff) | |
download | minetest-3c4734d69a44aea133e5bd7df66a5dedb87785fb.tar.gz minetest-3c4734d69a44aea133e5bd7df66a5dedb87785fb.tar.bz2 minetest-3c4734d69a44aea133e5bd7df66a5dedb87785fb.zip |
Change mainmenu texture handling + small misc changes
Texture names must now be escaped in formspec elements image[],
background[], image_button[], image_button_exit[].
Instead of special-case handling of texture loading (and unloading
which was missing) in guiFormSpecMenu.cpp, use the newly created
ISimpleTextureSource interface which is a minimal subset of
ITextureSource. There is an implementation of this interface
used by GUIEngine (MenuTextureSource).
Fix an off-by-one bug in unescape_string; it caused requests for a
texture called "\0".
Diffstat (limited to 'src/tile.h')
-rw-r--r-- | src/tile.h | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/tile.h b/src/tile.h index 23c214350..90e180a48 100644 --- a/src/tile.h +++ b/src/tile.h @@ -82,22 +82,27 @@ struct TextureFromMeshParams TextureSource creates and caches textures. */ -class ITextureSource +class ISimpleTextureSource +{ +public: + ISimpleTextureSource(){} + virtual ~ISimpleTextureSource(){} + virtual video::ITexture* getTexture( + const std::string &name, u32 *id = NULL) = 0; +}; + +class ITextureSource : public ISimpleTextureSource { public: ITextureSource(){} virtual ~ITextureSource(){} - virtual u32 getTextureId(const std::string &name){return 0;} - virtual u32 getTextureIdDirect(const std::string &name){return 0;} - virtual std::string getTextureName(u32 id){return "";} - virtual video::ITexture* getTexture(u32 id){return NULL;} + virtual u32 getTextureId(const std::string &name)=0; + virtual u32 getTextureIdDirect(const std::string &name)=0; + virtual std::string getTextureName(u32 id)=0; + virtual video::ITexture* getTexture(u32 id)=0; virtual video::ITexture* getTexture( - const std::string &name, u32 *id = NULL){ - if(id) *id = 0; - return NULL; - } - virtual IrrlichtDevice* getDevice() - {return NULL;} + const std::string &name, u32 *id = NULL)=0; + virtual IrrlichtDevice* getDevice()=0; virtual bool isKnownSourceImage(const std::string &name)=0; virtual video::ITexture* generateTextureFromMesh( const TextureFromMeshParams ¶ms)=0; @@ -108,23 +113,20 @@ class IWritableTextureSource : public ITextureSource public: IWritableTextureSource(){} virtual ~IWritableTextureSource(){} - virtual u32 getTextureId(const std::string &name){return 0;} - virtual u32 getTextureIdDirect(const std::string &name){return 0;} - virtual std::string getTextureName(u32 id){return "";} - virtual video::ITexture* getTexture(u32 id){return NULL;} + virtual u32 getTextureId(const std::string &name)=0; + virtual u32 getTextureIdDirect(const std::string &name)=0; + virtual std::string getTextureName(u32 id)=0; + virtual video::ITexture* getTexture(u32 id)=0; virtual video::ITexture* getTexture( - const std::string &name, u32 *id = NULL){ - if(id) *id = 0; - return NULL; - } - virtual IrrlichtDevice* getDevice(){return NULL;} + const std::string &name, u32 *id = NULL)=0; + virtual IrrlichtDevice* getDevice()=0; virtual bool isKnownSourceImage(const std::string &name)=0; + virtual video::ITexture* generateTextureFromMesh( + const TextureFromMeshParams ¶ms)=0; virtual void processQueue()=0; virtual void insertSourceImage(const std::string &name, video::IImage *img)=0; virtual void rebuildImagesAndTextures()=0; - virtual video::ITexture* generateTextureFromMesh( - const TextureFromMeshParams ¶ms)=0; }; IWritableTextureSource* createTextureSource(IrrlichtDevice *device); |