00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_I_TEXTURE_H__
00024 #define __MYGUI_I_TEXTURE_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include "MyGUI_IRenderTarget.h"
00028 #include "MyGUI_RenderFormat.h"
00029 #include <string>
00030
00031 namespace MyGUI
00032 {
00033 class ITexture;
00034
00035 class MYGUI_EXPORT ITextureInvalidateListener
00036 {
00037 public:
00038 virtual void textureInvalidate(ITexture* _texture) = 0;
00039 };
00040
00041 class MYGUI_EXPORT ITexture
00042 {
00043 public:
00044 virtual ~ITexture() { }
00045
00046 virtual const std::string& getName() const = 0;
00047
00048 virtual void createManual(int _width, int _height, TextureUsage _usage, PixelFormat _format) = 0;
00049 virtual void loadFromFile(const std::string& _filename) = 0;
00050 virtual void saveToFile(const std::string& _filename) = 0;
00051
00052 virtual void setInvalidateListener(ITextureInvalidateListener* _listener) { }
00053
00054 virtual void destroy() = 0;
00055
00056 virtual void* lock(TextureUsage _access) = 0;
00057 virtual void unlock() = 0;
00058 virtual bool isLocked() = 0;
00059
00060 virtual int getWidth() = 0;
00061 virtual int getHeight() = 0;
00062
00063 virtual PixelFormat getFormat() = 0;
00064 virtual TextureUsage getUsage() = 0;
00065 virtual size_t getNumElemBytes() = 0;
00066
00067 virtual IRenderTarget* getRenderTarget() { return nullptr; }
00068
00069 };
00070
00071 }
00072
00073 #endif // __MYGUI_I_TEXTURE_H__