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: 27716 $ 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 protected: 106 //! @details :private 107 char m_Name[TEXIMAGE_FILENAME_MAX + 1]; 108 109 //! @details :private 110 TextureInfo m_TexInfo; 111 }; 112 113 //--------------------------------------------------------------------------- 114 //! :category リソースアクセサ 115 //! 116 //! @brief テクスチャを保持するクラスです。 117 //! 118 //! @details 119 //! ResourceAccessor の実装で OpenGL のテクスチャオブジェクトを保持するのに 120 //! 利用されます。 121 //! 122 //! @sa ResourceAccessor 123 //! 124 //! @since 2010/01/26 初版。 125 //--------------------------------------------------------------------------- 126 class TextureContainer : public ut::LinkList<TextureRefLink, offsetof(TextureRefLink, m_Link)> 127 { 128 public: 129 //---------------------------------------- 130 //! @name コンストラクタ/デストラクタ 131 //@{ 132 133 //! @brief デストラクタです。 134 //! 135 //! @details 136 //! 登録されているすべてのテクスチャを破棄します。 137 //! 138 //! @since 2010/01/26 初版。 139 //! 140 ~TextureContainer(); 141 142 //@} 143 144 //---------------------------------------- 145 //! @name 登録/破棄 146 //@{ 147 148 //! @brief 登録を抹消します。 149 //! 150 //! @details 151 //! 登録されているすべてのテクスチャを破棄します。 152 //! 153 //! @since 2010/01/26 初版。 154 //! 155 void Finalize(); 156 157 //! @brief テクスチャ情報を登録します。 158 //! 159 //! @param name テクスチャの名前です。 160 //! @param textureInfo テクスチャ情報です。 161 //! 162 //! @return 登録キーを返します。キーは登録の抹消に使用します。 163 //! 164 //! @since 2010/01/26 初版。 165 //! 166 TextureKey RegistTexture(const char* name, const TextureInfo& textureInfo); 167 168 //! @brief テクスチャの登録を抹消します。 169 //! 170 //! @param key 登録時に取得した登録キーを指定します。 171 //! 172 //! @since 2010/01/26 初版。 173 //! 174 void UnregistTexture(TextureKey key); 175 176 //@} 177 178 //---------------------------------------- 179 //! @name 検索 180 //@{ 181 182 //! @brief テクスチャ情報を検索します。 183 //! 184 //! @param name テクスチャのリソース名です。 185 //! 186 //! @return 187 //! テクスチャ情報を返します。 188 //! 189 //! @since 2010/01/26 初版。 190 //! 191 const TextureInfo FindTextureByName(const char* name); 192 193 //! @brief テクスチャ情報を検索します。 194 //! 195 //! @param key テクスチャの登録キーです。 196 //! 197 //! @return 198 //! テクスチャ情報を返します。 199 //! 200 //! @since 2010/11/30 初版。 201 //! 202 const TextureInfo FindTextureByKey(TextureKey key); 203 204 //@} 205 }; 206 207 } // namespace nw::lyt 208 } // namespace nw 209 210 #endif // NW_LYT_TEXTURECONTAINER_H_ 211