1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: lyt_TextureContainer.h 4 5 Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Revision: 23638 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NW_LYT_TEXTURECONTAINER_H_ 17 #define NW_LYT_TEXTURECONTAINER_H_ 18 19 #include <nw/ut/ut_LinkList.h> 20 21 #include <nw/lyt/lyt_Types.h> 22 23 namespace nw 24 { 25 namespace lyt 26 { 27 28 //--------------------------------------------------------------------------- 29 //! :private 30 //! 31 //! @brief テクスチャを保持するクラスです。 32 //! 33 //! @sa TextureContainer 34 //! 35 //! @since 2009/09/18 初版。 36 //--------------------------------------------------------------------------- 37 class TextureRefLink 38 { 39 public: 40 //! テクスチャリソース名の最大です。 41 static const int TEXIMAGE_FILENAME_MAX = 127; 42 43 //---------------------------------------- 44 //! @name コンストラクタ/デストラクタ 45 //@{ 46 47 //! @brief コンストラクタです。 48 TextureRefLink(); 49 50 51 //! @brief デストラクタです。 52 //! 53 //! @details 54 //! OpenGL のテクスチャオブジェクトを破棄します。 55 //! 56 //! @since 2009/09/18 初版。 57 //! 58 ~TextureRefLink(); 59 60 // @} 61 62 //---------------------------------------- 63 //! @name 設定/取得 64 //@{ 65 66 //! @brief テクスチャ情報を設定します。 67 //! 68 //! @param resourceName テクスチャを特定する名前です。 69 //! @param texInfo テクスチャ情報です。 70 //! 71 //! @since 2009/09/18 初版。 72 //! 73 void Set( 74 const char* resourceName, 75 const TextureInfo& texInfo); 76 77 //! @brief テクスチャのリソース名を取得します。 78 //! 79 //! @return テクスチャのリソース名を返します。 80 //! 81 //! @since 2009/09/18 初版。 82 //! GetResourceName()83 const char* GetResourceName() const 84 { 85 return m_Name; 86 } 87 88 //! @brief テクスチャ情報を取得します。 89 //! 90 //! @return テクスチャ情報を返します。 91 //! 92 //! @since 2009/09/18 初版。 93 //! GetTextureInfo()94 const TextureInfo GetTextureInfo() 95 { 96 return m_TexInfo; 97 } 98 99 // @} 100 101 //! :private 102 //! @brief リンク情報です。 103 ut::LinkListNode m_Link; 104 105 private: 106 char m_Name[TEXIMAGE_FILENAME_MAX + 1]; 107 TextureInfo m_TexInfo; 108 }; 109 110 //--------------------------------------------------------------------------- 111 //! :category リソースアクセサ 112 //! 113 //! @brief テクスチャを保持するクラスです。 114 //! 115 //! @details 116 //! ResourceAccessor の実装で OpenGL のテクスチャオブジェクトを保持するのに 117 //! 利用されます。 118 //! 119 //! @sa ResourceAccessor 120 //! 121 //! @since 2010/01/26 初版。 122 //--------------------------------------------------------------------------- 123 class TextureContainer : public ut::LinkList<TextureRefLink, offsetof(TextureRefLink, m_Link)> 124 { 125 public: 126 //---------------------------------------- 127 //! @name コンストラクタ/デストラクタ 128 //@{ 129 130 //! @brief デストラクタです。 131 //! 132 //! @details 133 //! 登録されているすべてのテクスチャを破棄します。 134 //! 135 //! @since 2010/01/26 初版。 136 //! 137 ~TextureContainer(); 138 139 //@} 140 141 //---------------------------------------- 142 //! @name 登録/破棄 143 //@{ 144 145 //! @brief 登録を抹消します。 146 //! 147 //! @details 148 //! 登録されているすべてのテクスチャを破棄します。 149 //! 150 //! @since 2010/01/26 初版。 151 //! 152 void Finalize(); 153 154 //! @brief テクスチャ情報を登録します。 155 //! 156 //! @param name テクスチャの名前です。 157 //! @param textureInfo テクスチャ情報です。 158 //! 159 //! @return 登録キーを返します。キーは登録の抹消に使用します。 160 //! 161 //! @since 2010/01/26 初版。 162 //! 163 TextureKey RegistTexture(const char* name, const TextureInfo& textureInfo); 164 165 //! @brief テクスチャの登録を抹消します。 166 //! 167 //! @param key 登録時に取得した登録キーを指定します。 168 //! 169 //! @since 2010/01/26 初版。 170 //! 171 void UnregistTexture(TextureKey key); 172 173 //@} 174 175 //---------------------------------------- 176 //! @name 検索 177 //@{ 178 179 //! @brief テクスチャ情報を検索します。 180 //! 181 //! @param name テクスチャのリソース名です。 182 //! 183 //! @return 184 //! テクスチャ情報を返します。 185 //! 186 //! @since 2010/01/26 初版。 187 //! 188 const TextureInfo FindTextureByName(const char* name); 189 190 //@} 191 }; 192 193 } // namespace nw::lyt 194 } // namespace nw 195 196 #endif // NW_LYT_TEXTURECONTAINER_H_ 197