#pragma once #include "Array.h" #include "Critical.h" namespace Framework { class Textur; //! Textur.h //! Verwaltet alle geladenen Texturdaten, so dass mehrere Zeichnungen die //! selben Daten benutzen können class TexturList : public virtual ReferenceCounter { private: static int id; static Critical cs; RCArray* textures; RCArray* names; public: //! Konstruktor TexturList(); //! Destruktor ~TexturList(); //! Löscht alle Texturen DLLEXPORT void leeren(); //! Fügt der Liste eine Textur hinzu //! \param t Die Textur //! \param name Der name, unter dem die Textur in der Liste gespeichert //! wird DLLEXPORT bool addTextur(Textur* t, const char* name); //! Entfernt eine Textur aus der Liste //! \param name Der Name der Textur DLLEXPORT void removeTextur(const char* name); //! Überprüft, ob unter einem bestimmten Namen eine Textur abgespeichert //! wurde \param name Der Name \return true, wenn eine Textur mit dem //! Namen existiert DLLEXPORT bool hatTextur(const char* name) const; //! Gibt eine bestimmte Textur zurück //! \param name Der Name der Textur DLLEXPORT Textur* getTextur(const char* name) const; //! Gibt eine bestimmte Textur zurück //! \param id Die Id der Textur DLLEXPORT Textur* getTextur(int id) const; //! Gibt eine bestimmte Textur ohne erhöhten Reference Counter zurück //! \param name Der Name der Textur DLLEXPORT Textur* zTextur(const char* name) const; //! Gibt eine bestimmte Textur ohne erhöhten Reference Counter zurück //! \param id Die Id der Textur DLLEXPORT Textur* zTextur(int id) const; //! Initialisiert statische private member. Wird vom Framework //! automatisch aufgerufen. static void init(); //! Löscht statische private member. Wird vom Framework automatisch //! aufgerufen. static void destroy(); }; } // namespace Framework