/*---------------------------------------------------------------------------* Project: NintendoWare File: lyt_TextureContainer.h Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Revision: 27716 $ *---------------------------------------------------------------------------*/ #ifndef NW_LYT_TEXTURECONTAINER_H_ #define NW_LYT_TEXTURECONTAINER_H_ #include #include namespace nw { namespace lyt { //--------------------------------------------------------------------------- //! :private //! //! @brief テクスチャを保持するクラスです。 //! //! @sa TextureContainer //! //! @since 2009/09/18 初版。 //--------------------------------------------------------------------------- class TextureRefLink { public: //! テクスチャリソース名の最大です。 static const int TEXIMAGE_FILENAME_MAX = 127; //---------------------------------------- //! @name コンストラクタ/デストラクタ //@{ //! @brief コンストラクタです。 TextureRefLink(); //! @brief デストラクタです。 //! //! @details //! OpenGL のテクスチャオブジェクトを破棄します。 //! //! @since 2009/09/18 初版。 //! ~TextureRefLink(); // @} //---------------------------------------- //! @name 設定/取得 //@{ //! @brief テクスチャ情報を設定します。 //! //! @param resourceName テクスチャを特定する名前です。 //! @param texInfo テクスチャ情報です。 //! //! @since 2009/09/18 初版。 //! void Set( const char* resourceName, const TextureInfo& texInfo); //! @brief テクスチャのリソース名を取得します。 //! //! @return テクスチャのリソース名を返します。 //! //! @since 2009/09/18 初版。 //! const char* GetResourceName() const { return m_Name; } //! @brief テクスチャ情報を取得します。 //! //! @return テクスチャ情報を返します。 //! //! @since 2009/09/18 初版。 //! const TextureInfo GetTextureInfo() { return m_TexInfo; } // @} //! :private //! @brief リンク情報です。 ut::LinkListNode m_Link; protected: //! @details :private char m_Name[TEXIMAGE_FILENAME_MAX + 1]; //! @details :private TextureInfo m_TexInfo; }; //--------------------------------------------------------------------------- //! :category リソースアクセサ //! //! @brief テクスチャを保持するクラスです。 //! //! @details //! ResourceAccessor の実装で OpenGL のテクスチャオブジェクトを保持するのに //! 利用されます。 //! //! @sa ResourceAccessor //! //! @since 2010/01/26 初版。 //--------------------------------------------------------------------------- class TextureContainer : public ut::LinkList { public: //---------------------------------------- //! @name コンストラクタ/デストラクタ //@{ //! @brief デストラクタです。 //! //! @details //! 登録されているすべてのテクスチャを破棄します。 //! //! @since 2010/01/26 初版。 //! ~TextureContainer(); //@} //---------------------------------------- //! @name 登録/破棄 //@{ //! @brief 登録を抹消します。 //! //! @details //! 登録されているすべてのテクスチャを破棄します。 //! //! @since 2010/01/26 初版。 //! void Finalize(); //! @brief テクスチャ情報を登録します。 //! //! @param name テクスチャの名前です。 //! @param textureInfo テクスチャ情報です。 //! //! @return 登録キーを返します。キーは登録の抹消に使用します。 //! //! @since 2010/01/26 初版。 //! TextureKey RegistTexture(const char* name, const TextureInfo& textureInfo); //! @brief テクスチャの登録を抹消します。 //! //! @param key 登録時に取得した登録キーを指定します。 //! //! @since 2010/01/26 初版。 //! void UnregistTexture(TextureKey key); //@} //---------------------------------------- //! @name 検索 //@{ //! @brief テクスチャ情報を検索します。 //! //! @param name テクスチャのリソース名です。 //! //! @return //! テクスチャ情報を返します。 //! //! @since 2010/01/26 初版。 //! const TextureInfo FindTextureByName(const char* name); //! @brief テクスチャ情報を検索します。 //! //! @param key テクスチャの登録キーです。 //! //! @return //! テクスチャ情報を返します。 //! //! @since 2010/11/30 初版。 //! const TextureInfo FindTextureByKey(TextureKey key); //@} }; } // namespace nw::lyt } // namespace nw #endif // NW_LYT_TEXTURECONTAINER_H_